
Tento článok je prvou časťou série zameranej na analýzu hrozieb Sysmon. Všetky ostatné časti série:
Časť 1. Úvod do analýzy logov Sysmon (sme tu)
Časť 2. Vyžitie údajov zo Sysmon udalostí na identifikáciu hrozieb
Časť 3. Hlboká analýza hrozieb Sysmon pomocou grafov
Ak sa zaoberáte informačnou bezpečnosťou, určite sa často dostávate k riešeniu prebiehajúcich útokov. Ak už máte vycvičené oko, môžete hľadať nezvyčajnú aktivitu v „surových“ nezpracovaných logoch – povedzme, PowerShell skript s príkazom alebo VBS skript, ktorý sa vydáva za súbor Word – jednoducho prechádzajúce poslednou aktivitou v denníku udalostí Windows. Ale to je naozaj veľká bolesť. Našťastie, Microsoft vytvoril Sysmon, ktorý robí analýzu útokov oveľa jednoduchšou.
Chcete pochopiť základné myšlienky, ktoré sú za zobrazenými hrozbami v logu Sysmon? Stiahnite si našu príručku a uvedomíte si, ako môžu insideri nenápadne pozorovať ostatných zamestnancov. Hlavným problémom práce s denníkom udalostí Windows je nedostatok informácií o rodičovských procesoch, t.j. nie je možné pochopiť hierarchiu procesov. V záznamoch logu Sysmon však naopak nájdete identifikátor rodičovského procesu, jeho názov a spúšťanú príkazovú líniu. Ďakujeme, Microsoft.
V prvej časti našej série sa pozrieme, čo sa dá robiť s základnými informáciami zo Sysmon. V druhej časti plne využijeme informácie o rodičovských procesoch na vytvorenie komplexnejších štruktúr súladu, ktoré sú známe ako grafy hrozieb. V tretej časti preskúmame jednoduchý algoritmus, ktorý skenuje graf hrozieb na hľadanie nezvyčajnej aktivity prostredníctvom analýzy „váhy“ grafu. A na konci vás čaká pekná (a zrozumiteľná) pravdepodobnostná metóda detekcie hrozieb ako odmena.
Časť 1: Úvod do analýzy logov Sysmon
Čo pomôže rozlúsknuť zložitosti denníka udalostí? V konečnom dôsledku – SIEM. Normalizuje udalosti a zjednodušuje ich následnú analýzu. Ale nemusíme ísť tak ďaleko, aspoň na začiatku. Na pochopenie princípov SIEM stačí vyskúšať vynikajúci bezplatný nástroj Sysmon. A s ním sa prekvapivo ľahko pracuje. Dobre to zvládate, Microsoft!
Aké sú možnosti Sysmonu?
Ak to zhrniem – užitočné a čitateľné informácie o procesoch (pozri obrázky nižšie). Objavíte množstvo užitočných detailov, ktoré chýbajú v denníku udalostí systému Windows, ale najdôležitejšie sú nasledujúce polia:
- ID procesu (v desiatkovej forme, nie hex!)
- ID rodičovského procesu
- Príkazový riadok procesu
- Príkazový riadok rodičovského procesu
- Hash obrazu súboru
- Názvy obrazov súborov
Sysmon sa inštaluje súčasne ako ovládač zariadenia a ako služba – podrobnejšie Jeho kľúčovou výhodou je schopnosť analyzovať protokoly z niekoľkých zdrojov, korelácia informácií a výstup výsledných hodnôt do jedného adresára denníka udalostí, nachádzajúceho sa na ceste Microsoft -> Windows -> Sysmon -> Operačný. V mojich vlastných vyšetrovaniach protokolov Windows, pri ktorých mi vlasy vstávali dupkom, som neustále musel prechádzať medzi, povedzme, priečinkom s protokolmi PowerShell a priečinkom „Bezpečnosť“, prechádzajúc denníkmi udalostí v hrdinskej snahe nejakým spôsobom porovnať hodnoty medzi nimi. To rozhodne nie je jednoduchá úloha, a ako som si neskôr uvedomil, bolo lepšie si hneď zaobstarať aspirín.
Sysmon robí kvalitný krok vpred, poskytujúc užitočné (alebo ako radi hovoria dodávatelia – účinné) informácie na pomoc v pochopení základných procesov. Napríklad som spustil skrytú reláciu , simulujúcu pohyb dôvtipného insidera v rámci siete. Toto je to, čo uvidíte v denníku udalostí Windows:

V denníku Windows je vidieť nejaké informácie o procese, ale sú málo užitočné. Navyše identifikátory procesov v hexadecimálnej forme???
U profesionálneho IT špecialistu so znalosťou základov hackovania by mala vzbudiť podozrenie príkazová forma. Použitie cmd.exe na následné spustenie iného príkazu s presmerovaním výstupu do súboru s čudným názvom sa zjavne podobá na činnosti softvéru na kontrolu a riadenie : takýmto spôsobom sa vytvára pseudo-shell pomocou služieb WMI.
Teraz sa pozrime na ekvivalent záznamu zo Sysmon, pričom si všimneme, koľko dodatočných informácií nám poskytuje:

Možnosti Sysmon na jednom snímku: podrobné informácie o procese v čitateľnej forme
Vidíte nielen príkazový riadok, ale aj názov súboru, cestu k spustiteľnej aplikácii, čo Windows o tom vie ("Windows Command Processor"), identifikátor rodičovského procesu, príkazový riadok rodiča, ktorý spustil cmd-shell, ako aj skutočné meno súboru rodičovského procesu. Všetko na jednom mieste, konečne!
Z logu Sysmon môžeme vyvodiť, že s vysokou pravdepodobnosťou tento podozrivý príkazový riadok, ktorý sme videli v „surových“ logoch, nie je výsledkom normálnej práce zamestnanca. Skôr naopak, bol generovaný procesom podobným C2 — wmiexec, ako som už spomenul — a bol priamo vytvorený procesom WMI služby (WmiPrvSe). Teraz máme indikátor, že vzdialený útočník alebo insider skúša firemnú infraštruktúru na zuby.
Predstavujeme Get-Sysmonlogs
Samozrejme, je úžasné, keď Sysmon uchováva logy na jednom mieste. Ale bolo by pravdepodobne ešte lepšie, keby sme mohli získať prístup k jednotlivým poliam logu programovým spôsobom – napríklad cez príkazy PowerShell. V tom prípade by bolo možné napísať malý PowerShell skript, ktorý by automatizoval vyhľadávanie potenciálnych hrozieb!
Nie som prvý, kto na to prišiel. A je skvelé, že v niektorých príspevkoch fórumov a na GitHub už bolo vysvetlené, ako použiť PowerShell na parsovanie Sysmon logu. V mojom prípade som chcel vyhnúť potrebe písania samostatných riadkov parsing skriptu pre každé pole Sysmon. Preto som využil zásadu lenivého človeka a, ako sa mi zdá, v konečnom dôsledku som prišiel na niečo zaujímavé.
Prvým dôležitým momentom je schopnosť príkazu čítať Sysmon logy, filtrovať potrebné udalosti a výstup výsledku do PS premennej, ako tu:
$events = Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | where { $_.id -eq 1 -or $_.id -eq 11}
Ak chcete sami overiť činnosť tímu, môžete cez zobrazenie obsahu v prvom prvku poľa $events, $events[0].Message, získať sériu textových riadkov v veľmi jednoduchom formáte: názov poľa Sysmon, dvojbodka a potom samotná hodnota.

Hurá! Výstup Sysmon logu vo formáte vhodnom pre JSON
Premýšľate o tom istom, čo aj ja? S malým úsilím môžete konvertovať výstup na formátovanú JSON-reťazec a potom ho priamo nahrať do PS-objektu pomocou mocného príkazu. .
Ukážem PowerShell kód na konverziu – je veľmi jednoduchý – v nasledujúcej časti. Teraz sa však pozrime, čo môže robiť moja nová príkazová botka s názvom get-sysmonlogs, ktorú som nainštaloval ako PS-modul.
Namiesto hlbokej analýzy logov Sysmon prostredníctvom nepríjemného rozhrania denníka udalostí, môžeme bez námahy hľadať inkrementálnu aktivitu priamo z PowerShell relácie a tiež používať PS-príkaz. (alias – „?“) na skrátenie výsledkov vydania:

Zoznam cmd shellov spustených cez WMI. Analýza hrozieb za pár centov pomocou našej vlastnej príkazovej botky Get-Sysmonlogs.
Úžasné! Vytvoril som dotazovací nástroj pre Sysmon log, akoby bol databázou. V našom článku o sa uvádza, že túto funkciu vykoná opisovaná skvelá utilita, aj keď formálne cez skutočné rozhranie podobné SQL. Áno, EQL je elegantný,, ale k tomu sa dostaneme v tretej časti.
Sysmon a analýza grafov
Poďme sa abstrahovať a zamyslieť nad tým, čo sme práve vytvorili. V podstate máme teraz databázu udalostí Windows, dostupnú cez PowerShell. Ako som už spomenul, medzi záznamami existujú spojenia alebo väzby — cez ParentProcessId — takže môžeme získať celú hierarchiu procesov.
Ak ste čítali sériu potom viete, že hackeri radi vytvárajú zložitý viacfázový útok, v ktorom každý proces má svoju malú úlohu a pripravuje pôdu pre ďalší krok. Takéto veci sú veľmi ťažké zachytiť len z „raw“ logu.
Ale s mojou príkazovou botkou Get-Sysmonlogs a ďalšou štruktúrou údajov, ktorú preskúmame neskôr (samozrejme, ide o graf), budeme mať praktický spôsob, ako odhaliť hrozby – na čo stačí len vykonať správne vyhľadávanie vrcholov.
Ako je zvykom v našich DYI blogových projektoch, čím viac pracujete na analýze hrozieb v malom meradle, tým lepšie si uvedomujete, aké zložité je detegovanie hrozieb na úrovni organizácie. A toto uvedomenie je mimoriadne dôležitý moment.
Prvé zaujímavé komplikácie sa objavia v druhej časti článku, kde začneme prepojovať Sysmon udalosti do oveľa zložitějších štruktúr.
Zdroj: habr.com
