Questa tecnica può essere impiegata in un attacco di spear-phishing, ma la parte del social engineering non viene trattata, per ragioni di sicurezza. Il thread delinea il metodo per ottenere una reverse shell che bypassa l'AV, assumendo che dietro all'end-point ci sia anche un user abbastanza sveglio da killare un processo infetto da Task Manager.
I processi infetti che hostano una reverse shell, sono un elemento critico per l'attaccante, e devono rimanere intatti. La loro chiusura, determinerà la fine della shell remota. windows/meterpreter, incorpora un comando chiamato
Nell'esperimento, sarà usato un file legittimo di MS Office, che hosta shellcode per
Per impedire di risalire al file originale, il deployment va eseguito attraverso un Dropper. Qui entrano in gioco le skill in Python:
Il seguente script usa
Il comando
- Nella prima istanza, os.system sposta rapidamente l'.exe infetto dalla working directory, a %TEMP%, usando "MOVE".
- Nella seconda istanza, lo script cerca l'exe spostato in %TEMP% e lo esegue, lo può eseguire indiscriminatamente sia coi privilegi dell'USER che as AUTHORITY/SYSTEM. Dipende da come il target ha eseguito lo script.
Operando in questo modo, il blue teamer di turno non può indovindare al volo cosa stia accadendo. Vedendo di aver aperto un file che non fa nulla, sospetterà di essere di fronte a un trojan, ma senza sapere che quello è solo un Dropper creato per il deployment. Il vero file è situato in %TEMP%, e presenta un nome fraintenditivo nel Task Manager, chiamandosi come un processo di MS Office. Oltre a %TEMP%, possono essere specificate altre working directories, sfruttando la variabile %USERPROFILE% in os.system. Bindando al Dropper un UAC bypass method, possono essere sfruttate in modo stealth anche altri path come
Questo metodo è un'alternativa funzionale al comando "Migrate", che usa un metodo d'injection antico come i dinosauri, e che richiede troppe rimanipolazioni per essere di nuovo funzionale all'evasion. Il metodo del dropper mette in sicurezza sia Meterpreter che la Shell di base. Oltre a urllib esistono altri metodi che potete sfruttare per il download, come curl e bitsadmin (presenti di default nelle versioni moderne di Windows, oppure Powershell
Curiosità: nell'esperimento si verifica un piccolo bug di natura benevola (per l'attaccante). Il payload viene spostato dalla current working directory a %TEMP%, e così risulta. Tuttavia, usando i comandi
I processi infetti che hostano una reverse shell, sono un elemento critico per l'attaccante, e devono rimanere intatti. La loro chiusura, determinerà la fine della shell remota. windows/meterpreter, incorpora un comando chiamato
migrate
che performa l'iniezione di shellcode in un nuovo processo come workaround, supponendo che l'attaccante performi l'iniezione in un processo critico (che deve essere ON per forza) come explorer.exe o winlogon.exe. Tuttavia, quando proviamo a lanciare questo comando, si viene bullizzati, PESANTEMENTE, dalla maggior parte degli AV esistenti (anche se il payload di base aveva bypassato). Il comando migrate effettua un'injection sofisticata, ma ormai conosciuta dagli AV, a causa della sua natura open-source.Nell'esperimento, sarà usato un file legittimo di MS Office, che hosta shellcode per
windows/meterpreter/reverse_tcp
. Questo file, che ha un nome arbitrario (scelta a piacere), spawnerà semplicemente nel Task Manager come "Microsoft Outlook Conflict Note", a prescindere da come viene rinominato. Questo rende difficile capire quale sia il vero nome dell'.exe che sta hostando metsvc.dll
. Il punto, comunque, è che questo template può essere individuato risalendo alla descrizione del file da cui origina:Per impedire di risalire al file originale, il deployment va eseguito attraverso un Dropper. Qui entrano in gioco le skill in Python:
Il seguente script usa
urllib.request.urlretrieve
, per scaricare il payload dal nostro server alla working directory del target. Sempre per ragioni di sicurezza, non viene neppure spiegato come creare un server che funziona in WAN, sperando che quelli che lanciano smbghost su Shodan si incartino qui.Il comando
os.system
viene lanciato due volte:- Nella prima istanza, os.system sposta rapidamente l'.exe infetto dalla working directory, a %TEMP%, usando "MOVE".
- Nella seconda istanza, lo script cerca l'exe spostato in %TEMP% e lo esegue, lo può eseguire indiscriminatamente sia coi privilegi dell'USER che as AUTHORITY/SYSTEM. Dipende da come il target ha eseguito lo script.
Operando in questo modo, il blue teamer di turno non può indovindare al volo cosa stia accadendo. Vedendo di aver aperto un file che non fa nulla, sospetterà di essere di fronte a un trojan, ma senza sapere che quello è solo un Dropper creato per il deployment. Il vero file è situato in %TEMP%, e presenta un nome fraintenditivo nel Task Manager, chiamandosi come un processo di MS Office. Oltre a %TEMP%, possono essere specificate altre working directories, sfruttando la variabile %USERPROFILE% in os.system. Bindando al Dropper un UAC bypass method, possono essere sfruttate in modo stealth anche altri path come
C:/Windows/System32
Auguri a killarlo. Questo metodo è un'alternativa funzionale al comando "Migrate", che usa un metodo d'injection antico come i dinosauri, e che richiede troppe rimanipolazioni per essere di nuovo funzionale all'evasion. Il metodo del dropper mette in sicurezza sia Meterpreter che la Shell di base. Oltre a urllib esistono altri metodi che potete sfruttare per il download, come curl e bitsadmin (presenti di default nelle versioni moderne di Windows, oppure Powershell
Invoke-Webrequests
). Quello che conta sempre e comunque, è sopprimere gli output, per evitare che dall'altra parte si insospettiscano.Curiosità: nell'esperimento si verifica un piccolo bug di natura benevola (per l'attaccante). Il payload viene spostato dalla current working directory a %TEMP%, e così risulta. Tuttavia, usando i comandi
ls
e pwd
, la sessione si interfaccia con la working directory dell'User, invece che con %TEMP%. Questo permette di risparmiare un pochino di tempo se la current working directory è il Desktop, dal momento che questa cartella contiene spesso sensitive-data, materiale bollente per uno shell-based trojan.