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.
Files changed (269) hide show
  1. package/LICENSE +663 -0
  2. package/README.ar.md +767 -0
  3. package/README.bn.md +767 -0
  4. package/README.bs.md +767 -0
  5. package/README.da.md +767 -0
  6. package/README.de.md +770 -0
  7. package/README.el.md +767 -0
  8. package/README.es.md +769 -0
  9. package/README.fr.md +769 -0
  10. package/README.hi.md +767 -0
  11. package/README.it.md +767 -0
  12. package/README.ja.md +767 -0
  13. package/README.ko.md +772 -0
  14. package/README.md +767 -0
  15. package/README.no.md +767 -0
  16. package/README.pl.md +767 -0
  17. package/README.pt-BR.md +767 -0
  18. package/README.ru.md +767 -0
  19. package/README.th.md +767 -0
  20. package/README.tr.md +767 -0
  21. package/README.uk.md +767 -0
  22. package/README.vi.md +767 -0
  23. package/README.zh-TW.md +768 -0
  24. package/README.zh.md +768 -0
  25. package/dist/app/index.d.ts +3 -0
  26. package/dist/app/index.d.ts.map +1 -0
  27. package/dist/app/index.js +614 -0
  28. package/dist/app/index.js.map +1 -0
  29. package/dist/composite/analyze.d.ts +3 -0
  30. package/dist/composite/analyze.d.ts.map +1 -0
  31. package/dist/composite/analyze.js +59 -0
  32. package/dist/composite/analyze.js.map +1 -0
  33. package/dist/composite/correlate.d.ts +3 -0
  34. package/dist/composite/correlate.d.ts.map +1 -0
  35. package/dist/composite/correlate.js +184 -0
  36. package/dist/composite/correlate.js.map +1 -0
  37. package/dist/composite/enumerate.d.ts +3 -0
  38. package/dist/composite/enumerate.d.ts.map +1 -0
  39. package/dist/composite/enumerate.js +94 -0
  40. package/dist/composite/enumerate.js.map +1 -0
  41. package/dist/composite/helpers.d.ts +22 -0
  42. package/dist/composite/helpers.d.ts.map +1 -0
  43. package/dist/composite/helpers.js +111 -0
  44. package/dist/composite/helpers.js.map +1 -0
  45. package/dist/composite/index.d.ts +3 -0
  46. package/dist/composite/index.d.ts.map +1 -0
  47. package/dist/composite/index.js +29 -0
  48. package/dist/composite/index.js.map +1 -0
  49. package/dist/composite/meta.d.ts +3 -0
  50. package/dist/composite/meta.d.ts.map +1 -0
  51. package/dist/composite/meta.js +23 -0
  52. package/dist/composite/meta.js.map +1 -0
  53. package/dist/composite/osint.d.ts +3 -0
  54. package/dist/composite/osint.d.ts.map +1 -0
  55. package/dist/composite/osint.js +40 -0
  56. package/dist/composite/osint.js.map +1 -0
  57. package/dist/composite/recon.d.ts +3 -0
  58. package/dist/composite/recon.d.ts.map +1 -0
  59. package/dist/composite/recon.js +131 -0
  60. package/dist/composite/recon.js.map +1 -0
  61. package/dist/composite/scan-dns.d.ts +3 -0
  62. package/dist/composite/scan-dns.d.ts.map +1 -0
  63. package/dist/composite/scan-dns.js +44 -0
  64. package/dist/composite/scan-dns.js.map +1 -0
  65. package/dist/composite/scan-http.d.ts +3 -0
  66. package/dist/composite/scan-http.d.ts.map +1 -0
  67. package/dist/composite/scan-http.js +68 -0
  68. package/dist/composite/scan-http.js.map +1 -0
  69. package/dist/composite/scan-paths.d.ts +3 -0
  70. package/dist/composite/scan-paths.d.ts.map +1 -0
  71. package/dist/composite/scan-paths.js +32 -0
  72. package/dist/composite/scan-paths.js.map +1 -0
  73. package/dist/composite/scan-ports.d.ts +3 -0
  74. package/dist/composite/scan-ports.d.ts.map +1 -0
  75. package/dist/composite/scan-ports.js +79 -0
  76. package/dist/composite/scan-ports.js.map +1 -0
  77. package/dist/composite/scan-services.d.ts +3 -0
  78. package/dist/composite/scan-services.d.ts.map +1 -0
  79. package/dist/composite/scan-services.js +111 -0
  80. package/dist/composite/scan-services.js.map +1 -0
  81. package/dist/composite/scan-tls.d.ts +3 -0
  82. package/dist/composite/scan-tls.d.ts.map +1 -0
  83. package/dist/composite/scan-tls.js +32 -0
  84. package/dist/composite/scan-tls.js.map +1 -0
  85. package/dist/composite/scan-waf.d.ts +3 -0
  86. package/dist/composite/scan-waf.d.ts.map +1 -0
  87. package/dist/composite/scan-waf.js +35 -0
  88. package/dist/composite/scan-waf.js.map +1 -0
  89. package/dist/correlation/index.d.ts +3 -0
  90. package/dist/correlation/index.d.ts.map +1 -0
  91. package/dist/correlation/index.js +1044 -0
  92. package/dist/correlation/index.js.map +1 -0
  93. package/dist/data/analytics-patterns.d.ts +21 -0
  94. package/dist/data/analytics-patterns.d.ts.map +1 -0
  95. package/dist/data/analytics-patterns.js +449 -0
  96. package/dist/data/analytics-patterns.js.map +1 -0
  97. package/dist/data/app-signatures.d.ts +52 -0
  98. package/dist/data/app-signatures.d.ts.map +1 -0
  99. package/dist/data/app-signatures.js +1143 -0
  100. package/dist/data/app-signatures.js.map +1 -0
  101. package/dist/data/c2-signatures.d.ts +54 -0
  102. package/dist/data/c2-signatures.d.ts.map +1 -0
  103. package/dist/data/c2-signatures.js +256 -0
  104. package/dist/data/c2-signatures.js.map +1 -0
  105. package/dist/data/cloud-ranges.d.ts +34 -0
  106. package/dist/data/cloud-ranges.d.ts.map +1 -0
  107. package/dist/data/cloud-ranges.js +628 -0
  108. package/dist/data/cloud-ranges.js.map +1 -0
  109. package/dist/data/cookie-patterns.d.ts +28 -0
  110. package/dist/data/cookie-patterns.d.ts.map +1 -0
  111. package/dist/data/cookie-patterns.js +225 -0
  112. package/dist/data/cookie-patterns.js.map +1 -0
  113. package/dist/data/error-signatures.d.ts +19 -0
  114. package/dist/data/error-signatures.d.ts.map +1 -0
  115. package/dist/data/error-signatures.js +321 -0
  116. package/dist/data/error-signatures.js.map +1 -0
  117. package/dist/data/favicon-hashes.d.ts +25 -0
  118. package/dist/data/favicon-hashes.d.ts.map +1 -0
  119. package/dist/data/favicon-hashes.js +249 -0
  120. package/dist/data/favicon-hashes.js.map +1 -0
  121. package/dist/data/h2-signatures.d.ts +50 -0
  122. package/dist/data/h2-signatures.d.ts.map +1 -0
  123. package/dist/data/h2-signatures.js +211 -0
  124. package/dist/data/h2-signatures.js.map +1 -0
  125. package/dist/data/header-order.d.ts +38 -0
  126. package/dist/data/header-order.d.ts.map +1 -0
  127. package/dist/data/header-order.js +185 -0
  128. package/dist/data/header-order.js.map +1 -0
  129. package/dist/data/jarm-signatures.d.ts +25 -0
  130. package/dist/data/jarm-signatures.d.ts.map +1 -0
  131. package/dist/data/jarm-signatures.js +213 -0
  132. package/dist/data/jarm-signatures.js.map +1 -0
  133. package/dist/data/saas-patterns.d.ts +23 -0
  134. package/dist/data/saas-patterns.d.ts.map +1 -0
  135. package/dist/data/saas-patterns.js +139 -0
  136. package/dist/data/saas-patterns.js.map +1 -0
  137. package/dist/data/sensitive-paths.d.ts +12 -0
  138. package/dist/data/sensitive-paths.d.ts.map +1 -0
  139. package/dist/data/sensitive-paths.js +1539 -0
  140. package/dist/data/sensitive-paths.js.map +1 -0
  141. package/dist/data/service-banners.d.ts +59 -0
  142. package/dist/data/service-banners.d.ts.map +1 -0
  143. package/dist/data/service-banners.js +323 -0
  144. package/dist/data/service-banners.js.map +1 -0
  145. package/dist/data/smtp-signatures.d.ts +12 -0
  146. package/dist/data/smtp-signatures.d.ts.map +1 -0
  147. package/dist/data/smtp-signatures.js +350 -0
  148. package/dist/data/smtp-signatures.js.map +1 -0
  149. package/dist/data/takeover-patterns.d.ts +37 -0
  150. package/dist/data/takeover-patterns.d.ts.map +1 -0
  151. package/dist/data/takeover-patterns.js +249 -0
  152. package/dist/data/takeover-patterns.js.map +1 -0
  153. package/dist/data/tech-patterns.d.ts +44 -0
  154. package/dist/data/tech-patterns.d.ts.map +1 -0
  155. package/dist/data/tech-patterns.js +690 -0
  156. package/dist/data/tech-patterns.js.map +1 -0
  157. package/dist/data/waf-signatures.d.ts +21 -0
  158. package/dist/data/waf-signatures.d.ts.map +1 -0
  159. package/dist/data/waf-signatures.js +318 -0
  160. package/dist/data/waf-signatures.js.map +1 -0
  161. package/dist/dns/index.d.ts +3 -0
  162. package/dist/dns/index.d.ts.map +1 -0
  163. package/dist/dns/index.js +1067 -0
  164. package/dist/dns/index.js.map +1 -0
  165. package/dist/enum/index.d.ts +3 -0
  166. package/dist/enum/index.d.ts.map +1 -0
  167. package/dist/enum/index.js +818 -0
  168. package/dist/enum/index.js.map +1 -0
  169. package/dist/h2/index.d.ts +3 -0
  170. package/dist/h2/index.d.ts.map +1 -0
  171. package/dist/h2/index.js +414 -0
  172. package/dist/h2/index.js.map +1 -0
  173. package/dist/http/index.d.ts +3 -0
  174. package/dist/http/index.d.ts.map +1 -0
  175. package/dist/http/index.js +2444 -0
  176. package/dist/http/index.js.map +1 -0
  177. package/dist/identify/index.d.ts +3 -0
  178. package/dist/identify/index.d.ts.map +1 -0
  179. package/dist/identify/index.js +447 -0
  180. package/dist/identify/index.js.map +1 -0
  181. package/dist/index.d.ts +3 -0
  182. package/dist/index.d.ts.map +1 -0
  183. package/dist/index.js +165 -0
  184. package/dist/index.js.map +1 -0
  185. package/dist/infra/index.d.ts +3 -0
  186. package/dist/infra/index.d.ts.map +1 -0
  187. package/dist/infra/index.js +989 -0
  188. package/dist/infra/index.js.map +1 -0
  189. package/dist/iot/index.d.ts +3 -0
  190. package/dist/iot/index.d.ts.map +1 -0
  191. package/dist/iot/index.js +610 -0
  192. package/dist/iot/index.js.map +1 -0
  193. package/dist/meta/index.d.ts +3 -0
  194. package/dist/meta/index.d.ts.map +1 -0
  195. package/dist/meta/index.js +442 -0
  196. package/dist/meta/index.js.map +1 -0
  197. package/dist/osint/index.d.ts +3 -0
  198. package/dist/osint/index.d.ts.map +1 -0
  199. package/dist/osint/index.js +687 -0
  200. package/dist/osint/index.js.map +1 -0
  201. package/dist/passive/index.d.ts +3 -0
  202. package/dist/passive/index.d.ts.map +1 -0
  203. package/dist/passive/index.js +944 -0
  204. package/dist/passive/index.js.map +1 -0
  205. package/dist/path/index.d.ts +3 -0
  206. package/dist/path/index.d.ts.map +1 -0
  207. package/dist/path/index.js +878 -0
  208. package/dist/path/index.js.map +1 -0
  209. package/dist/protocol/mcp-server.d.ts +4 -0
  210. package/dist/protocol/mcp-server.d.ts.map +1 -0
  211. package/dist/protocol/mcp-server.js +32 -0
  212. package/dist/protocol/mcp-server.js.map +1 -0
  213. package/dist/protocol/tools.d.ts +3 -0
  214. package/dist/protocol/tools.d.ts.map +1 -0
  215. package/dist/protocol/tools.js +5 -0
  216. package/dist/protocol/tools.js.map +1 -0
  217. package/dist/service/index.d.ts +3 -0
  218. package/dist/service/index.d.ts.map +1 -0
  219. package/dist/service/index.js +1053 -0
  220. package/dist/service/index.js.map +1 -0
  221. package/dist/smtp/index.d.ts +3 -0
  222. package/dist/smtp/index.d.ts.map +1 -0
  223. package/dist/smtp/index.js +437 -0
  224. package/dist/smtp/index.js.map +1 -0
  225. package/dist/ssh/index.d.ts +3 -0
  226. package/dist/ssh/index.d.ts.map +1 -0
  227. package/dist/ssh/index.js +676 -0
  228. package/dist/ssh/index.js.map +1 -0
  229. package/dist/tcp/index.d.ts +3 -0
  230. package/dist/tcp/index.d.ts.map +1 -0
  231. package/dist/tcp/index.js +369 -0
  232. package/dist/tcp/index.js.map +1 -0
  233. package/dist/timing/index.d.ts +3 -0
  234. package/dist/timing/index.d.ts.map +1 -0
  235. package/dist/timing/index.js +425 -0
  236. package/dist/timing/index.js.map +1 -0
  237. package/dist/tls/index.d.ts +3 -0
  238. package/dist/tls/index.d.ts.map +1 -0
  239. package/dist/tls/index.js +1332 -0
  240. package/dist/tls/index.js.map +1 -0
  241. package/dist/types/index.d.ts +26 -0
  242. package/dist/types/index.d.ts.map +1 -0
  243. package/dist/types/index.js +8 -0
  244. package/dist/types/index.js.map +1 -0
  245. package/dist/utils/cache.d.ts +11 -0
  246. package/dist/utils/cache.d.ts.map +1 -0
  247. package/dist/utils/cache.js +35 -0
  248. package/dist/utils/cache.js.map +1 -0
  249. package/dist/utils/murmurhash3.d.ts +3 -0
  250. package/dist/utils/murmurhash3.d.ts.map +1 -0
  251. package/dist/utils/murmurhash3.js +57 -0
  252. package/dist/utils/murmurhash3.js.map +1 -0
  253. package/dist/utils/rate-limiter.d.ts +10 -0
  254. package/dist/utils/rate-limiter.d.ts.map +1 -0
  255. package/dist/utils/rate-limiter.js +35 -0
  256. package/dist/utils/rate-limiter.js.map +1 -0
  257. package/dist/utils/require-key.d.ts +2 -0
  258. package/dist/utils/require-key.d.ts.map +1 -0
  259. package/dist/utils/require-key.js +8 -0
  260. package/dist/utils/require-key.js.map +1 -0
  261. package/dist/waf/index.d.ts +3 -0
  262. package/dist/waf/index.d.ts.map +1 -0
  263. package/dist/waf/index.js +767 -0
  264. package/dist/waf/index.js.map +1 -0
  265. package/dist/web/index.d.ts +3 -0
  266. package/dist/web/index.d.ts.map +1 -0
  267. package/dist/web/index.js +1366 -0
  268. package/dist/web/index.js.map +1 -0
  269. package/package.json +66 -0
package/README.de.md ADDED
@@ -0,0 +1,770 @@
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
+ <a href="README.ko.md">한국어</a> |
6
+ <strong>Deutsch</strong> |
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">Universelles digitales Fingerprinting fuer KI-Agenten.</h3>
37
+
38
+ <p align="center">
39
+ TCP, TLS/SSL, SSH, HTTP, DNS, WAF/CDN, IoT, SMTP, Service-Probing, JARM, JA4X, Favicon-Hashing, Infrastruktur-Topologie, C2-Erkennung, OSINT-Anreicherung &mdash; vereint in einem einzigen MCP-Server.<br>
40
+ Ihr KI-Agent erhaelt <b>Vollspektrum-Fingerprinting auf Abruf</b>, nicht 11 getrennte CLI-Tools und manuelle Korrelation.
41
+ </p>
42
+
43
+ <br>
44
+
45
+ <p align="center">
46
+ <a href="#das-problem">Das Problem</a> &bull;
47
+ <a href="#der-unterschied">Der Unterschied</a> &bull;
48
+ <a href="#schnellstart">Schnellstart</a> &bull;
49
+ <a href="#was-die-ki-kann">Was die KI kann</a> &bull;
50
+ <a href="#tool-referenz-13-tools-103-techniken">Tools (13)</a> &bull;
51
+ <a href="#datenquellen-21">Datenquellen</a> &bull;
52
+ <a href="#architektur">Architektur</a> &bull;
53
+ <a href="CHANGELOG.md">Changelog</a> &bull;
54
+ <a href="CONTRIBUTING.md">Mitwirken</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="Lizenz"></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 Tools">
63
+ <img src="https://img.shields.io/badge/techniques-103-f97316" alt="103 Techniken">
64
+ </p>
65
+
66
+ <p align="center">
67
+ <img src="https://raw.githubusercontent.com/badchars/fingerprint-mcp/main/.github/demo.gif" alt="fingerprint-mcp Demo" width="800">
68
+ </p>
69
+
70
+ ---
71
+
72
+ ## Das Problem
73
+
74
+ Einen Server heute zu fingerprinting bedeutet, ein Dutzend getrennter Tools gleichzeitig zu verwenden. Man startet `nmap` fuer Port-Scanning, `testssl.sh` fuer Zertifikatsanalyse, `curl -I` fuer HTTP-Header, `dig` fuer DNS, `wafw00f` fuer WAF-Erkennung, `ssh-audit` fuer SSH, ein separates JARM-Tool, Wappalyzer fuer Technologie-Erkennung &mdash; und verbringt dann 30 Minuten damit, alles manuell in einer Tabelle abzugleichen, um herauszufinden, was tatsaechlich laeuft.
75
+
76
+ ```
77
+ Traditioneller Fingerprinting-Workflow:
78
+ TLS-Zertifikate analysieren -> testssl.sh / openssl s_client
79
+ HTTP-Header abfragen -> curl -I
80
+ Web-Technologien erkennen -> wappalyzer CLI
81
+ DNS-Aufklaerung -> dig / nslookup / dnsenum
82
+ Port-Scanning -> nmap -sV
83
+ WAF-Erkennung -> wafw00f
84
+ SSH-Audit -> ssh-audit
85
+ Service-Fingerprinting -> nmap scripts
86
+ JARM-Fingerprint -> jarm (separates Tool)
87
+ OSINT-Datenbanken pruefen -> shodan CLI, censys CLI
88
+ Alles korrelieren -> manuell in einer Tabelle
89
+ ──────────────────────────────
90
+ Gesamt: 11 Tools, 30+ Minuten, manuelle Korrelation
91
+ ```
92
+
93
+ **fingerprint-mcp** bietet Ihrem KI-Agenten ueber das [Model Context Protocol](https://modelcontextprotocol.io) 13 zusammengesetzte Tools, die 103 Fingerprinting-Techniken von 21 Anbietern kapseln. Der Agent fuehrt mehrschichtiges Fingerprinting parallel aus, korreliert Signale ueber TCP/TLS/HTTP/DNS/SSH-Schichten, erkennt Honeypots und C2-Infrastruktur und praesentiert ein einheitliches Lagebild &mdash; alles in einer einzigen Konversation.
94
+
95
+ ```
96
+ Mit fingerprint-mcp:
97
+ Du: "Fuehre eine tiefe Aufklaerung auf target.com durch"
98
+
99
+ Agent: -> recon {url: "https://target.com", depth: "deep"}
100
+
101
+ -> TLS: nginx/1.24.0 via JARM (3fd21b20d00000...),
102
+ Let's Encrypt Zertifikat, 2 SANs, TLS 1.2+1.3
103
+ -> HTTP: Express.js hinter Cloudflare WAF,
104
+ React SPA, Google Analytics, 14 Sicherheitsheader analysiert
105
+ -> DNS: A/AAAA/MX/TXT-Eintraege, SPF/DKIM/DMARC konfiguriert,
106
+ Slack + Google Workspace via CNAME/MX erkannt
107
+ -> Ports: 80, 443, 22 (OpenSSH 9.6), 8080 (Entwicklungsserver)
108
+ -> WAF: Cloudflare erkannt, Ursprungs-IP durch Direktverbindung entdeckt
109
+ -> Enumeration: 12 Subdomains via CT-Logs, Wildcard-DNS erkannt
110
+ -> "target.com betreibt nginx/1.24.0 mit Express.js hinter
111
+ Cloudflare WAF. Ursprungs-IP 203.0.113.42 ist auf Port 8080
112
+ exponiert. TLS ist korrekt konfiguriert (A+-Aequivalent),
113
+ aber der Entwicklungsserver auf 8080 hat keinen WAF-Schutz.
114
+ 3 Subdomains zeigen auf stillgelegte Infrastruktur —
115
+ potenzielles Uebernahmerisiko."
116
+ ```
117
+
118
+ ---
119
+
120
+ ## Der Unterschied
121
+
122
+ Bestehende Tools liefern Rohdaten jeweils nur auf einer Ebene. fingerprint-mcp gibt Ihrem KI-Agenten die Faehigkeit, **ueber alle Fingerprinting-Ebenen gleichzeitig zu schlussfolgern**.
123
+
124
+ <table>
125
+ <thead>
126
+ <tr>
127
+ <th></th>
128
+ <th>Traditioneller Ansatz</th>
129
+ <th>fingerprint-mcp</th>
130
+ </tr>
131
+ </thead>
132
+ <tbody>
133
+ <tr>
134
+ <td><b>Schnittstelle</b></td>
135
+ <td>11 verschiedene CLI-Tools mit unterschiedlichen Ausgabeformaten</td>
136
+ <td>MCP &mdash; KI-Agent ruft Tools konversationell auf</td>
137
+ </tr>
138
+ <tr>
139
+ <td><b>Techniken</b></td>
140
+ <td>Ein Tool, eine Ebene auf einmal</td>
141
+ <td>103 Techniken von 21 Anbietern, parallel ausgefuehrt</td>
142
+ </tr>
143
+ <tr>
144
+ <td><b>TLS-Analyse</b></td>
145
+ <td>testssl.sh-Ausgabe, JARM separat manuell parsen</td>
146
+ <td>Agent kombiniert Zertifikat + JARM + JA4X + Cipher Suites + SNI + CT-Logs in einem Aufruf</td>
147
+ </tr>
148
+ <tr>
149
+ <td><b>Korrelation</b></td>
150
+ <td>Ergebnisse in eine Tabelle kopieren</td>
151
+ <td>Agent korreliert: "JARM stimmt mit bekanntem C2-Framework ueberein, HTTP-Timing bestaetigt Honeypot"</td>
152
+ </tr>
153
+ <tr>
154
+ <td><b>WAF-Umgehung</b></td>
155
+ <td>wafw00f erkennt WAF, manuelle Suche nach Ursprung</td>
156
+ <td>Agent erkennt WAF, entdeckt Ursprungs-IP und verifiziert, dass sie denselben Inhalt liefert</td>
157
+ </tr>
158
+ <tr>
159
+ <td><b>API-Schluessel</b></td>
160
+ <td>Erforderlich fuer Shodan, Censys usw.</td>
161
+ <td>80+ aktive Techniken funktionieren ohne API-Schluessel; Schluessel schalten OSINT-Anreicherung frei</td>
162
+ </tr>
163
+ <tr>
164
+ <td><b>Einrichtung</b></td>
165
+ <td>nmap, testssl, wafw00f, ssh-audit, jarm, wappalyzer installieren...</td>
166
+ <td><code>npx fingerprint-mcp</code> &mdash; ein Befehl, null Konfiguration</td>
167
+ </tr>
168
+ </tbody>
169
+ </table>
170
+
171
+ ---
172
+
173
+ ## Schnellstart
174
+
175
+ ### Option 1: npx (keine Installation)
176
+
177
+ ```bash
178
+ npx fingerprint-mcp
179
+ ```
180
+
181
+ Alle 80+ aktiven Fingerprinting-Techniken funktionieren sofort. Keine API-Schluessel erforderlich fuer TCP, TLS, SSH, HTTP, DNS, WAF, Pfad, Service, Timing, IoT, SMTP, Infrastruktur und Anwendungs-Fingerprinting.
182
+
183
+ ### Option 2: Klonen
184
+
185
+ ```bash
186
+ git clone https://github.com/badchars/fingerprint-mcp.git
187
+ cd fingerprint-mcp
188
+ bun install
189
+ ```
190
+
191
+ ### Umgebungsvariablen (optional)
192
+
193
+ ```bash
194
+ # OSINT-Anreicherung (alle optional — aktives Fingerprinting funktioniert ohne Schluessel)
195
+ export SHODAN_API_KEY=your-key # Aktiviert osint_shodan, ssh_hostkey_lookup
196
+ export CENSYS_API_ID=your-id # Aktiviert osint_censys (kostenlos: 250 Abfragen/Monat)
197
+ export CENSYS_API_SECRET=your-secret # Censys API-Secret
198
+ export SECURITYTRAILS_API_KEY=your-key # Aktiviert waf_origin, enum_passive_dns
199
+ export VIRUSTOTAL_API_KEY=your-key # Aktiviert osint_virustotal (kostenlos: 500 Abfragen/Tag)
200
+ ```
201
+
202
+ Alle API-Schluessel sind optional. Ohne sie erhalten Sie weiterhin vollstaendiges TCP/TLS/SSH/HTTP/DNS/WAF/Pfad/Service/Timing/IoT/SMTP/Infrastruktur/Anwendungs-Fingerprinting, Korrelation, passive Analyse, Enumeration und Meta-Tools &mdash; 80+ Techniken, die durch direktes Probing des Ziels funktionieren.
203
+
204
+ ### Mit Ihrem KI-Agenten verbinden
205
+
206
+ <details open>
207
+ <summary><b>Claude Code</b></summary>
208
+
209
+ ```bash
210
+ # Mit npx
211
+ claude mcp add fingerprint-mcp -- npx fingerprint-mcp
212
+
213
+ # Mit lokalem Klon
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
+ Zu `~/Library/Application Support/Claude/claude_desktop_config.json` hinzufuegen:
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 / andere MCP-Clients</b></summary>
246
+
247
+ Dasselbe JSON-Konfigurationsformat. Richten Sie den Befehl auf `npx fingerprint-mcp` oder Ihren lokalen Installationspfad.
248
+
249
+ </details>
250
+
251
+ ### Abfragen starten
252
+
253
+ ```
254
+ Du: "Fingerprinte alles an target.com — TLS, HTTP-Stack, WAF, DNS, offene Ports"
255
+ ```
256
+
257
+ Das war's. Der Agent uebernimmt automatisch mehrschichtiges Fingerprinting, Signalkorrelation und Infrastrukturanalyse.
258
+
259
+ ---
260
+
261
+ ## Was die KI kann
262
+
263
+ ### Schnelle Aufklaerung
264
+
265
+ ```
266
+ Du: "Schnelle Aufklaerung auf target.com"
267
+
268
+ Agent: -> recon {url: "https://target.com", depth: "quick"}
269
+
270
+ -> TCP: Ports 80, 443, 22 offen
271
+ -> TLS: Let's Encrypt RSA-Zertifikat, TLS 1.2+1.3, nginx JARM-Signatur
272
+ -> HTTP: nginx/1.24.0, Express.js, React, Cloudflare CDN
273
+ -> DNS: A 203.0.113.42, MX Google Workspace, SPF/DKIM konfiguriert
274
+ -> WAF: Cloudflare erkannt (cf-ray Header)
275
+ -> "target.com ist eine React SPA auf Express.js hinter nginx/1.24.0,
276
+ bereitgestellt ueber Cloudflare CDN. TLS korrekt konfiguriert mit
277
+ Let's Encrypt. SSH auf Port 22 mit OpenSSH 9.6. E-Mail
278
+ wird von Google Workspace verwaltet mit vollstaendigem
279
+ SPF/DKIM/DMARC."
280
+ ```
281
+
282
+ ### Tiefe TLS-Untersuchung
283
+
284
+ ```
285
+ Du: "Analysiere die TLS-Konfiguration von suspicious-server.com im Detail"
286
+
287
+ Agent: -> scan_tls {host: "suspicious-server.com"}
288
+
289
+ -> Zertifikat: selbstsigniert, CN=localhost, seit 47 Tagen abgelaufen
290
+ -> JARM: 2ad2ad0002ad2ad00042d42d00000069d641f34fe76acdc05c40262f8815e5
291
+ (stimmt mit Cobalt Strike Standardprofil ueberein)
292
+ -> JA4X: Fingerprint stimmt mit bekanntem C2-Framework-Muster ueberein
293
+ -> Cipher Suites: akzeptiert schwache Cipher (RC4, 3DES)
294
+ -> SNI: antwortet identisch auf jeden SNI-Wert
295
+ -> CT-Logs: Zertifikat nicht protokolliert (nicht oeffentlich vertrauenswuerdig)
296
+ -> "HOHES RISIKO: TLS-Konfiguration deutet stark auf C2-Infrastruktur hin.
297
+ Selbstsigniertes abgelaufenes Zertifikat, JARM-Fingerprint stimmt mit
298
+ Cobalt Strike ueberein, akzeptiert schwache Cipher und antwortet auf
299
+ beliebige SNI-Werte. Sofortige Untersuchung und Sperrung empfohlen."
300
+ ```
301
+
302
+ ### WAF-Umgehung und Ursprungserkennung
303
+
304
+ ```
305
+ Du: "target.com ist hinter einer WAF. Kannst du den Ursprungsserver finden?"
306
+
307
+ Agent: -> scan_waf {url: "https://target.com"}
308
+ -> scan_dns {domain: "target.com"}
309
+ -> enumerate {domain: "target.com"}
310
+
311
+ -> WAF: Cloudflare (AS13335), Challenge-Seite bei verdaechtigen Anfragen
312
+ -> DNS: A-Eintrag zeigt auf Cloudflare-IP 104.21.x.x
313
+ -> Subdomains: dev.target.com loest zu 203.0.113.42 auf (nicht Cloudflare)
314
+ -> Direktverbindung zu 203.0.113.42:443 gibt dasselbe TLS-Zertifikat zurueck
315
+ -> SecurityTrails Historie: Ursprung war 203.0.113.42 vor Cloudflare
316
+ -> "Ursprungs-IP gefunden: 203.0.113.42. Entdeckt ueber die Subdomain
317
+ dev.target.com, die Cloudflare umgeht. Der Ursprung liefert dasselbe
318
+ TLS-Zertifikat und antwortet auf den target.com Host-Header.
319
+ Der Ursprung hat keinen WAF-Schutz — direkter Zugriff moeglich."
320
+ ```
321
+
322
+ ### Service-Erkennung auf einem Host
323
+
324
+ ```
325
+ Du: "Welche Dienste laufen auf 10.0.1.50?"
326
+
327
+ Agent: -> scan_ports {host: "10.0.1.50"}
328
+ -> scan_services {host: "10.0.1.50", ports: [22, 80, 3306, 5432, 6379, 8080]}
329
+
330
+ -> Port 22: OpenSSH 8.9p1 Ubuntu, ED25519-Hostschluessel
331
+ -> Port 80: Apache/2.4.57, PHP/8.2, WordPress 6.4
332
+ -> Port 3306: MySQL 8.0.36, Authentifizierung erforderlich
333
+ -> Port 5432: PostgreSQL 16.1, SSL erforderlich
334
+ -> Port 6379: Redis 7.2.4, KEINE Authentifizierung (offen)
335
+ -> Port 8080: Node.js Express Entwicklungsserver, CORS: *
336
+ -> "KRITISCH: Redis auf Port 6379 hat keine Authentifizierung — jeder
337
+ im Netzwerk kann Daten lesen/schreiben. Der Express Entwicklungsserver
338
+ auf 8080 hat Wildcard-CORS. MySQL und PostgreSQL erfordern korrekt
339
+ Authentifizierung. WordPress ist 2 Minor-Versionen zurueck.
340
+ Sofortiges Handeln bei Redis und der Entwicklungsserver-Exposition
341
+ erforderlich."
342
+ ```
343
+
344
+ ---
345
+
346
+ ## Tool-Referenz (13 Tools, 103 Techniken)
347
+
348
+ <details open>
349
+ <summary><b>recon &mdash; Vollstaendige Aufklaerung mit tiefenbasierter Technikauswahl</b></summary>
350
+
351
+ | Parameter | Typ | Beschreibung |
352
+ |-----------|-----|--------------|
353
+ | `url` | string | Ziel-URL zum Fingerprinting |
354
+ | `depth` | `quick` \| `standard` \| `deep` | Scan-Tiefe: quick=5 Techniken, standard=20, deep=50+ |
355
+
356
+ Orchestriert Techniken aller Anbieter basierend auf der Tiefenstufe. Der schnelle Modus gibt einen schnellen Ueberblick; der tiefe Modus fuehrt umfassendes Fingerprinting einschliesslich Enumeration, OSINT und Korrelation durch.
357
+
358
+ </details>
359
+
360
+ <details>
361
+ <summary><b>scan_ports &mdash; TCP-Port-Scanning mit Service-Erkennung (3 Techniken)</b></summary>
362
+
363
+ | Parameter | Typ | Beschreibung |
364
+ |-----------|-----|--------------|
365
+ | `host` | string | Zielhost (IP oder Domain) |
366
+ | `ports` | number[] | Optional &mdash; bestimmte Ports zum Scannen (Standard: gaengige Ports) |
367
+
368
+ | Technik | Beschreibung |
369
+ |---------|--------------|
370
+ | `tcp_probe` | TCP-Connect-Scan zur Erkennung offener Ports |
371
+ | `tcp_banner` | Banner-Grabbing auf offenen Ports zur Service-Identifikation |
372
+ | `tcp_analysis` | Port-Kombinationsanalyse und Service-Inferenz |
373
+
374
+ </details>
375
+
376
+ <details>
377
+ <summary><b>scan_tls &mdash; Vollstaendige TLS/SSL-Analyse (8 Techniken)</b></summary>
378
+
379
+ | Parameter | Typ | Beschreibung |
380
+ |-----------|-----|--------------|
381
+ | `host` | string | Zielhost (IP oder Domain) |
382
+ | `port` | number | Optional &mdash; TLS-Port (Standard: 443) |
383
+
384
+ | Technik | Beschreibung |
385
+ |---------|--------------|
386
+ | `tls_certificate` | X.509-Zertifikatsanalyse &mdash; Subjekt, Aussteller, SANs, Gueltigkeit, Kette |
387
+ | `tls_jarm` | JARM aktives Fingerprinting &mdash; 10 TLS Client Hello Probes, 62-Zeichen-Hash |
388
+ | `tls_ja4x` | JA4X passives TLS-Fingerprinting aus Zertifikatseigenschaften |
389
+ | `tls_ciphers` | Cipher-Suite-Enumeration und Staerkeanalyse |
390
+ | `tls_protocols` | Erkennung unterstuetzter TLS-Protokollversionen (SSLv3 bis TLS 1.3) |
391
+ | `tls_sni` | SNI-Verhaltenstest &mdash; Standard-Zertifikat vs. angeforderter Hostname |
392
+ | `tls_ct_logs` | Certificate Transparency Log-Abfrage ueber crt.sh |
393
+ | `tls_ocsp` | OCSP-Stapling und Sperrstatus-Pruefung |
394
+
395
+ </details>
396
+
397
+ <details>
398
+ <summary><b>scan_dns &mdash; DNS-Intelligence (7 Techniken)</b></summary>
399
+
400
+ | Parameter | Typ | Beschreibung |
401
+ |-----------|-----|--------------|
402
+ | `domain` | string | Zieldomain |
403
+
404
+ | Technik | Beschreibung |
405
+ |---------|--------------|
406
+ | `dns_records` | Vollstaendige Eintragsauflistung &mdash; A, AAAA, MX, NS, TXT, CNAME, SOA |
407
+ | `dns_email_auth` | SPF-, DKIM- und DMARC-Eintragsanalyse |
408
+ | `dns_saas` | SaaS/Service-Erkennung ueber CNAME- und MX-Muster (Slack, Zendesk usw.) |
409
+ | `dns_server` | DNS-Server-Fingerprinting (BIND, PowerDNS, Cloudflare usw.) |
410
+ | `dns_takeover` | Subdomain-Uebernahme-Erkennung durch Dangling-CNAME-Analyse |
411
+ | `dns_zone` | Zonentransferversuch (AXFR) |
412
+ | `dns_caa` | CAA-Eintragsanalyse fuer Zertifizierungsstellen-Beschraenkungen |
413
+
414
+ </details>
415
+
416
+ <details>
417
+ <summary><b>scan_http &mdash; HTTP/Web-Fingerprinting (29 Techniken)</b></summary>
418
+
419
+ | Parameter | Typ | Beschreibung |
420
+ |-----------|-----|--------------|
421
+ | `url` | string | Ziel-URL |
422
+
423
+ | Technik | Anbieter | Beschreibung |
424
+ |---------|----------|--------------|
425
+ | `http_headers` | HTTP | Antwort-Header-Analyse und Server-Identifikation |
426
+ | `http_header_order` | HTTP | Header-Reihenfolge-Fingerprint (Server-Software-Signatur) |
427
+ | `http_security_headers` | HTTP | Sicherheitsheader-Audit (CSP, HSTS, X-Frame-Options usw.) |
428
+ | `http_cookies` | HTTP | Cookie-Analyse &mdash; Flags, Praefixe, Framework-Erkennung |
429
+ | `http_methods` | HTTP | Erlaubte HTTP-Methoden-Enumeration (OPTIONS) |
430
+ | `http_cors` | HTTP | CORS-Richtlinienanalyse und Fehlkonfigurationserkennung |
431
+ | `http_compression` | HTTP | Unterstuetzte Kompressionsalgorithmen (gzip, br, zstd) |
432
+ | `http_caching` | HTTP | Cache-Header-Analyse (CDN, Reverse-Proxy-Erkennung) |
433
+ | `http_etag` | HTTP | ETag-Formatanalyse zur Backend-Identifikation |
434
+ | `http_error` | HTTP | Fehlerseiten-Fingerprinting (benutzerdefinierte vs. Standard-Fehlerseiten) |
435
+ | `http_redirect` | HTTP | Weiterleitungsketten-Analyse |
436
+ | `http_timing` | HTTP | Antwortzeit-Baseline fuer Server-Performance-Profiling |
437
+ | `http_favicon` | HTTP | Favicon-Hash (MurmurHash3) zur Technologie-Identifikation |
438
+ | `http_robots` | HTTP | robots.txt-Analyse und Extraktion gesperrter Pfade |
439
+ | `http_sitemap` | HTTP | Sitemap-Erkennung und URL-Extraktion |
440
+ | `http_wellknown` | HTTP | .well-known Endpunkt-Erkennung (security.txt, openid usw.) |
441
+ | `web_tech` | Web | Technologie-Erkennung ueber HTML/JS/CSS-Muster |
442
+ | `web_analytics` | Web | Analytics- und Tracking-Service-Erkennung |
443
+ | `web_sourcemaps` | Web | Source-Map-Datei-Erkennung |
444
+ | `web_websocket` | Web | WebSocket-Endpunkt-Erkennung |
445
+ | `web_graphql` | Web | GraphQL-Endpunkt-Erkennung und Introspektion |
446
+ | `web_spa` | Web | Single-Page-Application-Framework-Erkennung |
447
+ | `web_cdn` | Web | CDN-Erkennung ueber Antwort-Header und DNS |
448
+ | `web_meta` | Web | HTML-Meta-Tag-Analyse (Generator, Framework-Hinweise) |
449
+ | `web_feed` | Web | RSS/Atom-Feed-Erkennung |
450
+ | `h2_detect` | HTTP/2 | HTTP/2-Protokollunterstuetzungs-Erkennung |
451
+ | `h2_fingerprint` | HTTP/2 | HTTP/2-Server-Fingerprinting (SETTINGS, WINDOW_UPDATE) |
452
+ | `h2_h3` | HTTP/2 | HTTP/3 (QUIC) Unterstuetzungserkennung ueber Alt-Svc-Header |
453
+ | `app_cms` | Application | CMS-Erkennung (WordPress, Drupal, Joomla usw.) |
454
+
455
+ </details>
456
+
457
+ <details>
458
+ <summary><b>scan_paths &mdash; Pfad-Intelligence (5 Techniken)</b></summary>
459
+
460
+ | Parameter | Typ | Beschreibung |
461
+ |-----------|-----|--------------|
462
+ | `url` | string | Ziel-URL |
463
+ | `categories` | string[] | Optional &mdash; zu pruefende Kategorien (sensitive, git, debug, api, config) |
464
+
465
+ | Technik | Beschreibung |
466
+ |---------|--------------|
467
+ | `path_sensitive` | Erkennung sensibler Dateien (Backup-Dateien, Konfigurationsdateien, Datenbank-Dumps) |
468
+ | `path_robots` | robots.txt- und sitemap.xml-Analyse zur Erkennung versteckter Pfade |
469
+ | `path_git` | Git-Repository-Leak-Erkennung (.git/HEAD, .git/config) |
470
+ | `path_debug` | Debug-Endpunkt-Erkennung (phpinfo, server-status, Debug-Konsolen) |
471
+ | `path_api` | API-Version und Dokumentationsendpunkt-Erkennung |
472
+
473
+ </details>
474
+
475
+ <details>
476
+ <summary><b>scan_waf &mdash; WAF/CDN-Erkennung und Fingerprinting (4 Techniken)</b></summary>
477
+
478
+ | Parameter | Typ | Beschreibung |
479
+ |-----------|-----|--------------|
480
+ | `url` | string | Ziel-URL |
481
+
482
+ | Technik | Beschreibung |
483
+ |---------|--------------|
484
+ | `waf_detect` | WAF-Praesenz-Erkennung ueber Antwort-Header- und Verhaltensanalyse |
485
+ | `waf_cdn` | CDN-Anbieter-Identifikation (Cloudflare, Akamai, Fastly usw.) |
486
+ | `waf_fingerprint` | WAF-Produkt-Identifikation und Versionserkennung |
487
+ | `waf_origin` | Ursprungs-IP-Erkennung hinter WAF/CDN (erfordert `SECURITYTRAILS_API_KEY`) |
488
+
489
+ </details>
490
+
491
+ <details>
492
+ <summary><b>scan_services &mdash; Service-Level-Probing (12 Techniken)</b></summary>
493
+
494
+ | Parameter | Typ | Beschreibung |
495
+ |-----------|-----|--------------|
496
+ | `host` | string | Zielhost (IP oder Domain) |
497
+ | `ports` | number[] | Optional &mdash; bestimmte Ports zum Probing |
498
+ | `service` | string | Optional &mdash; bestimmter Service zum Probing (mysql, postgres, redis, ftp, ssh, smtp, vnc, iot) |
499
+
500
+ | Technik | Anbieter | Beschreibung |
501
+ |---------|----------|--------------|
502
+ | `ssh_probe` | SSH | SSH-Protokollversion und Software-Erkennung |
503
+ | `ssh_algorithms` | SSH | SSH-Algorithmus-Audit (KEX, Cipher, MACs, Hostschluesseltypen) |
504
+ | `ssh_hostkey_lookup` | SSH | SSH-Hostschluessel-Abfrage ueber Shodan (erfordert `SHODAN_API_KEY`) |
505
+ | `svc_mysql` | Service | MySQL-Versionserkennung und Faehigkeits-Fingerprinting |
506
+ | `svc_postgres` | Service | PostgreSQL-Versionserkennung und SSL-Unterstuetzungspruefung |
507
+ | `svc_redis` | Service | Redis-Versionserkennung und Authentifizierungsstatus |
508
+ | `svc_ftp` | Service | FTP-Banner-Analyse und anonymer Login-Check |
509
+ | `svc_vnc_rdp` | Service | VNC/RDP-Service-Erkennung und Sicherheitsbewertung |
510
+ | `smtp_banner` | SMTP | SMTP-Banner-Analyse und MTA-Identifikation |
511
+ | `smtp_starttls` | SMTP | SMTP STARTTLS-Unterstuetzung und Zertifikatspruefung |
512
+ | `iot_detect` | IoT | IoT-Geraeteerkennung ueber Banner-Muster und Standardseiten |
513
+ | `iot_upnp` | IoT | UPnP/SSDP-Geraeteerkennung im lokalen Netzwerk |
514
+
515
+ </details>
516
+
517
+ <details>
518
+ <summary><b>enumerate &mdash; Scope-Erweiterung (8 Techniken)</b></summary>
519
+
520
+ | Parameter | Typ | Beschreibung |
521
+ |-----------|-----|--------------|
522
+ | `domain` | string | Zieldomain |
523
+
524
+ | Technik | Beschreibung |
525
+ |---------|--------------|
526
+ | `enum_subdomains` | Subdomain-Enumeration ueber mehrere Methoden |
527
+ | `enum_wildcard` | Wildcard-DNS-Erkennung |
528
+ | `enum_tld` | TLD-Erweiterung (target.com -> target.net, target.org usw.) |
529
+ | `enum_related` | Verwandte Domain-Erkennung ueber gemeinsame Infrastruktur |
530
+ | `enum_asn` | ASN-Nachbarerkennung &mdash; andere Domains im selben Netzwerk |
531
+ | `enum_ct` | Certificate Transparency Log Subdomain-Extraktion |
532
+ | `enum_passive_dns` | Passive DNS-Historie (erfordert `SECURITYTRAILS_API_KEY`) |
533
+ | `enum_scope` | Scope-Zusammenfassung und Angriffsflaechen-Uebersicht |
534
+
535
+ </details>
536
+
537
+ <details>
538
+ <summary><b>osint &mdash; OSINT-Anreicherung (6 Techniken)</b></summary>
539
+
540
+ | Parameter | Typ | Beschreibung |
541
+ |-----------|-----|--------------|
542
+ | `target` | string | Anzureichernde IP-Adresse oder Domain |
543
+ | `type` | `ip` \| `domain` | Optional &mdash; Zieltyp (automatisch erkannt wenn ausgelassen) |
544
+
545
+ | Technik | Auth | Beschreibung |
546
+ |---------|------|--------------|
547
+ | `osint_shodan` | `SHODAN_API_KEY` | Shodan Host-Abfrage &mdash; offene Ports, Banner, Schwachstellen, OS |
548
+ | `osint_censys` | `CENSYS_API_ID` + `CENSYS_API_SECRET` | Censys Host-Daten &mdash; Services, TLS, autonomes System |
549
+ | `osint_reverse_ip` | Keine | Reverse-IP-Abfrage &mdash; andere Domains auf derselben IP |
550
+ | `osint_whois` | Keine | WHOIS-Registrierungsdaten &mdash; Registrar, Daten, Nameserver |
551
+ | `osint_webarchive` | Keine | Web Archive Historie &mdash; erster/letzter Snapshot, Aenderungshaeufigkeit |
552
+ | `osint_virustotal` | `VIRUSTOTAL_API_KEY` | VirusTotal Domain/IP-Bericht &mdash; Erkennungen, Kategorien, DNS |
553
+
554
+ </details>
555
+
556
+ <details>
557
+ <summary><b>analyze &mdash; Passive Fingerprint-Analyse (3 Modi)</b></summary>
558
+
559
+ | Parameter | Typ | Beschreibung |
560
+ |-----------|-----|--------------|
561
+ | `type` | `headers` \| `html` \| `banner` | Zu analysierender Datentyp |
562
+ | `data` | string | Rohdaten zur Analyse (Header, HTML oder Banner-Ausgabe einfuegen) |
563
+
564
+ | Modus | Beschreibung |
565
+ |-------|--------------|
566
+ | `fp_analyze_headers` | Passive HTTP-Header-Analyse &mdash; Server-, Framework-, Proxy-Erkennung ohne Datenverkehr |
567
+ | `fp_analyze_html` | Passive HTML-Analyse &mdash; Technologie-Erkennung, Framework-Identifikation aus Quelltext |
568
+ | `fp_analyze_banner` | Passive Banner-Analyse &mdash; Service-Identifikation aus rohem Banner-Text |
569
+
570
+ </details>
571
+
572
+ <details>
573
+ <summary><b>correlate &mdash; Multi-Signal-Korrelationsengine (7 Modi)</b></summary>
574
+
575
+ | Parameter | Typ | Beschreibung |
576
+ |-----------|-----|--------------|
577
+ | `type` | `consistency` \| `honeypot` \| `spoofing` \| `compare` \| `topology` \| `c2` \| `identify` | Korrelationsmodus |
578
+ | `signals` | object | Zu korrelierende Fingerprint-Signale (variiert nach Modus) |
579
+
580
+ | Modus | Beschreibung |
581
+ |-------|--------------|
582
+ | `fp_consistency` | Schichtuebergreifende Signal-Konsistenzpruefung &mdash; stimmen TCP-, TLS-, HTTP- und DNS-Fingerprints ueberein? |
583
+ | `fp_honeypot` | Honeypot-Erkennung &mdash; prueft auf unmoegliche Service-Kombinationen und Verhaltensanomalien |
584
+ | `fp_spoofing` | Spoofing-Erkennung &mdash; identifiziert Diskrepanzen zwischen Server-Headern und tatsaechlichem Verhalten |
585
+ | `fp_compare` | Nebeneinander-Vergleich der Fingerprint-Profile zweier Hosts |
586
+ | `fp_topology` | Infrastruktur-Topologie-Mapping &mdash; CDN, Load Balancer, Reverse-Proxy-Kette |
587
+ | `fp_c2` | C2-Framework-Erkennung ueber JARM-, TLS-, HTTP- und Timing-Korrelation |
588
+ | `fp_identify` | Hash-basierte Identifikation gegen bekannte Signaturdatenbank |
589
+
590
+ </details>
591
+
592
+ <details>
593
+ <summary><b>meta &mdash; Server-Konfiguration und Daten (3 Modi)</b></summary>
594
+
595
+ | Parameter | Typ | Beschreibung |
596
+ |-----------|-----|--------------|
597
+ | `category` | string | Optional &mdash; nach Kategorie filtern |
598
+
599
+ | Modus | Beschreibung |
600
+ |-------|--------------|
601
+ | `fp_sources` | Alle verfuegbaren Datenquellen mit Konfiguration und API-Schluessel-Status auflisten |
602
+ | `fp_config` | Server-Konfiguration &mdash; Version, geladene Anbieter, Technikanzahl |
603
+ | `fp_signatures` | Signaturdatenbank-Auflistung &mdash; JARM-, Banner-, WAF-, Anwendungssignaturen |
604
+
605
+ </details>
606
+
607
+ ---
608
+
609
+ ### CLI-Verwendung
610
+
611
+ ```bash
612
+ # Alle verfuegbaren Tools und Techniken auflisten
613
+ npx fingerprint-mcp --list
614
+
615
+ # Jedes Tool direkt ausfuehren
616
+ npx fingerprint-mcp --tool recon '{"url":"https://example.com","depth":"quick"}'
617
+ npx fingerprint-mcp --tool scan_tls '{"host":"example.com"}'
618
+ npx fingerprint-mcp --tool scan_ports '{"host":"10.0.1.50","ports":[22,80,443,3306,8080]}'
619
+ npx fingerprint-mcp --tool scan_dns '{"domain":"example.com"}'
620
+ npx fingerprint-mcp --tool scan_http '{"url":"https://example.com"}'
621
+ npx fingerprint-mcp --tool scan_waf '{"url":"https://example.com"}'
622
+ npx fingerprint-mcp --tool scan_services '{"host":"10.0.1.50","service":"redis"}'
623
+ npx fingerprint-mcp --tool enumerate '{"domain":"example.com"}'
624
+ npx fingerprint-mcp --tool analyze '{"type":"headers","data":"Server: nginx/1.24.0\nX-Powered-By: Express"}'
625
+ npx fingerprint-mcp --tool correlate '{"type":"honeypot","signals":{"jarm":"...","banner":"..."}}'
626
+ npx fingerprint-mcp --tool meta '{}'
627
+
628
+ # OSINT-Tools (erfordern API-Schluessel)
629
+ SHODAN_API_KEY=your-key npx fingerprint-mcp --tool osint '{"target":"203.0.113.42","type":"ip"}'
630
+ ```
631
+
632
+ ---
633
+
634
+ ## Datenquellen (21)
635
+
636
+ | Quelle | Auth | Bereitgestellte Daten |
637
+ |--------|------|-----------------------|
638
+ | TCP-Probing | Keine | Port-Scanning, Banner-Grabbing, Service-Erkennung |
639
+ | TLS/SSL-Analyse | Keine | Zertifikatsanalyse, JARM-Fingerprinting, JA4X, Cipher-Enumeration, SNI-Tests |
640
+ | SSH-Probing | Keine | Protokollversion, Algorithmus-Audit, Software-Erkennung |
641
+ | HTTP-Analyse | Keine | Header-Fingerprinting, Favicon-Hashing, Cookie-Analyse, Methoden-Enumeration, CORS |
642
+ | Web-Erkennung | Keine | Technologie-Erkennung, Analytics, Source Maps, WebSocket, GraphQL, SPA-Frameworks |
643
+ | Pfad-Erkennung | Keine | Sensible Dateien, Git-Leaks, Debug-Endpunkte, API-Versionen, robots.txt |
644
+ | DNS-Aufloesung | Keine | Eintrags-Enumeration, E-Mail-Auth-Analyse, SaaS-Erkennung, Server-Fingerprinting |
645
+ | WAF/CDN-Erkennung | Keine | WAF-Identifikation, CDN-Erkennung, WAF-Fingerprinting |
646
+ | Timing-Analyse | Keine | Antwortzeit-Baseline, Taktabweichungs-Erkennung |
647
+ | HTTP/2 & HTTP/3 | Keine | HTTP/2-Erkennung und Fingerprinting, HTTP/3 Alt-Svc-Erkennung |
648
+ | SMTP-Probing | Keine | SMTP-Banner-Analyse, STARTTLS-Pruefung |
649
+ | IoT/Embedded | Keine | IoT-Geraeteerkennung, UPnP/SSDP-Erkennung |
650
+ | Anwendungserkennung | Keine | CMS-, Framework- und E-Commerce-Plattform-Identifikation |
651
+ | Service-Probing | Keine | MySQL-, PostgreSQL-, Redis-, FTP-, VNC/RDP-Fingerprinting |
652
+ | Infrastruktur-Erkennung | Keine | Cloud-Anbieter-, Hosting-Anbieter-, CDN-Identifikation |
653
+ | Korrelationsengine | Keine | Signal-Konsistenz, Honeypot-Erkennung, Spoofing-Erkennung, Topologie-Mapping |
654
+ | Identifikationsengine | Keine | Hash-basierte Identifikation, C2-Erkennung, Signatur-Matching |
655
+ | [Shodan](https://www.shodan.io) | `SHODAN_API_KEY` | Host-Intelligence &mdash; offene Ports, Banner, Schwachstellen, OS-Erkennung |
656
+ | [Censys](https://censys.io) | `CENSYS_API_ID` | Host-Daten &mdash; Services, TLS-Zertifikate, autonome Systeminformationen |
657
+ | [SecurityTrails](https://securitytrails.com) | `SECURITYTRAILS_API_KEY` | WAF-Ursprungserkennung, passive DNS-Historie, historische Eintraege |
658
+ | [VirusTotal](https://www.virustotal.com) | `VIRUSTOTAL_API_KEY` | Domain/IP-Reputation, Erkennungsergebnisse, DNS-Historie, Kategorien |
659
+
660
+ ---
661
+
662
+ ## Architektur
663
+
664
+ ```
665
+ src/
666
+ index.ts # CLI-Einstiegspunkt (--help, --list, --tool, stdio-Server)
667
+ protocol/
668
+ mcp-server.ts # MCP-Server-Setup (stdio-Transport)
669
+ tools.ts # Tool-Registry — alle 13 zusammengesetzten Tools hier registriert
670
+ types/
671
+ index.ts # Gemeinsame Typen (ToolDef, ToolContext, ToolResult)
672
+ utils/
673
+ rate-limiter.ts # Anbieter-spezifischer Rate Limiter
674
+ cache.ts # TTL-Cache fuer API-Antworten
675
+ require-key.ts # API-Schluessel-Validierungshelfer
676
+ murmurhash3.ts # MurmurHash3 fuer Favicon-Hashing
677
+ composite/ # 13 zusammengesetzte Tool-Orchestratoren
678
+ recon.ts # Vollstaendiger Aufklaerungs-Orchestrator (quick/standard/deep)
679
+ scan-ports.ts # Port-Scanning-Komposit
680
+ scan-tls.ts # TLS-Analyse-Komposit
681
+ scan-dns.ts # DNS-Intelligence-Komposit
682
+ scan-http.ts # HTTP-Fingerprinting-Komposit
683
+ scan-paths.ts # Pfad-Erkennungs-Komposit
684
+ scan-waf.ts # WAF/CDN-Erkennungs-Komposit
685
+ scan-services.ts # Service-Probing-Komposit
686
+ analyze.ts # Passive Analyse-Komposit
687
+ correlate.ts # Korrelationsengine-Komposit
688
+ enumerate.ts # Scope-Erweiterungs-Komposit
689
+ osint.ts # OSINT-Anreicherungs-Komposit
690
+ meta.ts # Server-Meta-Komposit
691
+ helpers.ts # Gemeinsame Komposit-Helfer
692
+ tcp/ # TCP-Probing-Techniken (3)
693
+ tls/ # TLS/SSL-Analyse-Techniken (8)
694
+ ssh/ # SSH-Probing-Techniken (3)
695
+ http/ # HTTP-Fingerprinting-Techniken (16)
696
+ web/ # Web-Technologie-Erkennungstechniken (9)
697
+ path/ # Pfad-Erkennungstechniken (5)
698
+ dns/ # DNS-Intelligence-Techniken (7)
699
+ waf/ # WAF/CDN-Erkennungstechniken (4)
700
+ timing/ # Timing-Analyse-Techniken (2)
701
+ h2/ # HTTP/2 & HTTP/3-Techniken (3)
702
+ smtp/ # SMTP-Probing-Techniken (2)
703
+ iot/ # IoT/Embedded-Erkennungstechniken (2)
704
+ app/ # Anwendungserkennungstechniken (3)
705
+ service/ # Service-Probing-Techniken (5)
706
+ infra/ # Infrastruktur-Erkennungstechniken (3)
707
+ correlation/ # Korrelationsengine (5)
708
+ identify/ # Identifikationsengine (3)
709
+ passive/ # Passive Analyse (3)
710
+ osint/ # OSINT-Anreicherungstechniken (6)
711
+ enum/ # Enumerationstechniken (8)
712
+ meta/ # Meta-Tools (3)
713
+ data/ # Signaturdatenbanken und Musterbibliotheken
714
+ jarm-signatures.ts # Bekannte JARM-Fingerprints (C2, Server, CDNs)
715
+ waf-signatures.ts # WAF-Erkennungssignaturen
716
+ service-banners.ts # Service-Banner-Muster
717
+ tech-patterns.ts # Technologie-Erkennungsmuster
718
+ favicon-hashes.ts # Bekannte Favicon-MurmurHash3-Werte
719
+ c2-signatures.ts # C2-Framework-Signaturen
720
+ ... # 15+ Signatur-/Musterdatenbanken
721
+ ```
722
+
723
+ **Design-Entscheidungen:**
724
+
725
+ - **13 zusammengesetzte Tools, 103 Techniken** &mdash; Der Agent ruft High-Level-Tools auf (`recon`, `scan_tls`, `scan_http`). Jedes Komposit orchestriert mehrere Low-Level-Techniken und gibt korrelierte Ergebnisse zurueck. Dies reduziert den Tool-Aufruf-Overhead bei Beibehaltung der Granularitaet.
726
+ - **21 Anbieter, 1 Server** &mdash; Jede Fingerprinting-Ebene ist ein unabhaengiges Modul. Der Komposit-Orchestrator waehlt Techniken basierend auf Kontext und Tiefe.
727
+ - **Aktiv-zuerst, OSINT-optional** &mdash; 80+ Techniken funktionieren durch direktes Probing des Ziels ohne API-Schluessel. OSINT-Anbieter (Shodan, Censys, VirusTotal, SecurityTrails) fuegen Anreicherung hinzu, sind aber nie erforderlich.
728
+ - **Anbieter-spezifische Rate Limiter** &mdash; Jeder Anbieter hat seine eigene `RateLimiter`-Instanz. Aktives Probing ist ratenbegrenzt, um Erkennung zu vermeiden; OSINT-APIs sind auf ihre Kontingente kalibriert.
729
+ - **TTL-Caching** &mdash; DNS-Eintraege (10 Min.), OSINT-Ergebnisse (15 Min.), CT-Logs (30 Min.) werden gecacht, um redundante Abfragen in Multi-Tool-Workflows zu vermeiden.
730
+ - **Graceful Degradation** &mdash; Fehlende API-Schluessel bringen den Server nicht zum Absturz. OSINT-Tools geben beschreibende Meldungen zurueck: "Setzen Sie SHODAN_API_KEY, um die Shodan Host-Abfrage zu aktivieren."
731
+ - **3 Abhaengigkeiten** &mdash; `@modelcontextprotocol/sdk`, `zod` und `cheerio`. Alle Netzwerk-I/O ueber natives `fetch()` und Node.js `net`/`tls`/`dns`-Module. Kein nmap, keine externen Binaries.
732
+
733
+ ---
734
+
735
+ ## Einschraenkungen
736
+
737
+ - OSINT-Tools (Shodan, Censys, VirusTotal, SecurityTrails) erfordern API-Schluessel fuer ihre jeweiligen Techniken
738
+ - Censys Free-Tier auf 250 Abfragen/Monat begrenzt
739
+ - VirusTotal Free-Tier auf 500 Abfragen/Tag begrenzt
740
+ - Port-Scanning verwendet TCP Connect (kein SYN-Scan) &mdash; weniger heimlich als nmap, erfordert aber keine Root-Rechte
741
+ - JARM-Fingerprinting erfordert direkten TCP-Zugang zum Ziel (kann durch Firewalls blockiert werden)
742
+ - UPnP/SSDP-Erkennung funktioniert nur in lokalen Netzwerken
743
+ - Service-Probing (MySQL, PostgreSQL, Redis) verbindet, authentifiziert aber nicht
744
+ - Subdomain-Enumeration basiert auf CT-Logs und passiven Quellen (kein Brute-Force)
745
+ - macOS / Linux getestet (Windows nicht getestet)
746
+
747
+ ---
748
+
749
+ ## Teil der MCP-Sicherheitssuite
750
+
751
+ | Projekt | Bereich | Tools |
752
+ |---------|---------|-------|
753
+ | [hackbrowser-mcp](https://github.com/badchars/hackbrowser-mcp) | Browser-basierte Sicherheitstests | 39 Tools, Firefox, Injection-Tests |
754
+ | [cloud-audit-mcp](https://github.com/badchars/cloud-audit-mcp) | Cloud-Sicherheit (AWS/Azure/GCP) | 38 Tools, 60+ Checks |
755
+ | [github-security-mcp](https://github.com/badchars/github-security-mcp) | GitHub-Sicherheitslage | 39 Tools, 45 Checks |
756
+ | [cve-mcp](https://github.com/badchars/cve-mcp) | Schwachstellen-Intelligence | 23 Tools, 5 Quellen |
757
+ | [osint-mcp-server](https://github.com/badchars/osint-mcp-server) | OSINT & Aufklaerung | 37 Tools, 12 Quellen |
758
+ | [darknet-mcp-server](https://github.com/badchars/darknet-mcp-server) | Darknet & Bedrohungsintelligenz | 66 Tools, 16 Quellen |
759
+ | **fingerprint-mcp** | **Universelles digitales Fingerprinting** | **13 Tools, 103 Techniken, 21 Anbieter** |
760
+
761
+ ---
762
+
763
+ <p align="center">
764
+ <b>Nur fuer autorisierte Sicherheitstests und -bewertungen.</b><br>
765
+ Stellen Sie immer sicher, dass Sie eine ordnungsgemaesse Autorisierung haben, bevor Sie Fingerprinting auf einem Ziel durchfuehren.
766
+ </p>
767
+
768
+ <p align="center">
769
+ <a href="LICENSE">AGPL-3.0-Lizenz</a> &bull; Erstellt mit Bun + TypeScript
770
+ </p>