Techniques d'obfuscation et d'évasion pour l'outil fscan

L'utilisation d'outils de scan réseau comme fscan lors d'audits internes se heurte souvent aux solutions de détection et de réponse (EDR/AV). Pour maintenir l'efficacité opérationnelle, il est nécessaire d'appliquer des techniques d'obfuscation au code source avant la compilation.

Configuration de l'environnement de développement

La première étape consiste à préparer un environnement Go capable d'effectuer une compilation masquée. L'outil de référence pour cette tâche est garble, qui modifie l'ast (Abstract Syntax Tree) pour rendre le binaire difficile à analyser.

# Configuration des variables d'environnement Go
export PATH=$PATH:/usr/local/go/bin
export GOPATH=$HOME/go
export GOPROXY=https://proxy.golang.org,direct

# Installation de garble pour l'obfuscation
go install mvdan.cc/garble@latest

# Vérification de l'installation
ls -l $(go env GOPATH)/bin/garble
export PATH=$PATH:$(go env GOPATH)/bin/

Processus de compilation et d'obfuscation

Une fois l'environnement prêt, récupérez les sources du projet fscan et utilisez garble pour générer un exécutable dont les chaînes de caractères et les noms de fonctions sont chiffrés ou renommés.

# Récupération des sources
git clone https://github.com/shadow1ng/fscan.git
cd fscan

# Compilation standard avec obfuscation des littéraux
garble -literals build main.go

# Compilation optimisée pour l'évasion Windows (Architecture x64)
GOOS=windows GOARCH=amd64 garble -literals -tiny -seed=random build -o internal_audit_tool.exe main.go

Pour une évasion plus avancée, il est recommandé d'injecter des flags de compilation spécifiques au linker (ldflags) afin de réduire la signature du fichier :

garble -tiny -literals -seed=random build -ldflags="-w -s -H windowsgui" -race -o security_scanner.exe main.go
  • -tiny : Supprime les informations de débogage et réduit la taille du binaire.
  • -literals : Obfusque les chaînes de caractères brutes présentes dans le code.
  • -seed=random : Utilise une entropie aléatoire pour que chaque compilation soit unique.
  • -w -s : Retire la table des symboles et les informations DWARF.
  • -H windowsgui : Empêche l'ouverture d'une console CMD lors de l'exécution (attention, ce flag est parfois surveillé par les EDR).
  • -race : Modifie la structure interne du binaire pour l'analyse de concurrence, ce qui peut casser certaines signatures statiques.

Post-traitement du binaire

Après la compilation, l'utilisation d'un compresseur d'exécutables comme UPX peut aider à modifier l'entropie du fichier, bien que cela puisse augmenter le taux de détection par certains moteurs heuristiques.

upx --best --ultra security_scanner.exe

Gestion des signatures numériques

Les solutions de sécurité accordent souvent un score de confiance plus élevé aux fichiers signés numériquement. Il existe deux approches pour manipuler cet aspect :

  1. Le détournemnet de signature (Signature Hijacking) : Copier les métadonnées et la structure de signature d'un binaire légitime (comme un composant Microsoft ou Google) vers le binaire fscan.
  2. L'importation de certificats auto-signés : Utiliser des outils pour générer une chaîne de certification factice qui semble valide lors d'une analyse rapide.

Suppression des caractéristiques résiduelles

Pour finaliser l'évasion, l'outil Mangle peut être utilisé pour altérer les en-têtes du fichier PE, modifier les noms de sections ou injecter des données inutiles pour changer le hash du fichier sans altérer sa fonctionnalité.

# Exemple d'utilisation de Mangle pour modifier le binaire
./Mangle_amd64.exe -I internal_audit_tool.exe -M -O final_scan_payload.exe

Cette approche permet de contourner les détections basées sur le hachage connu et les règles YARA statiques souvent déployées sur les points de terminaison.

Étiquettes: fscan obfuscation garble red-team golang

Publié le 18 juin à 01h02