
Mangle est un outil qui manipule certains aspects des exécutables compilés (.exe ou DLL) pour éviter la détection par les EDR.
Pour consulter la dernière version de Mangle ou soumettre un problème, référez-vous à https://github.com/Tylous/Mangle.
Rédigé par Tyl0us
Présenté à Source Zero Con 2022
Mangle est un outil qui manipule certains aspects des exécutables compilés (.exe ou DLL). Mangle peut supprimer les chaînes connues d'indicateurs de compromission (IoC) et les remplacer par des caractères aléatoires, modifier le fichier en augmentant sa taille pour contourner les EDR, et peut cloner les certificats de signature de code à partir de fichiers légitimes. Ce faisant, Mangle aide les chargeurs à échapper aux scanneurs sur disque et en mémoire.
Mangle a été développé en Golang.
La première étape, comme toujours, est de cloner le dépôt. Avant de compiler Mangle, vous devez installer les dépendances. Pour les installer, exécutez les commandes suivantes :
go get github.com/Binject/debug/pe
Puis construisez-le
go build Mangle.go
Bien que Mangle soit écrit en Golang, une grande partie des fonctionnalités sont conçues pour fonctionner sur des fichiers exécutables d'autres langages. Au moment de la publication, la seule fonctionnalité spécifique à Golang est la partie manipulation de chaînes.
./mangle -h
_____ .__
/ \ _____ ____ ____ | | ____
/ \ / \\__ \ / \ / ___\| | _/ __ \
/ Y \/ __ \| | \/ /_/ > |_\ ___/
\____|__ (____ /___| /\___ /|____/\___ >
\/ \/ \//_____/ \/
(@Tyl0us)
Usage of ./Mangle:
-C string
Chemin vers le fichier contenant le certificat que vous voulez cloner
-I string
Chemin vers le fichier original
-M Modifier le fichier PE pour supprimer les indicateurs Go
-O string
Le nouveau nom de fichier
-S int
De combien de Mo augmenter la taille du fichier
Mangle prend l'exécutable d'entrée et cherche les chaînes connues que les produits de sécurité recherchent ou signalent. Ces chaînes seules ne sont pas le seul point de détection. Souvent, ces chaînes sont utilisées conjointement avec d'autres points de données et éléments de télémétrie pour la détection et la prévention. Mangle trouve ces chaînes connues et remplace les valeurs hexadécimales par des valeurs aléatoires pour les supprimer. IMPORTANT : Mangle remplace la taille exacte des chaînes qu'il manipule. Il n'ajoute ni plus ni moins, car cela créerait des désalignements et des instabilités dans le fichier. Mangle fait cela avec l'option de ligne de commande -M.
Actuellement, Mangle ne traite que les fichiers Golang, mais avec le temps, d'autres langages seront ajoutés. Si vous connaissez des chaînes pour d'autres langages, veuillez ouvrir un ticket de problème et les soumettre.
Avant
Après
Presque tous les EDR ne peuvent pas analyser les fichiers, que ce soit sur disque ou en mémoire, au-delà d'une certaine taille. Cela vient simplement du fait que les fichiers volumineux prennent plus de temps à examiner, analyser ou surveiller. Les EDR ne veulent pas impacter les performances en ralentissant la productivité des utilisateurs. Mangle gonfle les fichiers en créant un rembourrage d'octets nuls (Zéros) à la fin du fichier. Cela garantit que rien à l'intérieur du fichier n'est affecté. Pour gonfler un exécutable, utilisez l'option de ligne de commande -S suivie du nombre d'octets que vous souhaitez ajouter au fichier. Les charges utiles volumineuses ne sont plus vraiment un problème avec la vitesse actuelle des connexions Internet, cela étant dit, il n'est pas recommandé de créer un fichier de 2 gigas.
Sur la base de tests effectués sur de nombreux EDR en espace utilisateur et noyau, il est recommandé d'augmenter la taille de 95 à 100 mégaoctets. Parce que les fournisseurs ne vérifient pas les fichiers volumineux, l'activité passe inaperçue, ce qui permet une exécution réussie du shellcode.

Mangle contient également la capacité de prendre la chaîne complète et tous les attributs d'un certificat de signature de code légitime d'un fichier et de les copier sur un autre fichier. Cela inclut la date de signature, les contre-signatures et d'autres attributs mesurables.
Bien que cette fonctionnalité puisse ressembler à un autre outil que j'ai développé, Limelighter, la différence majeure entre les deux est que Limelighter crée un faux certificat basé sur un domaine et le signe avec la date et l'heure actuelles, tandis que Mangle utilise des attributs valides dont l'horodatage provient du fichier original. Cette option peut utiliser des fichiers DLL ou .exe pour copier, avec l'option de ligne de commande -C, ainsi que le chemin vers le fichier à partir duquel vous voulez copier le certificat.