
Gere uma DLL ofuscada que desativará AMSI & ETW
LightsOut irá gerar uma DLL ofuscada que desabilitará AMSI & ETW enquanto tenta evadir o AV. Isso é feito randomizando todas as funções WinAPI usadas, codificando strings com XOR e utilizando verificações básicas de sandbox. Mingw-w64 é usado para compilar o código C ofuscado em uma DLL que pode ser carregada em qualquer processo onde AMSI ou ETW estejam presentes (ex: PowerShell).
LightsOut foi projetado para funcionar em sistemas Linux com python3 e mingw-w64 instalados. Nenhuma outra dependência é necessária.
Recursos atualmente incluem:
_______________________
| |
| AMSI + ETW |
| |
| LIGHTS OUT |
| _______ |
| || || |
| ||_____|| |
| |/ /|| |
| / / || |
| /____/ /-' |
| |____|/ |
| |
| @icyguider |
| |
| RG|
`-----------------------'
usage: lightsout.py [-h] [-m <method>] [-s <option>] [-sa <value>] [-k <key>] [-o <outfile>] [-p <pid>]
Generate an obfuscated DLL that will disable AMSI & ETW
options:
-h, --help show this help message and exit
-m <method>, --method <method>
Bypass technique (Options: patch, hwbp, remote_patch) (Default: patch)
-s <option>, --sandbox <option>
Sandbox evasion technique (Options: mathsleep, username, hostname, domain) (Default: mathsleep)
-sa <value>, --sandbox-arg <value>
Argument for sandbox evasion technique (Ex: WIN10CO-DESKTOP, testlab.local)
-k <key>, --key <key>
Key to encode strings with (randomly generated by default)
-o <outfile>, --outfile <outfile>
File to save DLL to
Remote options:
-p <pid>, --pid <pid>
PID of remote process to patch
Uso Pretendido/Considerações de Opsec
Esta ferramenta foi projetada para ser usada em pentests, principalmente para executar scripts powershell maliciosos sem ser bloqueado por AV/EDR. Por causa disso, a ferramenta é muito básica e muito pode ser adicionado para melhorar a opsec. Não espere que esta ferramenta evite completamente a detecção por EDR.
Exemplos de Uso
Você pode transferir a DLL de saída para o sistema alvo e carregá-la no powershell de várias maneiras. Por exemplo, pode ser feito via P/Invoke com LoadLibrary:

Ou ainda mais fácil, copie o powershell para um local arbitrário e faça side load da DLL!

Agradecimentos/Crédito/Referência Adicional: