Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
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
BinAbsInspector — Analyseur statique de vulnérabilités dans les binaires utilisant l'interprétation abstraite sur le Pcode de Ghidra. Détecte des classes CWE telles que les débordements de tampon, les utilisations après libération et les injections de commandes via l'exécution symbolique avec Z3. | Kitploit
Outils/GitHubGitHub/keensecuritylab/binabsinspector
Analyse StatiqueScanners de VulnérabilitésRétro-ingénierieFuzzingAnalyse de Binaires
GitHubkeensecuritylab/binabsinspector

BinAbsInspector

Analyseur statique de vulnérabilités dans les binaires utilisant l'interprétation abstraite sur le Pcode de Ghidra. Détecte des classes CWE telles que les débordements de tampon, les utilisations après libération et les injections de commandes via l'exécution symbolique avec Z3.

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 →
Voir le dépôt
1.7k24514il y a 2 ansVérifié par Kitploit
Partager

Qu'est-ce que BinAbsInspector?

BinAbsInspector (Binary Abstract Inspector) est un analyseur statique pour la rétro-ingénierie automatisée et la recherche de vulnérabilités dans les binaires. Il s'agit d'un projet de recherche à long terme hébergé chez Keenlab. Il est basé sur l'interprétation abstraite avec le support de Ghidra. Il fonctionne sur le Pcode de Ghidra plutôt que sur l'assembleur. Actuellement, il prend en charge les binaires sur x86, x64, armv7 et aarch64.

Installation

  • Installez Ghidra selon la documentation de Ghidra
  • Installez Z3 (version testée : 4.8.15)
  • Notez qu'il y a généralement deux parties pour la bibliothèque Z3 : l'une est le package Java, l'autre est la bibliothèque native. Le package Java est déjà inclus dans le répertoire "/lib", mais nous vous suggérons de le remplacer par votre propre package Java pour la compatibilité de version.
    • Pour Windows, téléchargez un package pré-construit depuis ici, extrayez le fichier zip et ajoutez une variable d'environnement PATH pointant vers z3-${version}-win/bin
    • Pour Linux, l'installation via le gestionnaire de paquets n'est PAS recommandée, il y a deux options :
      1. Vous pouvez télécharger le package pré-construit approprié depuis ici, extrayez le fichier zip et copiez z3-${version}-glibc-${version}/bin/*.so vers
/usr/local/lib/
  • ou vous pouvez compiler et installer z3 selon Building Z3 using make and GCC/Clang
  • Pour MacOS, c'est similaire à Linux.
  • Téléchargez le fichier zip de l'extension depuis la page des releases
  • Installez l'extension selon les notes sur les extensions Ghidra
  • Compilation

    Compilez l'extension vous-même, si vous souhaitez développer une nouvelle fonctionnalité, veuillez vous référer au guide de développement.

    • Installez Ghidra et Z3
    • Installez Gradle 7.x (version testée : 7.4)
    • Clonez le dépôt
    • Exécutez gradle buildExtension à la racine du dépôt
    • L'extension sera générée dans dist/${GhidraVersion}_${date}_BinAbsInspector.zip

    Utilisation

    Vous pouvez exécuter BinAbsInspector en mode headless, en mode GUI, ou avec Docker.

    • Avec le mode headless de Ghidra.
    root@kitploit:~
    $GHIDRA_INSTALL_DIR/support/analyzeHeadless <projectPath> <projectName> -import <file> -postScript BinAbsInspector "@@<scriptParams>"
    

    <projectPath> -- Chemin du projet Ghidra.
    <projectName> -- Nom du projet Ghidra.
    <scriptParams> -- Les arguments pour notre analyseur, fournissant les options suivantes :

    ParamètreDescription
    [-K <kElement>]Limite de taille KSet K
    [-callStringK <callStringMaxLen>]Longueur maximale de la chaîne d'appel K
    [-Z3Timeout <timeout>]Timeout Z3
    [-timeout <timeout>]Timeout d'analyse
    [-entry <address>]Adresse d'entrée
    [-externalMap <file>]Configuration du modèle de fonction externe
    [-json]Sortie au format json
    [-disableZ3]Désactiver Z3
    [-all]Activer tous les checkers
    [-debug]Activer les logs de débogage
    [-check "<cweNo1>[;<cweNo2>...]"]Activer des checkers spécifiques
    • Avec la GUI de Ghidra

      1. Lancez Ghidra et importez le binaire cible dans un projet
      2. Analysez le binaire avec les paramètres par défaut
      3. Une fois l'analyse terminée, ouvrez Window -> Script Manager et trouvez BinAbsInspector.java
      4. Double-cliquez sur l'entrée BinAbsInspector.java, définissez les paramètres dans la fenêtre de configuration et cliquez sur OK
      5. Lorsque l'analyse est terminée, vous pouvez voir les rapports CWE dans la console ; double-cliquez sur les adresses du rapport pour accéder à l'adresse correspondante
    • Avec Docker

    root@kitploit:~
    git clone [email protected]:KeenSecurityLab/BinAbsInspector.git
    cd BinAbsInspector
    docker build . -t bai
    docker run -v $(pwd):/data/workspace bai "@@<script parameters>" -import <file>
    

    Checkers implémentés

    Jusqu'à présent, BinAbsInspector prend en charge les checkers suivants :

    • CWE78 (Injection de commandes système)
    • CWE119 (Débordement de tampon (cas général))
    • CWE125 (Débordement de tampon (lecture hors limites))
    • CWE134 (Utilisation d'une chaîne de format contrôlée de l'extérieur)
    • CWE190 (Dépassement d'entier ou enroulement)
    • CWE367 (Time-of-check Time-of-use (TOCTOU))
    • CWE415 (Double libération)
    • CWE416 (Utilisation après libération)
    • CWE426 (Chemin de recherche non fiable)
    • CWE467 (Utilisation de sizeof() sur un type pointeur)
    • CWE476 (Déréférencement de pointeur NULL)
    • CWE676 (Utilisation d'une fonction potentiellement dangereuse)
    • CWE787 (Débordement de tampon (écriture hors limites))

    Structure du projet

    La structure de ce projet est la suivante, veuillez vous référer aux détails techniques ou à l'article en version chinoise pour plus de détails.

    root@kitploit:~
    ├── main
    │   ├── java
    │   │   └── com
    │   │       └── bai
    │   │           ├── checkers                       implémentation des checkers
    │   │           ├── env
    │   │           │   ├── funcs                      modélisation des fonctions
    │   │           │   │   ├── externalfuncs          modélisation des fonctions externes
    │   │           │   │   └── stdfuncs               modélisation de la std C++
    │   │           │   └── region                     modélisation de la mémoire
    │   │           ├── solver                         noyau d'analyse et module de graphe
    │   │           └── util                           utilitaires
    │   └── resources
    └── test
    

    Vous pouvez également construire la javadoc avec gradle javadoc ; la documentation de l'API sera générée dans ./build/docs/javadoc.

    Remerciements

    Nous utilisons Ghidra comme fondation et tirons souvent parti de JImmutable Collections pour de meilleures performances.
    Nous tenons à les remercier pour leur grande aide !

    Télécharger l’outil