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.

detektyw szczecin

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ą.

detektyw szczecin

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.

detektyw szczecin

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.

detektyw szczecin

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’.

detektyw szczecin

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’:

detektyw szczecin

Za pomocą komendy:

osquery> .help

wyświetlamy listę dostępnych opcji programu, spójrz poniżej:

detektyw szczecin

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;

detektyw szczecin

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

detektyw szczecin

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ą.