Monitorowanie systemu za pomocą 'osquery’
W nowoczesnym środowisku do infrastruktury i sieci organizacji można podłączyć wiele urządzeń. Zespoły ds. bezpieczeństwa i specjaliści ds. kryminalistyki cyfrowej, których zadaniem jest śledzenie i gromadzenie informacji z tych urządzeń, potrzebują narzędzia, które umożliwi im wysyłanie zapytań do systemu operacyjnego, takiego jak baza danych.
Czym jest osquery?
Osquery to platforma instrumentacji systemu operacyjnego, która umożliwia wykonywanie zapytań do systemu przy użyciu składni SQL. Oprogramowanie osquery, pierwotnie opracowane przez Facebooka (obecnie Meta) i udostępnione jako oprogramowanie typu open source, przekształca system operacyjny w relacyjną bazę danych. Oznacza to, że możesz używać standardowych zapytań SQL do eksploracji uruchomionych procesów, załadowanych modułów jądra, otwartych połączeń sieciowych, wtyczek przeglądarki, zdarzeń sprzętowych i skrótów plików.
Osquery to oprogramowanie wieloplatformowe, które można zainstalować w systemach Linux, Windows, MacOS i FreeBSD. Osquery pozwala nam badać profil systemu operacyjnego, wydajność, bezpieczeństwo i wiele innych wskaźników za pomocą zapytań opartych na SQL.
Dlaczego osquery ma znaczenie w cyberbezpieczeństwie?
'osquery’ to bardzo praktyczne narzędzie zarówno do codziennego monitorowania, jak i zaawansowanego threat huntingu oraz reagowania na incydenty.
- Szybka widoczność: Zobacz aktualny stan systemu w dowolnej chwili – minimalny wpływ na wydajność.
- Śledzenie historii: Połącz osquery z rejestrowaniem i analizuj zmiany na przestrzeni czasu.
- Uniwersalność: Te same zapytania działają na Linux, macOS i Windows – nie trzeba pisać dedykowanych skryptów na każdą platformę.
- Elastyczność: Twórz własne tabele i dekoratory, aby dopasować osquery do nietypowych potrzeb.
- Łatwa integracja: Bezproblemowo łącz osquery z istniejącymi narzędziami i procesami bezpieczeństwa.
Zainstalujmy i skonfigurujmy osquery na Kali Linux.
Tworzymy katalog keyrings
kali> sudo mkdir -p/etc/apt/keyrings
To polecenie utworzy katalog w /etc/apt/keyrings, który jest nową standardową lokalizacją do przechowywania kluczy GPG używanych do weryfikacji autentyczności pakietu. The -p flaga zapewnia utworzenie katalogu, nawet jeśli katalogi nadrzędne nie istnieją.
Pobieramy i zapisujemy klucz GPG
kali> curl -L https://pkg.osquery.io/deb/pubkey.gpg | sudo tee /etc/apt/keyrings/osquery.asc
Tym poleceniem pobieramy publiczny klucz GPG firmy 'osquery’ i zapisujemy go w naszym katalogu keyring. Klucz zostanie użyty do sprawdzenia, czy pakiety faktycznie pochodzą od programistów 'osquery’. The tee polecenie zapisuje klucz do pliku, jednocześnie wyświetlając go na ekranie.
Dodajemy konfigurację repozytorium
kali> echo “deb [arch=amd64 signed-by=/etc/apt/keyrings/osquery.asc] https://pkg.osquery.io/deb deb main” | sudo tee /etc/apt/sources.list.d/osquery.list
Dodajemy w ten sposób repozytorium 'osquery’ do źródeł pakietów systemu.
Aktualizujemy system i instalujemy 'osquery’
kali> sudo apt update
kali> sudo apt install osquery
Lista pakietów musi być aktualna, po czym możemy spokojnie zainstalować 'osquery’.
Zrozumienie architektury Osquery
Zanim zagłębimy się w praktyczne zastosowanie, ważne jest zrozumienie architektury osquery:
- osqueryi: Interaktywna powłoka do zapytań ad hoc. Uruchamiaj zapytania SQL‑podobne lokalnie. Szybko sprawdzaj procesy, pakiety i porty bez planowania zadań.
- osqueryd: Demon do cyklicznych zapytań. Rejestruje wyniki i zmiany. Działa w tle na harmonogramie.
- Tabele: Wirtualne widoki stanu systemu. Procesy, pliki, sieć, pakiety i więcej w formie kolumn i wierszy.
- Rozszerzenia: Dodatkowe wtyczki i funkcje. Nowe tabele, integracje i logika pod niestandardowe potrzeby.
- Konfiguracja: Pliki JSON z harmonogramem i opcjami. Definiuj interwały, pakiety zapytań i cele logowania.
'osquery’ nie przechowuje stale danych — weryfikuje tylko aktualny stan systemu. Po wybraniu z tabeli 'osquery 'wykonuje wywołania systemowe w czasie rzeczywistym w celu zebrania żądanych informacji.
Nasza pierwsza sesja 'osquery’
Zaczynamy od interaktywnej powłoki:
kali> sudo osqueryi
Po wpisaniu komendy wyświetli się nam monit 'osquery’:
Za pomocą komendy:
osquery> .help
wyświetlamy listę dostępnych opcji programu, spójrz poniżej:
Po uruchomieniu wybieramy kilka podstawowych zapytań, aby zapoznać się z systemem. Zdobywamy pierwsze podstawowe informacje o naszym systemie.
osquery> SELECT hostname, computer_name, hardware_model, cpu_brand FROM system_info;
Teraz wypiszmy działające procesy. Ale zazwyczaj systemy uruchamiają setki lub tysiące procesów, więc ograniczmy listy tylko do pierwszych 10:
kali> SELECT pid, name, path, cmdline FROM processes LIMIT 10;
Przykładowe i niezbędne tabele osquery
'osquery’ udostępnia w swojej dokumentacji setki tabel. Tabele podane poniżej są najważniejsze w analizie procesów na naszej maszynie:
Tabele procesów i wykonania
- procesy: Aktualnie działające procesy
- zdarzenia_procesu: Zdarzenia wykonania procesu (wymaga konfiguracji)
- otwórz_procesy_gniazda: Połączenia sieciowe według procesu
- mapa_pamięci_procesu: Mapowania pamięci dla procesów
Tabele systemu plików
- plik: Metadane i skróty plików
- hash: Hasze plików (MD5, SHA1, SHA256)
- zdarzenia_plikowe: Zmiany w systemie plików (wymaga konfiguracji)
- mocowania: Zamontowane systemy plików
Tabele sieciowe
- porty_słuchania: Usługi nasłuchujące na portach sieciowych
- adresy_interfejsu: Konfiguracje interfejsu sieciowego
- arp_cache: Wpisy w tabeli ARP
- trasy:Tabela routingu sieciowego
Tabele użytkowników i uwierzytelniania
- użytkownicy: Konta użytkowników systemu
- zalogowani_w_użytkownikach: Aktualnie zalogowani użytkownicy
- ostatni: Historia logowania
- autoryzowane_klucze: Klucze autoryzowane przez SSH
Tabele konfiguracji systemu
- elementy_uruchamiania: Automatyczne uruchamianie programów i usług
- usługi: Usługi systemowe (Windows/Linux)
- start: demony i agenci uruchamiania systemu macOS
- rejestr: Rejestr systemu Windows (tylko Windows)
Konfigurowanie demona osquery do ciągłego monitorowania
Jednym z najważniejszych elementów osquery jest ciągłe monitorowanie procesów za pomocą osqueryd. Aby wszystko działało poprawnie musimy skonfigurować program za pomocą pliku konfiguracyjnego.
Poniżej mamy przykład pliku konfiguracyjnego znajdującego się w /etc/osquery/osquery.conf:
Ta konfiguracja sprawi, że 'osquery’ działa jak lekki agent bezpieczeństwa/monitorowania: rejestruje informacje o systemie, aktywność procesów, połączenia sieciowe, logowanie użytkowników i krytyczną integralność plików, a wszystko to z metadanymi o hoście i użytkowniku.
Następnym krokiem jest uruchomienie demona:
kali> sudo systemctl start osqueryd
Włączamy go, aby uruchomił się podczas rozruchu:
kali> sudo systemctl włącz osqueryd
Sprawdzamy status:
kali> sudo systemctl status osqueryd
Logi 'osquery’ są zazwyczaj przechowywane w formacie JSON. Można je analizować za pomocą standardowych narzędzi, na przykład według tail:
kali> sudo tail -f/var/log/osquery/osqueryd.results.log
Narzędzie tail -f drukuje ciągle nowe linie w miarę ich zapisu (transmisja strumieniowa dziennika na żywo).
W programie 'osquery’ możemy sprawdzić np. ostatnie logowania w systemie.
Podsumowanie
Osquery spina widoczność, analizę i automatyzację jednym, wspólnym językiem zapytań. Dzięki temu host staje się „bazą danych”, a odpowiedzi są natychmiastowe i porównywalne między platformami. To realna oszczędność czasu i wzrost precyzji decyzji.
Droga do biegłości to praktyka. Zacząć od prostych pytań, potem dołożyć korelacje, zdarzenia i harmonogram. Własne przypadki użycia wskazują priorytety i szybko pokazują zwrot z wdrożenia.
W materiale były fundamenty: tryb interaktywny, daemon, tabele i konfiguracja pod ciągłe monitorowanie. Teraz pora na działanie: traktować infrastrukturę jak znormalizowaną bazę i regularnie odpalać zapytania, które mają wartość operacyjną.












ZOOM INVESTIGATIONS Sp. z o.o.