Ta članek je prvi del serije o analizi groženj Sysmon. Vsi ostali deli serije:
1. del: Uvod v analizo dnevnika Sysmon (tukaj smo)
2. del: Uporaba podatkov o dogodkih Sysmon za prepoznavanje groženj
Del 3. Poglobljena analiza groženj Sysmon z uporabo grafov
Če delate na področju informacijske varnosti, morate verjetno pogosto razumeti nenehne napade. Če že imate izurjeno oko, lahko poiščete nestandardno dejavnost v "surovih" neobdelanih dnevnikih - recimo, izvaja se skript PowerShell
Želite razumeti osnovne ideje za grožnjami, prikazanimi v dnevniku Sysmon? Prenesite naš vodnik
V prvem delu naše serije si bomo ogledali, kaj lahko storite z osnovnimi informacijami iz Sysmona. V XNUMX. delu bomo v celoti izkoristili informacije o nadrejenem procesu za ustvarjanje kompleksnejših struktur skladnosti, znanih kot grafi groženj. V tretjem delu si bomo ogledali preprost algoritem, ki skenira graf groženj za iskanje nenavadne dejavnosti z analizo "teže" grafa. In na koncu boste nagrajeni z lepo (in razumljivo) verjetnostno metodo odkrivanja groženj.
1. del: Uvod v analizo dnevnika Sysmon
Kaj vam lahko pomaga razumeti zapletenost dnevnika dogodkov? Konec koncev - SIEM. Normalizira dogodke in poenostavi njihovo nadaljnjo analizo. Vendar nam ni treba iti tako daleč, vsaj na začetku ne. Na začetku, da bi razumeli načela SIEM, bo dovolj, da preizkusite čudovit brezplačen pripomoček Sysmon. In z njo je presenetljivo lahko delati. Kar tako naprej, Microsoft!
Katere funkcije ima Sysmon?
Skratka – koristne in berljive informacije o procesih (glej slike spodaj). Našli boste kup uporabnih podrobnosti, ki jih ni v dnevniku dogodkov Windows, vendar so najpomembnejša naslednja polja:
- ID procesa (v decimalki, ne v hex!)
- ID nadrejenega procesa
- Proces ukazne vrstice
- Ukazna vrstica nadrejenega procesa
- Zgoščena vrednost slike datoteke
- Imena slik datotek
Sysmon je nameščen kot gonilnik naprave in kot storitev - več podrobnosti
Sysmon naredi kvantni skok naprej z zagotavljanjem uporabnih (ali kot prodajalci radi rečejo, uporabnih) informacij za pomoč pri razumevanju temeljnih procesov. Na primer, začel sem tajno sejo
Dnevnik sistema Windows prikazuje nekaj informacij o postopku, vendar je malo uporaben. Plus ID-ji procesov v šestnajstiški obliki???
Za profesionalnega IT strokovnjaka, ki razume osnove hekanja, bi morala biti ukazna vrstica sumljiva. Uporaba cmd.exe za zagon drugega ukaza in preusmeritev izhoda v datoteko s čudnim imenom je očitno podobna dejanjem programske opreme za nadzor in nadzor
Zdaj pa si oglejmo ekvivalent vnosa Sysmon in opazimo, koliko dodatnih informacij nam daje:
Funkcije Sysmona v enem posnetku zaslona: podrobne informacije o procesu v berljivi obliki
Ne vidite le ukazne vrstice, ampak tudi ime datoteke, pot do izvedljive aplikacije, kaj Windows ve o njej (»ukazni procesor Windows«), identifikator starševski proces, ukazna vrstica starš, ki je zagnal lupino cmd, kot tudi pravo ime datoteke nadrejenega procesa. Končno vse na enem mestu!
Iz dnevnika Sysmon lahko sklepamo, da z veliko verjetnostjo ta sumljiva ukazna vrstica, ki smo jo videli v "surovih" dnevnikih, ni rezultat normalnega dela zaposlenega. Ravno nasprotno, ustvarjen je bil s procesom, podobnim C2 - wmiexec, kot sem že omenil - in ga je neposredno ustvaril storitveni proces WMI (WmiPrvSe). Zdaj imamo indikator, da oddaljeni napadalec ali insajder preizkuša infrastrukturo podjetja.
Predstavljamo Get-Sysmonlogs
Seveda je super, ko Sysmon spravi dnevnike na eno mesto. Verjetno pa bi bilo še bolje, če bi lahko do posameznih polj dnevnika dostopali programsko – na primer prek ukazov PowerShell. V tem primeru bi lahko napisali majhen skript PowerShell, ki bi avtomatiziral iskanje potencialnih groženj!
Nisem bil prvi s takšno idejo. In dobro je, da v nekaterih objavah na forumih in GitHubu
Prva pomembna točka je sposobnost ekipe
$events = Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | where { $_.id -eq 1 -or $_.id -eq 11}
Če želite sami preizkusiti ukaz, tako da prikažete vsebino v prvem elementu matrike $events, $events[0].Message, je lahko rezultat niz besedilnih nizov v zelo preprosti obliki: ime Polje Sysmon, dvopičje in nato sama vrednost.
Hura! Izpis Sysmonovega dnevnika v formatu, pripravljenem za JSON
Misliš isto kot jaz? Z malo več truda lahko izhod pretvorite v niz, oblikovan v JSON, in ga nato z zmogljivim ukazom naložite neposredno v objekt PS
V naslednjem delu bom pokazal kodo PowerShell za pretvorbo – zelo preprosta je. Za zdaj si poglejmo, kaj zmore moj novi ukaz, imenovan get-sysmonlogs, ki sem ga namestil kot modul PS.
Namesto da bi se poglobili v analizo dnevnika Sysmon prek nepriročnega vmesnika dnevnika dogodkov, lahko brez truda iščemo inkrementalno dejavnost neposredno iz seje PowerShell in uporabimo ukaz PS
Seznam lupin cmd, zagnanih prek WMI. Poceni analiza groženj z našo ekipo Get-Sysmonlogs
Čudovito! Ustvaril sem orodje za anketiranje dnevnika Sysmon, kot da bi bil zbirka podatkov. V našem članku o
Sysmon in analiza grafov
Stopimo nazaj in pomislimo, kaj smo pravkar ustvarili. V bistvu imamo zdaj bazo podatkov o dogodkih Windows, dostopno prek lupine PowerShell. Kot sem že omenil, obstajajo povezave ali razmerja med zapisi - prek ParentProcessId -, tako da je mogoče pridobiti popolno hierarhijo procesov.
Če ste prebrali serijo
Toda z mojim ukazom Get-Sysmonlogs in dodatno podatkovno strukturo, ki si jo bomo ogledali pozneje v besedilu (seveda z grafom), imamo praktičen način za odkrivanje groženj – kar zahteva le pravilno iskanje vozlišč.
Kot vedno pri naših blog projektih DYI, bolj ko boste delali na analizi podrobnosti groženj v majhnem obsegu, bolj boste spoznali, kako zapleteno je odkrivanje groženj na ravni podjetja. In to zavedanje je izjemno pomembna točka.
S prvimi zanimivimi zapleti se bomo srečali v drugem delu članka, kjer bomo začeli Sysmonove dogodke med seboj povezovati v veliko bolj kompleksne strukture.
Vir: www.habr.com