fingerprint-mcp 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +663 -0
- package/README.ar.md +767 -0
- package/README.bn.md +767 -0
- package/README.bs.md +767 -0
- package/README.da.md +767 -0
- package/README.de.md +770 -0
- package/README.el.md +767 -0
- package/README.es.md +769 -0
- package/README.fr.md +769 -0
- package/README.hi.md +767 -0
- package/README.it.md +767 -0
- package/README.ja.md +767 -0
- package/README.ko.md +772 -0
- package/README.md +767 -0
- package/README.no.md +767 -0
- package/README.pl.md +767 -0
- package/README.pt-BR.md +767 -0
- package/README.ru.md +767 -0
- package/README.th.md +767 -0
- package/README.tr.md +767 -0
- package/README.uk.md +767 -0
- package/README.vi.md +767 -0
- package/README.zh-TW.md +768 -0
- package/README.zh.md +768 -0
- package/dist/app/index.d.ts +3 -0
- package/dist/app/index.d.ts.map +1 -0
- package/dist/app/index.js +614 -0
- package/dist/app/index.js.map +1 -0
- package/dist/composite/analyze.d.ts +3 -0
- package/dist/composite/analyze.d.ts.map +1 -0
- package/dist/composite/analyze.js +59 -0
- package/dist/composite/analyze.js.map +1 -0
- package/dist/composite/correlate.d.ts +3 -0
- package/dist/composite/correlate.d.ts.map +1 -0
- package/dist/composite/correlate.js +184 -0
- package/dist/composite/correlate.js.map +1 -0
- package/dist/composite/enumerate.d.ts +3 -0
- package/dist/composite/enumerate.d.ts.map +1 -0
- package/dist/composite/enumerate.js +94 -0
- package/dist/composite/enumerate.js.map +1 -0
- package/dist/composite/helpers.d.ts +22 -0
- package/dist/composite/helpers.d.ts.map +1 -0
- package/dist/composite/helpers.js +111 -0
- package/dist/composite/helpers.js.map +1 -0
- package/dist/composite/index.d.ts +3 -0
- package/dist/composite/index.d.ts.map +1 -0
- package/dist/composite/index.js +29 -0
- package/dist/composite/index.js.map +1 -0
- package/dist/composite/meta.d.ts +3 -0
- package/dist/composite/meta.d.ts.map +1 -0
- package/dist/composite/meta.js +23 -0
- package/dist/composite/meta.js.map +1 -0
- package/dist/composite/osint.d.ts +3 -0
- package/dist/composite/osint.d.ts.map +1 -0
- package/dist/composite/osint.js +40 -0
- package/dist/composite/osint.js.map +1 -0
- package/dist/composite/recon.d.ts +3 -0
- package/dist/composite/recon.d.ts.map +1 -0
- package/dist/composite/recon.js +131 -0
- package/dist/composite/recon.js.map +1 -0
- package/dist/composite/scan-dns.d.ts +3 -0
- package/dist/composite/scan-dns.d.ts.map +1 -0
- package/dist/composite/scan-dns.js +44 -0
- package/dist/composite/scan-dns.js.map +1 -0
- package/dist/composite/scan-http.d.ts +3 -0
- package/dist/composite/scan-http.d.ts.map +1 -0
- package/dist/composite/scan-http.js +68 -0
- package/dist/composite/scan-http.js.map +1 -0
- package/dist/composite/scan-paths.d.ts +3 -0
- package/dist/composite/scan-paths.d.ts.map +1 -0
- package/dist/composite/scan-paths.js +32 -0
- package/dist/composite/scan-paths.js.map +1 -0
- package/dist/composite/scan-ports.d.ts +3 -0
- package/dist/composite/scan-ports.d.ts.map +1 -0
- package/dist/composite/scan-ports.js +79 -0
- package/dist/composite/scan-ports.js.map +1 -0
- package/dist/composite/scan-services.d.ts +3 -0
- package/dist/composite/scan-services.d.ts.map +1 -0
- package/dist/composite/scan-services.js +111 -0
- package/dist/composite/scan-services.js.map +1 -0
- package/dist/composite/scan-tls.d.ts +3 -0
- package/dist/composite/scan-tls.d.ts.map +1 -0
- package/dist/composite/scan-tls.js +32 -0
- package/dist/composite/scan-tls.js.map +1 -0
- package/dist/composite/scan-waf.d.ts +3 -0
- package/dist/composite/scan-waf.d.ts.map +1 -0
- package/dist/composite/scan-waf.js +35 -0
- package/dist/composite/scan-waf.js.map +1 -0
- package/dist/correlation/index.d.ts +3 -0
- package/dist/correlation/index.d.ts.map +1 -0
- package/dist/correlation/index.js +1044 -0
- package/dist/correlation/index.js.map +1 -0
- package/dist/data/analytics-patterns.d.ts +21 -0
- package/dist/data/analytics-patterns.d.ts.map +1 -0
- package/dist/data/analytics-patterns.js +449 -0
- package/dist/data/analytics-patterns.js.map +1 -0
- package/dist/data/app-signatures.d.ts +52 -0
- package/dist/data/app-signatures.d.ts.map +1 -0
- package/dist/data/app-signatures.js +1143 -0
- package/dist/data/app-signatures.js.map +1 -0
- package/dist/data/c2-signatures.d.ts +54 -0
- package/dist/data/c2-signatures.d.ts.map +1 -0
- package/dist/data/c2-signatures.js +256 -0
- package/dist/data/c2-signatures.js.map +1 -0
- package/dist/data/cloud-ranges.d.ts +34 -0
- package/dist/data/cloud-ranges.d.ts.map +1 -0
- package/dist/data/cloud-ranges.js +628 -0
- package/dist/data/cloud-ranges.js.map +1 -0
- package/dist/data/cookie-patterns.d.ts +28 -0
- package/dist/data/cookie-patterns.d.ts.map +1 -0
- package/dist/data/cookie-patterns.js +225 -0
- package/dist/data/cookie-patterns.js.map +1 -0
- package/dist/data/error-signatures.d.ts +19 -0
- package/dist/data/error-signatures.d.ts.map +1 -0
- package/dist/data/error-signatures.js +321 -0
- package/dist/data/error-signatures.js.map +1 -0
- package/dist/data/favicon-hashes.d.ts +25 -0
- package/dist/data/favicon-hashes.d.ts.map +1 -0
- package/dist/data/favicon-hashes.js +249 -0
- package/dist/data/favicon-hashes.js.map +1 -0
- package/dist/data/h2-signatures.d.ts +50 -0
- package/dist/data/h2-signatures.d.ts.map +1 -0
- package/dist/data/h2-signatures.js +211 -0
- package/dist/data/h2-signatures.js.map +1 -0
- package/dist/data/header-order.d.ts +38 -0
- package/dist/data/header-order.d.ts.map +1 -0
- package/dist/data/header-order.js +185 -0
- package/dist/data/header-order.js.map +1 -0
- package/dist/data/jarm-signatures.d.ts +25 -0
- package/dist/data/jarm-signatures.d.ts.map +1 -0
- package/dist/data/jarm-signatures.js +213 -0
- package/dist/data/jarm-signatures.js.map +1 -0
- package/dist/data/saas-patterns.d.ts +23 -0
- package/dist/data/saas-patterns.d.ts.map +1 -0
- package/dist/data/saas-patterns.js +139 -0
- package/dist/data/saas-patterns.js.map +1 -0
- package/dist/data/sensitive-paths.d.ts +12 -0
- package/dist/data/sensitive-paths.d.ts.map +1 -0
- package/dist/data/sensitive-paths.js +1539 -0
- package/dist/data/sensitive-paths.js.map +1 -0
- package/dist/data/service-banners.d.ts +59 -0
- package/dist/data/service-banners.d.ts.map +1 -0
- package/dist/data/service-banners.js +323 -0
- package/dist/data/service-banners.js.map +1 -0
- package/dist/data/smtp-signatures.d.ts +12 -0
- package/dist/data/smtp-signatures.d.ts.map +1 -0
- package/dist/data/smtp-signatures.js +350 -0
- package/dist/data/smtp-signatures.js.map +1 -0
- package/dist/data/takeover-patterns.d.ts +37 -0
- package/dist/data/takeover-patterns.d.ts.map +1 -0
- package/dist/data/takeover-patterns.js +249 -0
- package/dist/data/takeover-patterns.js.map +1 -0
- package/dist/data/tech-patterns.d.ts +44 -0
- package/dist/data/tech-patterns.d.ts.map +1 -0
- package/dist/data/tech-patterns.js +690 -0
- package/dist/data/tech-patterns.js.map +1 -0
- package/dist/data/waf-signatures.d.ts +21 -0
- package/dist/data/waf-signatures.d.ts.map +1 -0
- package/dist/data/waf-signatures.js +318 -0
- package/dist/data/waf-signatures.js.map +1 -0
- package/dist/dns/index.d.ts +3 -0
- package/dist/dns/index.d.ts.map +1 -0
- package/dist/dns/index.js +1067 -0
- package/dist/dns/index.js.map +1 -0
- package/dist/enum/index.d.ts +3 -0
- package/dist/enum/index.d.ts.map +1 -0
- package/dist/enum/index.js +818 -0
- package/dist/enum/index.js.map +1 -0
- package/dist/h2/index.d.ts +3 -0
- package/dist/h2/index.d.ts.map +1 -0
- package/dist/h2/index.js +414 -0
- package/dist/h2/index.js.map +1 -0
- package/dist/http/index.d.ts +3 -0
- package/dist/http/index.d.ts.map +1 -0
- package/dist/http/index.js +2444 -0
- package/dist/http/index.js.map +1 -0
- package/dist/identify/index.d.ts +3 -0
- package/dist/identify/index.d.ts.map +1 -0
- package/dist/identify/index.js +447 -0
- package/dist/identify/index.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +165 -0
- package/dist/index.js.map +1 -0
- package/dist/infra/index.d.ts +3 -0
- package/dist/infra/index.d.ts.map +1 -0
- package/dist/infra/index.js +989 -0
- package/dist/infra/index.js.map +1 -0
- package/dist/iot/index.d.ts +3 -0
- package/dist/iot/index.d.ts.map +1 -0
- package/dist/iot/index.js +610 -0
- package/dist/iot/index.js.map +1 -0
- package/dist/meta/index.d.ts +3 -0
- package/dist/meta/index.d.ts.map +1 -0
- package/dist/meta/index.js +442 -0
- package/dist/meta/index.js.map +1 -0
- package/dist/osint/index.d.ts +3 -0
- package/dist/osint/index.d.ts.map +1 -0
- package/dist/osint/index.js +687 -0
- package/dist/osint/index.js.map +1 -0
- package/dist/passive/index.d.ts +3 -0
- package/dist/passive/index.d.ts.map +1 -0
- package/dist/passive/index.js +944 -0
- package/dist/passive/index.js.map +1 -0
- package/dist/path/index.d.ts +3 -0
- package/dist/path/index.d.ts.map +1 -0
- package/dist/path/index.js +878 -0
- package/dist/path/index.js.map +1 -0
- package/dist/protocol/mcp-server.d.ts +4 -0
- package/dist/protocol/mcp-server.d.ts.map +1 -0
- package/dist/protocol/mcp-server.js +32 -0
- package/dist/protocol/mcp-server.js.map +1 -0
- package/dist/protocol/tools.d.ts +3 -0
- package/dist/protocol/tools.d.ts.map +1 -0
- package/dist/protocol/tools.js +5 -0
- package/dist/protocol/tools.js.map +1 -0
- package/dist/service/index.d.ts +3 -0
- package/dist/service/index.d.ts.map +1 -0
- package/dist/service/index.js +1053 -0
- package/dist/service/index.js.map +1 -0
- package/dist/smtp/index.d.ts +3 -0
- package/dist/smtp/index.d.ts.map +1 -0
- package/dist/smtp/index.js +437 -0
- package/dist/smtp/index.js.map +1 -0
- package/dist/ssh/index.d.ts +3 -0
- package/dist/ssh/index.d.ts.map +1 -0
- package/dist/ssh/index.js +676 -0
- package/dist/ssh/index.js.map +1 -0
- package/dist/tcp/index.d.ts +3 -0
- package/dist/tcp/index.d.ts.map +1 -0
- package/dist/tcp/index.js +369 -0
- package/dist/tcp/index.js.map +1 -0
- package/dist/timing/index.d.ts +3 -0
- package/dist/timing/index.d.ts.map +1 -0
- package/dist/timing/index.js +425 -0
- package/dist/timing/index.js.map +1 -0
- package/dist/tls/index.d.ts +3 -0
- package/dist/tls/index.d.ts.map +1 -0
- package/dist/tls/index.js +1332 -0
- package/dist/tls/index.js.map +1 -0
- package/dist/types/index.d.ts +26 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +8 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/cache.d.ts +11 -0
- package/dist/utils/cache.d.ts.map +1 -0
- package/dist/utils/cache.js +35 -0
- package/dist/utils/cache.js.map +1 -0
- package/dist/utils/murmurhash3.d.ts +3 -0
- package/dist/utils/murmurhash3.d.ts.map +1 -0
- package/dist/utils/murmurhash3.js +57 -0
- package/dist/utils/murmurhash3.js.map +1 -0
- package/dist/utils/rate-limiter.d.ts +10 -0
- package/dist/utils/rate-limiter.d.ts.map +1 -0
- package/dist/utils/rate-limiter.js +35 -0
- package/dist/utils/rate-limiter.js.map +1 -0
- package/dist/utils/require-key.d.ts +2 -0
- package/dist/utils/require-key.d.ts.map +1 -0
- package/dist/utils/require-key.js +8 -0
- package/dist/utils/require-key.js.map +1 -0
- package/dist/waf/index.d.ts +3 -0
- package/dist/waf/index.d.ts.map +1 -0
- package/dist/waf/index.js +767 -0
- package/dist/waf/index.js.map +1 -0
- package/dist/web/index.d.ts +3 -0
- package/dist/web/index.d.ts.map +1 -0
- package/dist/web/index.js +1366 -0
- package/dist/web/index.js.map +1 -0
- package/package.json +66 -0
package/README.ko.md
ADDED
|
@@ -0,0 +1,772 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<a href="README.md">English</a> |
|
|
3
|
+
<a href="README.zh.md">简体中文</a> |
|
|
4
|
+
<a href="README.zh-TW.md">繁體中文</a> |
|
|
5
|
+
<strong>한국어</strong> |
|
|
6
|
+
<a href="README.de.md">Deutsch</a> |
|
|
7
|
+
<a href="README.es.md">Español</a> |
|
|
8
|
+
<a href="README.fr.md">Français</a> |
|
|
9
|
+
<a href="README.it.md">Italiano</a> |
|
|
10
|
+
<a href="README.da.md">Dansk</a> |
|
|
11
|
+
<a href="README.ja.md">日本語</a> |
|
|
12
|
+
<a href="README.pl.md">Polski</a> |
|
|
13
|
+
<a href="README.ru.md">Русский</a> |
|
|
14
|
+
<a href="README.bs.md">Bosanski</a> |
|
|
15
|
+
<a href="README.ar.md">العربية</a> |
|
|
16
|
+
<a href="README.no.md">Norsk</a> |
|
|
17
|
+
<a href="README.pt-BR.md">Português (Brasil)</a> |
|
|
18
|
+
<a href="README.th.md">ไทย</a> |
|
|
19
|
+
<a href="README.tr.md">Türkçe</a> |
|
|
20
|
+
<a href="README.uk.md">Українська</a> |
|
|
21
|
+
<a href="README.bn.md">বাংলা</a> |
|
|
22
|
+
<a href="README.el.md">Ελληνικά</a> |
|
|
23
|
+
<a href="README.vi.md">Tiếng Việt</a> |
|
|
24
|
+
<a href="README.hi.md">हिन्दी</a>
|
|
25
|
+
</p>
|
|
26
|
+
|
|
27
|
+
<p align="center">
|
|
28
|
+
<br>
|
|
29
|
+
<picture>
|
|
30
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/badchars/fingerprint-mcp/main/.github/banner-dark.svg">
|
|
31
|
+
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/badchars/fingerprint-mcp/main/.github/banner-light.svg">
|
|
32
|
+
<img alt="fingerprint-mcp" src="https://raw.githubusercontent.com/badchars/fingerprint-mcp/main/.github/banner-dark.svg" width="700">
|
|
33
|
+
</picture>
|
|
34
|
+
</p>
|
|
35
|
+
|
|
36
|
+
<h3 align="center">AI 에이전트를 위한 범용 디지털 핑거프린팅.</h3>
|
|
37
|
+
|
|
38
|
+
<p align="center">
|
|
39
|
+
TCP, TLS/SSL, SSH, HTTP, DNS, WAF/CDN, IoT, SMTP, 서비스 프로빙, JARM, JA4X, favicon 해싱, 인프라 토폴로지, C2 탐지, OSINT 강화 — 단일 MCP 서버로 통합되었습니다.<br>
|
|
40
|
+
AI 에이전트가 11개의 분리된 CLI 도구와 수동 상관분석 대신 <b>온디맨드 풀스펙트럼 핑거프린팅</b>을 수행합니다.
|
|
41
|
+
</p>
|
|
42
|
+
|
|
43
|
+
<br>
|
|
44
|
+
|
|
45
|
+
<p align="center">
|
|
46
|
+
<a href="#문제점">문제점</a> •
|
|
47
|
+
<a href="#차별점">차별점</a> •
|
|
48
|
+
<a href="#빠른-시작">빠른 시작</a> •
|
|
49
|
+
<a href="#ai가-할-수-있는-것">AI가 할 수 있는 것</a> •
|
|
50
|
+
<a href="#도구-참조13개-도구-103개-기술">도구 (13)</a> •
|
|
51
|
+
<a href="#데이터-소스21개">데이터 소스</a> •
|
|
52
|
+
<a href="#아키텍처">아키텍처</a> •
|
|
53
|
+
<a href="CHANGELOG.md">변경 이력</a> •
|
|
54
|
+
<a href="CONTRIBUTING.md">기여하기</a>
|
|
55
|
+
</p>
|
|
56
|
+
|
|
57
|
+
<p align="center">
|
|
58
|
+
<a href="https://www.npmjs.com/package/fingerprint-mcp"><img src="https://img.shields.io/npm/v/fingerprint-mcp.svg" alt="npm"></a>
|
|
59
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/license-AGPL--3.0-blue.svg" alt="라이선스"></a>
|
|
60
|
+
<img src="https://img.shields.io/badge/runtime-Bun-f472b6" alt="Bun">
|
|
61
|
+
<img src="https://img.shields.io/badge/protocol-MCP-8b5cf6" alt="MCP">
|
|
62
|
+
<img src="https://img.shields.io/badge/tools-13-ef4444" alt="13개 도구">
|
|
63
|
+
<img src="https://img.shields.io/badge/techniques-103-f97316" alt="103개 기술">
|
|
64
|
+
</p>
|
|
65
|
+
|
|
66
|
+
<p align="center">
|
|
67
|
+
<img src="https://raw.githubusercontent.com/badchars/fingerprint-mcp/main/.github/demo.gif" alt="fingerprint-mcp 데모" width="800">
|
|
68
|
+
</p>
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## 문제점
|
|
73
|
+
|
|
74
|
+
오늘날 서버를 핑거프린팅한다는 것은 십여 개의 분리된 도구를 동시에 다뤄야 한다는 의미입니다. 포트 스캔을 위해 `nmap`, 인증서 분석을 위해 `testssl.sh`, HTTP 헤더를 위해 `curl -I`, DNS를 위해 `dig`, WAF 탐지를 위해 `wafw00f`, SSH를 위해 `ssh-audit`, 별도의 JARM 도구, 기술 탐지를 위해 Wappalyzer를 실행하고 — 그런 다음 30분 동안 스프레드시트에서 모든 결과를 수동으로 교차 참조하여 실제로 무엇이 실행되고 있는지 파악해야 합니다.
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
기존 핑거프린팅 워크플로:
|
|
78
|
+
TLS 인증서 분석 -> testssl.sh / openssl s_client
|
|
79
|
+
HTTP 헤더 수집 -> curl -I
|
|
80
|
+
웹 기술 탐지 -> wappalyzer CLI
|
|
81
|
+
DNS 정찰 -> dig / nslookup / dnsenum
|
|
82
|
+
포트 스캔 -> nmap -sV
|
|
83
|
+
WAF 탐지 -> wafw00f
|
|
84
|
+
SSH 감사 -> ssh-audit
|
|
85
|
+
서비스 핑거프린팅 -> nmap scripts
|
|
86
|
+
JARM 핑거프린트 -> jarm (별도 도구)
|
|
87
|
+
OSINT 데이터베이스 조회 -> shodan CLI, censys CLI
|
|
88
|
+
모든 결과 상관분석 -> 스프레드시트에서 수동으로
|
|
89
|
+
──────────────────────────────
|
|
90
|
+
합계: 11개 도구, 30분 이상, 수동 상관분석
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
**fingerprint-mcp**는 [Model Context Protocol](https://modelcontextprotocol.io)을 통해 AI 에이전트에게 21개 제공자의 103개 핑거프린팅 기술을 감싼 13개 복합 도구를 제공합니다. 에이전트는 다중 레이어 핑거프린팅을 병렬로 실행하고, TCP/TLS/HTTP/DNS/SSH 레이어 간 신호를 상관분석하며, 허니팟과 C2 인프라를 탐지하고, 통합된 인텔리전스 뷰를 제시합니다 — 단일 대화에서 모든 것을 처리합니다.
|
|
94
|
+
|
|
95
|
+
```
|
|
96
|
+
fingerprint-mcp 사용:
|
|
97
|
+
당신: "target.com에 대해 심층 정찰을 수행해줘"
|
|
98
|
+
|
|
99
|
+
에이전트: -> recon {url: "https://target.com", depth: "deep"}
|
|
100
|
+
|
|
101
|
+
-> TLS: JARM (3fd21b20d00000...)을 통한 nginx/1.24.0,
|
|
102
|
+
Let's Encrypt 인증서, 2개 SAN, TLS 1.2+1.3
|
|
103
|
+
-> HTTP: Cloudflare WAF 뒤의 Express.js,
|
|
104
|
+
React SPA, Google Analytics, 14개 보안 헤더 분석
|
|
105
|
+
-> DNS: A/AAAA/MX/TXT 레코드, SPF/DKIM/DMARC 구성됨,
|
|
106
|
+
CNAME/MX를 통해 Slack + Google Workspace 탐지
|
|
107
|
+
-> 포트: 80, 443, 22 (OpenSSH 9.6), 8080 (개발 서버)
|
|
108
|
+
-> WAF: Cloudflare 탐지됨, 직접 연결을 통해 오리진 IP 발견
|
|
109
|
+
-> 열거: CT 로그를 통해 12개 하위 도메인 발견, 와일드카드 DNS 탐지
|
|
110
|
+
-> "target.com은 Cloudflare WAF 뒤에서 nginx/1.24.0 +
|
|
111
|
+
Express.js를 실행합니다. 오리진 IP 203.0.113.42가
|
|
112
|
+
8080 포트에 노출되어 있습니다. TLS는 올바르게
|
|
113
|
+
구성되어 있지만(A+ 등급) 8080의 개발 서버에는
|
|
114
|
+
WAF 보호가 없습니다. 3개 하위 도메인이 폐기된
|
|
115
|
+
인프라를 가리키고 있어 — 인수 위험이 있습니다."
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## 차별점
|
|
121
|
+
|
|
122
|
+
기존 도구는 한 번에 한 레이어의 원시 데이터만 제공합니다. fingerprint-mcp는 AI 에이전트에게 **모든 핑거프린팅 레이어를 동시에 추론**하는 능력을 부여합니다.
|
|
123
|
+
|
|
124
|
+
<table>
|
|
125
|
+
<thead>
|
|
126
|
+
<tr>
|
|
127
|
+
<th></th>
|
|
128
|
+
<th>기존 접근 방식</th>
|
|
129
|
+
<th>fingerprint-mcp</th>
|
|
130
|
+
</tr>
|
|
131
|
+
</thead>
|
|
132
|
+
<tbody>
|
|
133
|
+
<tr>
|
|
134
|
+
<td><b>인터페이스</b></td>
|
|
135
|
+
<td>출력 형식이 다른 11개의 CLI 도구</td>
|
|
136
|
+
<td>MCP — AI 에이전트가 대화형으로 도구 호출</td>
|
|
137
|
+
</tr>
|
|
138
|
+
<tr>
|
|
139
|
+
<td><b>기술</b></td>
|
|
140
|
+
<td>한 번에 하나의 도구, 하나의 레이어</td>
|
|
141
|
+
<td>21개 제공자의 103개 기술, 병렬 실행</td>
|
|
142
|
+
</tr>
|
|
143
|
+
<tr>
|
|
144
|
+
<td><b>TLS 분석</b></td>
|
|
145
|
+
<td>testssl.sh 출력, JARM을 별도로 수동 파싱</td>
|
|
146
|
+
<td>에이전트가 한 번의 호출로 인증서 + JARM + JA4X + 암호 제품군 + SNI + CT 로그 통합</td>
|
|
147
|
+
</tr>
|
|
148
|
+
<tr>
|
|
149
|
+
<td><b>상관분석</b></td>
|
|
150
|
+
<td>결과를 스프레드시트에 복사-붙여넣기</td>
|
|
151
|
+
<td>에이전트가 교차 상관분석: "JARM이 알려진 C2 프레임워크와 일치, HTTP 타이밍이 허니팟 확인"</td>
|
|
152
|
+
</tr>
|
|
153
|
+
<tr>
|
|
154
|
+
<td><b>WAF 우회</b></td>
|
|
155
|
+
<td>wafw00f가 WAF를 탐지하면, 수동으로 오리진 서버 탐색</td>
|
|
156
|
+
<td>에이전트가 WAF를 탐지하고, 오리진 IP를 발견하며, 동일한 콘텐츠를 제공하는지 검증</td>
|
|
157
|
+
</tr>
|
|
158
|
+
<tr>
|
|
159
|
+
<td><b>API 키</b></td>
|
|
160
|
+
<td>Shodan, Censys 등에 필수</td>
|
|
161
|
+
<td>80개 이상의 능동 기술이 API 키 없이 작동; 키는 OSINT 강화를 활성화</td>
|
|
162
|
+
</tr>
|
|
163
|
+
<tr>
|
|
164
|
+
<td><b>설치</b></td>
|
|
165
|
+
<td>nmap, testssl, wafw00f, ssh-audit, jarm, wappalyzer 설치...</td>
|
|
166
|
+
<td><code>npx fingerprint-mcp</code> — 하나의 명령, 설정 없음</td>
|
|
167
|
+
</tr>
|
|
168
|
+
</tbody>
|
|
169
|
+
</table>
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## 빠른 시작
|
|
174
|
+
|
|
175
|
+
### 옵션 1: npx (설치 불필요)
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
npx fingerprint-mcp
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
모든 80개 이상의 능동 핑거프린팅 기술이 즉시 작동합니다. TCP, TLS, SSH, HTTP, DNS, WAF, 경로, 서비스, 타이밍, IoT, SMTP, 인프라 및 애플리케이션 핑거프린팅에 API 키가 필요하지 않습니다.
|
|
182
|
+
|
|
183
|
+
### 옵션 2: 클론
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
git clone https://github.com/badchars/fingerprint-mcp.git
|
|
187
|
+
cd fingerprint-mcp
|
|
188
|
+
bun install
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### 환경 변수 (선택 사항)
|
|
192
|
+
|
|
193
|
+
```bash
|
|
194
|
+
# OSINT 강화 (모두 선택 사항 — 능동 핑거프린팅은 키 없이 작동)
|
|
195
|
+
export SHODAN_API_KEY=your-key # osint_shodan, ssh_hostkey_lookup 활성화
|
|
196
|
+
export CENSYS_API_ID=your-id # osint_censys 활성화 (무료: 월 250회 조회)
|
|
197
|
+
export CENSYS_API_SECRET=your-secret # Censys API 시크릿
|
|
198
|
+
export SECURITYTRAILS_API_KEY=your-key # waf_origin, enum_passive_dns 활성화
|
|
199
|
+
export VIRUSTOTAL_API_KEY=your-key # osint_virustotal 활성화 (무료: 일 500회 조회)
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
모든 API 키는 선택 사항입니다. 키 없이도 TCP/TLS/SSH/HTTP/DNS/WAF/경로/서비스/타이밍/IoT/SMTP/인프라/애플리케이션 핑거프린팅, 상관분석, 수동 분석, 열거 및 메타 도구를 완전히 사용할 수 있습니다 — 80개 이상의 기술이 대상을 직접 프로빙하여 작동합니다.
|
|
203
|
+
|
|
204
|
+
### AI 에이전트에 연결
|
|
205
|
+
|
|
206
|
+
<details open>
|
|
207
|
+
<summary><b>Claude Code</b></summary>
|
|
208
|
+
|
|
209
|
+
```bash
|
|
210
|
+
# npx 사용
|
|
211
|
+
claude mcp add fingerprint-mcp -- npx fingerprint-mcp
|
|
212
|
+
|
|
213
|
+
# 로컬 클론 사용
|
|
214
|
+
claude mcp add fingerprint-mcp -- bun run /path/to/fingerprint-mcp/src/index.ts
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
</details>
|
|
218
|
+
|
|
219
|
+
<details>
|
|
220
|
+
<summary><b>Claude Desktop</b></summary>
|
|
221
|
+
|
|
222
|
+
`~/Library/Application Support/Claude/claude_desktop_config.json`에 추가:
|
|
223
|
+
|
|
224
|
+
```json
|
|
225
|
+
{
|
|
226
|
+
"mcpServers": {
|
|
227
|
+
"fingerprint": {
|
|
228
|
+
"command": "npx",
|
|
229
|
+
"args": ["-y", "fingerprint-mcp"],
|
|
230
|
+
"env": {
|
|
231
|
+
"SHODAN_API_KEY": "optional",
|
|
232
|
+
"CENSYS_API_ID": "optional",
|
|
233
|
+
"CENSYS_API_SECRET": "optional",
|
|
234
|
+
"SECURITYTRAILS_API_KEY": "optional",
|
|
235
|
+
"VIRUSTOTAL_API_KEY": "optional"
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
</details>
|
|
243
|
+
|
|
244
|
+
<details>
|
|
245
|
+
<summary><b>Cursor / Windsurf / 기타 MCP 클라이언트</b></summary>
|
|
246
|
+
|
|
247
|
+
동일한 JSON 설정 형식입니다. 명령을 `npx fingerprint-mcp` 또는 로컬 설치 경로로 지정하세요.
|
|
248
|
+
|
|
249
|
+
</details>
|
|
250
|
+
|
|
251
|
+
### 쿼리 시작
|
|
252
|
+
|
|
253
|
+
```
|
|
254
|
+
당신: "target.com의 모든 것을 핑거프린팅해줘 — TLS, HTTP 스택, WAF, DNS, 열린 포트"
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
그게 전부입니다. 에이전트가 다중 레이어 핑거프린팅, 신호 상관분석, 인프라 분석을 자동으로 처리합니다.
|
|
258
|
+
|
|
259
|
+
---
|
|
260
|
+
|
|
261
|
+
## AI가 할 수 있는 것
|
|
262
|
+
|
|
263
|
+
### 빠른 정찰
|
|
264
|
+
|
|
265
|
+
```
|
|
266
|
+
당신: "target.com을 빠르게 정찰해줘"
|
|
267
|
+
|
|
268
|
+
에이전트: -> recon {url: "https://target.com", depth: "quick"}
|
|
269
|
+
|
|
270
|
+
-> TCP: 포트 80, 443, 22 열림
|
|
271
|
+
-> TLS: Let's Encrypt RSA 인증서, TLS 1.2+1.3, nginx JARM 서명
|
|
272
|
+
-> HTTP: nginx/1.24.0, Express.js, React, Cloudflare CDN
|
|
273
|
+
-> DNS: A 203.0.113.42, MX Google Workspace, SPF/DKIM 구성됨
|
|
274
|
+
-> WAF: Cloudflare 탐지됨 (cf-ray 헤더)
|
|
275
|
+
-> "target.com은 nginx/1.24.0 뒤에서 Express.js로 실행되는
|
|
276
|
+
React SPA이며, Cloudflare CDN을 통해 서비스됩니다.
|
|
277
|
+
TLS는 Let's Encrypt로 올바르게 구성되어 있습니다.
|
|
278
|
+
22번 포트에서 OpenSSH 9.6이 실행 중입니다.
|
|
279
|
+
이메일은 Google Workspace가 처리하며 SPF/DKIM/DMARC가
|
|
280
|
+
완전히 구성되어 있습니다."
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
### 심층 TLS 조사
|
|
284
|
+
|
|
285
|
+
```
|
|
286
|
+
당신: "suspicious-server.com의 TLS 구성을 상세히 분석해줘"
|
|
287
|
+
|
|
288
|
+
에이전트: -> scan_tls {host: "suspicious-server.com"}
|
|
289
|
+
|
|
290
|
+
-> 인증서: 자체 서명, CN=localhost, 47일 전 만료
|
|
291
|
+
-> JARM: 2ad2ad0002ad2ad00042d42d00000069d641f34fe76acdc05c40262f8815e5
|
|
292
|
+
(Cobalt Strike 기본 프로필과 일치)
|
|
293
|
+
-> JA4X: 핑거프린트가 알려진 C2 프레임워크 패턴과 일치
|
|
294
|
+
-> 암호 제품군: 약한 암호 수락 (RC4, 3DES)
|
|
295
|
+
-> SNI: 모든 SNI 값에 동일하게 응답
|
|
296
|
+
-> CT 로그: 인증서가 기록되지 않음 (공개 신뢰되지 않음)
|
|
297
|
+
-> "고위험: TLS 구성이 C2 인프라를 강하게 시사합니다.
|
|
298
|
+
자체 서명 만료 인증서, JARM 핑거프린트가 Cobalt Strike와
|
|
299
|
+
일치, 약한 암호 수락, 임의 SNI 값에 응답.
|
|
300
|
+
즉시 조사 및 차단을 권장합니다."
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
### WAF 우회 및 오리진 발견
|
|
304
|
+
|
|
305
|
+
```
|
|
306
|
+
당신: "target.com이 WAF 뒤에 있어. 오리진 서버를 찾을 수 있어?"
|
|
307
|
+
|
|
308
|
+
에이전트: -> scan_waf {url: "https://target.com"}
|
|
309
|
+
-> scan_dns {domain: "target.com"}
|
|
310
|
+
-> enumerate {domain: "target.com"}
|
|
311
|
+
|
|
312
|
+
-> WAF: Cloudflare (AS13335), 의심스러운 요청에 챌린지 페이지
|
|
313
|
+
-> DNS: A 레코드가 Cloudflare IP 104.21.x.x를 가리킴
|
|
314
|
+
-> 하위 도메인: dev.target.com이 203.0.113.42로 해석됨 (비 Cloudflare)
|
|
315
|
+
-> 203.0.113.42:443에 직접 연결 시 동일한 TLS 인증서 반환
|
|
316
|
+
-> SecurityTrails 이력: Cloudflare 이전 오리진은 203.0.113.42
|
|
317
|
+
-> "오리진 IP 발견: 203.0.113.42. Cloudflare를 우회하는
|
|
318
|
+
dev.target.com 하위 도메인을 통해 발견되었습니다.
|
|
319
|
+
오리진은 동일한 TLS 인증서를 제공하고 target.com
|
|
320
|
+
Host 헤더에 응답합니다.
|
|
321
|
+
오리진에 WAF 보호가 없어 — 직접 접근이 가능합니다."
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
### 호스트의 서비스 발견
|
|
325
|
+
|
|
326
|
+
```
|
|
327
|
+
당신: "10.0.1.50에서 어떤 서비스가 실행 중이야?"
|
|
328
|
+
|
|
329
|
+
에이전트: -> scan_ports {host: "10.0.1.50"}
|
|
330
|
+
-> scan_services {host: "10.0.1.50", ports: [22, 80, 3306, 5432, 6379, 8080]}
|
|
331
|
+
|
|
332
|
+
-> 포트 22: OpenSSH 8.9p1 Ubuntu, ED25519 호스트 키
|
|
333
|
+
-> 포트 80: Apache/2.4.57, PHP/8.2, WordPress 6.4
|
|
334
|
+
-> 포트 3306: MySQL 8.0.36, 인증 필요
|
|
335
|
+
-> 포트 5432: PostgreSQL 16.1, SSL 필요
|
|
336
|
+
-> 포트 6379: Redis 7.2.4, 인증 없음 (열림)
|
|
337
|
+
-> 포트 8080: Node.js Express 개발 서버, CORS: *
|
|
338
|
+
-> "심각: 6379 포트의 Redis에 인증이 없습니다 — 네트워크의
|
|
339
|
+
누구나 데이터를 읽고 쓸 수 있습니다. 8080의 Express
|
|
340
|
+
개발 서버에 와일드카드 CORS가 있습니다.
|
|
341
|
+
MySQL과 PostgreSQL은 올바르게 인증을 요구합니다.
|
|
342
|
+
WordPress가 2개 마이너 버전 뒤처져 있습니다.
|
|
343
|
+
Redis와 개발 서버 노출에 대한 즉각적인 조치가 필요합니다."
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
---
|
|
347
|
+
|
|
348
|
+
## 도구 참조 (13개 도구, 103개 기술)
|
|
349
|
+
|
|
350
|
+
<details open>
|
|
351
|
+
<summary><b>recon — 깊이 기반 기술 선택을 통한 전체 정찰</b></summary>
|
|
352
|
+
|
|
353
|
+
| 매개변수 | 유형 | 설명 |
|
|
354
|
+
|----------|------|------|
|
|
355
|
+
| `url` | string | 핑거프린팅할 대상 URL |
|
|
356
|
+
| `depth` | `quick` \| `standard` \| `deep` | 스캔 깊이: quick=5개 기술, standard=20, deep=50+ |
|
|
357
|
+
|
|
358
|
+
깊이 수준에 따라 모든 제공자의 기술을 오케스트레이션합니다. 빠른 모드는 빠른 개요를 제공하고, 심층 모드는 열거, OSINT, 상관분석을 포함한 철저한 핑거프린팅을 실행합니다.
|
|
359
|
+
|
|
360
|
+
</details>
|
|
361
|
+
|
|
362
|
+
<details>
|
|
363
|
+
<summary><b>scan_ports — 서비스 탐지를 포함한 TCP 포트 스캔 (3개 기술)</b></summary>
|
|
364
|
+
|
|
365
|
+
| 매개변수 | 유형 | 설명 |
|
|
366
|
+
|----------|------|------|
|
|
367
|
+
| `host` | string | 대상 호스트 (IP 또는 도메인) |
|
|
368
|
+
| `ports` | number[] | 선택 사항 — 스캔할 특정 포트 (기본값: 일반 포트) |
|
|
369
|
+
|
|
370
|
+
| 기술 | 설명 |
|
|
371
|
+
|------|------|
|
|
372
|
+
| `tcp_probe` | 열린 포트를 탐지하기 위한 TCP 연결 스캔 |
|
|
373
|
+
| `tcp_banner` | 서비스 식별을 위한 열린 포트의 배너 수집 |
|
|
374
|
+
| `tcp_analysis` | 포트 조합 분석 및 서비스 추론 |
|
|
375
|
+
|
|
376
|
+
</details>
|
|
377
|
+
|
|
378
|
+
<details>
|
|
379
|
+
<summary><b>scan_tls — 완전한 TLS/SSL 분석 (8개 기술)</b></summary>
|
|
380
|
+
|
|
381
|
+
| 매개변수 | 유형 | 설명 |
|
|
382
|
+
|----------|------|------|
|
|
383
|
+
| `host` | string | 대상 호스트 (IP 또는 도메인) |
|
|
384
|
+
| `port` | number | 선택 사항 — TLS 포트 (기본값: 443) |
|
|
385
|
+
|
|
386
|
+
| 기술 | 설명 |
|
|
387
|
+
|------|------|
|
|
388
|
+
| `tls_certificate` | X.509 인증서 파싱 — 주체, 발급자, SAN, 유효 기간, 체인 |
|
|
389
|
+
| `tls_jarm` | JARM 능동 핑거프린팅 — 10개 TLS Client Hello 프로브, 62자 해시 |
|
|
390
|
+
| `tls_ja4x` | 인증서 속성 기반 JA4X 수동 TLS 핑거프린팅 |
|
|
391
|
+
| `tls_ciphers` | 암호 제품군 열거 및 강도 분석 |
|
|
392
|
+
| `tls_protocols` | 지원되는 TLS 프로토콜 버전 탐지 (SSLv3부터 TLS 1.3까지) |
|
|
393
|
+
| `tls_sni` | SNI 동작 테스트 — 기본 인증서 대 요청된 호스트 이름 |
|
|
394
|
+
| `tls_ct_logs` | crt.sh를 통한 인증서 투명성 로그 조회 |
|
|
395
|
+
| `tls_ocsp` | OCSP 스테이플링 및 해지 상태 확인 |
|
|
396
|
+
|
|
397
|
+
</details>
|
|
398
|
+
|
|
399
|
+
<details>
|
|
400
|
+
<summary><b>scan_dns — DNS 인텔리전스 (7개 기술)</b></summary>
|
|
401
|
+
|
|
402
|
+
| 매개변수 | 유형 | 설명 |
|
|
403
|
+
|----------|------|------|
|
|
404
|
+
| `domain` | string | 대상 도메인 |
|
|
405
|
+
|
|
406
|
+
| 기술 | 설명 |
|
|
407
|
+
|------|------|
|
|
408
|
+
| `dns_records` | 전체 레코드 열거 — A, AAAA, MX, NS, TXT, CNAME, SOA |
|
|
409
|
+
| `dns_email_auth` | SPF, DKIM, DMARC 레코드 분석 |
|
|
410
|
+
| `dns_saas` | CNAME 및 MX 패턴을 통한 SaaS/서비스 탐지 (Slack, Zendesk 등) |
|
|
411
|
+
| `dns_server` | DNS 서버 핑거프린팅 (BIND, PowerDNS, Cloudflare 등) |
|
|
412
|
+
| `dns_takeover` | 댕글링 CNAME 분석을 통한 하위 도메인 인수 탐지 |
|
|
413
|
+
| `dns_zone` | 영역 전송 시도 (AXFR) |
|
|
414
|
+
| `dns_caa` | 인증 기관 제한을 위한 CAA 레코드 분석 |
|
|
415
|
+
|
|
416
|
+
</details>
|
|
417
|
+
|
|
418
|
+
<details>
|
|
419
|
+
<summary><b>scan_http — HTTP/웹 핑거프린팅 (29개 기술)</b></summary>
|
|
420
|
+
|
|
421
|
+
| 매개변수 | 유형 | 설명 |
|
|
422
|
+
|----------|------|------|
|
|
423
|
+
| `url` | string | 대상 URL |
|
|
424
|
+
|
|
425
|
+
| 기술 | 제공자 | 설명 |
|
|
426
|
+
|------|--------|------|
|
|
427
|
+
| `http_headers` | HTTP | 응답 헤더 분석 및 서버 식별 |
|
|
428
|
+
| `http_header_order` | HTTP | 헤더 순서 핑거프린트 (서버 소프트웨어 서명) |
|
|
429
|
+
| `http_security_headers` | HTTP | 보안 헤더 감사 (CSP, HSTS, X-Frame-Options 등) |
|
|
430
|
+
| `http_cookies` | HTTP | 쿠키 분석 — 플래그, 접두사, 프레임워크 탐지 |
|
|
431
|
+
| `http_methods` | HTTP | 허용된 HTTP 메서드 열거 (OPTIONS) |
|
|
432
|
+
| `http_cors` | HTTP | CORS 정책 분석 및 오설정 탐지 |
|
|
433
|
+
| `http_compression` | HTTP | 지원되는 압축 알고리즘 (gzip, br, zstd) |
|
|
434
|
+
| `http_caching` | HTTP | 캐시 헤더 분석 (CDN, 리버스 프록시 탐지) |
|
|
435
|
+
| `http_etag` | HTTP | 백엔드 식별을 위한 ETag 형식 분석 |
|
|
436
|
+
| `http_error` | HTTP | 오류 페이지 핑거프린팅 (사용자 정의 대 기본 오류 페이지) |
|
|
437
|
+
| `http_redirect` | HTTP | 리다이렉트 체인 분석 |
|
|
438
|
+
| `http_timing` | HTTP | 서버 성능 프로파일링을 위한 응답 타이밍 기준선 |
|
|
439
|
+
| `http_favicon` | HTTP | 기술 식별을 위한 Favicon 해시 (MurmurHash3) |
|
|
440
|
+
| `http_robots` | HTTP | robots.txt 파싱 및 금지 경로 추출 |
|
|
441
|
+
| `http_sitemap` | HTTP | 사이트맵 발견 및 URL 추출 |
|
|
442
|
+
| `http_wellknown` | HTTP | .well-known 엔드포인트 발견 (security.txt, openid 등) |
|
|
443
|
+
| `web_tech` | Web | HTML/JS/CSS 패턴을 통한 기술 탐지 |
|
|
444
|
+
| `web_analytics` | Web | 분석 및 추적 서비스 탐지 |
|
|
445
|
+
| `web_sourcemaps` | Web | Source map 파일 발견 |
|
|
446
|
+
| `web_websocket` | Web | WebSocket 엔드포인트 탐지 |
|
|
447
|
+
| `web_graphql` | Web | GraphQL 엔드포인트 탐지 및 내부 조사 |
|
|
448
|
+
| `web_spa` | Web | 싱글 페이지 애플리케이션 프레임워크 탐지 |
|
|
449
|
+
| `web_cdn` | Web | 응답 헤더 및 DNS를 통한 CDN 탐지 |
|
|
450
|
+
| `web_meta` | Web | HTML meta 태그 분석 (생성기, 프레임워크 힌트) |
|
|
451
|
+
| `web_feed` | Web | RSS/Atom 피드 발견 |
|
|
452
|
+
| `h2_detect` | HTTP/2 | HTTP/2 프로토콜 지원 탐지 |
|
|
453
|
+
| `h2_fingerprint` | HTTP/2 | HTTP/2 서버 핑거프린팅 (SETTINGS, WINDOW_UPDATE) |
|
|
454
|
+
| `h2_h3` | HTTP/2 | Alt-Svc 헤더를 통한 HTTP/3 (QUIC) 지원 탐지 |
|
|
455
|
+
| `app_cms` | Application | CMS 탐지 (WordPress, Drupal, Joomla 등) |
|
|
456
|
+
|
|
457
|
+
</details>
|
|
458
|
+
|
|
459
|
+
<details>
|
|
460
|
+
<summary><b>scan_paths — 경로 인텔리전스 (5개 기술)</b></summary>
|
|
461
|
+
|
|
462
|
+
| 매개변수 | 유형 | 설명 |
|
|
463
|
+
|----------|------|------|
|
|
464
|
+
| `url` | string | 대상 URL |
|
|
465
|
+
| `categories` | string[] | 선택 사항 — 확인할 카테고리 (sensitive, git, debug, api, config) |
|
|
466
|
+
|
|
467
|
+
| 기술 | 설명 |
|
|
468
|
+
|------|------|
|
|
469
|
+
| `path_sensitive` | 민감한 파일 발견 (백업 파일, 설정 파일, 데이터베이스 덤프) |
|
|
470
|
+
| `path_robots` | 숨겨진 경로 발견을 위한 robots.txt 및 sitemap.xml 분석 |
|
|
471
|
+
| `path_git` | Git 저장소 유출 탐지 (.git/HEAD, .git/config) |
|
|
472
|
+
| `path_debug` | 디버그 엔드포인트 발견 (phpinfo, server-status, 디버그 콘솔) |
|
|
473
|
+
| `path_api` | API 버전 및 문서 엔드포인트 발견 |
|
|
474
|
+
|
|
475
|
+
</details>
|
|
476
|
+
|
|
477
|
+
<details>
|
|
478
|
+
<summary><b>scan_waf — WAF/CDN 탐지 및 핑거프린팅 (4개 기술)</b></summary>
|
|
479
|
+
|
|
480
|
+
| 매개변수 | 유형 | 설명 |
|
|
481
|
+
|----------|------|------|
|
|
482
|
+
| `url` | string | 대상 URL |
|
|
483
|
+
|
|
484
|
+
| 기술 | 설명 |
|
|
485
|
+
|------|------|
|
|
486
|
+
| `waf_detect` | 응답 헤더 및 동작 분석을 통한 WAF 존재 탐지 |
|
|
487
|
+
| `waf_cdn` | CDN 제공자 식별 (Cloudflare, Akamai, Fastly 등) |
|
|
488
|
+
| `waf_fingerprint` | WAF 제품 식별 및 버전 탐지 |
|
|
489
|
+
| `waf_origin` | WAF/CDN 뒤의 오리진 IP 발견 (`SECURITYTRAILS_API_KEY` 필요) |
|
|
490
|
+
|
|
491
|
+
</details>
|
|
492
|
+
|
|
493
|
+
<details>
|
|
494
|
+
<summary><b>scan_services — 서비스 수준 프로빙 (12개 기술)</b></summary>
|
|
495
|
+
|
|
496
|
+
| 매개변수 | 유형 | 설명 |
|
|
497
|
+
|----------|------|------|
|
|
498
|
+
| `host` | string | 대상 호스트 (IP 또는 도메인) |
|
|
499
|
+
| `ports` | number[] | 선택 사항 — 프로빙할 특정 포트 |
|
|
500
|
+
| `service` | string | 선택 사항 — 프로빙할 특정 서비스 (mysql, postgres, redis, ftp, ssh, smtp, vnc, iot) |
|
|
501
|
+
|
|
502
|
+
| 기술 | 제공자 | 설명 |
|
|
503
|
+
|------|--------|------|
|
|
504
|
+
| `ssh_probe` | SSH | SSH 프로토콜 버전 및 소프트웨어 탐지 |
|
|
505
|
+
| `ssh_algorithms` | SSH | SSH 알고리즘 감사 (KEX, 암호, MAC, 호스트 키 유형) |
|
|
506
|
+
| `ssh_hostkey_lookup` | SSH | Shodan을 통한 SSH 호스트 키 조회 (`SHODAN_API_KEY` 필요) |
|
|
507
|
+
| `svc_mysql` | Service | MySQL 버전 탐지 및 기능 핑거프린팅 |
|
|
508
|
+
| `svc_postgres` | Service | PostgreSQL 버전 탐지 및 SSL 지원 확인 |
|
|
509
|
+
| `svc_redis` | Service | Redis 버전 탐지 및 인증 상태 |
|
|
510
|
+
| `svc_ftp` | Service | FTP 배너 분석 및 익명 로그인 확인 |
|
|
511
|
+
| `svc_vnc_rdp` | Service | VNC/RDP 서비스 탐지 및 보안 평가 |
|
|
512
|
+
| `smtp_banner` | SMTP | SMTP 배너 분석 및 MTA 식별 |
|
|
513
|
+
| `smtp_starttls` | SMTP | SMTP STARTTLS 지원 및 인증서 검사 |
|
|
514
|
+
| `iot_detect` | IoT | 배너 패턴 및 기본 페이지를 통한 IoT 장치 탐지 |
|
|
515
|
+
| `iot_upnp` | IoT | 로컬 네트워크에서의 UPnP/SSDP 장치 발견 |
|
|
516
|
+
|
|
517
|
+
</details>
|
|
518
|
+
|
|
519
|
+
<details>
|
|
520
|
+
<summary><b>enumerate — 범위 확장 (8개 기술)</b></summary>
|
|
521
|
+
|
|
522
|
+
| 매개변수 | 유형 | 설명 |
|
|
523
|
+
|----------|------|------|
|
|
524
|
+
| `domain` | string | 대상 도메인 |
|
|
525
|
+
|
|
526
|
+
| 기술 | 설명 |
|
|
527
|
+
|------|------|
|
|
528
|
+
| `enum_subdomains` | 다양한 방법을 통한 하위 도메인 열거 |
|
|
529
|
+
| `enum_wildcard` | 와일드카드 DNS 탐지 |
|
|
530
|
+
| `enum_tld` | TLD 확장 (target.com -> target.net, target.org 등) |
|
|
531
|
+
| `enum_related` | 공유 인프라를 통한 관련 도메인 발견 |
|
|
532
|
+
| `enum_asn` | ASN 이웃 발견 — 같은 네트워크의 다른 도메인 |
|
|
533
|
+
| `enum_ct` | 인증서 투명성 로그 하위 도메인 추출 |
|
|
534
|
+
| `enum_passive_dns` | 수동 DNS 이력 (`SECURITYTRAILS_API_KEY` 필요) |
|
|
535
|
+
| `enum_scope` | 범위 요약 및 공격 표면 개요 |
|
|
536
|
+
|
|
537
|
+
</details>
|
|
538
|
+
|
|
539
|
+
<details>
|
|
540
|
+
<summary><b>osint — OSINT 강화 (6개 기술)</b></summary>
|
|
541
|
+
|
|
542
|
+
| 매개변수 | 유형 | 설명 |
|
|
543
|
+
|----------|------|------|
|
|
544
|
+
| `target` | string | 강화할 IP 주소 또는 도메인 |
|
|
545
|
+
| `type` | `ip` \| `domain` | 선택 사항 — 대상 유형 (생략 시 자동 탐지) |
|
|
546
|
+
|
|
547
|
+
| 기술 | 인증 | 설명 |
|
|
548
|
+
|------|------|------|
|
|
549
|
+
| `osint_shodan` | `SHODAN_API_KEY` | Shodan 호스트 조회 — 열린 포트, 배너, 취약점, OS |
|
|
550
|
+
| `osint_censys` | `CENSYS_API_ID` + `CENSYS_API_SECRET` | Censys 호스트 데이터 — 서비스, TLS, 자율 시스템 |
|
|
551
|
+
| `osint_reverse_ip` | 없음 | 역방향 IP 조회 — 같은 IP의 다른 도메인 |
|
|
552
|
+
| `osint_whois` | 없음 | WHOIS 등록 데이터 — 등록 기관, 날짜, 네임서버 |
|
|
553
|
+
| `osint_webarchive` | 없음 | Web Archive 이력 — 첫/마지막 스냅샷, 변경 빈도 |
|
|
554
|
+
| `osint_virustotal` | `VIRUSTOTAL_API_KEY` | VirusTotal 도메인/IP 보고서 — 탐지 결과, 분류, DNS |
|
|
555
|
+
|
|
556
|
+
</details>
|
|
557
|
+
|
|
558
|
+
<details>
|
|
559
|
+
<summary><b>analyze — 수동 핑거프린트 분석 (3가지 모드)</b></summary>
|
|
560
|
+
|
|
561
|
+
| 매개변수 | 유형 | 설명 |
|
|
562
|
+
|----------|------|------|
|
|
563
|
+
| `type` | `headers` \| `html` \| `banner` | 분석할 데이터 유형 |
|
|
564
|
+
| `data` | string | 분석할 원시 데이터 (헤더, HTML 또는 배너 출력을 붙여넣기) |
|
|
565
|
+
|
|
566
|
+
| 모드 | 설명 |
|
|
567
|
+
|------|------|
|
|
568
|
+
| `fp_analyze_headers` | 수동 HTTP 헤더 분석 — 트래픽 전송 없이 서버, 프레임워크, 프록시 탐지 |
|
|
569
|
+
| `fp_analyze_html` | 수동 HTML 분석 — 소스에서 기술 탐지, 프레임워크 식별 |
|
|
570
|
+
| `fp_analyze_banner` | 수동 배너 분석 — 원시 배너 텍스트에서 서비스 식별 |
|
|
571
|
+
|
|
572
|
+
</details>
|
|
573
|
+
|
|
574
|
+
<details>
|
|
575
|
+
<summary><b>correlate — 다중 신호 상관분석 엔진 (7가지 모드)</b></summary>
|
|
576
|
+
|
|
577
|
+
| 매개변수 | 유형 | 설명 |
|
|
578
|
+
|----------|------|------|
|
|
579
|
+
| `type` | `consistency` \| `honeypot` \| `spoofing` \| `compare` \| `topology` \| `c2` \| `identify` | 상관분석 모드 |
|
|
580
|
+
| `signals` | object | 상관분석할 핑거프린트 신호 (모드에 따라 다름) |
|
|
581
|
+
|
|
582
|
+
| 모드 | 설명 |
|
|
583
|
+
|------|------|
|
|
584
|
+
| `fp_consistency` | 교차 레이어 신호 일관성 검사 — TCP, TLS, HTTP, DNS 핑거프린트가 일치하는가? |
|
|
585
|
+
| `fp_honeypot` | 허니팟 탐지 — 불가능한 서비스 조합 및 행동 이상 검사 |
|
|
586
|
+
| `fp_spoofing` | 스푸핑 탐지 — 서버 헤더와 실제 동작의 불일치 식별 |
|
|
587
|
+
| `fp_compare` | 두 호스트의 핑거프린트 프로필 나란히 비교 |
|
|
588
|
+
| `fp_topology` | 인프라 토폴로지 매핑 — CDN, 로드 밸런서, 리버스 프록시 체인 |
|
|
589
|
+
| `fp_c2` | JARM, TLS, HTTP, 타이밍 상관분석을 통한 C2 프레임워크 탐지 |
|
|
590
|
+
| `fp_identify` | 알려진 서명 데이터베이스에 대한 해시 기반 식별 |
|
|
591
|
+
|
|
592
|
+
</details>
|
|
593
|
+
|
|
594
|
+
<details>
|
|
595
|
+
<summary><b>meta — 서버 구성 및 데이터 (3가지 모드)</b></summary>
|
|
596
|
+
|
|
597
|
+
| 매개변수 | 유형 | 설명 |
|
|
598
|
+
|----------|------|------|
|
|
599
|
+
| `category` | string | 선택 사항 — 카테고리별 필터링 |
|
|
600
|
+
|
|
601
|
+
| 모드 | 설명 |
|
|
602
|
+
|------|------|
|
|
603
|
+
| `fp_sources` | 모든 사용 가능한 데이터 소스와 구성 및 API 키 상태 목록 |
|
|
604
|
+
| `fp_config` | 서버 구성 — 버전, 로드된 제공자, 기술 수 |
|
|
605
|
+
| `fp_signatures` | 서명 데이터베이스 목록 — JARM, 배너, WAF, 애플리케이션 서명 |
|
|
606
|
+
|
|
607
|
+
</details>
|
|
608
|
+
|
|
609
|
+
---
|
|
610
|
+
|
|
611
|
+
### CLI 사용법
|
|
612
|
+
|
|
613
|
+
```bash
|
|
614
|
+
# 사용 가능한 모든 도구 및 기술 나열
|
|
615
|
+
npx fingerprint-mcp --list
|
|
616
|
+
|
|
617
|
+
# 도구 직접 실행
|
|
618
|
+
npx fingerprint-mcp --tool recon '{"url":"https://example.com","depth":"quick"}'
|
|
619
|
+
npx fingerprint-mcp --tool scan_tls '{"host":"example.com"}'
|
|
620
|
+
npx fingerprint-mcp --tool scan_ports '{"host":"10.0.1.50","ports":[22,80,443,3306,8080]}'
|
|
621
|
+
npx fingerprint-mcp --tool scan_dns '{"domain":"example.com"}'
|
|
622
|
+
npx fingerprint-mcp --tool scan_http '{"url":"https://example.com"}'
|
|
623
|
+
npx fingerprint-mcp --tool scan_waf '{"url":"https://example.com"}'
|
|
624
|
+
npx fingerprint-mcp --tool scan_services '{"host":"10.0.1.50","service":"redis"}'
|
|
625
|
+
npx fingerprint-mcp --tool enumerate '{"domain":"example.com"}'
|
|
626
|
+
npx fingerprint-mcp --tool analyze '{"type":"headers","data":"Server: nginx/1.24.0\nX-Powered-By: Express"}'
|
|
627
|
+
npx fingerprint-mcp --tool correlate '{"type":"honeypot","signals":{"jarm":"...","banner":"..."}}'
|
|
628
|
+
npx fingerprint-mcp --tool meta '{}'
|
|
629
|
+
|
|
630
|
+
# OSINT 도구 (API 키 필요)
|
|
631
|
+
SHODAN_API_KEY=your-key npx fingerprint-mcp --tool osint '{"target":"203.0.113.42","type":"ip"}'
|
|
632
|
+
```
|
|
633
|
+
|
|
634
|
+
---
|
|
635
|
+
|
|
636
|
+
## 데이터 소스 (21개)
|
|
637
|
+
|
|
638
|
+
| 소스 | 인증 | 제공 기능 |
|
|
639
|
+
|------|------|----------|
|
|
640
|
+
| TCP 프로빙 | 없음 | 포트 스캔, 배너 수집, 서비스 탐지 |
|
|
641
|
+
| TLS/SSL 분석 | 없음 | 인증서 파싱, JARM 핑거프린팅, JA4X, 암호 열거, SNI 테스트 |
|
|
642
|
+
| SSH 프로빙 | 없음 | 프로토콜 버전, 알고리즘 감사, 소프트웨어 탐지 |
|
|
643
|
+
| HTTP 분석 | 없음 | 헤더 핑거프린팅, favicon 해싱, 쿠키 분석, 메서드 열거, CORS |
|
|
644
|
+
| Web 탐지 | 없음 | 기술 탐지, 분석, Source map, WebSocket, GraphQL, SPA 프레임워크 |
|
|
645
|
+
| 경로 발견 | 없음 | 민감한 파일, Git 유출, 디버그 엔드포인트, API 버전, robots.txt |
|
|
646
|
+
| DNS 해석 | 없음 | 레코드 열거, 이메일 인증 분석, SaaS 탐지, 서버 핑거프린팅 |
|
|
647
|
+
| WAF/CDN 탐지 | 없음 | WAF 식별, CDN 탐지, WAF 핑거프린팅 |
|
|
648
|
+
| 타이밍 분석 | 없음 | 응답 타이밍 기준선, 클록 스큐 탐지 |
|
|
649
|
+
| HTTP/2 & HTTP/3 | 없음 | HTTP/2 탐지 및 핑거프린팅, HTTP/3 Alt-Svc 발견 |
|
|
650
|
+
| SMTP 프로빙 | 없음 | SMTP 배너 분석, STARTTLS 검사 |
|
|
651
|
+
| IoT/임베디드 | 없음 | IoT 장치 탐지, UPnP/SSDP 발견 |
|
|
652
|
+
| 애플리케이션 탐지 | 없음 | CMS, 프레임워크 및 전자상거래 플랫폼 식별 |
|
|
653
|
+
| 서비스 프로빙 | 없음 | MySQL, PostgreSQL, Redis, FTP, VNC/RDP 핑거프린팅 |
|
|
654
|
+
| 인프라 탐지 | 없음 | 클라우드 제공자, 호스팅 제공자, CDN 식별 |
|
|
655
|
+
| 상관분석 엔진 | 없음 | 신호 일관성, 허니팟 탐지, 스푸핑 탐지, 토폴로지 매핑 |
|
|
656
|
+
| 식별 엔진 | 없음 | 해시 기반 식별, C2 탐지, 서명 매칭 |
|
|
657
|
+
| [Shodan](https://www.shodan.io) | `SHODAN_API_KEY` | 호스트 인텔리전스 — 열린 포트, 배너, 취약점, OS 탐지 |
|
|
658
|
+
| [Censys](https://censys.io) | `CENSYS_API_ID` | 호스트 데이터 — 서비스, TLS 인증서, 자율 시스템 정보 |
|
|
659
|
+
| [SecurityTrails](https://securitytrails.com) | `SECURITYTRAILS_API_KEY` | WAF 오리진 발견, 수동 DNS 이력, 역사적 레코드 |
|
|
660
|
+
| [VirusTotal](https://www.virustotal.com) | `VIRUSTOTAL_API_KEY` | 도메인/IP 평판, 탐지 결과, DNS 이력, 분류 |
|
|
661
|
+
|
|
662
|
+
---
|
|
663
|
+
|
|
664
|
+
## 아키텍처
|
|
665
|
+
|
|
666
|
+
```
|
|
667
|
+
src/
|
|
668
|
+
index.ts # CLI 진입점 (--help, --list, --tool, stdio 서버)
|
|
669
|
+
protocol/
|
|
670
|
+
mcp-server.ts # MCP 서버 설정 (stdio 전송)
|
|
671
|
+
tools.ts # 도구 레지스트리 — 모든 13개 복합 도구가 여기에 등록
|
|
672
|
+
types/
|
|
673
|
+
index.ts # 공유 타입 (ToolDef, ToolContext, ToolResult)
|
|
674
|
+
utils/
|
|
675
|
+
rate-limiter.ts # 제공자별 속도 제한기
|
|
676
|
+
cache.ts # API 응답 TTL 캐시
|
|
677
|
+
require-key.ts # API 키 검증 헬퍼
|
|
678
|
+
murmurhash3.ts # favicon 해싱을 위한 MurmurHash3
|
|
679
|
+
composite/ # 13개 복합 도구 오케스트레이터
|
|
680
|
+
recon.ts # 전체 정찰 오케스트레이터 (quick/standard/deep)
|
|
681
|
+
scan-ports.ts # 포트 스캔 복합
|
|
682
|
+
scan-tls.ts # TLS 분석 복합
|
|
683
|
+
scan-dns.ts # DNS 인텔리전스 복합
|
|
684
|
+
scan-http.ts # HTTP 핑거프린팅 복합
|
|
685
|
+
scan-paths.ts # 경로 발견 복합
|
|
686
|
+
scan-waf.ts # WAF/CDN 탐지 복합
|
|
687
|
+
scan-services.ts # 서비스 프로빙 복합
|
|
688
|
+
analyze.ts # 수동 분석 복합
|
|
689
|
+
correlate.ts # 상관분석 엔진 복합
|
|
690
|
+
enumerate.ts # 범위 확장 복합
|
|
691
|
+
osint.ts # OSINT 강화 복합
|
|
692
|
+
meta.ts # 서버 메타 복합
|
|
693
|
+
helpers.ts # 공유 복합 헬퍼
|
|
694
|
+
tcp/ # TCP 프로빙 기술 (3)
|
|
695
|
+
tls/ # TLS/SSL 분석 기술 (8)
|
|
696
|
+
ssh/ # SSH 프로빙 기술 (3)
|
|
697
|
+
http/ # HTTP 핑거프린팅 기술 (16)
|
|
698
|
+
web/ # 웹 기술 탐지 기술 (9)
|
|
699
|
+
path/ # 경로 발견 기술 (5)
|
|
700
|
+
dns/ # DNS 인텔리전스 기술 (7)
|
|
701
|
+
waf/ # WAF/CDN 탐지 기술 (4)
|
|
702
|
+
timing/ # 타이밍 분석 기술 (2)
|
|
703
|
+
h2/ # HTTP/2 & HTTP/3 기술 (3)
|
|
704
|
+
smtp/ # SMTP 프로빙 기술 (2)
|
|
705
|
+
iot/ # IoT/임베디드 탐지 기술 (2)
|
|
706
|
+
app/ # 애플리케이션 탐지 기술 (3)
|
|
707
|
+
service/ # 서비스 프로빙 기술 (5)
|
|
708
|
+
infra/ # 인프라 탐지 기술 (3)
|
|
709
|
+
correlation/ # 상관분석 엔진 (5)
|
|
710
|
+
identify/ # 식별 엔진 (3)
|
|
711
|
+
passive/ # 수동 분석 (3)
|
|
712
|
+
osint/ # OSINT 강화 기술 (6)
|
|
713
|
+
enum/ # 열거 기술 (8)
|
|
714
|
+
meta/ # 메타 도구 (3)
|
|
715
|
+
data/ # 서명 데이터베이스 및 패턴 라이브러리
|
|
716
|
+
jarm-signatures.ts # 알려진 JARM 핑거프린트 (C2, 서버, CDN)
|
|
717
|
+
waf-signatures.ts # WAF 탐지 서명
|
|
718
|
+
service-banners.ts # 서비스 배너 패턴
|
|
719
|
+
tech-patterns.ts # 기술 탐지 패턴
|
|
720
|
+
favicon-hashes.ts # 알려진 favicon MurmurHash3 값
|
|
721
|
+
c2-signatures.ts # C2 프레임워크 서명
|
|
722
|
+
... # 15+ 서명/패턴 데이터베이스
|
|
723
|
+
```
|
|
724
|
+
|
|
725
|
+
**설계 결정:**
|
|
726
|
+
|
|
727
|
+
- **13개 복합 도구, 103개 기술** — 에이전트는 고수준 도구(`recon`, `scan_tls`, `scan_http`)를 호출합니다. 각 복합 도구는 여러 저수준 기술을 오케스트레이션하고 상관분석된 결과를 반환합니다. 이는 세밀함을 유지하면서 도구 호출 오버헤드를 줄입니다.
|
|
728
|
+
- **21개 제공자, 1개 서버** — 모든 핑거프린팅 레이어는 독립 모듈입니다. 복합 오케스트레이터가 컨텍스트와 깊이에 따라 기술을 선택합니다.
|
|
729
|
+
- **능동 우선, OSINT 선택** — 80개 이상의 기술이 API 키 없이 대상을 직접 프로빙하여 작동합니다. OSINT 제공자(Shodan, Censys, VirusTotal, SecurityTrails)는 강화를 추가하지만 필수는 아닙니다.
|
|
730
|
+
- **제공자별 속도 제한기** — 각 제공자는 자체 `RateLimiter` 인스턴스를 가집니다. 능동 프로빙은 탐지를 피하기 위해 속도 제한되고, OSINT API는 할당량에 맞게 조정됩니다.
|
|
731
|
+
- **TTL 캐싱** — DNS 레코드(10분), OSINT 결과(15분), CT 로그(30분)가 캐시되어 다중 도구 워크플로에서 중복 조회를 방지합니다.
|
|
732
|
+
- **우아한 저하** — API 키가 없어도 서버가 충돌하지 않습니다. OSINT 도구는 설명적 메시지를 반환합니다: "Shodan 호스트 조회를 활성화하려면 SHODAN_API_KEY를 설정하세요."
|
|
733
|
+
- **3개 의존성** — `@modelcontextprotocol/sdk`, `zod`, `cheerio`. 모든 네트워크 I/O는 네이티브 `fetch()`와 Node.js `net`/`tls`/`dns` 모듈을 통해 이루어집니다. nmap 없음, 외부 바이너리 없음.
|
|
734
|
+
|
|
735
|
+
---
|
|
736
|
+
|
|
737
|
+
## 제한 사항
|
|
738
|
+
|
|
739
|
+
- OSINT 도구(Shodan, Censys, VirusTotal, SecurityTrails)는 각각의 API 키가 필요
|
|
740
|
+
- Censys 무료 등급은 월 250회 조회로 제한
|
|
741
|
+
- VirusTotal 무료 등급은 일 500회 조회로 제한
|
|
742
|
+
- 포트 스캔은 TCP connect 사용 (SYN 스캔 아님) — nmap보다 은밀성이 낮지만 root 권한 불필요
|
|
743
|
+
- JARM 핑거프린팅은 대상에 대한 직접 TCP 접근이 필요 (방화벽에 의해 차단될 수 있음)
|
|
744
|
+
- UPnP/SSDP 발견은 로컬 네트워크에서만 작동
|
|
745
|
+
- 서비스 프로빙(MySQL, PostgreSQL, Redis)은 연결하지만 인증하지 않음
|
|
746
|
+
- 하위 도메인 열거는 CT 로그와 수동 소스에 의존 (무차별 대입 없음)
|
|
747
|
+
- macOS / Linux 테스트됨 (Windows 미테스트)
|
|
748
|
+
|
|
749
|
+
---
|
|
750
|
+
|
|
751
|
+
## MCP 보안 제품군
|
|
752
|
+
|
|
753
|
+
| 프로젝트 | 영역 | 도구 |
|
|
754
|
+
|----------|------|------|
|
|
755
|
+
| [hackbrowser-mcp](https://github.com/badchars/hackbrowser-mcp) | 브라우저 기반 보안 테스트 | 39개 도구, Firefox, 인젝션 테스트 |
|
|
756
|
+
| [cloud-audit-mcp](https://github.com/badchars/cloud-audit-mcp) | 클라우드 보안 (AWS/Azure/GCP) | 38개 도구, 60+ 검사 |
|
|
757
|
+
| [github-security-mcp](https://github.com/badchars/github-security-mcp) | GitHub 보안 태세 | 39개 도구, 45개 검사 |
|
|
758
|
+
| [cve-mcp](https://github.com/badchars/cve-mcp) | 취약점 인텔리전스 | 23개 도구, 5개 소스 |
|
|
759
|
+
| [osint-mcp-server](https://github.com/badchars/osint-mcp-server) | OSINT 및 정찰 | 37개 도구, 12개 소스 |
|
|
760
|
+
| [darknet-mcp-server](https://github.com/badchars/darknet-mcp-server) | 다크웹 및 위협 인텔리전스 | 66개 도구, 16개 소스 |
|
|
761
|
+
| **fingerprint-mcp** | **범용 디지털 핑거프린팅** | **13개 도구, 103개 기술, 21개 제공자** |
|
|
762
|
+
|
|
763
|
+
---
|
|
764
|
+
|
|
765
|
+
<p align="center">
|
|
766
|
+
<b>승인된 보안 테스트 및 평가 목적으로만 사용하세요.</b><br>
|
|
767
|
+
대상에 대해 핑거프린팅을 수행하기 전에 항상 적절한 승인을 받았는지 확인하세요.
|
|
768
|
+
</p>
|
|
769
|
+
|
|
770
|
+
<p align="center">
|
|
771
|
+
<a href="LICENSE">AGPL-3.0 라이선스</a> • Bun + TypeScript로 빌드됨
|
|
772
|
+
</p>
|