
IDA PRO HexRaysデコンパイラをOpenAI(ChatGPT)と組み合わせて、バイナリ内の潜在的な脆弱性を発見します。
バイナリ内の脆弱性の発見を支援するIDA PROプラグインです。
IDA PRO HexRays逆コンパイラとOpenAI(ChatGPT)を使用して、バイナリ内の潜在的な脆弱性を発見します。
免責事項: AIを使用してバイナリの脆弱性を探す際に得られる応答には誤検知が含まれる可能性があります。ただし、私がこれまで取り組んできた多くのCTF(簡単/中級...一部の上級)では機能してきました。
PythonスクリプトをIDA Proプラグインの場所にドロップします。
逆コンパイルされたコードを右クリックし、「Find possible vulnerability in function」を選択します。




BinAIVulHunterは、複数のAIプロバイダー(OpenAI GPT、Google Gemini、Ollama)を活用して、逆コンパイルされた関数のインテリジェントな脆弱性解析、コード説明、セキュリティ評価を実行する高度なIDA Proプラグインです。
プラグインをダウンロード:
# Save BinAIVulHunter.py to your IDA Pro plugins directory
# Typically: C:\Program Files\IDA Pro X.X\plugins\
基本依存関係をインストール:
pip install psutil
AIプロバイダーライブラリをインストール(1つ以上選択):
# For OpenAI
pip install openai
# For Google Gemini
pip install google-generativeai
# For Ollama (local AI)
pip install requests
IDA Proを再起動してプラグインを読み込みます
APIキーを取得:
環境変数を設定:
# 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"
IDA Proを再起動
APIキーを取得:
環境変数を設定:
# 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"
IDA Proを再起動
Ollamaをインストール:
# Linux
curl -fsSL https://ollama.ai/install.sh | sh
# macOS
brew install ollama
Ollamaサービスを開始:
ollama serve
AIモデルを取得:
# For general code analysis
ollama pull llama2
# For coding tasks (recommended)
ollama pull codellama
# Other specialized models
ollama pull mistral
ollama pull deepseek-coder
任意の環境変数:
# Custom Ollama server (if not localhost:11434)
set OLLAMA_BASE_URL=http://your-server:11434
# Set default model
set OLLAMA_MODEL=codellama
お好みのAIプロバイダーを設定します:
# Use OpenAI (default)
set VULCHAT_PROVIDER=openai
# Use Google Gemini
set VULCHAT_PROVIDER=gemini
# Use Ollama (local)
set VULCHAT_PROVIDER=ollama
Edit → VulChat逆コンパイラビューで右クリックすると、以下の操作にアクセスできます:
Edit → VulChat → Control PanelまたはCtrl+Alt+Pでアクセス:
自動解析と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は、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
「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
Ollamaの接続に失敗:
# Check if Ollama is running
curl http://localhost:11434/api/tags
# Start Ollama if needed
ollama serve
# Verify models are installed
ollama list
バッチ処理中のメモリ問題:
# Reduce batch size in Control Panel or headless mode
--batch-size 1 --function-pause 10
APIレート制限:
# Increase pause times
--function-pause 10 --batch-pause 30
# Or switch to Ollama for unlimited local processing
詳細なログについては、IDA Proの出力ウィンドウを確認してください:
貢献を歓迎します! 詳細は貢献ガイドラインをご覧ください。
git clone https://github.com/yourusername/BinAIVulHunter.git
pip install -e .[dev]
このプロジェクトはMITライセンスの下でライセンスされています。詳細はLICENSEファイルをご覧ください。
⚠️ 免責事項: このツールは教育目的および合法的なセキュリティ研究目的のみに使用してください。ソフトウェアを解析する前に、必ず適切な権限を確保してください。AIが生成した解析結果は手動で検証する必要があり、専門家による人間のレビューの代わりにはなりません。
| 変数 | 説明 | デフォルト | 必須 |
|---|
OPENAI_API_KEY | OpenAI APIキー | なし | OpenAIを使用する場合 |
GEMINI_API_KEY | Google Gemini APIキー | なし | Geminiを使用する場合 |
OLLAMA_BASE_URL | OllamaサーバーURL | http://localhost:11434 | いいえ |
OLLAMA_MODEL | デフォルトのOllamaモデル | llama2 | いいえ |
VULCHAT_PROVIDER | 使用するAIプロバイダー | openai | いいえ |
VULCHAT_MODEL | 特定のモデル名 | プロバイダーのデフォルト | いいえ |
OPENAI_BASE_URL | カスタムOpenAIエンドポイント | 公式API | いいえ |
| ホットキー | 操作 |
|---|
Ctrl+Alt+V | 脆弱性を検索 |
Ctrl+Alt+G | 関数を説明 |
Ctrl+Alt+R | 変数をリネーム |
Ctrl+Alt+X | テスト入力を生成 |
Ctrl+Alt+S | 全関数をスキャン |
Ctrl+Alt+W | CWEリファレンスを検索 |
Ctrl+Alt+P | コントロールパネル |
Ctrl+F5 | 全関数を逆コンパイル |
| パラメータ | 説明 | デフォルト |
|---|
--scan-all | 脆弱性について全関数をスキャン | - |
--decompile-all | 全関数を逆コンパイル | - |
--batch-size | バッチあたりの関数数 | 3 |
--function-pause | 関数間の一時停止(秒) | 5 |
--batch-pause | バッチ間の一時停止(秒) | 10 |
--output | 結果用のJSON出力ファイル | なし |
--cache-dir | 逆コンパイルキャッシュ用ディレクトリ | なし |
| カテゴリ | CWE ID | 例 |
|---|
| メモリバッファエラー | CWE-1218 | バッファオーバーフロー、use-after-free |
| 数値エラー | CWE-189 | 整数オーバーフロー、ゼロ除算 |
| リソース管理 | CWE-399 | メモリリーク、ファイルハンドルリーク |
| データ検証 | CWE-1215 | 入力検証、インジェクション欠陥 |
| 認証 | CWE-1211 | 弱い認証、認証バイパス |
| 認可 | CWE-1212 | 権限昇格、アクセス制御 |
| 暗号化の問題 | CWE-310 | 弱い暗号、鍵管理 |
| 情報漏えい | CWE-199 | データ露出、サイドチャネル |
| エラー処理 | CWE-389 | 未キャッチの例外、エラー状態 |
| 初期化 | CWE-452 | 未初期化変数、クリーンアップ |
| プロバイダー | モデル | 最適な用途 | コスト |
|---|
| OpenAI | gpt-4 | 包括的な解析 | $$$ |
| OpenAI | gpt-3.5-turbo | 高速な一般的な解析 | $$ |
| Gemini | gemini-pro | バランスの取れた性能 | $$ |
| Ollama | codellama | コード中心の解析 | 無料 |
| Ollama | deepseek-coder | 脆弱性検出 | 無料 |
| Ollama | llama2 | 汎用 | 無料 |
| プロバイダー | 速度 | 精度 | プライバシー | コスト |
|---|
| OpenAI GPT-4 | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐ | ⭐ |
| Gemini Pro | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐ |
| Ollama | ⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |