
jshunter는 JavaScript 파일을 분석하고 엔드포인트를 추출하도록 설계된 명령줄 도구입니다. 이 도구는 API 엔드포인트 및 잠재적 보안 취약점과 같은 민감한 데이터를 식별하는 데 특화되어 있어, 버그 바운티 헌터와 보안 연구자에게 필수적인 리소스입니다.
JSHunter는 JavaScript 보안 분석 및 엔드포인트 탐색을 위한 종합적인 명령줄 도구입니다. 보안 전문가, 침투 테스터, 개발자를 위해 제작되었으며, 높은 정확도의 탐지 알고리즘과 전문적인 보고 기능을 갖춘 엔터프라이즈급 분석 기능을 제공합니다.
https://github.com/user-attachments/assets/5a5f60fa-f8dc-4aac-bd06-2e93779f9af4
실제 동작 중인 JSHunter — CLI의 실제 터미널 캡처 (표시된 모든 시크릿은 가짜 테스트 데이터입니다)
고급 분석 알고리즘을 통한 엔터프라이즈급 정확도
JSHunter는 스캔하는 JavaScript를 단순히 패턴 매칭하는 것이 아니라 파싱합니다. 단일 패스 ECMAScript 스캐너가 응답의 모든 바이트를 문자열 리터럴, 템플릿 리터럴, 주석, 정규식 리터럴 또는 코드로 분류하고, 탐지 규칙은 이 분류에 따라 평가됩니다.
이것이 중요한 이유는 정규식은 자신이 무엇을 매칭했는지 전혀 알지 못하기 때문입니다. 동일한 40개의 base64 문자라도 문자열 리터럴 안에서는 "자격 증명"을 의미하고, 압축된 식별자 안에서는 "청크 해시"를 의미하며, 두 인접 토큰 사이의 경계에 걸쳐 있을 때는 아무 의미도 없습니다. 어떤 것인지 아는 것은 수많은 근접성 휴리스틱을 구조적 답변으로 대체합니다:
key라는 단어를 찾기 위해 고정된 문자 윈도우를 스캔하는 대신, 엔진은 값이 실제로 바인딩된 식별자나 속성 키를 복구합니다 — const stripeSecret = "..."는 {contentHash: "..."}와 매우 다르게 읽히며, 형태 전용 규칙은 이제 해당 바인딩을 요구합니다.role 클레임에서 읽은 Supabase anon JWT, Twilio SID — 은 유출로 보고되지 않고 분류됩니다. --include-public은 이를 그대로 보고합니다.모든 거부는 본문이 확실하게 JavaScript 또는 JSON일 것을 조건으로 합니다. 그 외의 것 — .env 파일, 산문, 원시 HTML — 에 대해서는 엔진이 증거를 제공하지만 결코 억제하지 않으므로, 잘못 분류된 입력이 시크릿을 숨길 수 없습니다. --no-structural은 전체 계층을 끄고 v0.7 동작을 복원합니다.
탐지 결과는 --json, --ndjson 및 SARIF 속성 백에 evidence 객체로 추론 과정을 담습니다:```json
"exposure": "secret",
"evidence": {
"region": "string-literal",
"role": "assignment",
"bound_to": "awsAccessKeyId",
"shape": "opaque-token",
"charset": "alphanumeric",
"signals": [
{"name": "in-literal", "delta": 0.04, "detail": "value is a complete string-literal"},
{"name": "credential-binding", "delta": 0.12, "detail": "bound to 'awsAccessKeyId'"}
]
}
`--stats`는 각 단계에서 무엇이 제거되었는지 보고하므로, 파이프라인은 감사 가능한 상태로 유지됩니다.
### 청크 그래프와 라우트 탐색
현대적인 애플리케이션은 하나의 엔트리 번들과, 번들러가 인라인으로 삽입한 매니페스트로부터 런타임에 URL이 조립되는 수백 개의 지연 로드 청크를 함께 배포합니다. 이들로 연결되는 링크가 없으므로 크롤러는 이들을 보지 못합니다. `-G`는 그 매니페스트를 복구하고 전체 에셋 목록과 클라이언트 라우트 테이블을 출력합니다:```console
$ jshunter -u https://target.example/_next/static/chunks/main-a1b2c3.js -G
[CHUNKS] https://target.example/...: next runtime, 214 chunks, 37 routes
[CHUNK] https://target.example/... https://target.example/_next/static/chunks/settings.11aa22bb33cc.js
[ROUTE] https://target.example/... /admin/users/:id
지원되는 런타임: webpack 4 및 5(__webpack_require__.u, miniCssF,
jsonpScriptSrc), Next.js 빌드 매니페스트, Vite 및 Rollup(__vite__mapDeps,
__vitePreload), 일반 동적 import(), 그리고 React Router,
Vue Router 및 Angular의 라우트 테이블. 출력은 탭으로 구분되고 중복이 제거되므로,
후속 스캔의 입력 목록으로 바로 파이프될 수 있습니다:```bash
jshunter -u https://target.example/main.js -G -q | awk -F'\t' '/^[CHUNK]/{print $3}' > chunks.txt
jshunter -l chunks.txt -s -j > findings.json
### 전문 HTTP 및 네트워킹 제품군
<details>
<summary><strong>엔터프라이즈급 네트워크 구성</strong></summary>
**인증 및 헤더:**
- **사용자 정의 헤더** (`-H`): 반복 가능한 인증 헤더 및 사용자 정의 요청 헤더
- **쿠키 관리** (`-c`): 보호된 리소스에 접근하기 위한 세션 쿠키
- **User-Agent 제어** (`-U`): 사용자 정의 UA 문자열 또는 파일 기반 로테이션을 통한 은폐
**성능 및 안정성:**
- **속도 제한** (`-R`): 탐지를 피하기 위한 구성 가능한 요청 지연(밀리초)
- **스마트 타임아웃** (`-T`): 다양한 네트워크 조건에 대한 사용자 정의 타임아웃 설정
- **지능형 재시도** (`-y`): 실패한 요청에 대한 지수 백오프를 포함한 자동 재시도 메커니즘
**전문가 통합:**
- **프록시 지원** (`-p`): 완전한 Burp Suite 및 사용자 정의 프록시 통합 (HTTP/HTTPS/SOCKS5)
- **TLS 유연성** (`-k`): 테스트 환경을 위한 선택적 인증서 검증 우회
- **스레드 제어** (`-t`): 최적의 성능을 위한 구성 가능한 동시 요청 처리
> **보안 전문가 기능**: 침투 테스트 및 보안 평가를 위해 설계됨
> **예시**: `jshunter -l targets.txt -p 127.0.0.1:8080 -H "Authorization: Bearer token" -R 1000`
</details>
### 고급 JavaScript 분석
<details>
<summary><strong>완전한 코드 분석 및 난독화 해제 제품군</strong></summary>
**핵심 분석 도구:**
- **난독화 해제 엔진** (`-d`): 심층 분석을 위해 축소 및 난독화된 JavaScript를 해제
- **소스 맵 파서** (`-m`): 소스 맵에서 원본 소스 코드를 추출하고 분석
- **난독화 탐지** (`-z`): 난독화 기법 및 패턴을 식별하고 분류
**동적 분석:**
- **Eval 분석** (`-e`): 동적 코드 실행(`eval()`, `Function()`, 런타임 생성) 분석
**코드 인텔리전스:**
- **패턴 인식**: 일반적인 JavaScript 프레임워크 및 라이브러리 식별
- **코드 구조 분석**: 애플리케이션 아키텍처 및 데이터 흐름 매핑
- **컨텍스트 인식 탐지**: 오탐을 줄이기 위한 코드 컨텍스트 이해
> **전문가 사용법**: 최대 커버리지를 위해 분석 도구와 보안 탐지를 결합
> **예시**: `jshunter -u target.js -d -m -e -s -g` (전체 난독화 해제 + 보안 분석)
</details>
### 보안 분석 제품군
<details>
<summary><strong>완전한 보안 평가 툴킷</strong></summary>
**핵심 보안 탐지:**
- **비밀 정보 탐지** (`-s`): API 키, 액세스 토큰, 비밀번호 및 하드코딩된 자격 증명
- **JWT 토큰 분석** (`-x`): 인증 토큰 추출, 검증 및 페이로드 검사
- **Firebase 보안** (`-F`): 구성 분석, API 키 및 데이터베이스 URL 탐지
**고급 분석:**
- **매개변수 탐색** (`-P`): 숨겨진 폼 매개변수, 변수 및 구성 키
- **URL 매개변수 추출** (`-PU`): 전체 URL 컨텍스트를 포함한 고급 매개변수 분석
- **GraphQL 분석** (`-g`): 스키마 탐지, 쿼리 추출 및 엔드포인트 탐색
- **WAF 우회 탐지** (`-B`): 보안 우회 패턴 및 회피 기법
**범위 및 컨텍스트:**
- **내부 엔드포인트 필터링** (`-i`): 사설/내부 리소스 식별 및 분류
- **링크 분석** (`-L`): 포괄적인 URL 추출 및 관계 매핑
> **전문가 팁**: 포괄적인 분석을 위해 플래그를 결합하세요 (예: `jshunter -u target.js -s -x -F -g`)
</details>
### 범위 및 탐색
<details>
<summary><strong>지능형 크롤링 및 타겟팅</strong></summary>
- **재귀적 탐색**: 다중 깊이 JavaScript 파일 크롤링
- **도메인 범위 지정**: 특정 도메인에 분석 집중
- **확장자 필터링**: 특정 JavaScript 파일 유형 타겟팅
</details>
### 전문가 보고 및 내보내기 제품군
<details>
<summary><strong>엔터프라이즈급 출력 및 통합</strong></summary>
**핵심 출력 형식:**
- **콘솔 표시**: 전문적인 서식과 명확한 분류를 갖춘 색상 코드 터미널 출력
- **파일 내보내기** (`-o`): 포괄적인 결과를 사용자 정의 파일 위치에 저장
- **JSON 내보내기** (`-j`): 자동화 및 프로그래밍 방식 처리를 위한 구조화된 데이터 형식
- **CSV 내보내기** (`-C`): 경영진 보고 및 분석을 위한 스프레드시트 호환 형식
**전문가 통합:**
- **Burp Suite 내보내기** (`-n`): 즉각적인 테스트를 위한 Burp Suite Professional과의 직접 통합
- **정규식 필터링** (`-r`): 타겟팅된 결과 필터링을 위한 사용자 정의 패턴 매칭
- **상세 분석** (`-v`): 디버깅 정보와 컨텍스트를 포함한 상세 분석 출력
**결과 관리:**
- **클린 모드** (`--found-only`): 집중적인 보안 보고를 위해 빈 결과 숨기기
- **조용한 모드** (`-q`): 자동화 스크립팅 및 CI/CD 통합을 위한 배너 억제
> **보고 워크플로**: 자동화에는 JSON, 관리 보고서에는 CSV, 즉각적인 테스트에는 Burp 내보내기 사용
> **예시**: `jshunter -l targets.txt -s -j -o security-findings.json` (구조화된 보안 보고서)
</details>
---
## 설치
### Go 설치 (권장)```bash
# Install JSHunter
go install -v github.com/cc1a2b/jshunter/cmd/jshunter@latest
# Verify installation
jshunter --help
git clone https://github.com/cc1a2b/jshunter.git cd jshunter go build -o jshunter ./cmd/jshunter
### 시스템 요구 사항
- **Go 1.22.5+** (소스에서 빌드하는 경우)
- **Linux, macOS 또는 Windows** (64비트 아키텍처)
- **네트워크 연결** (원격 JavaScript 분석용)
---
## 빠른 시작