
See artikkel on esimene osa Sysmon-ähvarduste analüüsi seeriast. Kõik ülejäänud osad seeriast:
Osa 1. Tutvumine Sysmon logide analüüsiga (me oleme siin)
Osa 2. Sysmon sündmustest saadud andmete kasutamine ähvarduste tuvastamiseks
Osa 3. Süva analüüs Sysmon-ähvardustest graafide abil
Kui tegelete infokaitsega, peate kindlasti tihti tegelema toimuva rünnakute analüüsimisega. Kui teil on juba haritud silm, võite otsida ebatavalist tegevust "toores" töötlemata logides — näiteks PowerShell skriptiga, mis käivitab või VBS-skript, mis teeseldab Wordi faili, — lihtsalt kerides viimase tegevuse kaudu Windowsi sündmuste logis. Kuid see on tõeliselt suur peavalu. Õnneks on Microsoft loonud Sysmoni, mis muudab rünnakute analüüsi oluliselt lihtsamaks.
Kas soovite aru saada Sysmon logides kajastuvate ähvarduste taga seisvatest põhiideedest? Laadige alla meie juhend ja te teadlik, kuidas siseringi inimesed saavad tähelepanuta jälgida teisi töötajaid. Peamine probleem Windowsi sündmuslogiga töötamisel on beetaressursiprotsesside puudumine, st selle järgi ei saa aru protsessihierarhiast. Sysmoni logi sissekanded seevastu sisaldavad vanema protsessi ID-d, nime ja käivitatavat käsuviiba. Aitäh, Microsoft.
Meie seeria esimeses osas vaatame, mida saab teha Sysmoni põhiteabe abil. Teises osas kasutame täielikult ära vanemate protsesside teavet, et luua keerukamaid vastavustestruktuure, mida tuntakse kui ohu graafikud. Kolmandas osas käsitleme lihtsat algoritmi, mis skaneerib ohu graafikut, et otsida ebatavalist tegevust graafi 'kaalu' analüüsi kaudu. Ja lõpus ootab teid auhinnaks korralik (ja arusaadav) tõenäosusmeetod ohtude tuvastamiseks.
Osa 1: Sysmoni logide analüüsiga tutvumine
Mis aitab mõista sündmuslogi keerukusi? Lõppkokkuvõttes – SIEM. See normaliseerib sündmusi ja lihtsustab nende edasist analüüsi. Kuid me ei pea nii kaugele minema, vähemalt esialgu. Alguses piisab SIEM'i põhimõtete mõistmiseks, kui proovite imelist tasuta tööriista Sysmon. Ja sellega on üllatavalt lihtne töötada. Nii edasi, Microsoft!
Millised on Sysmoni võimalused?
Lühidalt öeldes – kasulik ja arusaadav teave protsesside kohta (vt allolevaid pilte). Leiate hulk kasulikke detaile, mida Windowsi sündmuslogis ei ole, kuid kõige tähtsam – järgmised väljad:
- Protsessi ID (decimal kujul, mitte hex!)
- Vanemprotsessi ID
- Protsessi käsurea käsk
- Vanemprotsessi käsurea käsk
- Faili pildi hash
- Faili piltide nimed
Sysmon installitakse samaaegselt nii seadme draiverina kui ka teenusena – rohkem infot Selle peamine eelis on võimalus logide analüüsimiseks mõnest allikatest, teabe korrelatsioon ja tulemuste esitamine ühte sündmuslogi kausta, mis asub teel Microsoft -> Windows -> Sysmon -> Operational. Omanetes Windowsi logide uurimised, mis ajavad juuksed rööprähkima, pidasin pidevalt vahetama näiteks PowerShelli logide kausta ning „Turvalisuse” kausta, sirvides sündmuste logisid kangelaslikus katsetuses õigete väärtuste vastavusse viimiseks. See pole kerge ülesanne ja nagu hiljem mõistsin, oleks parem olnud kohe aspiriini varuda.
Sysmon aga teeb kvaliteetse hüppe edasi, pakkudes kasulikku (või nagu tootjad armastavad öelda – tõhusat) teavet, et aidata arusaamisel põhiprotsessidest. Näiteks käivitasin varjatud seansi , simuleerides nutika siseringi liikme liikumist võrgus. Siin on see, mida näete Windowsi sündmuste logis:

Windowsi logis on nähtav mingi teave protsessi kohta, kuid see on vähekasulik. Lisaks on protsessi identifikaatorid kuuekümnendlikes numbrites???
Professionaalne IT-spetsialist, kellel on arusaam häkkimise aluspõhimõtetest, peaks olema ettevaatlik käsurea suhtes. Cmd.exe kasutamine, et hiljem käivitada teine käsk koos väljundi suunamisega ebatavalise nimega faili, näeb selgelt välja nagu tarkvara kontrolli ja juhtimise tegevus. : sel viisil luuakse vale-shell WMI teenuste abil.
Nüüd vaatame Sysmon'i kirje vastet, pöörates tähelepanu sellele, kui palju lisainfot see meile annab:

Sysmoni võimalused ühel ekraanipildil: üksikasjalik teave protsessi kohta arusaadaval kujul
Te näete mitte ainult käsurea, vaid ka faili nime, teed käivitatava rakenduse juurde, mida Windows selle kohta teab ("Windows Command Processor"), identifikaatorit vanemast protsessist, käsurea vanemast, mis käivitas cmd-shell'i, samuti vanema protsessi tegelikku faili nime. Kõik ühes kohas, lõpuks!
Sysmoni logist võime järeldada, et see kahtlane käskluste joon, mida nägime "toor" logides, ei ole tõenäoliselt töötaja tavapärase töö tulemus. Vastupidi, see oli genereeritud C2-sarnase protsessi — wmiexec, nagu juba mainisin — ja see oli otseselt loodud WMI teenuse protsessi (WmiPrvSe) kaudu. Nüüd on meil indikatsioon, et kaugne ründaja või sisemine isik proovib ettevõtte infrastruktuuri haavatavust.
Tutvustame Get-Sysmonlogs
Muidugi on suurepärane, et Sysmon talletab logid ühes kohas. Kuid ilmselt oleks veel parem, kui saaksime individuaalseid logivälju programmialiselt juurde pääseda – näiteks PowerShelli käskude kaudu. Sellisel juhul võiksime kirjutada väikese PowerShelli skripti, mis automatiseeriks potentsiaalsete ohtude otsingu!
Ma ei olnud esimene, kellel tuli selline idee. Ja on tore, et mõnedes foorumide ja GitHubi postitustes On juba selgitatud, kuidas kasutada PowerShelli Sysmon-logi tõlgendamiseks. Minu puhul soovisin vältida vajadust kirjutada eraldi tõlgendamis-skripti igale Sysmoni väljale. Seetõttu kasutasin laiskuse põhimõtet ja arvan, et lõpptulemusena sain midagi huvitavat.
Esimene oluline punkt on käskude võimalus lugeda Sysmon logisid, filtreerida vajalikud sündmused ja väljund tulemus PS muutujasse, nagu siin:
$events = Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | where { $_.id -eq 1 -or $_.id -eq 11}
Kui soovite ise käsku proovida, siis saate massiivi $events esimese elemendi sisu kuvada $events[0].Message, mille väljundiks on seeria tekstiridasid väga lihtsas formaadis: Sysmoni välja nimi, koolon ja seejärel väärtus.

Hurraa! Sysmoni logi väljund JSON-formaati sobivaks
Kas mõtlete sama, mis mina? Kui panete veel natuke vaeva, saab väljundi konverteerida vormindatud JSON-stringiks ja seejärel laadida otse PS-objekti, kasutades võimsaid käsku .
Näitan PowerShelli koodi konversiooniks — see on väga lihtne — järgmises osas. Seni vaatame, mida minu uus käsk get-sysmonlogs, mille installisin PS-moodulina, teha suudab.
Kuna ei soovi süveneda Sysmoni logide analüüsi ebamugavas sündmuste registris, saame hõlpsasti otsida inkrementaalset aktiivsust otse PowerShelli sessioonist ning kasutada PS-käsku (alias – «?») tulemuste vähendamiseks:

WMI kaudu käivitatud cmd-shelld. Ohuanalüüs odavalt meie enda käsu Get-Sysmonlogs abil.
Imeline! Loo Sysmon-logi küsitlusvahend, nagu see oleks andmebaas. Meie artiklis toodi välja, et see funktsioon täidetakse selles kirjeldatud ägeda utiliidi abil, kuigi ametlikult siiski läbi tõelise SQL-sarnase liidese. Jah, EQL on elegantne, kuid puudutame seda kolmandas osas.
Sysmon ja graafianalüüs
Lähme abstraktselt mõtlema sellele, mida just lõime. Ilmselt on meil nüüd Windowsi sündmuste andmebaas, millele pääsete juurde PowerShelli kaudu. Nagu ma varem märkisin, on kirjeid ühendavad sidemed – läbi ParentProcessId – seega on võimalik saada täielik protsesside hierarhia.
Kui olete lugenud seeriat siis teate, et häkkerid armastavad luua keerukaid mitmeastmelisi rünnakuid, kus iga protsess täidab oma väikest rolli ja valmistab ette platvormi järgmise sammu jaoks. Selliseid asju on äärmiselt raske tuvastada lihtsalt "toore" logi põhjal.
Aga koos minu Get-Sysmonlogs meeskonnaga ja täiendava andmestruktuuriga, mida me hiljem käsitleme (muidugi on see graaf), on meil praktiline viis tuvastada ohte – selleks on vaja vaid õigesti otsida tippe.
Nagu alati meie DIY blogiprojektides, mida rohkem te töötate ohtude analüüsi kallal väiksemas mastaabis, seda paremini saate aru, kui keeruline on ohte avastada organisatsiooni tasandil. Ja see arusaam on äärmiselt oluline aspekt.
Kohtame esimesed huvitavad väljakutsed artikli teises osas, kus hakkame siduma Sysmoni sündmusi keerukamateks struktuurkks.
Allikas: habr.com
