Vodnik za analizo groženj Sysmon, 1. del

Vodnik za analizo groženj Sysmon, 1. del

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 z ukazom DownloadString ali skript VBS, ki se pretvarja, da je datoteka Word - preprosto pomikanje po najnovejši dejavnosti v dnevniku dogodkov Windows. Ampak to je res velik glavobol. Na srečo je Microsoft ustvaril Sysmon, ki precej olajša analizo napadov.

Želite razumeti osnovne ideje za grožnjami, prikazanimi v dnevniku Sysmon? Prenesite naš vodnik Dogodki WMI kot sredstvo vohunjenja in ugotovite, kako lahko notranji ljudje prikrito opazujejo druge zaposlene. Glavna težava pri delu z dnevnikom dogodkov Windows je pomanjkanje informacij o nadrejenih procesih, tj. iz njega ni mogoče razbrati hierarhije procesov. Vnosi v dnevnik Sysmon na drugi strani vsebujejo ID nadrejenega procesa, njegovo ime in ukazno vrstico, ki naj se zažene. Hvala, Microsoft.

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 tukaj. Njegova ključna prednost je možnost analiziranja dnevnikov iz več viri, korelacija informacij in izhod nastalih vrednosti v eno mapo dnevnika dogodkov, ki se nahaja na poti Microsoft -> Windows -> Sysmon -> Operational. V svojih lastnih za lase privlečenih preiskavah dnevnikov sistema Windows sem ugotovil, da moram nenehno preklapljati med, recimo, mapo dnevnikov PowerShell in mapo Varnost, pri čemer sem brskal po dnevnikih dogodkov v pogumnem poskusu, da nekako povežem vrednosti med obema. . To nikoli ni lahka naloga in kot sem kasneje spoznal, je bilo bolje, da sem se takoj založil z aspirinom.

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 wmiexec, ki simulira gibanje pametnega insajderja znotraj omrežja. To je tisto, kar boste videli v dnevniku dogodkov Windows:

Vodnik za analizo groženj Sysmon, 1. del

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 poveljevanje in nadzor (C2): Na ta način se ustvari psevdo-lupina z uporabo storitev WMI.
Zdaj pa si oglejmo ekvivalent vnosa Sysmon in opazimo, koliko dodatnih informacij nam daje:

Vodnik za analizo groženj Sysmon, 1. del

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 projekti Pojasnjeno je bilo že, kako uporabiti PowerShell za razčlenitev dnevnika Sysmon. V mojem primeru sem se želel izogniti pisanju ločenih vrstic skripta za razčlenjevanje za vsako polje Sysmon. Zato sem uporabil princip lenuha in mislim, da sem kot rezultat prišel do nekaj zanimivega.
Prva pomembna točka je sposobnost ekipe Get-WinEvent preberite Sysmonove dnevnike, filtrirajte potrebne dogodke in izpišite rezultat v spremenljivko PS, kot je tukaj:

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

Vodnik za analizo groženj Sysmon, 1. del

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 Pretvori iz-Json .
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 Kje (alias – “?”), da skrajšate rezultate iskanja:

Vodnik za analizo groženj Sysmon, 1. del

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 IQ ugotovljeno je bilo, da bo to funkcijo izvajal kul pripomoček, opisan v njem, čeprav formalno še vedno prek pravega vmesnika, podobnega SQL. Da, EQL eleganten, a se ga bomo dotaknili v tretjem delu.

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 "Pustolovščine izmuzljive zlonamerne programske opreme" veste, da hekerji radi ustvarjajo zapletene večstopenjske napade, v katerih ima vsak proces svojo majhno vlogo in pripravi odskočno desko za naslednji korak. Takšne stvari je izjemno težko ujeti zgolj iz »surovega« dnevnika.
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

Dodaj komentar