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
kong — Le premier rétro-ingénieur agentique au monde. | Kitploit
Outils/GitHubGitHub/amruth-sn/kong
Analyse StatiqueAnalyse Dynamique (Sandboxing)Analyse des VulnérabilitésExploitationRétro-ingénierieDébogueursAnalyse de MalwareAnalyse de BinairesApprentissage et ÉducationRétro-Ingénierie Assistée par IAAnalyse de Micrologiciel
1.1k1257il y a 5 moisVérifié par Kitploit
GitHub
amruth-sn/kong

kong

Le premier rétro-ingénieur agentique au monde.

Voir le dépôtSite web

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

Kong : L'ingénieur inverse agentique

PyPI - Version X (formerly Twitter) URL

Kong : Le premier ingénieur inverse IA au monde

Orchestration LLM pour la rétro-ingénierie de binaires

Qu'est-ce que Kong ?

La plupart des tâches suivent une relation linéaire : plus une tâche est difficile, plus elle prend généralement de temps. La rétro-ingénierie (et l'analyse binaire) est une tâche où la difficulté réelle est plutôt triviale, mais le temps d'exécution peut être de l'ordre de plusieurs heures (voire jours !), même pour un binaire contenant quelques centaines de fonctions.

Kong automatise la couche mécanique en utilisant un framework de rétro-ingénierie de niveau NSA. Kong peut prendre un binaire entièrement obscurci et dépouillé et exécuter un pipeline d'analyse complet : tri des fonctions, construction du contexte du graphe d'appels, récupération des types et symboles via décompilation guidée par LLM, et écriture des résultats dans la base de programme de Ghidra. Le résultat est un binaire où FUN_00401a30 devient parse_http_header, avec des structures, noms de paramètres et conventions d'appel récupérés.

Pourquoi cela existe

Les binaires dépouillés perdent tout le contexte qui rend le code lisible : noms de fonctions, informations de type, noms de variables, structures. Récupérer ce contexte représente l'essentiel du travail dans la plupart des tâches de RE, et il s'agit en grande partie de correspondance de motifs : reconnaître les fonctions de la bibliothèque standard, inférer les types à partir de l'utilisation, propager les noms à travers les graphes d'appels.

Télécharger l’outil

Les LLM sont précisément bons pour ce type de correspondance de motifs. Mais pointer un LLM sur une sortie brute de décompilateur et demander « à quoi cela sert-il ? » donne des résultats médiocres. Le modèle manque de contexte d'appel, d'informations de références croisées et d'une vue d'ensemble de la structure du binaire. De plus, la plupart des binaires obscurcis introduisent des techniques extrêmes pour empêcher la rétro-ingénierie.

Kong résout ce problème en construisant des fenêtres de contexte riches à partir de l'analyse de programme de Ghidra (graphes d'appels, références croisées, références de chaînes, flux de données) avant même de toucher au LLM, puis en orchestrant l'analyse dans l'ordre des dépendances afin que chaque fonction bénéficie que ses appelées soient déjà nommées. De plus, Kong introduit son propre pipeline de désobscurcissement agentique, une première du genre.

En action

Kong : Le premier ingénieur inverse IA au monde
Kong : Le premier ingénieur inverse IA au monde

Fonctionnalités

  • Pipeline entièrement autonome : Une seule commande exécute l'analyse complète. Triage, analyse des fonctions, nettoyage, synthèse sémantique et exportation. Aucune intervention manuelle requise.
  • Intégration Ghidra en processus : Exécute le moteur d'analyse de Ghidra en processus via PyGhidra et JPype. Pas de serveur, pas de RPC, pas de surcharge de sous-processus. Accès direct à la base de programme.
  • Analyse ordonnée par graphe d'appels : Les fonctions sont analysées de bas en haut à partir du graphe d'appels. Les fonctions feuilles sont nommées en premier, de sorte que les appelants bénéficient du contexte déjà résolu dans leur décompilation.
  • Fenêtres de contexte riches : Chaque prompt LLM inclut la décompilation de la fonction cible ainsi que les références croisées, les références de chaînes, les signatures de l'appelant/de l'appelé et les données voisines ; pas seulement la sortie brute du décompilateur en isolation.
  • Synthèse sémantique : Un passage post-analyse qui unifie les conventions de nommage à travers le binaire, synthétise les définitions de structures à partir des motifs d'accès aux champs et résout les incohérences entre les fonctions analysées indépendamment.
  • Correspondance de signatures : Les fonctions connues de la bibliothèque standard et cryptographiques sont identifiées par motif avant l'analyse LLM, évitant une inférence coûteuse pour les fonctions d'identité connue.
  • Normalisation syntaxique : La sortie du décompilateur est nettoyée (récupération de modulo, reconstruction de littéraux négatifs, suppression des affectations mortes) avant d'atteindre le LLM, réduisant le bruit et le gaspillage de tokens.
  • Désobscurcissement agentique : Kong utilise un pipeline de désobscurcissement agentique qui peut identifier et supprimer les techniques d'obscurcissement (flatage du flux de contrôle, faux flux de contrôle, substitution d'instructions, chiffrement de chaînes, protection VM, etc.) de la sortie du décompilateur.
  • Cadre d'évaluation : Harnais d'évaluation intégré qui note la sortie de l'analyse par rapport au code source de vérité terrain, mesurant la précision des symboles (Jaccard basé sur les mots) et la précision des types (score des composants de signature).
  • Support multi-fournisseur LLM : Fonctionne avec Anthropic (Claude) et OpenAI (GPT-4o) prêts à l'emploi. Un assistant de configuration interactif configure les fournisseurs et le routage intelligent sélectionne automatiquement celui qui possède une clé valide.
  • Suivi des coûts : Suit l'utilisation de tokens et les coûts par modèle à travers les fournisseurs, avec une tarification tenant compte du fournisseur.

Architectures supportées

Kong fonctionne avec la plupart des binaires décompilables par Ghidra (pour l'instant, d'autres à venir).

Confiance

CC++GoRust
x86ÉlevéeÉlevéeMoyenneMoyenne
x86-64ÉlevéeÉlevéeMoyenneMoyenne
ARM (32-bit)ÉlevéeÉlevéeMoyenneFaible
AArch64ÉlevéeÉlevéeMoyenneFaible
MIPSMoyenneMoyenneFaibleFaible
PowerPCMoyenneMoyenneFaibleFaible

Élevée : Kong décompile, désobscurcit et récupère de manière fiable les noms, types et structures.

Moyenne : La décompilation est utilisable mais plus bruyante. Attendez-vous à une récupération partielle et à des scores de confiance plus faibles.

Faible : La décompilation présente des lacunes importantes et les résultats resteront incomplets, bruyants ou illisibles.

Remarque : La taille du binaire augmente positivement avec le nombre de fonctions, le coût LLM et le temps d'exécution. Cependant, la taille du binaire augmente également négativement avec la confiance, gardez donc cela à l'esprit lors de l'analyse de binaires plus volumineux.

Architecture

Kong utilise un pipeline en cinq phases orchestré par un superviseur qui coordonne le tri, l'analyse parallèle et le post-traitement :

root@kitploit:~
                    ┌──────────────────────┐
                    │       Triage         │
                    │  enumerer, classer,   │
                    │  construire graphe    │
                    │  d'appels, signatures │
                    └──────────┬───────────┘
                               │
                               ▼
              ┌────────────────┼────────────────┐
              │                │                │
              ▼                ▼                ▼
     ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
     │   Analyser   │ │   Analyser   │ │     ...      │
     │  (fn feuille)│ │ (niveau suiv)│ │              │
     └──────┬───────┘ └──────┬───────┘ └──────┬───────┘
            │                │                │
            └────────┬───────┴────────────────┘
                     │
                     ▼
            ┌──────────────────────┐
            │      Nettoyage        │
            │  normaliser, dédoubl. │
            └──────────┬───────────┘
                       │
                       ▼
            ┌──────────────────────┐
            │     Synthèse         │
            │  unifier noms,       │
            │  construire structs, │
            │  désobscurcir        │
            └──────────┬───────────┘
                       │
                       ▼
            ┌──────────────────────┐
            │      Exportation      │
            │  analysis.json +      │
            │  réécriture Ghidra    │
            └──────────────────────┘

Comment ça fonctionne

Triage énumère toutes les fonctions du binaire, les classe par taille (trivial / petite / moyenne / grande), construit le graphe d'appels, détecte le langage source et exécute une correspondance de signatures par rapport aux fonctions connues de la bibliothèque standard et cryptographiques. Les fonctions correspondant à une signature sont marquées comme résolues et sautent l'analyse LLM.

Analyse traite les fonctions dans l'ordre ascendant du graphe d'appels en utilisant une file de travaux. Pour chaque fonction, Kong construit une fenêtre de contexte à partir de la base de programme de Ghidra — décompilation, références croisées, références de chaînes et signatures des appelées déjà analysées — normalise la sortie du décompilateur et l'envoie au LLM pour la récupération des noms, types et paramètres. Si un obscurcissement est détecté dans la décompilation d'une fonction, Kong exécute un passage de désobscurcissement agentique avec accès à des outils symboliques avant de produire l'analyse. Les résultats sont réécrits immédiatement dans Ghidra afin que les appelants en aval voient les noms mis à jour.

Nettoyage unifie les types de structure à partir des propositions accumulées pendant l'analyse et réessaie les signatures de fonction qui n'ont pas pu être appliquées pendant le passage d'analyse.

Synthèse adopte une vue globale sur toutes les fonctions analysées. Un seul appel LLM examine les fonctions les plus connectées, unifie les conventions de nommage, synthétise les définitions de structures à partir des motifs d'accès aux champs et affine les noms qui semblent incohérents dans le contexte plus large.

Exportation écrit le fichier analysis.json final et applique tous les noms, types et signatures récupérés dans la base de programme de Ghidra.

Stack

  • Exécution : Python 3.11+, géré avec uv
  • Analyse binaire : Ghidra via PyGhidra (en processus, JPype)
  • LLM : Anthropic SDK (Claude) et OpenAI SDK (GPT-4o)
  • Analyse symbolique : z3-solver
  • CLI : Click
  • TUI : Textual
  • Affichage : Rich
  • Build : hatchling
  • Tests : pytest

Configuration

Prérequis

  • Python 3.11+ — (python.org ou votre gestionnaire de paquets système)
  • uv — Gestionnaire de paquets Python (Installer uv)
  • Ghidra — Le framework de rétro-ingénierie de la National Security Agency (Installer Ghidra)
  • JDK 21+ — Requis par Ghidra (Adoptium)
  • Clé API LLM — Au moins une de :
    • Anthropic (Claude)
    • OpenAI (GPT-4o)

Démarrage rapide

root@kitploit:~
# 1. Installer Kong
uv pip install kong-re

# 2. Définir votre/vos clé(s) API
export ANTHROPIC_API_KEY="sk-ant-..."
# et/ou
export OPENAI_API_KEY="sk-..."

# 3. Lancer l'assistant de configuration (première fois uniquement)
kong setup

# 4. Analyser un binaire
kong analyze ./chemin/vers/binaire_depouille

L'assistant de configuration vous permet de choisir les fournisseurs LLM à utiliser et définit une valeur par défaut. Kong détecte automatiquement vos installations Ghidra et JDK, charge le binaire dans une instance Ghidra en processus et exécute le pipeline complet.

Depuis les sources

root@kitploit:~
git clone https://github.com/amruth-sn/kong.git
cd kong
uv sync
uv run kong setup
uv run kong analyze ./chemin/vers/binaire_depouille

Variables d'environnement

VariableRequiseDescription
ANTHROPIC_API_KEYAu moins uneClé API Anthropic (Claude)
OPENAI_API_KEYAu moins uneClé API OpenAI (GPT-4o)
GHIDRA_INSTALL_DIRNonChemin vers l'installation Ghidra (détection automatique si non défini)
JAVA_HOMENonChemin vers le JDK (détection automatique si non défini)
KONG_CONFIG_DIRNonSurcharge du répertoire de configuration (par défaut : ~/.config/kong)

Utilisation

root@kitploit:~
# Lancer l'assistant de configuration
kong setup

# Analyser un binaire dépouillé (utilise le fournisseur par défaut configuré)
kong analyze ./binaire

# Analyser avec un fournisseur spécifique
kong analyze ./binaire --provider openai

# Surcharger le modèle
kong analyze ./binaire --provider openai --model gpt-4o-mini

# Afficher les métadonnées du binaire sans exécuter l'analyse
kong info ./binaire

# Évaluer la sortie de l'analyse par rapport au code source de vérité terrain
kong eval ./analysis.json ./source.c

Sortie

Les résultats sont écrits dans le répertoire de sortie (par défaut : ./kong_output_{nom_du_binaire}/) :

root@kitploit:~
kong_output_{nom_du_binaire}/
├── analysis.json         # Tous les noms, types, paramètres de fonction récupérés
└── events.log            # Trace d'exécution du pipeline

Benchmarks

Kong a reconstruit de manière autonome la chaîne complète du backdoor XZ (CVE-2024-3094) à partir d'une liblzma.so.5.4.1 dépouillée — identifiant les cinq fonctions d'implant principales avec une confiance de 90 à 95 % en 15 minutes pour 6,63 $.

Voir BENCHMARKS.md pour l'étude de cas complète et les instructions de reproduction.

Structure du projet

root@kitploit:~
kong/
├── __main__.py           # Point d'entrée CLI (click)
├── config.py             # KongConfig, LLMProvider, LLMConfig
├── db.py                 # Stockage de configuration SQLite (~/.config/kong/)
├── banner.py             # Bannière ASCII, aides pour clés API
├── agent/
│   ├── supervisor.py     # Orchestrateur de pipeline
│   ├── triage.py         # Énumération + classification des fonctions
│   ├── analyzer.py       # Analyse de fonction guidée par LLM
│   ├── queue.py          # File de travaux BFS depuis le graphe d'appels
│   ├── signatures.py     # Correspondance de signatures de fonctions connues
│   ├── prompts.py        # Prompt système + schéma de sortie
│   ├── events.py         # Types de phase/événement pour le traçage du pipeline
│   └── models.py         # Dataclass FunctionResult
├── ghidra/
│   ├── client.py         # GhidraClient en processus (PyGhidra/JPype)
│   ├── types.py          # FunctionInfo, BinaryInfo, XRef, etc.
│   └── environment.py    # Détection automatique de Ghidra/JDK
├── llm/
│   ├── client.py         # AnthropicClient
│   ├── openai_client.py  # OpenAIClient
│   ├── usage.py          # TokenUsage, suivi des coûts, registre de tarification
│   └── limits.py         # Limites propres au modèle + limiteur de débit
├── normalizer/
│   └── syntactic.py      # Normalisation de la sortie du décompilateur
├── synthesis/
│   └── semantic.py       # Unification globale des noms + synthèse de structures
├── evals/
│   ├── harness.py        # Extraction de la vérité terrain + notation
│   └── metrics.py        # symbol_accuracy, type_accuracy
├── export/
│   └── source.py         # analysis.json + réécriture Ghidra
├── signatures/
│   ├── stdlib.json       # Signatures de la bibliothèque standard C
│   └── crypto.json       # Signatures de fonctions cryptographiques
└── tui/
    └── app.py            # TUI Textual

Licence

APACHE

Kong est sous licence Apache License 2.0. Kong est un projet gratuit et open source.

Cette licence est compatible avec la licence Ghidra et permet une utilisation commerciale.

Contribuer

Les signalements de problèmes et les demandes de fonctionnalités sont les bienvenus via GitHub Issues.

N'hésitez pas non plus à me contacter sur X ou LinkedIn !

Remerciements

  • Ghidra
  • PyGhidra
  • JPype
  • Anthropic SDK
  • OpenAI SDK
  • Z3
  • Textual
  • Rich

Un grand merci au projet Shannon de KeygraphHQ, qui a inspiré ce projet. Ma motivation était de reproduire le même type de pipeline que Shannon utilise pour son outil de test d'intrusion web, et de l'adapter pour l'analyse et la décompilation de binaires.


Craignez le singe.


Kong
Kong : Le premier ingénieur inverse IA au monde