
IP, 도메인, CVE에 대한 신속한 IOC 분석을 위해 6개의 무료 위협 인텔리전스 API를 사용하는 Python CLI 도구입니다. 출력: 색상으로 구분된 Excel, JSON, CSV. 사용: VT, Shodan, AbuseIPDB.
브라우저 탭을 전환하지 않고 6개의 무료 위협 인텔리전스 API 전반에서 IP, 도메인, 해시, CVE를 조사하세요.
🚀 공식 Awesome OSINT 저장소에 자랑스럽게 소개되었습니다.
ThreatLens는 가장 신뢰받는 무료 OSINT 소스 전반에서 위협 인텔리전스 조회를 통합하는 단일 명령줄 도구입니다. IP를 다섯 개의 서로 다른 웹사이트에 붙여넣는 대신, ThreatLens는 이들을 모두 병렬로 조회하고 결과를 정규화하여 명확한 판정을 제공합니다 — 터미널에서, 또는 세련되고 색상으로 구분된 Excel/JSON/CSV 보고서로 제공합니다.
SOC 분석가, 사고 대응 담당자, 위협 헌터, 그리고 셸을 떠나지 않고 빠르고 신뢰할 수 있는 IOC 보강을 원하는 모든 사람을 위해 만들어졌습니다.
|
ThreatLens를 쓰는 이유
|
적합하지 않은 용도
|
| 기능 | 세부 사항 |
|---|---|
| 🎯 IOC 유형 | IP, 도메인, URL, 파일 해시 (MD5 / SHA1 / SHA256), CVE |
| 🔌 통합 API | AbuseIPDB, VirusTotal, AlienVault OTX, Shodan, URLScan.io, NVD, CISA KEV, EPSS |
| 📄 로그 파싱 | 일반 텍스트/로그 파일에서 IOC 자동 추출, Zeek, Suricata eve.json, Sysmon (JSON), 일반 JSONL 기본 지원 |
| 🧭 CVE 결정 카드 | CISA KEV, EPSS, CVSS 및 상관된 자산 노출을 기반으로 CVE별 결정론적이고 설명 가능한 패치 / 격리 / 모니터링 / 영향 없음 권장 사항 제공 |
| 🗂️ 자산 인벤토리 | 중요도 및 인터넷 노출 상태가 포함된 호스트/IP CSV 가져오기; CVE 결과와 상관 분석 |
| 📤 SIEM 내보내기 | Splunk HEC, Elastic _bulk, Microsoft Sentinel(최신 Logs Ingestion API)로 선택적 내보내기 |
| 🧾 증거 팩 | 기본적인 증거 연계를 위한 SHA-256 매니페스트와 함께 조사 결과를 ZIP으로 내보내기 |
| 📊 보고서 | Excel(색상 구분), JSON, CSV |
| 💾 로컬 캐시 | 구성 가능한 TTL을 가진 SQLite 캐시 — 알려진 IOC 재쿼리 생략, 캐시된 CISA KEV 피드(24시간 TTL) 포함 |
| 🛡️ 보안 | 리다이렉트 차단, 호스트 허용 목록, 로그 내 API 키 마스킹, 스프레드시트 수식 무력화, CSV/로그 DoS 제한 |
| 🔒 잠금 파일 | 재현 가능한 설치를 위한 SHA-256 해시가 포함된 requirements.lock |
| 💻 CLI 경험 | 풍부한 진행 표시줄, 색상 테이블, 깔끔한 판정 요약 |
| 🧩 아키텍처 | 모듈식 enricher/parser/exporter, 타입 지정 모델, 엄격한 관심사 분리 |
| ✅ 테스트 완료 | pytest를 사용한 155개의 단위 및 통합 테스트; GitHub Actions를 통한 CI |
| ⚡ 복원력 | 하나의 API 또는 SIEM 대상이 실패해도 다른 대상은 차단되지 않음 — 오류는 격리되고 로그에 기록됨 |
# 1. Clone & install
git clone https://github.com/AbdaullahAG/threatlens.git
cd threatlens
pip install -r requirements.txt
# 2. Configure your API keys
cp config/keys.env.example config/keys.env
# → edit config/keys.env and fill in your keys
# 3. Run your first scan
python main.py -i 45.33.32.156
💡 NVD(CVE 조회)는 API 키 없이 바로 작동합니다. 다른 모든 API는 가입에 2분이 채 걸리지 않는 무료 티어를 제공합니다 — 아래 API 키를 참고하세요.
pip install --require-hashes -r requirements.lock
| 기본 단일 IOC 조회 |
| 한 번의 실행으로 IOC 유형을 혼합 및 매칭 |
| 원시 로그에서 바로 대량 조사 |
| 파이프라인을 위한 기계 판독 가능 출력 |
| 선택한 소스로 보강 제한 |
| 단일 실행으로 Excel + JSON + CSV |
| NIST NVD를 통한 CVE 보강 (무료, 키 불필요) |
| 문제 해결을 위한 전체 요청/응답 로깅 |
| 패치 / 격리 / 모니터링 / 영향받지 않음 권장 |
| SOC 로그 수집 → SIEM 내보내기 |
| 체인 오브 커스터디를 위한 SHA-256 매니페스트가 포함된 ZIP |
| 플래그 | 설명 |
|---|---|
-i, --ip | 조사할 IP 주소 |
-d, --domain | 조사할 도메인 |
-s, --hash | 파일 해시 — MD5 / SHA1 / SHA256 |
-c, --cve | CVE ID, 예: CVE-2021-44228 |
--file | IOC를 자동 추출할 로그/텍스트 파일 경로 |
--log-format | --file의 형식: auto(기본값) | text | zeek | suricata | sysmon | jsonl |
--apis | 보강을 특정 API 집합으로 제한 (cisa_kev, epss 포함) |
--format | 출력 형식: excel(기본값) | json | csv | all |
--output | 보고서를 저장할 디렉터리 (기본값: ./output) |
--no-report | 결과를 터미널에만 출력하고 파일 저장 생략 |
--import-assets | 자산 인벤토리 CSV 가져오기 (hostname/ip, criticality, internet_facing, owner, product) |
--decision-cards | 모든 CVE 결과에 대해 Patch/Isolate/Monitor/Not-affected 카드 생성 |
--export | 결과를 하나 이상의 SIEM 대상으로 전송: splunk | elastic | sentinel (옵트인, config/keys.env에 구성 필요) |
--export-insecure-tls | SIEM 내보내기에 대한 TLS 검증 비활성화 (테스트 전용, 경고 로그 출력) |
--evidence-pack | 조사 결과를 SHA-256 매니페스트가 포함된 ZIP으로 패키징 |
--cache-path | 로컬 캐시용 SQLite 경로 (기본값: .threatlens/investigations.db) |
--cache-ttl | 캐시 수명(초) (기본값: 3600) |
--no-cache | 로컬 캐시 완전 우회 |
--max-requests | 실행당 외부 API 호출 상한 (기본값: 250) |
--max-iocs | 실행당 최대 고유 IOC 수 (기본값: 1000) |
--allow-private-iocs | 사설/루프백 IP 허용 (기본값 비활성화) |
--delay | 속도 제한 조정을 위한 API 호출 간 지연 |
-v, --verbose | 디버그 로깅 활성화 |
ThreatLens는 IOC 조회를 넘어 가벼운 CVE 트리아지와 로그 수집까지 수행할 수 있습니다: