
IDA PRO HexRays 디컴파일러와 OpenAI(ChatGPT)를 사용하여 바이너리에서 가능한 취약점을 찾습니다.
바이너리에서 취약점을 찾는 데 도움이 되는 IDA PRO 플러그인입니다.
IDA PRO HexRays 디컴파일러와 OpenAI(ChatGPT)를 사용하여 바이너리에서 가능한 취약점을 찾습니다.
면책 조항: AI를 사용하여 바이너리 취약점을 찾는 과정에서 생성되는 응답에는 오탐(false positive)이 포함될 수 있습니다. 하지만 제가 진행한 많은 CTF(간단/중간 수준... 일부 어려운 수준)에서는 효과가 있었습니다.
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 제공자 라이브러리 설치 (하나 이상 선택):
# 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 | 정수 오버플로, 0으로 나누기 |
| 리소스 관리 | 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 | ⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |