Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
kong — El primer agente de ingeniería inversa del mundo. | Kitploit
Herramientas/GitHubGitHub/amruth-sn/kong
Análisis EstáticoAnálisis Dinámico (Sandboxing)Análisis de VulnerabilidadesExplotaciónIngeniería InversaDepuradoresAnálisis de MalwareAnálisis de BinariosAprendizaje y EducaciónReversing Asistido por IAAnálisis de Firmware
1.1k125hace 4 mesesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
GitHub
amruth-sn/kong

kong

El primer agente de ingeniería inversa del mundo.

Ver RepositorioSitio web

Kong: El Ingeniero Inverso Autónomo

PyPI - Version X (formerly Twitter) URL

Kong: El primer ingeniero inverso de IA del mundo

Orquestación de LLM para ingeniería inversa de binarios

¿Qué es Kong?

La mayoría de las tareas siguen una relación lineal: cuanto más difícil es la tarea, más tiempo suele llevar. La ingeniería inversa (y el análisis de binarios) es una tarea en la que la dificultad real es algo trivial, pero el tiempo de ejecución puede ser del orden de horas (¡y días!), incluso para un binario con un par de cientos de funciones.

Kong automatiza la capa mecánica, utilizando un marco de ingeniería inversa de nivel NSA. Kong puede tomar un binario completamente ofuscado y sin símbolos y ejecutar un pipeline de análisis completo: clasificar funciones, construir contexto de grafo de llamadas, recuperar tipos y símbolos mediante descompilación guiada por LLM, y escribir los resultados de vuelta en la base de datos del programa de Ghidra. El resultado es un binario donde alguna FUN_00401a30 ahora es parse_http_header, con estructuras, nombres de parámetros y convenciones de llamada recuperados.

Por qué existe

Los binarios sin símbolos pierden todo el contexto que hace legible el código: nombres de funciones, información de tipos, nombres de variables, diseños de estructuras. Recuperar ese contexto es la mayor parte del trabajo en la mayoría de las tareas de RE, y es en gran medida coincidencia de patrones: reconocer funciones de la biblioteca estándar, inferir tipos a partir del uso, propagar nombres a través de los grafos de llamadas.

Los LLM son buenos exactamente en este tipo de coincidencia de patrones. Pero apuntar un LLM a la salida cruda del descompilador y preguntar "¿qué hace esto?" da resultados mediocres. Al modelo le falta contexto de llamadas, información de referencias cruzadas y la imagen más amplia de cómo está estructurado el binario. Además, la mayoría de los binarios ofuscados introducen técnicas extremas para prevenir la ingeniería inversa.

Kong resuelve esto creando ventanas de contexto enriquecidas a partir del análisis del programa de Ghidra (grafos de llamadas, referencias cruzadas, referencias a cadenas, flujo de datos) antes de tocar siquiera el LLM, luego orquesta el análisis en orden de dependencia para que cada función se beneficie de que sus llamadas ya estén nombradas. Adicionalmente, Kong introduce su propio pipeline de desofuscación autónomo, el primero de su tipo.

En Acción

Kong: El primer ingeniero inverso de IA del mundo Kong: El primer ingeniero inverso de IA del mundo

Características

  • Pipeline Completamente Autónomo: Un solo comando ejecuta el análisis completo. Clasificación, análisis de funciones, limpieza, síntesis semántica y exportación. No se requiere intervención manual.
  • Integración en Proceso con Ghidra: Ejecuta el motor de análisis de Ghidra en proceso mediante PyGhidra y JPype. Sin servidor, sin RPC, sin sobrecarga de subprocesos. Acceso directo a la base de datos del programa.
  • Análisis Ordenado por Grafo de Llamadas: Las funciones se procesan de abajo hacia arriba desde el grafo de llamadas. Las funciones hoja se nombran primero, para que las llamadoras se beneficien del contexto ya resuelto en su descompilación.
  • Ventanas de Contexto Enriquecidas: Cada prompt de LLM incluye la descompilación de la función objetivo más referencias cruzadas, referencias a cadenas, firmas de llamadoras/llamadas y datos vecinos; no solo la salida cruda del descompilador de forma aislada.
  • Síntesis Semántica: Una pasada posterior al análisis que unifica las convenciones de nomenclatura en todo el binario, sintetiza definiciones de estructuras a partir de patrones de acceso a campos y resuelve inconsistencias entre funciones analizadas independientemente.
  • Coincidencia de Firmas: Las funciones conocidas de la biblioteca estándar y criptográficas se identifican mediante patrones antes del análisis de LLM, omitiendo la inferencia costosa para funciones con identidades conocidas.
  • Normalización Sintáctica: La salida del descompilador se limpia (recuperación de módulo, reconstrucción de literales negativos, eliminación de asignaciones muertas) antes de llegar al LLM, reduciendo ruido y desperdicio de tokens.
  • Desofuscación Autónoma: Kong utiliza un pipeline de desofuscación autónomo que puede identificar y eliminar técnicas de ofuscación (aplanamiento de flujo de control, flujo de control falso, sustitución de instrucciones, cifrado de cadenas, protección de VM, etc.) de la salida del descompilador.
  • Marco de Evaluación: Arnés de evaluación integrado que puntúa la salida del análisis contra el código fuente de verdad fundamental, midiendo la precisión de símbolos (Jaccard basado en palabras) y la precisión de tipos (puntuación de componentes de firma).
  • Soporte Multi-Proveedor de LLM: Funciona con Anthropic (Claude) y OpenAI (GPT-4o) de fábrica. Un asistente de configuración interactivo configura los proveedores y el enrutamiento inteligente selecciona automáticamente el que tenga una clave válida.
  • Seguimiento de Costos: Rastrea el uso de tokens y costos por modelo en todos los proveedores, con precios conscientes del proveedor.

Arquitecturas Soportadas

Kong funciona con la mayoría de los binarios descompilables por Ghidra (por ahora, más por venir).

Confianza

Alta: Kong descompila, desofusca y recupera nombres, tipos y estructura de manera confiable.

Media: La descompilación es utilizable pero más ruidosa. Se espera recuperación parcial y puntuaciones de confianza más bajas.

Baja: La descompilación tiene lagunas significativas y los resultados permanecerán incompletos, ruidosos o ilegibles.

Nota: El tamaño del binario escala positivamente con el recuento de funciones, el costo de LLM y el tiempo de finalización. Sin embargo, el tamaño del binario también escala negativamente con la confianza, así que tenga esto en cuenta al analizar binarios más grandes.

Arquitectura

Kong utiliza un pipeline de cinco fases orquestado por un supervisor que coordina la clasificación, el análisis paralelo y el postprocesamiento:

root@kitploit:~
                    ┌──────────────────────┐
                    │       Triage         │
                    │  enumerate, classify,│
                    │  build call graph,   │
                    │  match signatures    │
                    └──────────┬───────────┘
                               │
                               ▼
              ┌────────────────┼────────────────┐
              │                │                │
              ▼                ▼                ▼
     ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
     │   Analyze    │ │   Analyze    │ │     ...      │
     │  (leaf fns)  │ │ (next tier)  │ │              │
     └──────┬───────┘ └──────┬───────┘ └──────┬───────┘
            │                │                │
            └────────┬───────┴────────────────┘
                     │
                     ▼
            ┌──────────────────────┐
            │      Cleanup         │
            │  normalize, dedupe   │
            └──────────┬───────────┘
                       │
                       ▼
            ┌──────────────────────┐
            │     Synthesis        │
            │  unify names, build  │
            │  structs, deobfuscate│
            └──────────┬───────────┘
                       │
                       ▼
            ┌──────────────────────┐
            │       Export         │
            │  analysis.json +     │
            │  Ghidra writeback    │
            └──────────────────────┘

Cómo funciona

Triage enumera todas las funciones en el binario, las clasifica por tamaño (trivial / pequeña / mediana / grande), construye el grafo de llamadas, detecta el lenguaje fuente y ejecuta la coincidencia de firmas contra funciones conocidas de la biblioteca estándar y criptográficas. Las funciones que coinciden con la firma se marcan como resueltas y omiten el análisis de LLM por completo.

Analysis procesa las funciones en orden ascendente desde el grafo de llamadas utilizando una cola de trabajo. Para cada función, Kong construye una ventana de contexto a partir de la base de datos del programa de Ghidra — descompilación, referencias cruzadas, referencias a cadenas y las firmas de las funciones llamadas ya analizadas — normaliza la salida del descompilador y la envía al LLM para la recuperación de nombres, tipos y parámetros. Si se detecta ofuscación en la descompilación de una función, Kong ejecuta una pasada de desofuscación autónoma con acceso a herramientas simbólicas antes de producir el análisis. Los resultados se escriben de vuelta a Ghidra inmediatamente para que las funciones llamadoras posteriores vean los nombres actualizados.

Cleanup unifica los tipos de estructura a partir de las propuestas acumuladas durante el análisis y reintenta cualquier firma de función que no se haya podido aplicar durante la pasada de análisis.

Synthesis toma una visión global de todas las funciones analizadas. Una sola llamada de LLM revisa las funciones más conectadas, unifica las convenciones de nomenclatura, sintetiza definiciones de estructuras a partir de patrones de acceso a campos y refina los nombres que parecen inconsistentes en el contexto más amplio.

Export escribe el analysis.json final y aplica todos los nombres, tipos y firmas recuperados de vuelta a la base de datos del programa de Ghidra.

Stack

  • Runtime: Python 3.11+, gestionado con uv
  • Análisis de binarios: Ghidra a través de PyGhidra (en proceso, JPype)
  • LLM: Anthropic SDK (Claude) y OpenAI SDK (GPT-4o)
  • Análisis simbólico: z3-solver
  • CLI: Click
  • TUI: Textual
  • Visualización: Rich
  • Construcción: hatchling
  • Pruebas: pytest

Configuración

Requisitos Previos

  • Python 3.11+ — (python.org o su gestor de paquetes del sistema)
  • uv — Gestor de paquetes de Python (Instalar uv)
  • Ghidra — El marco de ingeniería inversa de la Agencia de Seguridad Nacional (Instalar Ghidra)
  • JDK 21+ — Requerido por Ghidra (Adoptium)
  • Clave API de LLM — Al menos una de:
    • Anthropic (Claude)
    • OpenAI (GPT-4o)

Inicio Rápido

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

# 2. Establecer su(s) clave(s) API
export ANTHROPIC_API_KEY="sk-ant-..."
# y/o
export OPENAI_API_KEY="sk-..."

# 3. Ejecutar el asistente de configuración (solo la primera vez)
kong setup

# 4. Analizar un binario
kong analyze ./ruta/al/binario_sin_simbolos

El asistente de configuración le permite elegir qué proveedores de LLM usar y establece uno por defecto. Kong detecta automáticamente sus instalaciones de Ghidra y JDK, carga el binario en una instancia de Ghidra en proceso y ejecuta el pipeline completo.

Desde el código fuente

root@kitploit:~
git clone https://github.com/amruth-sn/kong.git
cd kong
uv sync
uv run kong setup
uv run kong analyze ./ruta/al/binario_sin_simbolos

Variables de Entorno

Uso

root@kitploit:~
# Ejecutar el asistente de configuración
kong setup

# Analizar un binario sin símbolos (usa el proveedor predeterminado configurado)
kong analyze ./binary

# Analizar con un proveedor específico
kong analyze ./binary --provider openai

# Sobrescribir el modelo
kong analyze ./binary --provider openai --model gpt-4o-mini

# Mostrar metadatos del binario sin ejecutar el análisis
kong info ./binary

# Evaluar la salida del análisis contra el código fuente de verdad fundamental
kong eval ./analysis.json ./source.c

Salida

Los resultados se escriben en el directorio de salida (por defecto: ./kong_output_{binary_name}/):

root@kitploit:~
kong_output_{binary_name}/
├── analysis.json         # Todos los nombres de funciones, tipos y parámetros recuperados
└── events.log            # Traza de ejecución del pipeline

Referencias

Kong reconstruyó autónomamente la cadena de eliminación completa del backdoor de XZ (CVE-2024-3094) a partir de un liblzma.so.5.4.1 sin símbolos — identificando las cinco funciones nucleares del implante con un 90-95% de confianza en 15 minutos por $6.63.

Consulte BENCHMARKS.md para el estudio de caso completo y las instrucciones de reproducción.

Estructura del Proyecto

root@kitploit:~
kong/
├── __main__.py           # Punto de entrada de CLI (click)
├── config.py             # KongConfig, LLMProvider, LLMConfig
├── db.py                 # Almacén de configuración SQLite (~/.config/kong/)
├── banner.py             # Banner ASCII, ayudantes de clave API
├── agent/
│   ├── supervisor.py     # Orquestador del pipeline
│   ├── triage.py         # Enumeración + clasificación de funciones
│   ├── analyzer.py       # Análisis de funciones guiado por LLM
│   ├── queue.py          # Cola de trabajo BFS desde el grafo de llamadas
│   ├── signatures.py     # Coincidencia de firmas de funciones conocidas
│   ├── prompts.py        # Prompt del sistema + esquema de salida
│   ├── events.py         # Tipos de fase/evento para el rastreo del pipeline
│   └── models.py         # Dataclass FunctionResult
├── ghidra/
│   ├── client.py         # GhidraClient en proceso (PyGhidra/JPype)
│   ├── types.py          # FunctionInfo, BinaryInfo, XRef, etc.
│   └── environment.py    # Detección automática de Ghidra/JDK
├── llm/
│   ├── client.py         # AnthropicClient
│   ├── openai_client.py  # OpenAIClient
│   ├── usage.py          # TokenUsage, seguimiento de costos, registro de precios
│   └── limits.py         # Límites específicos del modelo + limitador de tasa
├── normalizer/
│   └── syntactic.py      # Normalización de salida del descompilador
├── synthesis/
│   └── semantic.py       # Unificación global de nombres + síntesis de estructuras
├── evals/
│   ├── harness.py        # Extracción + puntuación de verdad fundamental
│   └── metrics.py        # symbol_accuracy, type_accuracy
├── export/
│   └── source.py         # analysis.json + escritura en Ghidra
├── signatures/
│   ├── stdlib.json       # Firmas de la biblioteca estándar de C
│   └── crypto.json       # Firmas de funciones criptográficas
└── tui/
    └── app.py            # TUI Textual

Licencia

APACHE

Kong está licenciado bajo la Licencia Apache 2.0. Kong es un proyecto gratuito y de código abierto.

Esta licencia es compatible con la licencia de Ghidra y permite uso comercial.

Contribuciones

Las incidencias y solicitudes de funciones son bienvenidas a través de GitHub Issues.

Además, no dude en contactarme en X o LinkedIn!

Agradecimientos

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

Un gran agradecimiento al proyecto Shannon de KeygraphHQ, que proporcionó la inspiración para este proyecto. Mi motivación fue replicar el mismo tipo de pipeline que Shannon utiliza para su herramienta de pruebas de penetración basada en web, y adaptarlo para el análisis de binarios y la descompilación.


Teme al mono.


Kong
Kong: El primer ingeniero inverso de IA del mundo

Descargar herramienta
CC++GoRust
x86AltaAltaMediaMedia
x86-64AltaAltaMediaMedia
ARM (32-bit)AltaAltaMediaBaja
AArch64AltaAltaMediaBaja
MIPSMediaMediaBajaBaja
PowerPCMediaMediaBajaBaja
VariableRequeridaDescripción
ANTHROPIC_API_KEYAl menos unaClave API de Anthropic (Claude)
OPENAI_API_KEYAl menos unaClave API de OpenAI (GPT-4o)
GHIDRA_INSTALL_DIRNoRuta a la instalación de Ghidra (detección automática si no se establece)
JAVA_HOMENoRuta al JDK (detección automática si no se establece)
KONG_CONFIG_DIRNoSobrescribe el directorio de configuración (por defecto: ~/.config/kong)