asaotomo/FofaMap
一款证据驱动的 FOFA 资产测绘智能体:支持自然语言侦察、AI 反思、CLI / MCP / Skill / REST API,以及经人工审批的 Nuclei 扫描。
📌 FofaMap 는 무엇인가요?
FofaMap 은 FOFA (인터넷에 노출된 자산을 검색하는 엔진) 와 AI 기반 에이전트를 결합한 Python 기반 명령줄 도구입니다. 다음 기능을 제공합니다:
- 전통적인 FOFA 쿼리를 직접 실행.
- 자연어 요청을 받아 내장된 에이전트가 여러 FOFA 쿼리를 계획하고, 결과를 검토하여 구조화된 증거 기반 자산 보고서를 생성.
- 결과를 XLSX, CSV, JSONL 형식으로 내보내기.
- 선택적으로 Nuclei 스캔 계획을 생성하며, 실제 스캔 실행 전에 수동 승인이 필요합니다.
이 프로젝트는 REST API, AI 코딩 보조 도구(Cursor, Claude, LM Studio 등)용 MCP/Skill 통합, 그리고 최대 2회까지 쿼리를 재검토하는 자기 반성 루프를 포함합니다.
🚀 빠른 시작 (5분)
# 복제 및 가상 환경 설정 (Python 3.10 이상)
git clone https://github.com/asaotomo/FofaMap.git && cd FofaMap
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e .
# 설치 확인
fofamap --version
fofamap --help
fofamap init실행 – FOFA API 키 (옵션으로 OpenAI/Anthropic 등 AI 모드용 키)를 저장하는 마법사입니다.- 전통적인 쿼리 실행:
fofamap -q 'app="nginx" && country="CN"' -p 2 --size 100 - 에이전트에게 무거운 작업을 맡기기:
에이전트는 다음을 수행합니다: 1️⃣ 자연어를 하나 이상의 FOFA 쿼리로 변환 2️⃣ 쿼리를 실행하고 히트 수를 평가, 필요 시 쿼리를 개선 (최대 2회 반복) 3️⃣ 중복 제거 및 증거 수준 부여 (fofamap -ai 'Example 회사의 공개 웹사이트를 수집하고, 고신뢰 자산과 검증이 필요한 후보를 구분'corroborated,observed,candidate) 4️⃣ 표와 Markdown 보고서 출력
🛠️ 핵심 기능
| 기능 | 제공되는 기능 |
|---|---|
| 전통적인 FOFA CLI | -q / -hq / -cq / -ico / -bq – 완전한 FOFA 구문, AI 필요 없음 |
| 자연어 에이전트 | -ai – 자산을 자동으로 계획, 반성, 요약 |
| 증거 등급 부여 | 결과에 명확한 경계를 가진 corroborated, observed, candidate 라벨링 |
| 내보내기 형식 | XLSX, CSV, JSONL; 매우 큰 결과 세트에는 스트리밍 지원 |
| Nuclei 통합 | 스캔 계획 생성, 타겟/템플릿/심각도 표시, 실행 전 일회성 수동 승인 토큰 필요 |
| MCP / Skill | Cursor, Claude, LM Studio 등에서 FofaMap을 도구로 한 번에 등록 |
| REST API | OpenAPI 3.1 정의; fofamap serve로 HTTP를 통해 동일한 기능 노출 |
| 크로스플랫폼 | Windows, macOS, Linux에서 작동 |
| 보안 우선 | 가능하면 OS 키체인에 API 키 저장; 할당량, 레이트 제한, 권한 문제에 대한 명확한 오류 메시지 |
📚 에이전트 사용법 (AI 모드)
fofamap -ai '허가 범위 내 중국 지역의 Example 제품 노출면을 수집하고, 프로토콜, 포트, 제품 버전별로 요약하며, 최대 500건 반환'
에이전트 워크플로우 (README의 mermaid 다이어그램 참조):
- 요청을 분석하고 필요한 FOFA 하위 쿼리 결정.
- 각 쿼리를 FOFA 구문 및 내장 규칙 라이브러리로 검증.
- 쿼리를 실행하고 히트를 수집, 결과 품질이 충분한지 확인.
- 충분하지 않으면 반성하여 개선된 쿼리 생성 (최대 2회 반복).
- 중복 제거 및 증거 수준 할당.
- 표와 Markdown 브리핑 생성. 항상 다음을 포함:
- 고신뢰 자산
- 노이즈/거짓 긍정
- 확인되지 않은 증거 갭
- 다음 단계 추천
🔧 Nuclei 스캔 (승인 게이트)
- Nuclei를 별도로 설치 (projectdiscovery.com)하고
PATH에 포함되어 있는지 확인. - 스캔 활성화 환경 변수 설정:
export FOFAMAP_ENABLE_SCANNING=true export FOFAMAP_SCAN_APPROVAL_SECRET='랜덤한 고엔트로피 문자열 (≥24자)' -n(또는--nuclei) 옵션으로 쿼리 실행. 도구는 다음을 수행:- 정확한 타겟 목록, 선택된 템플릿 ID, 심각도 필터 표시.
- 계획 확인 (또는 수정) 요청.
- 승인 후 선택된 템플릿으로
nuclei실행.
- 템플릿 세트 커스터마이징 가능:
전체 스캔은fofamap -q 'domain="example.com"' -n \ --nuclei-id cors-misconfig --nuclei-id tech-detect \ --severity low,medium--nuclei-id all및--severity all사용 (도구가 강하게 경고함).
📦 AI 코딩 보조 도구 통합 (MCP/Skill)
# 지원되는 에이전트 목록 보기
fofamap integrate --list
# Cursor용 설치 예시
fofamap integrate --agent cursor
# 제거
fofamap integrate --agent cursor --uninstall
설치기는 작은 래퍼(fofamap-mcp)를 작성하여 호스트 IDE가 이를 도구로 호출할 수 있도록 합니다. 비밀 정보는 복사되지 않으며, 래퍼는 기존 Python 환경을 가리키기만 합니다.
🗂️ 프로젝트 구조 (개요)
FofaMap/
├─ config/ # 예시 설정, .env 템플릿
├─ docs/ # 에이전트 통합 가이드, 감사 문서 등
├─ fofamap/ # 핵심 패키지 (CLI, 에이전트, MCP, REST)
├─ results/ # 기본 출력 디렉터리 (타임스탬프 서브폴더)
├─ tests/ # 단위/통합 테스트
└─ setup.py / pyproject.toml
🧩 어떤 진입점을 선택해야 할까?
| 진입점 | FOFA 키 필요 | AI 키 필요 | 최적의 사용처 |
|---|---|---|---|
인터랙티브 CLI / 전통적 -q |
✅ | ❌ | FOFA 구문을 알고 있고, 빠른 확인이 필요한 경우 |
로컬 -ai 에이전트 |
✅ | ✅ | 자연어 탐색, 증거 등급 보고서가 필요한 경우 |
| MCP / Skill | ✅ | ❌* | Cursor, Claude, LM Studio 등에서 사용 (호스트가 자체 LLM 제공) |
❓ 자주 묻는 질문
- 유료 FOFA 계정이 필요합니까? 예. 도구는 FOFA API를 사용하며, 가져올 수 있는 데이터 양은 회원 등급에 따라 다릅니다.
- AI가 내 컴퓨터에서 명령을 실행할 수 있습니까? 아니요. 에이전트는 FOFA 호출, 데이터 처리, 그리고 (옵션으로) Nuclei 계획 준비만 수행합니다. Nuclei 실행은 수동 승인으로 제한됩니다.
- 지원되는 AI 제공업체는 무엇입니까? OpenAI, Anthropic, DeepSeek, Ollama, LM Studio 및 호환 가능한 OpenAI 스타일 엔드포인트.
- API 키는 어디에 저장됩니까? OS 키체인 (macOS Keychain, Linux Secret Service, Windows Credential Manager)을 우선적으로 사용. 사용 불가 시,
0600권한으로 로컬 파일에 저장 여부를 묻습니다.
📦 설치 및 업그레이드 노트
- 가상 환경 내에서
pip install -e .로 설치. - 업그레이드 시:
git pull && pip install --force-reinstall -e . - 메이저 버전 업그레이드 후에는 이전에 저장된 FOFA 키를 회전 (MIGRATION.md 참조).
🔗 유용한 링크
- 릴리스: https://github.com/asaotomo/FofaMap/releases/tag/v2.0.1
- 문서 인덱스:
docs/(에이전트 통합, REST OpenAPI, 보안 정책) - 이슈 트래커: 버그나 기능 요청은 GitHub Issues를 열어주세요.
TL;DR
FofaMap은 보안 연구자와 레드팀이 FOFA를 직접 쿼리하거나 자연어로 검색하여, 검색을 자동으로 최적화, 증거를 등급화, 필요 시 사람의 승인을 거쳐 Nuclei 스캔을 게이트할 수 있는 단일 크로스플랫폼 CLI를 제공합니다. REST API 또는 AI 코딩 보조 도구 내에서 도구로도 호출 가능합니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트