
Usa el descompilador IDA PRO HexRays con OpenAI(ChatGPT) para encontrar posibles vulnerabilidades en binarios
Un complemento de IDA Pro para ayudar a encontrar vulnerabilidades en binarios.
Utiliza el descompilador HexRays de IDA Pro con OpenAI (ChatGPT) para encontrar posibles vulnerabilidades en binarios.
Aviso legal: las posibles respuestas al intentar encontrar vulnerabilidades en binarios mediante una IA pueden dar lugar a falsos positivos; sin embargo, ha funcionado en muchos CTF en los que he trabajado (sencillos/medianos ... algunos difíciles).
Coloca el script de Python en la ubicación de complementos de IDA Pro.
Haz clic derecho en el código descompilado y selecciona "Buscar posible vulnerabilidad en la función"




BinAIVulHunter es un complemento avanzado de IDA Pro que aprovecha múltiples proveedores de IA (OpenAI GPT, Google Gemini y Ollama) para realizar análisis inteligente de vulnerabilidades, explicación de código y evaluación de seguridad de funciones descompiladas.
Descarga el complemento:
# Save BinAIVulHunter.py to your IDA Pro plugins directory
# Typically: C:\Program Files\IDA Pro X.X\plugins\
Instala las dependencias base:
pip install psutil
Instala las bibliotecas de los proveedores de IA (elige una o más):
# For OpenAI
pip install openai
# For Google Gemini
pip install google-generativeai
# For Ollama (local AI)
pip install requests
Reinicia IDA Pro para cargar el complemento
Obtén tu clave de API:
Configura la variable de entorno:
# Windows Command Prompt
set OPENAI_API_KEY=sk-your-openai-key-here
# PowerShell
$env:OPENAI_API_KEY="sk-your-openai-key-here"
# Linux/Mac
export OPENAI_API_KEY="sk-your-openai-key-here"
Reinicia IDA Pro
Obtén tu clave de API:
Configura la variable de entorno:
# Windows Command Prompt
set GEMINI_API_KEY=your-gemini-key-here
# PowerShell
$env:GEMINI_API_KEY="your-gemini-key-here"
# Linux/Mac
export GEMINI_API_KEY="your-gemini-key-here"
Reinicia IDA Pro
Instala Ollama:
# Linux
curl -fsSL https://ollama.ai/install.sh | sh
# macOS
brew install ollama
Inicia el servicio de Ollama:
ollama serve
Descarga los modelos de IA:
# For general code analysis
ollama pull llama2
# For coding tasks (recommended)
ollama pull codellama
# Other specialized models
ollama pull mistral
ollama pull deepseek-coder
Variables de entorno opcionales:
# Custom Ollama server (if not localhost:11434)
set OLLAMA_BASE_URL=http://your-server:11434
# Set default model
set OLLAMA_MODEL=codellama
Establece tu proveedor de IA preferido:
# Use OpenAI (default)
set VULCHAT_PROVIDER=openai
# Use Google Gemini
set VULCHAT_PROVIDER=gemini
# Use Ollama (local)
set VULCHAT_PROVIDER=ollama
Edit → VulChatHaz clic derecho en la vista del descompilador para acceder a:
Accede mediante Edit → VulChat → Control Panel o Ctrl+Alt+P:
Para análisis automatizado e integración con CI/CD:
# Scan all functions for vulnerabilities
ida64.exe -A -S"BinAIVulHunter.py --scan-all --output results.json" binary.exe
# Decompile all functions with caching
ida64.exe -A -S"BinAIVulHunter.py --decompile-all --cache-dir ./cache" binary.exe
# Custom batch settings
ida64.exe -A -S"BinAIVulHunter.py --scan-all --batch-size 5 --function-pause 3 --batch-pause 15" binary.exe
BinAIVulHunter analiza el código basándose en la taxonomía de desarrollo de software CWE-699:
# Navigate to a function in IDA Pro
# Press Ctrl+Alt+V or right-click → "Find Possible Vulnerability"
# Example output:
"""
POTENTIAL VULNERABILITIES:
1. Buffer overflow in strcpy operation
CWE: CWE-120 | Severity: High
Mitigation: Replace strcpy with strncpy and validate buffer sizes
2. Integer overflow in arithmetic operation
CWE: CWE-190 | Severity: Medium
Mitigation: Add overflow checks before arithmetic operations
"""
# Command line batch scan
ida64.exe -A -S"BinAIVulHunter.py --scan-all --output vuln_report.json" malware.exe
# Results in vuln_report.json:
{
"scan_results": {
"total_functions": 245,
"vulnerable_functions": 12,
"functions": [
{
"name": "sub_401000",
"address": "0x401000",
"vulnerabilities": [
{
"description": "Unsafe string function used",
"cwe_id": "CWE-120",
"severity": "High",
"mitigation": "Use safe string functions"
}
]
}
]
}
}
# Set environment variables
os.environ['VULCHAT_PROVIDER'] = 'ollama'
os.environ['OLLAMA_MODEL'] = 'codellama'
# Or use Control Panel in IDA Pro:
# Edit → VulChat → Control Panel → Provider Menu → Ollama
Error "Proveedor no disponible":
# Check environment variables
echo %OPENAI_API_KEY%
echo %GEMINI_API_KEY%
# Verify API keys are valid
# Restart IDA Pro after setting variables
Error de conexión con Ollama:
# Check if Ollama is running
curl http://localhost:11434/api/tags
# Start Ollama if needed
ollama serve
# Verify models are installed
ollama list
Problemas de memoria durante el procesamiento por lotes:
# Reduce batch size in Control Panel or headless mode
--batch-size 1 --function-pause 10
Límites de velocidad de la API:
# Increase pause times
--function-pause 10 --batch-pause 30
# Or switch to Ollama for unlimited local processing
Consulta la ventana de salida de IDA Pro para ver registros detallados:
¡Agradecemos las contribuciones! Consulta nuestras Directrices para contribuciones para más detalles.
git clone https://github.com/yourusername/BinAIVulHunter.git
pip install -e .[dev]
Este proyecto está licenciado bajo la Licencia MIT; consulta el archivo LICENSE para más detalles.
⚠️ Aviso legal: Esta herramienta es exclusivamente para fines educativos y de investigación de seguridad legítima. Asegúrate siempre de contar con la autorización adecuada antes de analizar cualquier software. El análisis generado por IA debe verificarse manualmente y no sustituye la revisión de un experto humano.
| Variable | Descripción | Predeterminado | Requerida |
|---|
OPENAI_API_KEY | Clave de API de OpenAI | Ninguna | Para OpenAI |
GEMINI_API_KEY | Clave de API de Google Gemini | Ninguna | Para Gemini |
OLLAMA_BASE_URL | URL del servidor de Ollama | http://localhost:11434 | No |
OLLAMA_MODEL | Modelo de Ollama predeterminado | llama2 | No |
VULCHAT_PROVIDER | Proveedor de IA a utilizar | openai | No |
VULCHAT_MODEL | Nombre del modelo específico | Predeterminado del proveedor | No |
OPENAI_BASE_URL | Endpoint personalizado de OpenAI | API oficial | No |
| Atajo | Acción |
|---|
Ctrl+Alt+V | Encontrar vulnerabilidades |
Ctrl+Alt+G | Explicar función |
Ctrl+Alt+R | Renombrar variables |
Ctrl+Alt+X | Generar entradas de prueba |
Ctrl+Alt+S | Escanear todas las funciones |
Ctrl+Alt+W | Consulta de referencia CWE |
Ctrl+Alt+P | Panel de control |
Ctrl+F5 | Descompilar todas las funciones |
| Parámetro | Descripción | Predeterminado |
|---|
--scan-all | Escanea todas las funciones en busca de vulnerabilidades | - |
--decompile-all | Descompila todas las funciones | - |
--batch-size | Funciones por lote | 3 |
--function-pause | Pausa entre funciones (segundos) | 5 |
--batch-pause | Pausa entre lotes (segundos) | 10 |
--output | Archivo de salida JSON con los resultados | Ninguno |
--cache-dir | Directorio para la caché de descompilación | Ninguno |
| Categoría | ID CWE | Ejemplos |
|---|
| Errores de búfer de memoria | CWE-1218 | Desbordamientos de búfer, use-after-free |
| Errores numéricos | CWE-189 | Desbordamiento de enteros, división por cero |
| Gestión de recursos | CWE-399 | Fugas de memoria, fugas de descriptores de archivo |
| Validación de datos | CWE-1215 | Validación de entrada, fallos de inyección |
| Autenticación | CWE-1211 | Autenticación débil, bypass |
| Autorización | CWE-1212 | Escalada de privilegios, control de acceso |
| Problemas criptográficos | CWE-310 | Criptografía débil, gestión de claves |
| Fugas de información | CWE-199 | Exposición de datos, canales laterales |
| Manejo de errores | CWE-389 | Excepciones no capturadas, estados de error |
| Inicialización | CWE-452 | Variables sin inicializar, limpieza |
| Proveedor | Modelo | Ideal para | Coste |
|---|
| OpenAI | gpt-4 | Análisis exhaustivo | $$$ |
| OpenAI | gpt-3.5-turbo | Análisis general rápido | $$ |
| Gemini | gemini-pro | Rendimiento equilibrado | $$ |
| Ollama | codellama | Análisis centrado en código | Gratis |
| Ollama | deepseek-coder | Detección de vulnerabilidades | Gratis |
| Ollama | llama2 | Uso general | Gratis |
| Proveedor | Velocidad | Precisión | Privacidad | Coste |
|---|
| OpenAI GPT-4 | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐ | ⭐ |
| Gemini Pro | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐ |
| Ollama | ⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |