
Genera una DLL offuscata che disabiliterà AMSI & ETW
LightsOut genererà una DLL offuscata che disabiliterà AMSI e ETW cercando di eludere l'AV. Ciò avviene randomizzando tutte le funzioni WinAPI utilizzate, codificando le stringhe con XOR e utilizzando controlli di sandbox di base. Mingw-w64 viene utilizzato per compilare il codice C offuscato in una DLL che può essere caricata in qualsiasi processo in cui siano presenti AMSI o ETW (ad es. PowerShell).
LightsOut è progettato per funzionare su sistemi Linux con python3 e mingw-w64 installati. Non sono necessarie altre dipendenze.
Caratteristiche attualmente incluse:
_______________________
| |
| AMSI + ETW |
| |
| LIGHTS OUT |
| _______ |
| || || |
| ||_____|| |
| |/ /|| |
| / / || |
| /____/ /-' |
| |____|/ |
| |
| @icyguider |
| |
| RG|
`-----------------------'
usage: lightsout.py [-h] [-m <method>] [-s <option>] [-sa <value>] [-k <key>] [-o <outfile>] [-p <pid>]
Genera una DLL offuscata che disabilita AMSI e ETW
opzioni:
-h, --help mostra questo messaggio di aiuto ed esci
-m <method>, --method <method>
Tecnica di bypass (Opzioni: patch, hwbp, remote_patch) (Predefinito: patch)
-s <option>, --sandbox <option>
Tecnica di evasione sandbox (Opzioni: mathsleep, username, hostname, domain) (Predefinito: mathsleep)
-sa <value>, --sandbox-arg <value>
Argomento per la tecnica di evasione sandbox (Es: WIN10CO-DESKTOP, testlab.local)
-k <key>, --key <key>
Chiave per codificare le stringhe (generata casualmente per impostazione predefinita)
-o <outfile>, --outfile <outfile>
File in cui salvare la DLL
Opzioni remote:
-p <pid>, --pid <pid>
PID del processo remoto da patchare
Uso previsto/Considerazioni Opsec
Questo strumento è stato progettato per essere utilizzato nei pentest, principalmente per eseguire script PowerShell dannosi senza essere bloccati da AV/EDR. Per questo motivo, lo strumento è molto essenziale e molto può essere aggiunto per migliorare l'opsec. Non aspettarti che questo strumento eluda completamente il rilevamento da parte dell'EDR.
Esempi di utilizzo
Puoi trasferire la DLL di output sul sistema di destinazione e caricarla in PowerShell in vari modi. Ad esempio, può essere fatto tramite P/Invoke con LoadLibrary:

O ancora più semplice, copia PowerShell in una posizione arbitraria e carica lateralmente la DLL!

Ringraziamenti/Crediti/Riferimenti aggiuntivi: