
ChatGPT API, Bard API, Llama2, Python-Nmap, DNS Recon, PCAP 및 JWT 재구성 모듈을 사용하며, GPT3 모델을 이용하여 Nmap 스캔 데이터와 DNS 스캔 정보를 기반으로 취약점 보고서를 생성합니다. 또한 상당한 규모의 서브도메인 열거를 수행할 수 있습니다.
GVA는 AI 기반 정찰 및 취약점 분석 툴킷입니다. 스캔(nmap, DNS, 서브도메인, JWT, PCAP, GeoIP)을 실행한 뒤, 원시 출력을 대규모 언어 모델에 전달하여 구조화된, 펜테스터 지향 분석 결과를 반환합니다. 명령줄 인터페이스와 데스크톱 GUI를 모두 제공합니다.
AI 계층은 제공자에 구애받지 않습니다. OpenAI, Anthropic Claude, Google Gemini, 그리고 로컬 Ollama 모델을 모두 지원합니다. 하나를 선택하거나, 여러 개를 동시에 실행하여 심의 에이전트가 그 분석들을 하나의 보고서로 조정하도록 할 수 있습니다.
pyproject.toml(uv로 관리) 또는 requirements.txt의 의존성PATH 상의 nmapPATH 상의 Wireshark / tsharknmap 공격은 python-nmap을 통해 시스템 nmap 바이너리를 호출하므로, nmap이 설치되어 있고 실행 가능해야 합니다.
sudo로 권한을 상승시키며, --sudo를 전달할 수도 있습니다. 프로필 1–5는 비권한으로 실행되며, 프로필 1이 기본값이고 root 없이 작동합니다.libssh2.so.1: cannot open shared object file: 시스템 nmap에 공유 라이브러리가 누락된 경우입니다. conda를 사용한다면 conda install -c conda-forge nmap이 자체 포함되어 있고 PATH 우선순위를 가집니다. 그렇지 않으면 rpm-ostree install libssh2로 레이어링한 뒤(재부팅 필요), 또는 brew install nmap이나 distrobox 컨테이너를 사용하세요.nmap이 없거나 손상된 경우, 공격은 충돌하는 대신 명확한 오류를 보고합니다.
설치 스크립트는 시스템 패키지, uv, Python 의존성을 설정합니다. 일반 사용자로 실행하세요. 시스템 패키지 단계만 sudo로 권한을 상승시킵니다.
./install.sh # 전체 설치
./install.sh --no-system # 시스템 패키지 건너뛰기 (uv + Python 의존성만)
패키지 관리자(apt, dnf, pacman, zypper, apk, brew, rpm-ostree)를 자동 감지하고, uv를 사용자 수준에 설치하고, uv sync를 실행하고, .env를 생성합니다. 먼저 sudo su를 하지 마세요. 프로젝트가 사용자 전용 마운트(예: /run/host 또는 /media)에 있는 경우 root가 읽을 수 없으므로, 일반 사용자로 실행하는 것이 안정적인 방법입니다.
uv로 수동 설치하려면:
uv sync
pip install -r requirements.txt도 대체 방법으로 작동합니다.
예제 환경 파일을 복사하고 원하는 제공자의 키를 채우세요. 키가 없는 제공자는 자동으로 건너뜁니다.
cp .env.example .env
GEOIP_API_KEY=
OPENAI_API_KEY=
ANTHROPIC_API_KEY=
GEMINI_API_KEY=
모든 제공자는 검증된 구조화 결과를 반환하는 Pydantic AI 에이전트입니다. 둘 이상을 선택하면 각 모델이 스캔을 독립적이고 동시에 분석하며, 심의 에이전트(선택된 모델 중 하나)가 이를 하나의 통합 보고서로 조정합니다. 실행 중에는 실시간 진행 보드가 각 모델의 상태, 타이밍, 심의 단계를 보여줍니다.
| 제공자 | 키 | 기본 모델 | 대략적 가격 / 1M 토큰 |
|---|---|---|---|
| OpenAI | openai | gpt-5.6-luna | $0.20 in / $1.20 out |
| Anthropic | claude | claude-haiku-4-5 | $1.00 in / $5.00 out |
gemini | gemini-3.6-flash | $0.75 in / $3.75 out | |
| Ollama | ollama | llama3 | local / free |
.env의 해당 *_MODEL 변수로 모든 모델을 재정의할 수 있습니다. 대안은 .env.example을 참조하세요. Ollama는 로컬 Docker 이미지를 사용하며 선택 시 자동으로 시작됩니다.
uv run gpt_vuln.py ...로 실행하거나, 활성화된 venv 내에서 python gpt_vuln.py ...로 실행하세요.
# 도움말
uv run gpt_vuln.py --help
uv run gpt_vuln.py --rich_menu help
# Nmap 스캔 (기본 프로필 1), OpenAI로 분석
python gpt_vuln.py --target scanme.nmap.org --attack nmap --ai openai
# 스캔 프로필 선택 (아래 프로필 표 또는 --list_profiles 참조)
python gpt_vuln.py --target scanme.nmap.org --attack nmap --profile 2
python gpt_vuln.py --list_profiles
# DNS 정찰 (프로필 불필요)
python gpt_vuln.py --target example.com --attack dns
# 서브도메인 열거 (기본 또는 사용자 지정 워드리스트)
python gpt_vuln.py --target example.com --attack sub
python gpt_vuln.py --target example.com --attack sub --sub_list path/to/list.txt
# GeoIP 조회
python gpt_vuln.py --target 8.8.8.8 --attack geo
# JWT 분석
python gpt_vuln.py --target <token> --attack jwt
# PCAP 분석
python gpt_vuln.py --target capture.pcap --attack pcap --output outputs/output.json
# 여러 제공자: 각각 독립적으로 분석한 뒤 하나의 통합 보고서
python gpt_vuln.py --target example.com --attack dns --ai openai,claude,gemini
# 심의할 모델을 선택하고, 각 모델의 자체 분석도 표시
python gpt_vuln.py --target example.com --attack dns --ai all --summarizer claude --show_individual
# 비밀번호 크래킹
python gpt_vuln.py --password_hash <hash> --wordlist_file words.txt --algorithm md5 --parallel
# 대화형 단계별 메뉴
python gpt_vuln.py --menu
--menu는 각 공격에 대해 대상, 옵션, AI 제공자를 입력하라는 안내 인터페이스를 실행합니다.
┏━━━━━━━━━┳━━━━━━━━━━━━━━━━┓
┃ Option ┃ Action ┃
┡━━━━━━━━━╇━━━━━━━━━━━━━━━━┩
│ 1 │ Nmap scan │
│ 2 │ DNS recon │
│ 3 │ Subdomain enum │
│ 4 │ GeoIP lookup │
│ 5 │ JWT analysis │
│ 6 │ PCAP analysis │
│ 7 │ Hash cracker │
│ q │ Quit │
└─────────┴────────────────┘
프로필 1–5는 비권한으로 실행됩니다(TCP connect 스캔, root 불필요). 프로필 1이 기본값입니다. 프로필 6–10은 root가 필요한 SYN/UDP/OS 탐지 플래그를 사용합니다. GVA는 하나를 선택하면 nmap 단계만 sudo로 권한을 상승시킵니다. 터미널에서 이 표를 보려면 python gpt_vuln.py --list_profiles를 실행하세요.
| # | 이름 | Root | 수행 내용 | Nmap 명령 |
|---|---|---|---|---|
| 1 | Quick | no | 서비스 버전과 함께 상위 100개 TCP 포트 (빠른 트리아지). | -Pn -sT -sV -T4 --top-ports 100 |
| 2 | Standard | no | 버전 및 기본 NSE 스크립트와 함께 상위 1000개 포트. | -Pn -sT -sV -sC -T4 --top-ports 1000 |
| 3 | Full TCP | no | 버전과 함께 모든 TCP 포트 (1–65535). | -Pn -sT -sV -p- -T4 |
| 4 | Web services | no | 일반적인 웹 포트에 대한 HTTP/S 중심 스캔. | -Pn -sT -sV -T4 -p 80,443,8080,8443,8000,8888,3000,5000 --script=http-title,http-headers,... |
| 5 | Vulnerability | no | 버전이 확인된 서비스에 대한 NSE 취약점 스크립트. | -Pn -sT -sV -T4 --script=vuln |
| 6 | Stealth SYN | yes | 상위 1000개 포트에 대한 하프 오픈 SYN 스캔. | -Pn -sS -sV -T4 --top-ports 1000 |
| 7 | OS & service | yes | OS 핑거프린팅 및 서비스 탐지를 포함한 SYN 스캔. | -Pn -sS -sV -O -T4 |
| 8 | Aggressive | yes | OS, 버전, 기본 스크립트, traceroute. | -Pn -A -T4 |
| 9 | UDP top | yes | 상위 50개 UDP 서비스 (DNS, SNMP, NTP 등). | -Pn -sU -sV -T4 --top-ports 50 |
| 10 | Deep audit | yes | OS 탐지 및 취약점 스크립트를 포함한 전체 포트 SYN 스캔. | -Pn -sS -sV -O -p- -T4 --script=default,vuln |
프로필은 nmap 인자를 선택합니다. nmap이 실행되고, 열린 포트 데이터가 스캔 결과에서 추출되어 AI 엔진에 전달되어 분석됩니다. 스캔이 완료되었지만 열린 포트가 없으면, GVA는 빈 분석을 반환하는 대신 이를 명확히 알려주므로, 빈 결과가 조용한 실패처럼 보이지 않습니다.
데스크톱 GUI는 customtkinter로 만들어졌습니다.
uv run python GVA_gui.py
왼쪽 사이드바에서 스캔을 선택하고, 대상을 입력한 뒤 실행하세요. 각 스캔은 필요한 필드만 표시합니다:
all 선택).