
실제 비밀을 찾아내고, 실시간으로 검증하며, 클라이언트 측 인텔리전스로부터 익스플로잇 경로를 구축하는 고급 정찰 엔진입니다.
Reconix는 승인된 보안 테스트, 버그 바운티 프로그램 및 방어 연구를 위해 독점적으로 설계되었습니다.
승인되지 않은 스캐닝은 불법이며 컴퓨터 사기 법률에 따라 처벌됩니다.
전체 고지 사항은 DISCLAIMER.md에서 확인하세요.
단순히 정규식으로 매칭하고 결과를 덤프하는 기본 스캐너와 달리 Reconix는:
실시간으로 시크릿 검증 — 실제 API(GitHub, Stripe, OpenAI, Supabase, SendGrid, Anthropic, HuggingFace, Linear)를 호출하여 키가 유효, 무효, 만료 또는 장기인지 확인 — 더 이상 키가 실제로 작동하는지 추측할 필요 없음
익스플로잇 체인 구축 — 관련 발견 항목을 "JWT + Supabase + API 엔드포인트 → 무단 데이터 액세스" 또는 "검증된 시크릿 + 관리자 패널 → 권한 상승"과 같은 실행 가능한 공격 경로로 자동 연결
10계층 분석으로 오탐 필터링 — 다른 도구가 시크릿으로 잘못 보고하는 React 내부, CSS 클래스, 문서 URL, 플레이스홀더 및 축소된 정크를 무시
소스 맵 재구성 — .map 파일과 인라인 소스 맵에서 원본 코드를 복구하고, 축소된 번들에 숨겨진 시크릿을 스캔
자가 치유 브라우저 — 충돌한 Puppeteer 인스턴스를 스캔 중간에 자동 감지 및 재시작하며 진행 상황 손실 없음
클라이언트 인텔리전스 추출 — 모든 JavaScript를 집계하여 API 엔드포인트(사용자/관리자/내부), 환경 변수(NEXT_PUBLIC_*, REACT_APP_*), 타사 서비스(Supabase, Stripe, Firebase, Clerk) 및 기능 플래그를 찾음
우선순위 기반 크롤링 — URL을 지능적으로 점수화(JS 파일, API, 소스 맵을 먼저)하여 정적 자산에 시간 낭비하기 전에 고가치 대상을 찾음
실시간 JWT 검사 — JWT를 디코딩하여 발급자, 역할 및 만료 시간을 공개 — 장기(1년 이상) 및 만료 없음 토큰을 보안 문제로 플래그 지정
Supabase service_role 감지 — JWT에 service_role 권한이 있는지 식별하며, 이는 모든 Row Level Security(RLS)를 우회함 — 중요한 데이터베이스 손상 경로
Firebase Realtime DB 테스트 — Firebase 자격 증명을 감지하고 /.json 엔드포인트가 인증되지 않은 데이터베이스 덤프를 허용하는지 테스트
GraphQL 인트로스펙션 감지 — /graphql 엔드포인트를 자동으로 프로브하여 스키마 인트로스펙션이 활성화되었는지 확인(정보 유출)
CORS 오구성 스캐닝 — API 엔드포인트에서 와일드카드(*) 또는 반사형 Access-Control-Allow-Origin 헤더를 확인
WordPress 사용자 열거 — /wp-json/wp/v2/users가 사용자 ID와 이름을 노출하는지 감지
Next.js 환경 변수 유출 — /_next/static/chunks/에서 클라이언트 번들에 포함된 process.env 참조를 스캔
아카이브 검색 — Wayback Machine에서 과거 URL을 가져와 라이브 사이트에서 제거된 시크릿을 스캔
프록시 장애 조치 — 3회 연속 프록시 실패 후 자동으로 직접 연결로 전환하여 스캔이 중단되지 않음
재개 가능한 스캔 — 10개 리소스마다 상태를 저장하고 중단 시 .reconix-state.json에서 재개 가능
다중 형식 보고 — 아름다운 HTML 보고서, 구조화된 JSON 내보내기 및 빠른 참조용 일반 텍스트 discovered_api_keys.txt 생성
680개 이상의 기술 지문 — 헤더, HTML, JS, 쿠키, TLS 인증서 및 DNS에서 프레임워크, 호스팅 제공자, CDN, 분석, 결제 처리자, 인증 시스템 및 UI 라이브러리 감지
200개 이상의 실제 시크릿 감지 패턴 — 주요 플랫폼에서 API 키, 토큰, 개인 키, OAuth 시크릿, 데이터베이스 자격 증명, CI/CD 토큰 및 웹훅 URL을 높은 신뢰도 매칭으로 포함
브라우저 네트워크 캡처 — --js가 활성화되면 모든 나가는 네트워크 요청을 캡처하여 추가 서비스 및 API 지문 수집
속도 제한 인식 — 429 응답 및 Retry-After 헤더를 감지하여 충돌 없이 조정
# 전역 설치
npm install -g @aquibk/reconix
# 또는 직접 실행
npx reconix target.com
# 모든 것이 제대로 작동하는지 확인
reconix --self-test
--js 모드용 자동 설치)# 기본 스캔 (낮은 발자국)
reconix example.com
# 최대 성능 (최대 발견)
reconix example.com --js --aggressive --deep --only-critical
# 버그 바운티 모드 (균형)
reconix target.com --js --deep --historical --delay=500 --output=report.json
# 스텔스 모드 (탐지 회피)
reconix target.com --delay=2000 --jitter=1000 --threads=5 --proxy=socks5://127.0.0.1:9050
reconix <url> [options]
reconix scan <url> [options]
| 플래그 | 설명 | 기본값 |
|---|---|---|
--output=<file> | 전체 JSON 보고서 저장 | 없음 |
--html=<file> | HTML 보고서 생성 | 없음 |
reconix example.com --output=scan.json --html=report.html
| 플래그 | 설명 | 기본값 |
|---|---|---|
--no-subdomains | 서브도메인 발견 비활성화 | - |
--historical |
reconix example.com --historical --deep
# 빠르지만 위험
reconix example.com --threads=50 --delay=100 --jitter=50
# 예의 바른 크롤링
reconix example.com --threads=10 --delay=2000 --jitter=1000
--no-js → 헤드리스 브라우저(Puppeteer) 비활성화--aggressive → 전체 범위 심층 스캔--proxy=<host:port> → 프록시 지원--auth=<user:pass> → 인증 (Basic 또는 Bearer)--cookie=<string> → 사용자 정의 쿠키--user-agent=<string> → 사용자 정의 사용자 에이전트# 인증된 스캔
reconix api.example.com --auth="Bearer:sk_live_xxx" --js
# 프록시 사용
reconix example.com --proxy="http://user:pass@proxy:8080" --delay=1000
reconix example.com --only-critical --no-low
reconix target.com --deep --historical --threads=25 --delay=500 --output=bounty.json --html=report.html
reconix target.com --aggressive --deep --historical --threads=50 --delay=150 --jitter=50 --only-critical --output=full.json --html=full.html
reconix target.com --threads=5 --delay=2000 --jitter=1500 --no-subdomains --proxy=socks5://127.0.0.1:9050
reconix target.com --threads=30 --delay=200 --no-js --no-subdomains --only-critical
reconix --self-test
# 1단계: 빠른 정찰
reconix target.com --only-critical
# 2단계: 심층 분석
reconix target.com --deep --delay=1000
# 3단계: 공격적 스캔
reconix target.com --aggressive --deep --only-critical
| 문제 | 해결 방법 |
|---|---|
| 브라우저 타임아웃 | Puppeteer 재설치 |
| 열린 파일이 너무 많음 | 스레드 수 줄이기 |
| 파일 | 설명 |
|---|---|
discovered_api_keys.txt | 모든 시크릿 발견 |
*.json | 전체 스캔 보고서 |
*.html | 시각적 보고서 |
이슈 및 풀 리퀘스트를 환영합니다.
reconix --self-test
LICENSE.txt 참조
⚠️ 책임감 있게 사용하세요. 승인된 대상에서만 사용하세요. ⚠️
| 아카이브된 URL 가져오기 |
| false |
--deep | 크롤링 깊이 증가 | false |
| 플래그 | 설명 | 기본값 |
|---|
--threads=<n> | 동시 요청 (1–100) | 20 |
--delay=<ms> | 요청 간 기본 지연 | 500 |
--jitter=<ms> | 랜덤 지연 변동 | 300 |
--max-bytes=<bytes> | 파일당 최대 다운로드 크기 | 4000000 |
--resume | 이전 스캔 재개 | false |
| 플래그 | 설명 | 기본값 |
|---|
--only-critical | 중요 발견만 표시 | false |
--no-low | 낮은 신뢰도 발견 숨김 | false |
--include-medium | 중간 발견 포함 | true |
--no-medium | 중간 발견 제외 | - |
| 대상 유형 | 스레드 | 지연 | 지터 | JS |
|---|
| 프로덕션 | 5–10 | 2000–3000 | 1000 | ❌ |
| 스테이징 | 15–20 | 800–1200 | 500 | ✅ |
| 버그 바운티 | 20–30 | 400–600 | 200 | ✅ |
| CTF / 실습 | 50–100 | 0–100 | 0 | ✅ |
| 프록시 실패 | 프록시 URL 확인 |
| 속도 제한 (429) | 지연 및 지터 증가 |
| 발견 없음 | --js --deep --historical 사용 |
.reconix-state.json| 재개 상태 |