
Usa IDA PRO HexRays decompiler con OpenAI(ChatGPT) per trovare possibili vulnerabilità nei binari
Un plugin per IDA PRO che aiuta a trovare vulnerabilità nei binari.
Usa il decompilatore HexRays di IDA PRO con OpenAI (ChatGPT) per trovare possibili vulnerabilità nei binari.
Disclaimer: le risposte che si ottengono cercando vulnerabilità nei binari usando un'IA possono generare falsi positivi; tuttavia, ha funzionato in molti CTF a cui ho partecipato (semplici/medi ... alcuni difficili).
Inserisci lo script Python nella cartella dei plugin di IDA Pro.
Fai clic con il tasto destro sul codice decompilato e seleziona "Find possible vulnerability in function"




BinAIVulHunter è un plugin avanzato per IDA Pro che sfrutta più provider di IA (OpenAI GPT, Google Gemini e Ollama) per eseguire analisi intelligente delle vulnerabilità, spiegazione del codice e valutazione della sicurezza delle funzioni decompilate.
Scarica il plugin:
# Save BinAIVulHunter.py to your IDA Pro plugins directory
# Typically: C:\Program Files\IDA Pro X.X\plugins\
Installa le dipendenze di base:
pip install psutil
Installa le librerie dei provider di IA (scegline una o più):
# For OpenAI
pip install openai
# For Google Gemini
pip install google-generativeai
# For Ollama (local AI)
pip install requests
Riavvia IDA Pro per caricare il plugin
Ottieni una chiave API:
Imposta la variabile d'ambiente:
# 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"
Riavvia IDA Pro
Ottieni una chiave API:
Imposta la variabile d'ambiente:
# 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"
Riavvia IDA Pro
Installa Ollama:
# Linux
curl -fsSL https://ollama.ai/install.sh | sh
# macOS
brew install ollama
Avvia il servizio Ollama:
ollama serve
Scarica i modelli di 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
Variabili d'ambiente opzionali:
# Custom Ollama server (if not localhost:11434)
set OLLAMA_BASE_URL=http://your-server:11434
# Set default model
set OLLAMA_MODEL=codellama
Imposta il tuo provider di IA preferito:
# Use OpenAI (default)
set VULCHAT_PROVIDER=openai
# Use Google Gemini
set VULCHAT_PROVIDER=gemini
# Use Ollama (local)
set VULCHAT_PROVIDER=ollama
Edit → VulChatFai clic con il tasto destro nella vista del decompilatore per accedere a:
Accessibile tramite Edit → VulChat → Control Panel o Ctrl+Alt+P:
Per analisi automatizzate e integrazione 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 analizza il codice in base alla tassonomia CWE-699 dello sviluppo software:
# 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
Errore "Provider not available":
# Check environment variables
echo %OPENAI_API_KEY%
echo %GEMINI_API_KEY%
# Verify API keys are valid
# Restart IDA Pro after setting variables
Connessione a Ollama fallita:
# Check if Ollama is running
curl http://localhost:11434/api/tags
# Start Ollama if needed
ollama serve
# Verify models are installed
ollama list
Problemi di memoria durante l'elaborazione in batch:
# Reduce batch size in Control Panel or headless mode
--batch-size 1 --function-pause 10
Limiti di frequenza delle API:
# Increase pause times
--function-pause 10 --batch-pause 30
# Or switch to Ollama for unlimited local processing
Controlla la finestra di output di IDA Pro per i log dettagliati:
Accogliamo con piacere i contributi! Consulta le Linee guida per i contributi per i dettagli.
git clone https://github.com/yourusername/BinAIVulHunter.git
pip install -e .[dev]
Questo progetto è concesso in licenza MIT - consulta il file LICENSE per i dettagli.
⚠️ Disclaimer: questo strumento è destinato esclusivamente a scopi educativi e di ricerca sulla sicurezza legittima. Assicurati sempre di avere la dovuta autorizzazione prima di analizzare qualsiasi software. L'analisi generata dall'IA deve essere verificata manualmente e non sostituisce la revisione di un esperto umano.
| Variabile | Descrizione | Predefinito | Obbligatoria |
|---|
OPENAI_API_KEY | Chiave API OpenAI | Nessuna | Per OpenAI |
GEMINI_API_KEY | Chiave API Google Gemini | Nessuna | Per Gemini |
OLLAMA_BASE_URL | URL del server Ollama | http://localhost:11434 | No |
OLLAMA_MODEL | Modello Ollama predefinito | llama2 | No |
VULCHAT_PROVIDER | Provider di IA da utilizzare | openai | No |
VULCHAT_MODEL | Nome del modello specifico | Predefinito del provider | No |
OPENAI_BASE_URL | Endpoint OpenAI personalizzato | API ufficiale | No |
| Tasto rapido | Azione |
|---|
Ctrl+Alt+V | Trova vulnerabilità |
Ctrl+Alt+G | Spiega funzione |
Ctrl+Alt+R | Rinomina variabili |
Ctrl+Alt+X | Genera input di test |
Ctrl+Alt+S | Scansiona tutte le funzioni |
Ctrl+Alt+W | Consulta riferimento CWE |
Ctrl+Alt+P | Pannello di controllo |
Ctrl+F5 | Decompila tutte le funzioni |
| Parametro | Descrizione | Predefinito |
|---|
--scan-all | Scansiona tutte le funzioni per individuare vulnerabilità | - |
--decompile-all | Decompila tutte le funzioni | - |
--batch-size | Funzioni per batch | 3 |
--function-pause | Pausa tra le funzioni (secondi) | 5 |
--batch-pause | Pausa tra i batch (secondi) | 10 |
--output | File di output JSON per i risultati | Nessuno |
--cache-dir | Directory per la cache di decompilazione | Nessuno |
| Categoria | ID CWE | Esempi |
|---|
| Errori di buffer di memoria | CWE-1218 | Overflow del buffer, use-after-free |
| Errori numerici | CWE-189 | Overflow di interi, divisione per zero |
| Gestione delle risorse | CWE-399 | Perdite di memoria, perdite di handle di file |
| Validazione dei dati | CWE-1215 | Validazione degli input, difetti di injection |
| Autenticazione | CWE-1211 | Autenticazione debole, bypass |
| Autorizzazione | CWE-1212 | Escalation dei privilegi, controllo degli accessi |
| Problemi crittografici | CWE-310 | Crittografia debole, gestione delle chiavi |
| Perdite di informazioni | CWE-199 | Esposizione dei dati, canali laterali |
| Gestione degli errori | CWE-389 | Eccezioni non gestite, stati di errore |
| Inizializzazione | CWE-452 | Variabili non inizializzate, pulizia |
| Provider | Modello | Ideale per | Costo |
|---|
| OpenAI | gpt-4 | Analisi completa | $$$ |
| OpenAI | gpt-3.5-turbo | Analisi generale rapida | $$ |
| Gemini | gemini-pro | Prestazioni equilibrate | $$ |
| Ollama | codellama | Analisi incentrata sul codice | Gratuito |
| Ollama | deepseek-coder | Rilevamento delle vulnerabilità | Gratuito |
| Ollama | llama2 | Scopo generale | Gratuito |
| Provider | Velocità | Precisione | Privacy | Costo |
|---|
| OpenAI GPT-4 | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐ | ⭐ |
| Gemini Pro | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐ |
| Ollama | ⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |