
Générer une DLL obfusquée qui désactivera AMSI & ETW
LightsOut générera une DLL obfusquée qui désactivera AMSI & ETW tout en essayant d'éviter les AV. Cela se fait en randomisant toutes les fonctions WinAPI utilisées, en encodant les chaînes avec XOR, et en utilisant des vérifications de sandbox de base. Mingw-w64 est utilisé pour compiler le code C obfusqué en une DLL qui peut être chargée dans tout processus où AMSI ou ETW sont présents (par exemple PowerShell).
LightsOut est conçu pour fonctionner sur des systèmes Linux avec python3 et mingw-w64 installés. Aucune autre dépendance n'est requise.
Fonctionnalités actuellement incluses :
_______________________
| |
| 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
Utilisation prévue / Considérations Opsec
Cet outil a été conçu pour être utilisé lors de tests d'intrusion, principalement pour exécuter des scripts PowerShell malveillants sans être bloqué par les AV/EDR. Pour cette raison, l'outil est très minimaliste et beaucoup de choses peuvent être ajoutées pour améliorer l'opsec. Ne vous attendez pas à ce que cet outil échappe complètement à la détection par un EDR.
Exemples d'utilisation
Vous pouvez transférer la DLL générée sur votre système cible et la charger dans PowerShell de différentes manières. Par exemple, cela peut être fait via P/Invoke avec LoadLibrary :

Ou encore plus simple, copiez PowerShell à un emplacement arbitraire et effectuez un chargement latéral de la DLL !

Remerciements/Crédits/Références supplémentaires :