Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
obfuscation_detection — Plugin Binary Ninja pour identifier le code obfusqué et d'autres constructions de code intéressantes. | Kitploit
Outils/GitHubGitHub/mrphrazer/obfuscation_detection
Analyse StatiqueRétro-ingénierieAnalyse de MalwareAnalyse de BinairesAnalyse de Micrologiciel
GitHubmrphrazer/obfuscation_detection

obfuscation_detection

Plugin Binary Ninja pour identifier le code obfusqué et d'autres constructions de code intéressantes.

Voir le dépôt
6727422il y a 4 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Obfuscation Detection (v2.4)

Auteur : Tim Blazytko

Détecte automatiquement le code obfusqué et d'autres constructions de code intéressantes

Description :

Obfuscation Detection est un plugin Binary Ninja pour détecter le code obfusqué et les constructions de code intéressantes (par exemple, les machines à états) dans les binaires. Étant donné un binaire, le plugin facilite l'analyse en identifiant les emplacements de code qui pourraient mériter un examen plus approfondi lors du rétro-ingénierie.

Basé sur diverses heuristiques, le plugin repère les fonctions qui contiennent des constructions de code complexes ou inhabituelles. Ces constructions de code peuvent implémenter :

  • du code obfusqué
  • des machines à états et des protocoles
  • des communications avec un serveur C&C
  • des routines de déchiffrement de chaînes
  • des algorithmes cryptographiques

Les articles de blog suivants fournissent plus d'informations sur les heuristiques sous-jacentes et montrent leurs cas d'utilisation :

  • Détection automatisée de l'aplatissement du flux de contrôle
  • Détection automatisée de code obfusqué
  • Analyse statistique pour détecter du code inhabituel
  • Identification des fonctions API dans les binaires

Quelques exemples d'utilisation se trouvent dans examples. De plus, la conférence REcon "Unveiling Secrets in Binaries using Code Detection Strategies" montre quelques cas d'utilisation. Les diapositives sont disponibles ici ; l'enregistrement est disponible ici.

Fonctionnalités principales

  • identifie les constructions de code intéressantes dans les gros binaires
  • met en évidence les instructions désalignées dans la vue graphique de Binary Ninja
  • implémentation efficace et indépendante de l'architecture
  • s'exécute en tâche de fond
  • étiquette automatiquement les fonctions identifiées avec l'heuristique ou l'utilitaire correspondant
  • peut être utilisé en mode interface utilisateur et en mode sans tête (headless)

Installation

L'outil peut être installé via le gestionnaire de plugins de Binary Ninja.

Pour la version sans tête, suivez ces étapes :

git clone https://github.com/mrphrazer/obfuscation_detection.git
cd obfuscation_detection

# installer obfuscation_detection
pip install .

Utilisation

Le plugin peut être utilisé dans l'interface utilisateur et en mode sans tête.

Interface utilisateur

Choisissez Plugins -> Obfuscation Detection pour exécuter des heuristiques individuelles, ou Plugins -> Obfuscation Detection -> Utils pour exécuter des détections d'utilitaires individuelles. La commande Plugins -> Obfuscation Detection -> All exécute toutes les heuristiques et tous les utilitaires ensemble.

Menu du plugin

Les résultats sont affichés dans la fenêtre de journal :

Journal de Binary Ninja

En cliquant sur les adresses de fonction identifiées, Binary Ninja navigue vers la fonction sélectionnée.

Mode sans tête

Pour utiliser le plugin en mode sans tête, exécutez scripts/detect_obfuscation.py :

$ python3 scripts/detect_obfuscation.py <binaire>

Ceci exécute toutes les heuristiques et tous les utilitaires. Pour une sortie lisible par machine, passez --json :

$ python3 scripts/detect_obfuscation.py --json <binaire>

Le payload JSON contient tous les résultats sous la clé detections. Chaque détection possède un id stable pour l'automatisation et un name lisible par l'humain. Chaque résultat de fonction étiquetée inclut le type d'étiquette et la description utilisés par le plugin Binary Ninja.

Pour exécuter uniquement l'heuristique de machine à état en mode sans tête, utilisez scripts/detect_state_machine.py :

$ python3 scripts/detect_state_machine.py [--json] <binaire>

Heuristiques de détection

Le plugin implémente diverses heuristiques de détection pour détecter différentes constructions de code. Dans ce qui suit, nous décrivons brièvement chaque heuristique et expliquons son utilisation.

Bloc de base volumineux

L'heuristique du bloc de base volumineux identifie les 10 % supérieurs des fonctions ayant le plus grand nombre moyen d'instructions par bloc de base. Elle permet de détecter :

  • le code déroulé
  • les implémentations cryptographiques
  • les routines d'initialisation
  • l'obfuscation arithmétique / l'arithmétique booléenne mixte (Mixed Boolean-Arithmetic)

Fonction complexe

L'heuristique de fonction complexe identifie les 10 % supérieurs des fonctions ayant les graphes de flux de contrôle les plus complexes (basés sur la complexité cyclomatique). Elle permet d'identifier :

  • les routines de répartition complexes et les protocoles
  • les machines à états
  • les fonctions obfusquées avec des prédicats opaques

Machine à état

L'heuristique de machine à état utilise des propriétés de théorie des graphes pour identifier les fonctions implémentant des machines à états. Généralement, ces machines à états peuvent être représentées comme des instructions switch dispatchées dans une boucle. L'heuristique permet d'identifier :

  • la répartition de protocoles réseau
  • la logique d'analyse de fichiers
  • la communication avec un serveur C&C / la répartition de commandes
  • l'aplatissement du flux de contrôle

Séquence d'instructions inhabituelle

L'heuristique de séquence d'instructions inhabituelle effectue une analyse statistique pour identifier les 10 % supérieurs des fonctions dont les motifs de code s'écartent d'une vérité de terrain précalculée. Ainsi, l'heuristique permet d'identifier :

  • les implémentations cryptographiques
  • l'utilisation intensive de l'arithmétique à virgule flottante
  • l'obfuscation arithmétique / l'arithmétique booléenne mixte
  • les motifs d'obfuscation génériques

Instruction chevauchante

L'heuristique d'instruction chevauchante identifie les fonctions avec des instructions désalignées (les octets d'instruction sont partagés par deux instructions différentes). L'heuristique identifie :

  • le désassemblage cassé (par exemple, des données marquées comme du code)
  • les prédicats opaques qui sautent dans d'autres instructions

Si l'heuristique est utilisée dans l'interface utilisateur de Binary Ninja, les instructions chevauchantes sont également mises en évidence dans la vue graphique.

Fonction la plus appelée

L'heuristique de la fonction la plus appelée identifie les 10 % supérieurs des fonctions ayant le plus grand nombre d'appels provenant de différentes fonctions. Ainsi, l'heuristique peut identifier :

  • les routines de déchiffrement de chaînes
  • les fonctions de bibliothèque dans les binaires liés statiquement

Fréquence de boucle

L'heuristique identifie les fonctions avec un nombre élevé de boucles. Ces types de fonctions peuvent implémenter :

  • une logique d'analyse complexe pour les formats de données structurés
  • des calculs algorithmiques intensifs

L'heuristique aide également à cibler les goulots d'étranglement potentiels de performance.

Télécharger l’outil