
Denna artikel Ă€r den första delen av en serie om analys av Sysmon-hot. Ăvriga delar i serien:
Del 1. Introduktion till analys av Sysmon-loggar (hÀr Àr vi)
Del 2. AnvÀndning av data frÄn Sysmon-hÀndelser för att identifiera hot
Del 3. DjupgÄende analys av Sysmon-hot med hjÀlp av grafteknik
Om du arbetar med informationssĂ€kerhet stöter du sĂ€kert ofta pĂ„ attacker. Om du har ett vĂ€ltrĂ€nat öga kan du leta efter oegentligheter i de "rĂ„a" outredda loggarna â till exempel ett PowerShell-skript som körs eller ett VBS-skript som lĂ„tsas vara en Word-fil, genom att helt enkelt blĂ€ddra genom den senaste aktiviteten i Windows hĂ€ndelseloggen. Men det Ă€r verkligen en stor huvudvĂ€rk. Tack och lov har Microsoft skapat Sysmon, vilket gör attackeranalys betydligt enklare.
Vill du förstÄ de grundlÀggande idéerna bakom hoten som visas i Sysmon-loggen? Ladda ner vÄr guide och du kommer att inse hur insiders kan övervaka andra anstÀllda utan att bli upptÀckta. Huvudproblemet med att arbeta med Windows hÀndelseloggen Àr avsaknaden av information om förÀldraprocesser, dvs. man kan inte förstÄ processhierarkin. I Sysmon-loggarna Ä sin sida finns bÄde förÀldraprocessens ID, dess namn och den körda kommandoraden. Tack Microsoft.
I den första delen av vÄr serie kommer vi att titta pÄ vad som kan göras med grundlÀggande information frÄn Sysmon. I den andra delen kommer vi fullt ut att utnyttja informationen om förÀldraprocesser för att skapa mer komplexa överenskommelsestrukturer som kallas hotgrafer. I den tredje delen kommer vi att gÄ igenom en enkel algoritm som skannar hotgrafen för att leta efter oegentligheter genom att analysera "vikten" av grafen. Och avslutningsvis vÀntar en prydlig (och begriplig) sannolikhetsmetod för hotdetektering som belöning.
Del 1: Introduktion till analys av Sysmon-loggar
Vad hjĂ€lper till att förstĂ„ komplexiteten i hĂ€ndelseloggen? I slutĂ€ndan â SIEM. Det normaliserar hĂ€ndelser och förenklar deras efterföljande analys. Men vi behöver inte gĂ„ sĂ„ lĂ„ngt, Ă„tminstone inte i början. För att förstĂ„ SIEM:s principer rĂ€cker det att prova det fantastiska gratisverktyget Sysmon. Och det Ă€r förvĂ„nansvĂ€rt lĂ€tt att arbeta med. Bra jobbat, Microsoft!
Vilka möjligheter har Sysmon?
Kort sagt â anvĂ€ndbar och lĂ€sbar information om processer (se bilder nedan). Du kommer att upptĂ€cka en massa anvĂ€ndbara detaljer som saknas i Windows hĂ€ndelseloggen, men viktigast av allt â följande fĂ€lt:
- Process-ID (i decimalt format, inte hex!)
- FörÀldra-processens ID
- Processens kommandorad
- FörÀldra-processens kommandorad
- Filens bildhash
- Filens bildnamn
Sysmon installeras samtidigt som en enhetsdrivrutin och som en tjĂ€nst â mer information Dess huvudfördel Ă€r möjligheten att analysera loggar frĂ„n flera kĂ€llor, korrelera information och visa resulterande vĂ€rden i en hĂ€ndelseloggmapp som finns pĂ„ vĂ€gen Microsoft -> Windows -> Sysmon -> Operational. I mina egna utredningar av Windows-loggar, som fĂ„r hĂ„ret att reser sig, var jag stĂ€ndigt tvungen att vĂ€xla mellan, sĂ€g, mappen med PowerShell-loggar och mappen 'SĂ€kerhet', och blĂ€ddra bland hĂ€ndelseloggarna i ett heroisk försök att pĂ„ nĂ„got sĂ€tt matcha vĂ€rdena mellan dem. Det Ă€r ingen lĂ€tt uppgift, och som jag senare insĂ„g, var det bĂ€st att ha nĂ„gra aspiriner till hands.
Sysmon gör ett kvalitativt sprĂ„ng framĂ„t, och ger anvĂ€ndbar (eller som leverantörer gillar att sĂ€ga â handlingsbar) information för att hjĂ€lpa till att förstĂ„ grundprocesserna. Till exempel, jag körde en dold session , som simulerar rörelsen av en smart insider inom nĂ€tverket. SĂ„ hĂ€r ser det ut i Windows-loggen:

I Windows-loggen syns viss information om processen, men den Àr inte sÀrskilt anvÀndbar. Dessutom Àr process-ID:n i hexadecimalt format???
En professionell IT-specialist med förstĂ„else för hackning bör ifrĂ„gasĂ€tta kommandoraden. Att anvĂ€nda cmd.exe för att köra ett annat kommando med omdirigering av utdata till en fil med ett konstigt namn â det liknar tydligt Ă„tgĂ€rder som mjukvara för kontroll och styrning : PĂ„ det hĂ€r sĂ€ttet skapas en pseudo-shell med hjĂ€lp av WMI-tjĂ€nster.
LÄt oss nu titta pÄ motsvarande post frÄn Sysmon, med fokus pÄ hur mycket mer information den ger oss:

Sysmons möjligheter i en bild: detaljerad information om processen i lÀsbar form
Du ser inte bara kommandoraden, utan ocksÄ filnamnet, sökvÀgen till den körbara applikationen, vad Windows vet om detta ("Windows Command Processor"), identifieraren förÀldra processen, kommandoraden förÀldern, som startade cmd-shellet, sÄvÀl som det verkliga filnamnet för förÀldraprocessen. Allt pÄ ett stÀlle, Àntligen!
FrÄn Sysmon-loggen kan vi dra slutsatsen att denna misstÀnkta kommandorad, som vi sÄg i de "rÄa" loggarna, troligtvis inte Àr resultatet av normal anstÀllning. Snarare tvÀrtom, den genererades av en C2-liknande process - wmiexec, som jag nÀmnde tidigare - och skapades direkt av WMI-tjÀnstens process (WmiPrvSe). Nu har vi en indikation pÄ att en fjÀrrangripare eller insider testar företagsinfrastrukturen.
Presentera Get-Sysmonlogs
SjĂ€lvklart Ă€r det fantastiskt nĂ€r Sysmon har loggar pĂ„ ett stĂ€lle. Men det skulle nog vara Ă€nnu bĂ€ttre om vi kunde programmĂ€ssigt fĂ„ tillgĂ„ng till individuella loggfĂ€lt â till exempel genom PowerShell-kommandon. I sĂ„dana fall skulle vi kunna skriva ett litet PowerShell-script som automatiserar sökandet efter potentiella hot!
Det var inte jag som först kom pÄ idén. Och det Àr bra att det redan har förklarats i vissa foruminlÀgg och GitHub hur man anvÀnder PowerShell för att parsa Sysmon-loggen. I mitt fall ville jag undvika att behöva skriva separata rader av parse-script för varje Sysmon-fÀlt. DÀrför anvÀnde jag principen av en lat mÀnniska och, som jag tror, kom pÄ nÄgot intressant.
Det första viktiga momentet Àr möjligheten av kommandot att lÀsa Sysmon-loggar, filtrera de nödvÀndiga hÀndelserna och skriva ut resultatet i en PS-variabel, som hÀr:
$events = Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | where { $_.id -eq 1 -or $_.id -eq 11}
Om du vill kontrollera lagets arbete sjÀlv, kan du genom att visa innehÄllet i det första elementet i arrayen $events, $events[0].Message, fÄ en serie textstrÀngar med ett mycket enkelt format: Sysmon-fÀltnamn, kolon och sedan sjÀlva vÀrdet.

Wow! Utskrift av Sysmon-logg i ett fÀrdigt JSON-format.
TÀnker du pÄ samma sak som jag? Med lite mer anstrÀngning kan vi konvertera utskriften till en formatterad JSON-strÀng och sedan ladda upp den direkt i PS-objektet med hjÀlp av det kraftfulla kommandot. .
Jag kommer att visa PowerShell-koden för konvertering â den Ă€r mycket enkel â i nĂ€sta del. Men först, lĂ„t oss titta pĂ„ vad mitt nya kommando kallat get-sysmonlogs gör, som jag installerade som en PS-modul.
IstĂ€llet för att grĂ€va ner oss i analysen av Sysmon-loggar genom det otympliga grĂ€nssnittet för hĂ€ndelseloggen, kan vi enkelt söka efter inkrementell aktivitet direkt frĂ„n PowerShell-sessionen och ocksĂ„ anvĂ€nda PS-kommandot. (alias â "?") för att förkorta utfallet:

Lista av cmd-shells som körs via WMI. Hotanalys billigt med hjÀlp av vÄrt eget kommando Get-Sysmonlogs.
Fantastiskt! Jag skapade ett verktyg för att frÄga Sysmon-loggar, som om det vore en databas. I vÄr artikel om nÀmndes det att denna funktion utförs av det fantastiska verktyget som beskrivs, Àven om det tekniskt sett ÀndÄ gÄr via ett verkligt SQL-liknande grÀnssnitt. Ja, EQL Àr elegant,, men vi kommer att ta upp det i tredje delen.
Sysmon och grafanalys.
LĂ„t oss abstrahera och tĂ€nka pĂ„ vad vi just har skapat. I grunden har vi nu en databas av Windows-hĂ€ndelser, tillgĂ€nglig via PowerShell. Som jag nĂ€mnde tidigare finns det kopplingar eller relationer mellan posterna â via ParentProcessId â sĂ„ vi kan fĂ„ en fullstĂ€ndig hierarki av processer.
Om du har lÀst serien vet du att hackers Àlskar att skapa komplexa flerstegsattacker dÀr varje process har en liten roll och förbereder scenen för nÀsta steg. SÄdana saker Àr oerhört svÄra att fÄnga bara frÄn en "rÄ" logg.
Men med mitt kommando Get-Sysmonlogs och den extra datastrukturen som vi kommer att titta pĂ„ lĂ€ngre fram i texten (naturligtvis Ă€r det en graf), fĂ„r vi ett praktiskt sĂ€tt att upptĂ€cka hot â vilket krĂ€ver att vi bara utför rĂ€tt sökningar bland noderna.
Som alltid i vÄra DYI blogprojekt, ju mer du arbetar med att analysera hotdetaljer i liten skala, desto bÀttre förstÄr du hur komplext det Àr att upptÀcka hot pÄ organisatorisk nivÄ. Denna insikt Àr mycket viktig.
Vi kommer att möta de första intressanta utmaningarna i den andra delen av artikeln, dÀr vi börjar koppla samman Sysmon-hÀndelser i betydligt mer komplexa strukturer.
KĂ€lla: habr.com
