
서브도메인 열거, 디렉터리 브루트포싱, JS/링크 마이닝, WAF 핑거프린팅, 테이크오버 탐지를 위한 17개 이상의 모듈을 갖춘 자동화 정찰 프레임워크. FastAPI 백엔드, React 대시보드, Telegram 알림, 대량 대상 처리를 특징으로 합니다.
Reconator는 자동화된 정찰 프레임워크입니다. 단일 또는 대량으로 대상을 추가하면, 작업자가 약 17개의 정찰 모듈(서브도메인 열거, 디렉토리 브루트포스, JS/링크 마이닝, WAF 핑거프린트, 테이크오버 검사, GF 분류 등)을 실행합니다. 대시보드는 각 모듈의 결과가 도착하는 대로 보여줍니다.
| 계층 | 기술 |
|---|---|
| API | FastAPI · SQLAlchemy 2 · Alembic · Pydantic v2 |
| Worker | Python 서브프로세스 실행기 (타임아웃 + 취소 지원) |
| DB | PostgreSQL 16 |
| Web | React 18 · TypeScript · Tailwind · shadcn/ui · 라이트/다크 테마 |
| 인증 | API 키 (X-API-Key) 기반 쓰기 권한; 개발 모드에서는 열림 |
| 알림 | Telegram + 일반 / Slack / Discord 웹훅 |
| 관찰 | JSON 로그 · 요청 ID · Prometheus /metrics · 선택적 Sentry |
| 배포 | Docker Compose · Heroku 컨테이너 스택 |
git clone https://github.com/gokulapap/Reconator
cd Reconator
cp .env.example .env # 선택 사항: Telegram/웹훅 키 / API 키 추가
docker compose up --build
| 서비스 | URL |
|---|---|
| 웹 UI | http://localhost:3000 |
| API 문서 | http://localhost:8000/docs |
| 메트릭 | http://localhost:8000/api/v1/metrics |
또는 CLI로 ( heroku.yml 컨테이너 스택 사용 — 단일 이미지가 UI + API를 제공하고, 작업자 다이노가 큐를 처리합니다):
heroku create my-reconator --stack=container
heroku addons:create heroku-postgresql:essential-0
heroku config:set ADMIN_API_KEY=$(openssl rand -hex 32) # 권장
heroku config:set TELEGRAM_API_KEY=... TELEGRAM_CHAT_ID=... # 선택 사항
git push heroku master
heroku ps:scale web=1 worker=1
# api
cd backend && pip install -r requirements.txt
uvicorn app.main:app --reload
# worker (별도 쉘)
python -m app.worker
# web (별도 쉘)
cd frontend && npm install && npm run dev # /api → :8000 프록시
# 테스트 + 린트
cd backend && pytest && ruff check .
ADMIN_API_KEY 설정 시 모든 변형에 X-API-Key 필요| 메서드 | 경로 | 인증 | 목적 |
|---|---|---|---|
| GET | /api/v1/targets | — | 목록 + 필터 (상태, 검색, 태그) |
| POST | /api/v1/targets | ✓ | 도메인 큐에 추가 |
| POST | /api/v1/targets/bulk | ✓ | 여러 개 한 번에 큐에 추가 |
| GET | /api/v1/targets/stats | — | 개수 + 평균 시간 |
| GET | /api/v1/targets/export?format=csv|json | — | 대량 내보내기 |
| GET | /api/v1/targets/{id} | — | 상세 + 모듈 요약 |
| DELETE | /api/v1/targets/{id} | ✓ | 삭제 (실행 중이면 취소) |
| POST | /api/v1/targets/{id}/cancel | ✓ | 대기/실행 중인 작업 취소 |
| POST | /api/v1/targets/{id}/rescan | ✓ | 동일 태그/모듈로 재큐잉 |
| GET | /api/v1/targets/{id}/results | — | 모든 모듈 출력 |
| GET | /api/v1/targets/{id}/results/{module} | — | 특정 모듈 출력 |
| GET | /api/v1/targets/{id}/results/{module}/download | — | .txt 다운로드 |
| GET | /api/v1/modules | — | 사용 가능한 모듈 목록 |
| GET | /api/v1/system/info | — | 버전 + 인증 + 알림 상태 |
| POST | /api/v1/system/test-notify | ✓ | 테스트 알림 전송 |
| GET | /api/v1/health · /ready · /metrics | — | 프로브 + Prometheus |
OpenAPI는 /docs에서 확인하세요.
| 환경 변수 | 기본값 | 비고 |
|---|---|---|
DATABASE_URL | 조합됨 | postgresql://… (Heroku 스타일 가능) |
ADMIN_API_KEY | 설정 안 됨 | 설정 시 변형에 X-API-Key 필요 |
RATE_LIMIT_WRITES | 20/minute | slowapi 표현식 |
RATE_LIMIT_BULK | 5/minute | |
TELEGRAM_API_KEY / _CHAT_ID | 설정 안 됨 | 비어 있으면 Telegram 비활성화 |
WEBHOOK_URL / WEBHOOK_KIND | 설정 안 됨 / generic | generic | slack | discord |
SENTRY_DSN | 설정 안 됨 | 설정 시 Sentry 활성화 |
WORKER_POLL_INTERVAL_SECONDS | 30 | |
MODULE_TIMEOUT_SECONDS | 1800 | 모듈별 하드 타임아웃 |
CORS_ORIGINS | * | 쉼표로 구분 |
cron.py 폴링 루프 → 행 잠금, 정상 종료, 취소가 있는 workerheroku.yml을 통한 컨테이너 스택승인된 테스트용으로만 사용하십시오. 소유하거나 평가 권한이 있는 시스템에서만 사용하십시오. GPL-3.0 라이선스로 배포됩니다.