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.it.md ADDED
@@ -0,0 +1,767 @@
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
+ <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
+ <strong>Italiano</strong> |
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">Fingerprinting digitale universale per agenti AI.</h3>
37
+
38
+ <p align="center">
39
+ TCP, TLS/SSL, SSH, HTTP, DNS, WAF/CDN, IoT, SMTP, sondaggio servizi, JARM, JA4X, hashing favicon, topologia dell'infrastruttura, rilevamento C2, arricchimento OSINT &mdash; unificati in un unico server MCP.<br>
40
+ Il tuo agente AI ottiene il <b>fingerprinting a spettro completo su richiesta</b>, non 11 strumenti CLI scollegati e correlazione manuale.
41
+ </p>
42
+
43
+ <br>
44
+
45
+ <p align="center">
46
+ <a href="#il-problema">Il Problema</a> &bull;
47
+ <a href="#in-cosa-%C3%A8-diverso">In Cosa è Diverso</a> &bull;
48
+ <a href="#avvio-rapido">Avvio Rapido</a> &bull;
49
+ <a href="#cosa-pu%C3%B2-fare-lai">Cosa Può Fare l'AI</a> &bull;
50
+ <a href="#riferimento-strumenti-13-strumenti-103-tecniche">Strumenti (13)</a> &bull;
51
+ <a href="#fonti-dati-21">Fonti Dati</a> &bull;
52
+ <a href="#architettura">Architettura</a> &bull;
53
+ <a href="CHANGELOG.md">Changelog</a> &bull;
54
+ <a href="CONTRIBUTING.md">Contribuire</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="Licenza"></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 Strumenti">
63
+ <img src="https://img.shields.io/badge/techniques-103-f97316" alt="103 Tecniche">
64
+ </p>
65
+
66
+ <p align="center">
67
+ <img src="https://raw.githubusercontent.com/badchars/fingerprint-mcp/main/.github/demo.gif" alt="Demo di fingerprint-mcp" width="800">
68
+ </p>
69
+
70
+ ---
71
+
72
+ ## Il Problema
73
+
74
+ Fare il fingerprinting di un server oggi significa destreggiarsi tra una dozzina di strumenti scollegati. Esegui `nmap` per la scansione delle porte, `testssl.sh` per l'analisi dei certificati, `curl -I` per gli header HTTP, `dig` per il DNS, `wafw00f` per il rilevamento WAF, `ssh-audit` per SSH, uno strumento JARM separato, Wappalyzer per il rilevamento delle tecnologie &mdash; e poi passi 30 minuti a correlare manualmente tutto in un foglio di calcolo per capire cosa sta realmente girando.
75
+
76
+ ```
77
+ Flusso di lavoro tradizionale del fingerprinting:
78
+ analisi certificati TLS -> testssl.sh / openssl s_client
79
+ cattura header HTTP -> curl -I
80
+ rilevamento tecnologie web -> wappalyzer CLI
81
+ ricognizione DNS -> dig / nslookup / dnsenum
82
+ scansione porte -> nmap -sV
83
+ rilevamento WAF -> wafw00f
84
+ audit SSH -> ssh-audit
85
+ fingerprinting servizi -> nmap scripts
86
+ fingerprint JARM -> jarm (strumento separato)
87
+ verifica database OSINT -> shodan CLI, censys CLI
88
+ correlazione di tutto -> manualmente in un foglio di calcolo
89
+ ──────────────────────────────
90
+ Totale: 11 strumenti, 30+ minuti, correlazione manuale
91
+ ```
92
+
93
+ **fingerprint-mcp** fornisce al tuo agente AI 13 strumenti compositi che racchiudono 103 tecniche di fingerprinting attraverso 21 provider tramite il [Model Context Protocol](https://modelcontextprotocol.io). L'agente esegue fingerprinting multi-livello in parallelo, correla i segnali tra i livelli TCP/TLS/HTTP/DNS/SSH, rileva honeypot e infrastrutture C2, e presenta un quadro di intelligence unificato &mdash; in una singola conversazione.
94
+
95
+ ```
96
+ Con fingerprint-mcp:
97
+ Tu: "Fai una ricognizione approfondita su target.com"
98
+
99
+ Agente: -> recon {url: "https://target.com", depth: "deep"}
100
+
101
+ -> TLS: nginx/1.24.0 tramite JARM (3fd21b20d00000...),
102
+ certificato Let's Encrypt, 2 SAN, TLS 1.2+1.3
103
+ -> HTTP: Express.js dietro Cloudflare WAF,
104
+ React SPA, Google Analytics, 14 header di sicurezza analizzati
105
+ -> DNS: record A/AAAA/MX/TXT, SPF/DKIM/DMARC configurati,
106
+ Slack + Google Workspace rilevati tramite CNAME/MX
107
+ -> Porte: 80, 443, 22 (OpenSSH 9.6), 8080 (server di sviluppo)
108
+ -> WAF: Cloudflare rilevato, IP di origine scoperto tramite connessione diretta
109
+ -> Enumerazione: 12 sottodomini tramite log CT, DNS wildcard rilevato
110
+ -> "target.com esegue nginx/1.24.0 con Express.js dietro
111
+ Cloudflare WAF. IP di origine 203.0.113.42 esposto sulla porta 8080.
112
+ TLS è configurato correttamente (equivalente A+) ma il server
113
+ di sviluppo sulla 8080 non ha protezione WAF. 3 sottodomini puntano a
114
+ infrastruttura dismessa — potenziale rischio di takeover."
115
+ ```
116
+
117
+ ---
118
+
119
+ ## In Cosa è Diverso
120
+
121
+ Gli strumenti esistenti ti danno dati grezzi un livello alla volta. fingerprint-mcp dà al tuo agente AI la capacità di **ragionare su tutti i livelli di fingerprinting simultaneamente**.
122
+
123
+ <table>
124
+ <thead>
125
+ <tr>
126
+ <th></th>
127
+ <th>Approccio Tradizionale</th>
128
+ <th>fingerprint-mcp</th>
129
+ </tr>
130
+ </thead>
131
+ <tbody>
132
+ <tr>
133
+ <td><b>Interfaccia</b></td>
134
+ <td>11 strumenti CLI diversi con formati di output diversi</td>
135
+ <td>MCP &mdash; l'agente AI chiama gli strumenti in modo conversazionale</td>
136
+ </tr>
137
+ <tr>
138
+ <td><b>Tecniche</b></td>
139
+ <td>Uno strumento, un livello alla volta</td>
140
+ <td>103 tecniche su 21 provider, eseguite in parallelo</td>
141
+ </tr>
142
+ <tr>
143
+ <td><b>Analisi TLS</b></td>
144
+ <td>Output di testssl.sh, analisi JARM manuale separata</td>
145
+ <td>L'agente combina certificato + JARM + JA4X + suite di cifratura + SNI + log CT in una sola chiamata</td>
146
+ </tr>
147
+ <tr>
148
+ <td><b>Correlazione</b></td>
149
+ <td>Copia-incolla dei risultati in un foglio di calcolo</td>
150
+ <td>L'agente correla incrociando: "JARM corrisponde a un framework C2 noto, il timing HTTP conferma un honeypot"</td>
151
+ </tr>
152
+ <tr>
153
+ <td><b>Bypass WAF</b></td>
154
+ <td>wafw00f rileva il WAF, cerchi manualmente l'origine</td>
155
+ <td>L'agente rileva il WAF, scopre l'IP di origine e verifica che serva lo stesso contenuto</td>
156
+ </tr>
157
+ <tr>
158
+ <td><b>Chiavi API</b></td>
159
+ <td>Richieste per Shodan, Censys, ecc.</td>
160
+ <td>80+ tecniche attive funzionano senza alcuna chiave API; le chiavi sbloccano l'arricchimento OSINT</td>
161
+ </tr>
162
+ <tr>
163
+ <td><b>Configurazione</b></td>
164
+ <td>Installa nmap, testssl, wafw00f, ssh-audit, jarm, wappalyzer...</td>
165
+ <td><code>npx fingerprint-mcp</code> &mdash; un comando, zero configurazione</td>
166
+ </tr>
167
+ </tbody>
168
+ </table>
169
+
170
+ ---
171
+
172
+ ## Avvio Rapido
173
+
174
+ ### Opzione 1: npx (senza installazione)
175
+
176
+ ```bash
177
+ npx fingerprint-mcp
178
+ ```
179
+
180
+ Tutte le 80+ tecniche di fingerprinting attivo funzionano immediatamente. Non sono richieste chiavi API per il fingerprinting TCP, TLS, SSH, HTTP, DNS, WAF, percorsi, servizi, timing, IoT, SMTP e applicazioni.
181
+
182
+ ### Opzione 2: Clone
183
+
184
+ ```bash
185
+ git clone https://github.com/badchars/fingerprint-mcp.git
186
+ cd fingerprint-mcp
187
+ bun install
188
+ ```
189
+
190
+ ### Variabili d'ambiente (opzionali)
191
+
192
+ ```bash
193
+ # Arricchimento OSINT (tutte opzionali — il fingerprinting attivo funziona senza alcuna chiave)
194
+ export SHODAN_API_KEY=your-key # Abilita osint_shodan, ssh_hostkey_lookup
195
+ export CENSYS_API_ID=your-id # Abilita osint_censys (gratuito: 250 query/mese)
196
+ export CENSYS_API_SECRET=your-secret # Segreto API Censys
197
+ export SECURITYTRAILS_API_KEY=your-key # Abilita waf_origin, enum_passive_dns
198
+ export VIRUSTOTAL_API_KEY=your-key # Abilita osint_virustotal (gratuito: 500 query/giorno)
199
+ ```
200
+
201
+ Tutte le chiavi API sono opzionali. Senza di esse, ottieni comunque il fingerprinting completo TCP/TLS/SSH/HTTP/DNS/WAF/percorsi/servizi/timing/IoT/SMTP/infrastruttura/applicazioni, correlazione, analisi passiva, enumerazione e strumenti meta &mdash; 80+ tecniche che funzionano sondando direttamente il target.
202
+
203
+ ### Connetti al tuo agente AI
204
+
205
+ <details open>
206
+ <summary><b>Claude Code</b></summary>
207
+
208
+ ```bash
209
+ # Con npx
210
+ claude mcp add fingerprint-mcp -- npx fingerprint-mcp
211
+
212
+ # Con clone locale
213
+ claude mcp add fingerprint-mcp -- bun run /path/to/fingerprint-mcp/src/index.ts
214
+ ```
215
+
216
+ </details>
217
+
218
+ <details>
219
+ <summary><b>Claude Desktop</b></summary>
220
+
221
+ Aggiungi a `~/Library/Application Support/Claude/claude_desktop_config.json`:
222
+
223
+ ```json
224
+ {
225
+ "mcpServers": {
226
+ "fingerprint": {
227
+ "command": "npx",
228
+ "args": ["-y", "fingerprint-mcp"],
229
+ "env": {
230
+ "SHODAN_API_KEY": "optional",
231
+ "CENSYS_API_ID": "optional",
232
+ "CENSYS_API_SECRET": "optional",
233
+ "SECURITYTRAILS_API_KEY": "optional",
234
+ "VIRUSTOTAL_API_KEY": "optional"
235
+ }
236
+ }
237
+ }
238
+ }
239
+ ```
240
+
241
+ </details>
242
+
243
+ <details>
244
+ <summary><b>Cursor / Windsurf / altri client MCP</b></summary>
245
+
246
+ Stesso formato di configurazione JSON. Punta il comando a `npx fingerprint-mcp` o al tuo percorso di installazione locale.
247
+
248
+ </details>
249
+
250
+ ### Inizia a interrogare
251
+
252
+ ```
253
+ Tu: "Fai il fingerprinting completo di target.com — TLS, stack HTTP, WAF, DNS, porte aperte"
254
+ ```
255
+
256
+ Tutto qui. L'agente gestisce automaticamente il fingerprinting multi-livello, la correlazione dei segnali e l'analisi dell'infrastruttura.
257
+
258
+ ---
259
+
260
+ ## Cosa Può Fare l'AI
261
+
262
+ ### Ricognizione Rapida
263
+
264
+ ```
265
+ Tu: "Ricognizione rapida su target.com"
266
+
267
+ Agente: -> recon {url: "https://target.com", depth: "quick"}
268
+
269
+ -> TCP: porte 80, 443, 22 aperte
270
+ -> TLS: certificato RSA Let's Encrypt, TLS 1.2+1.3, firma JARM nginx
271
+ -> HTTP: nginx/1.24.0, Express.js, React, Cloudflare CDN
272
+ -> DNS: A 203.0.113.42, MX Google Workspace, SPF/DKIM configurati
273
+ -> WAF: Cloudflare rilevato (header cf-ray)
274
+ -> "target.com è una React SPA su Express.js dietro nginx/1.24.0,
275
+ servita tramite Cloudflare CDN. TLS configurato correttamente con
276
+ Let's Encrypt. SSH sulla porta 22 con OpenSSH 9.6. Email
277
+ gestita da Google Workspace con SPF/DKIM/DMARC completi."
278
+ ```
279
+
280
+ ### Indagine TLS Approfondita
281
+
282
+ ```
283
+ Tu: "Analizza nel dettaglio la configurazione TLS di suspicious-server.com"
284
+
285
+ Agente: -> scan_tls {host: "suspicious-server.com"}
286
+
287
+ -> Certificato: auto-firmato, CN=localhost, scaduto 47 giorni fa
288
+ -> JARM: 2ad2ad0002ad2ad00042d42d00000069d641f34fe76acdc05c40262f8815e5
289
+ (corrisponde al profilo predefinito di Cobalt Strike)
290
+ -> JA4X: fingerprint corrispondente a pattern noto di framework C2
291
+ -> Suite di cifratura: accetta cifrari deboli (RC4, 3DES)
292
+ -> SNI: risponde identicamente a qualsiasi valore SNI
293
+ -> Log CT: certificato non registrato (non pubblicamente attendibile)
294
+ -> "ALTO RISCHIO: La configurazione TLS indica fortemente un'infrastruttura C2.
295
+ Certificato auto-firmato scaduto, fingerprint JARM corrispondente a Cobalt Strike,
296
+ accetta cifrari deboli e risponde a valori SNI arbitrari.
297
+ Si raccomanda indagine immediata e blocco."
298
+ ```
299
+
300
+ ### Bypass WAF e Scoperta dell'Origine
301
+
302
+ ```
303
+ Tu: "target.com è dietro un WAF. Riesci a trovare il server di origine?"
304
+
305
+ Agente: -> scan_waf {url: "https://target.com"}
306
+ -> scan_dns {domain: "target.com"}
307
+ -> enumerate {domain: "target.com"}
308
+
309
+ -> WAF: Cloudflare (AS13335), pagina di verifica su richieste sospette
310
+ -> DNS: il record A punta all'IP Cloudflare 104.21.x.x
311
+ -> Sottodomini: dev.target.com risolve a 203.0.113.42 (non-Cloudflare)
312
+ -> Connessione diretta a 203.0.113.42:443 restituisce lo stesso certificato TLS
313
+ -> Storico SecurityTrails: l'origine era 203.0.113.42 prima di Cloudflare
314
+ -> "IP di origine trovato: 203.0.113.42. Scoperto tramite il sottodominio
315
+ dev.target.com che bypassa Cloudflare. L'origine serve lo stesso
316
+ certificato TLS e risponde all'header Host target.com.
317
+ L'origine non ha protezione WAF — accesso diretto possibile."
318
+ ```
319
+
320
+ ### Scoperta Servizi su un Host
321
+
322
+ ```
323
+ Tu: "Quali servizi sono in esecuzione su 10.0.1.50?"
324
+
325
+ Agente: -> scan_ports {host: "10.0.1.50"}
326
+ -> scan_services {host: "10.0.1.50", ports: [22, 80, 3306, 5432, 6379, 8080]}
327
+
328
+ -> Porta 22: OpenSSH 8.9p1 Ubuntu, chiave host ED25519
329
+ -> Porta 80: Apache/2.4.57, PHP/8.2, WordPress 6.4
330
+ -> Porta 3306: MySQL 8.0.36, autenticazione richiesta
331
+ -> Porta 5432: PostgreSQL 16.1, SSL richiesto
332
+ -> Porta 6379: Redis 7.2.4, NESSUNA autenticazione (aperto)
333
+ -> Porta 8080: server di sviluppo Node.js Express, CORS: *
334
+ -> "CRITICO: Redis sulla porta 6379 non ha autenticazione — chiunque sulla
335
+ rete può leggere/scrivere dati. Il server di sviluppo Express sulla 8080
336
+ ha CORS wildcard. MySQL e PostgreSQL richiedono correttamente l'autenticazione.
337
+ WordPress è indietro di 2 versioni minori. Azione immediata necessaria
338
+ su Redis e l'esposizione del server di sviluppo."
339
+ ```
340
+
341
+ ---
342
+
343
+ ## Riferimento Strumenti (13 strumenti, 103 tecniche)
344
+
345
+ <details open>
346
+ <summary><b>recon &mdash; Ricognizione completa con selezione delle tecniche basata sulla profondità</b></summary>
347
+
348
+ | Parametro | Tipo | Descrizione |
349
+ |-----------|------|-------------|
350
+ | `url` | string | URL del target da analizzare |
351
+ | `depth` | `quick` \| `standard` \| `deep` | Profondità di scansione: quick=5 tecniche, standard=20, deep=50+ |
352
+
353
+ Orchestra le tecniche di tutti i provider in base al livello di profondità. La modalità quick fornisce una panoramica rapida; la modalità deep esegue un fingerprinting esaustivo inclusi enumerazione, OSINT e correlazione.
354
+
355
+ </details>
356
+
357
+ <details>
358
+ <summary><b>scan_ports &mdash; Scansione porte TCP con rilevamento servizi (3 tecniche)</b></summary>
359
+
360
+ | Parametro | Tipo | Descrizione |
361
+ |-----------|------|-------------|
362
+ | `host` | string | Host target (IP o dominio) |
363
+ | `ports` | number[] | Opzionale &mdash; porte specifiche da scansionare (predefinito: porte comuni) |
364
+
365
+ | Tecnica | Descrizione |
366
+ |---------|-------------|
367
+ | `tcp_probe` | Scansione TCP connect per rilevare porte aperte |
368
+ | `tcp_banner` | Cattura banner sulle porte aperte per l'identificazione dei servizi |
369
+ | `tcp_analysis` | Analisi delle combinazioni di porte e inferenza dei servizi |
370
+
371
+ </details>
372
+
373
+ <details>
374
+ <summary><b>scan_tls &mdash; Analisi TLS/SSL completa (8 tecniche)</b></summary>
375
+
376
+ | Parametro | Tipo | Descrizione |
377
+ |-----------|------|-------------|
378
+ | `host` | string | Host target (IP o dominio) |
379
+ | `port` | number | Opzionale &mdash; porta TLS (predefinito: 443) |
380
+
381
+ | Tecnica | Descrizione |
382
+ |---------|-------------|
383
+ | `tls_certificate` | Analisi certificato X.509 &mdash; soggetto, emittente, SAN, validità, catena |
384
+ | `tls_jarm` | Fingerprinting attivo JARM &mdash; 10 probe TLS Client Hello, hash di 62 caratteri |
385
+ | `tls_ja4x` | Fingerprinting TLS passivo JA4X dalle proprietà del certificato |
386
+ | `tls_ciphers` | Enumerazione suite di cifratura e analisi della robustezza |
387
+ | `tls_protocols` | Rilevamento versioni del protocollo TLS supportate (SSLv3 fino a TLS 1.3) |
388
+ | `tls_sni` | Test comportamento SNI &mdash; certificato predefinito vs. hostname richiesto |
389
+ | `tls_ct_logs` | Ricerca nei log Certificate Transparency tramite crt.sh |
390
+ | `tls_ocsp` | Verifica stapling OCSP e stato di revoca |
391
+
392
+ </details>
393
+
394
+ <details>
395
+ <summary><b>scan_dns &mdash; Intelligence DNS (7 tecniche)</b></summary>
396
+
397
+ | Parametro | Tipo | Descrizione |
398
+ |-----------|------|-------------|
399
+ | `domain` | string | Dominio target |
400
+
401
+ | Tecnica | Descrizione |
402
+ |---------|-------------|
403
+ | `dns_records` | Enumerazione completa dei record &mdash; A, AAAA, MX, NS, TXT, CNAME, SOA |
404
+ | `dns_email_auth` | Analisi record SPF, DKIM e DMARC |
405
+ | `dns_saas` | Rilevamento SaaS/servizi tramite pattern CNAME e MX (Slack, Zendesk, ecc.) |
406
+ | `dns_server` | Fingerprinting server DNS (BIND, PowerDNS, Cloudflare, ecc.) |
407
+ | `dns_takeover` | Rilevamento subdomain takeover tramite analisi CNAME pendenti |
408
+ | `dns_zone` | Tentativo di trasferimento di zona (AXFR) |
409
+ | `dns_caa` | Analisi record CAA per restrizioni sulle autorità di certificazione |
410
+
411
+ </details>
412
+
413
+ <details>
414
+ <summary><b>scan_http &mdash; Fingerprinting HTTP/web (29 tecniche)</b></summary>
415
+
416
+ | Parametro | Tipo | Descrizione |
417
+ |-----------|------|-------------|
418
+ | `url` | string | URL target |
419
+
420
+ | Tecnica | Provider | Descrizione |
421
+ |---------|----------|-------------|
422
+ | `http_headers` | HTTP | Analisi header di risposta e identificazione del server |
423
+ | `http_header_order` | HTTP | Fingerprint dell'ordine degli header (firma del software server) |
424
+ | `http_security_headers` | HTTP | Audit header di sicurezza (CSP, HSTS, X-Frame-Options, ecc.) |
425
+ | `http_cookies` | HTTP | Analisi cookie &mdash; flag, prefissi, rilevamento framework |
426
+ | `http_methods` | HTTP | Enumerazione metodi HTTP consentiti (OPTIONS) |
427
+ | `http_cors` | HTTP | Analisi policy CORS e rilevamento misconfigurazioni |
428
+ | `http_compression` | HTTP | Algoritmi di compressione supportati (gzip, br, zstd) |
429
+ | `http_caching` | HTTP | Analisi header cache (rilevamento CDN, reverse proxy) |
430
+ | `http_etag` | HTTP | Analisi formato ETag per identificazione backend |
431
+ | `http_error` | HTTP | Fingerprinting pagine di errore (personalizzate vs. predefinite) |
432
+ | `http_redirect` | HTTP | Analisi catena di redirect |
433
+ | `http_timing` | HTTP | Baseline timing di risposta per profilazione delle prestazioni del server |
434
+ | `http_favicon` | HTTP | Hash favicon (MurmurHash3) per identificazione tecnologie |
435
+ | `http_robots` | HTTP | Analisi robots.txt ed estrazione percorsi non consentiti |
436
+ | `http_sitemap` | HTTP | Scoperta sitemap ed estrazione URL |
437
+ | `http_wellknown` | HTTP | Scoperta endpoint .well-known (security.txt, openid, ecc.) |
438
+ | `web_tech` | Web | Rilevamento tecnologie tramite pattern HTML/JS/CSS |
439
+ | `web_analytics` | Web | Rilevamento servizi di analisi e tracciamento |
440
+ | `web_sourcemaps` | Web | Scoperta file source map |
441
+ | `web_websocket` | Web | Rilevamento endpoint WebSocket |
442
+ | `web_graphql` | Web | Rilevamento endpoint GraphQL e introspezione |
443
+ | `web_spa` | Web | Rilevamento framework applicazioni single-page |
444
+ | `web_cdn` | Web | Rilevamento CDN tramite header di risposta e DNS |
445
+ | `web_meta` | Web | Analisi meta tag HTML (generatore, indizi sul framework) |
446
+ | `web_feed` | Web | Scoperta feed RSS/Atom |
447
+ | `h2_detect` | HTTP/2 | Rilevamento supporto protocollo HTTP/2 |
448
+ | `h2_fingerprint` | HTTP/2 | Fingerprinting server HTTP/2 (SETTINGS, WINDOW_UPDATE) |
449
+ | `h2_h3` | HTTP/2 | Rilevamento supporto HTTP/3 (QUIC) tramite header Alt-Svc |
450
+ | `app_cms` | Application | Rilevamento CMS (WordPress, Drupal, Joomla, ecc.) |
451
+
452
+ </details>
453
+
454
+ <details>
455
+ <summary><b>scan_paths &mdash; Intelligence sui percorsi (5 tecniche)</b></summary>
456
+
457
+ | Parametro | Tipo | Descrizione |
458
+ |-----------|------|-------------|
459
+ | `url` | string | URL target |
460
+ | `categories` | string[] | Opzionale &mdash; categorie da verificare (sensitive, git, debug, api, config) |
461
+
462
+ | Tecnica | Descrizione |
463
+ |---------|-------------|
464
+ | `path_sensitive` | Scoperta file sensibili (file di backup, file di configurazione, dump database) |
465
+ | `path_robots` | Analisi robots.txt e sitemap.xml per percorsi nascosti |
466
+ | `path_git` | Rilevamento leak repository Git (.git/HEAD, .git/config) |
467
+ | `path_debug` | Scoperta endpoint di debug (phpinfo, server-status, console di debug) |
468
+ | `path_api` | Scoperta versioni API e endpoint di documentazione |
469
+
470
+ </details>
471
+
472
+ <details>
473
+ <summary><b>scan_waf &mdash; Rilevamento e fingerprinting WAF/CDN (4 tecniche)</b></summary>
474
+
475
+ | Parametro | Tipo | Descrizione |
476
+ |-----------|------|-------------|
477
+ | `url` | string | URL target |
478
+
479
+ | Tecnica | Descrizione |
480
+ |---------|-------------|
481
+ | `waf_detect` | Rilevamento presenza WAF tramite analisi header di risposta e comportamento |
482
+ | `waf_cdn` | Identificazione provider CDN (Cloudflare, Akamai, Fastly, ecc.) |
483
+ | `waf_fingerprint` | Identificazione prodotto WAF e rilevamento versione |
484
+ | `waf_origin` | Scoperta IP di origine dietro WAF/CDN (richiede `SECURITYTRAILS_API_KEY`) |
485
+
486
+ </details>
487
+
488
+ <details>
489
+ <summary><b>scan_services &mdash; Sondaggio a livello di servizio (12 tecniche)</b></summary>
490
+
491
+ | Parametro | Tipo | Descrizione |
492
+ |-----------|------|-------------|
493
+ | `host` | string | Host target (IP o dominio) |
494
+ | `ports` | number[] | Opzionale &mdash; porte specifiche da sondare |
495
+ | `service` | string | Opzionale &mdash; servizio specifico da sondare (mysql, postgres, redis, ftp, ssh, smtp, vnc, iot) |
496
+
497
+ | Tecnica | Provider | Descrizione |
498
+ |---------|----------|-------------|
499
+ | `ssh_probe` | SSH | Rilevamento versione protocollo SSH e software |
500
+ | `ssh_algorithms` | SSH | Audit algoritmi SSH (KEX, cifrari, MAC, tipi di chiave host) |
501
+ | `ssh_hostkey_lookup` | SSH | Ricerca chiave host SSH tramite Shodan (richiede `SHODAN_API_KEY`) |
502
+ | `svc_mysql` | Service | Rilevamento versione MySQL e fingerprinting delle capacità |
503
+ | `svc_postgres` | Service | Rilevamento versione PostgreSQL e verifica supporto SSL |
504
+ | `svc_redis` | Service | Rilevamento versione Redis e stato dell'autenticazione |
505
+ | `svc_ftp` | Service | Analisi banner FTP e verifica login anonimo |
506
+ | `svc_vnc_rdp` | Service | Rilevamento servizi VNC/RDP e valutazione della sicurezza |
507
+ | `smtp_banner` | SMTP | Analisi banner SMTP e identificazione MTA |
508
+ | `smtp_starttls` | SMTP | Supporto SMTP STARTTLS e ispezione certificato |
509
+ | `iot_detect` | IoT | Rilevamento dispositivi IoT tramite pattern banner e pagine predefinite |
510
+ | `iot_upnp` | IoT | Scoperta dispositivi UPnP/SSDP sulla rete locale |
511
+
512
+ </details>
513
+
514
+ <details>
515
+ <summary><b>enumerate &mdash; Espansione dello scope (8 tecniche)</b></summary>
516
+
517
+ | Parametro | Tipo | Descrizione |
518
+ |-----------|------|-------------|
519
+ | `domain` | string | Dominio target |
520
+
521
+ | Tecnica | Descrizione |
522
+ |---------|-------------|
523
+ | `enum_subdomains` | Enumerazione sottodomini tramite metodi multipli |
524
+ | `enum_wildcard` | Rilevamento DNS wildcard |
525
+ | `enum_tld` | Espansione TLD (target.com -> target.net, target.org, ecc.) |
526
+ | `enum_related` | Scoperta domini correlati tramite infrastruttura condivisa |
527
+ | `enum_asn` | Scoperta vicini ASN &mdash; altri domini sulla stessa rete |
528
+ | `enum_ct` | Estrazione sottodomini dai log Certificate Transparency |
529
+ | `enum_passive_dns` | Storico DNS passivo (richiede `SECURITYTRAILS_API_KEY`) |
530
+ | `enum_scope` | Riepilogo scope e panoramica della superficie di attacco |
531
+
532
+ </details>
533
+
534
+ <details>
535
+ <summary><b>osint &mdash; Arricchimento OSINT (6 tecniche)</b></summary>
536
+
537
+ | Parametro | Tipo | Descrizione |
538
+ |-----------|------|-------------|
539
+ | `target` | string | Indirizzo IP o dominio da arricchire |
540
+ | `type` | `ip` \| `domain` | Opzionale &mdash; tipo di target (rilevato automaticamente se omesso) |
541
+
542
+ | Tecnica | Auth | Descrizione |
543
+ |---------|------|-------------|
544
+ | `osint_shodan` | `SHODAN_API_KEY` | Ricerca host Shodan &mdash; porte aperte, banner, vulnerabilità, SO |
545
+ | `osint_censys` | `CENSYS_API_ID` + `CENSYS_API_SECRET` | Dati host Censys &mdash; servizi, TLS, sistema autonomo |
546
+ | `osint_reverse_ip` | Nessuno | Ricerca IP inverso &mdash; altri domini sullo stesso IP |
547
+ | `osint_whois` | Nessuno | Dati registrazione WHOIS &mdash; registrar, date, nameserver |
548
+ | `osint_webarchive` | Nessuno | Storico Web Archive &mdash; primo/ultimo snapshot, frequenza modifiche |
549
+ | `osint_virustotal` | `VIRUSTOTAL_API_KEY` | Report VirusTotal dominio/IP &mdash; rilevamenti, categorie, DNS |
550
+
551
+ </details>
552
+
553
+ <details>
554
+ <summary><b>analyze &mdash; Analisi passiva del fingerprint (3 modalità)</b></summary>
555
+
556
+ | Parametro | Tipo | Descrizione |
557
+ |-----------|------|-------------|
558
+ | `type` | `headers` \| `html` \| `banner` | Tipo di dati da analizzare |
559
+ | `data` | string | Dati grezzi da analizzare (incolla header, HTML o output banner) |
560
+
561
+ | Modalità | Descrizione |
562
+ |----------|-------------|
563
+ | `fp_analyze_headers` | Analisi passiva header HTTP &mdash; rilevamento server, framework, proxy senza inviare traffico |
564
+ | `fp_analyze_html` | Analisi passiva HTML &mdash; rilevamento tecnologie, identificazione framework dal sorgente |
565
+ | `fp_analyze_banner` | Analisi passiva banner &mdash; identificazione servizi dal testo grezzo del banner |
566
+
567
+ </details>
568
+
569
+ <details>
570
+ <summary><b>correlate &mdash; Motore di correlazione multi-segnale (7 modalità)</b></summary>
571
+
572
+ | Parametro | Tipo | Descrizione |
573
+ |-----------|------|-------------|
574
+ | `type` | `consistency` \| `honeypot` \| `spoofing` \| `compare` \| `topology` \| `c2` \| `identify` | Modalità di correlazione |
575
+ | `signals` | object | Segnali fingerprint da correlare (variano per modalità) |
576
+
577
+ | Modalità | Descrizione |
578
+ |----------|-------------|
579
+ | `fp_consistency` | Verifica coerenza segnali cross-layer &mdash; i fingerprint TCP, TLS, HTTP e DNS concordano? |
580
+ | `fp_honeypot` | Rilevamento honeypot &mdash; verifica combinazioni di servizi impossibili e anomalie comportamentali |
581
+ | `fp_spoofing` | Rilevamento spoofing &mdash; identifica discrepanze tra header server e comportamento effettivo |
582
+ | `fp_compare` | Confronto affiancato dei profili fingerprint di due host |
583
+ | `fp_topology` | Mappatura topologia dell'infrastruttura &mdash; catena CDN, load balancer, reverse proxy |
584
+ | `fp_c2` | Rilevamento framework C2 tramite correlazione JARM, TLS, HTTP e timing |
585
+ | `fp_identify` | Identificazione basata su hash contro database di firme conosciute |
586
+
587
+ </details>
588
+
589
+ <details>
590
+ <summary><b>meta &mdash; Configurazione server e dati (3 modalità)</b></summary>
591
+
592
+ | Parametro | Tipo | Descrizione |
593
+ |-----------|------|-------------|
594
+ | `category` | string | Opzionale &mdash; filtra per categoria |
595
+
596
+ | Modalità | Descrizione |
597
+ |----------|-------------|
598
+ | `fp_sources` | Elenco di tutte le fonti dati disponibili con configurazione e stato chiavi API |
599
+ | `fp_config` | Configurazione server &mdash; versione, provider caricati, conteggio tecniche |
600
+ | `fp_signatures` | Elenco database firme &mdash; firme JARM, banner, WAF, applicazioni |
601
+
602
+ </details>
603
+
604
+ ---
605
+
606
+ ### Utilizzo CLI
607
+
608
+ ```bash
609
+ # Elenca tutti gli strumenti e le tecniche disponibili
610
+ npx fingerprint-mcp --list
611
+
612
+ # Esegui qualsiasi strumento direttamente
613
+ npx fingerprint-mcp --tool recon '{"url":"https://example.com","depth":"quick"}'
614
+ npx fingerprint-mcp --tool scan_tls '{"host":"example.com"}'
615
+ npx fingerprint-mcp --tool scan_ports '{"host":"10.0.1.50","ports":[22,80,443,3306,8080]}'
616
+ npx fingerprint-mcp --tool scan_dns '{"domain":"example.com"}'
617
+ npx fingerprint-mcp --tool scan_http '{"url":"https://example.com"}'
618
+ npx fingerprint-mcp --tool scan_waf '{"url":"https://example.com"}'
619
+ npx fingerprint-mcp --tool scan_services '{"host":"10.0.1.50","service":"redis"}'
620
+ npx fingerprint-mcp --tool enumerate '{"domain":"example.com"}'
621
+ npx fingerprint-mcp --tool analyze '{"type":"headers","data":"Server: nginx/1.24.0\nX-Powered-By: Express"}'
622
+ npx fingerprint-mcp --tool correlate '{"type":"honeypot","signals":{"jarm":"...","banner":"..."}}'
623
+ npx fingerprint-mcp --tool meta '{}'
624
+
625
+ # Strumenti OSINT (richiedono chiavi API)
626
+ SHODAN_API_KEY=your-key npx fingerprint-mcp --tool osint '{"target":"203.0.113.42","type":"ip"}'
627
+ ```
628
+
629
+ ---
630
+
631
+ ## Fonti Dati (21)
632
+
633
+ | Fonte | Auth | Cosa fornisce |
634
+ |-------|------|---------------|
635
+ | Sondaggio TCP | Nessuno | Scansione porte, cattura banner, rilevamento servizi |
636
+ | Analisi TLS/SSL | Nessuno | Analisi certificati, fingerprinting JARM, JA4X, enumerazione cifrari, test SNI |
637
+ | Sondaggio SSH | Nessuno | Versione protocollo, audit algoritmi, rilevamento software |
638
+ | Analisi HTTP | Nessuno | Fingerprinting header, hashing favicon, analisi cookie, enumerazione metodi, CORS |
639
+ | Rilevamento web | Nessuno | Rilevamento tecnologie, analytics, source map, WebSocket, GraphQL, framework SPA |
640
+ | Scoperta percorsi | Nessuno | File sensibili, leak git, endpoint di debug, versioni API, robots.txt |
641
+ | Risoluzione DNS | Nessuno | Enumerazione record, analisi autenticazione email, rilevamento SaaS, fingerprinting server |
642
+ | Rilevamento WAF/CDN | Nessuno | Identificazione WAF, rilevamento CDN, fingerprinting WAF |
643
+ | Analisi timing | Nessuno | Baseline timing di risposta, rilevamento sfasamento orologio |
644
+ | HTTP/2 e HTTP/3 | Nessuno | Rilevamento e fingerprinting HTTP/2, scoperta HTTP/3 Alt-Svc |
645
+ | Sondaggio SMTP | Nessuno | Analisi banner SMTP, ispezione STARTTLS |
646
+ | IoT/Embedded | Nessuno | Rilevamento dispositivi IoT, scoperta UPnP/SSDP |
647
+ | Rilevamento applicazioni | Nessuno | Identificazione CMS, framework e piattaforme e-commerce |
648
+ | Sondaggio servizi | Nessuno | Fingerprinting MySQL, PostgreSQL, Redis, FTP, VNC/RDP |
649
+ | Rilevamento infrastruttura | Nessuno | Identificazione provider cloud, hosting, CDN |
650
+ | Motore di correlazione | Nessuno | Coerenza segnali, rilevamento honeypot, rilevamento spoofing, mappatura topologia |
651
+ | Motore di identificazione | Nessuno | Identificazione basata su hash, rilevamento C2, corrispondenza firme |
652
+ | [Shodan](https://www.shodan.io) | `SHODAN_API_KEY` | Intelligence host &mdash; porte aperte, banner, vulnerabilità, rilevamento SO |
653
+ | [Censys](https://censys.io) | `CENSYS_API_ID` | Dati host &mdash; servizi, certificati TLS, informazioni sistema autonomo |
654
+ | [SecurityTrails](https://securitytrails.com) | `SECURITYTRAILS_API_KEY` | Scoperta origine WAF, storico DNS passivo, record storici |
655
+ | [VirusTotal](https://www.virustotal.com) | `VIRUSTOTAL_API_KEY` | Reputazione dominio/IP, risultati rilevamento, storico DNS, categorie |
656
+
657
+ ---
658
+
659
+ ## Architettura
660
+
661
+ ```
662
+ src/
663
+ index.ts # Punto di ingresso CLI (--help, --list, --tool, server stdio)
664
+ protocol/
665
+ mcp-server.ts # Configurazione server MCP (trasporto stdio)
666
+ tools.ts # Registro strumenti — tutti i 13 strumenti compositi registrati qui
667
+ types/
668
+ index.ts # Tipi condivisi (ToolDef, ToolContext, ToolResult)
669
+ utils/
670
+ rate-limiter.ts # Rate limiter per provider
671
+ cache.ts # Cache TTL per risposte API
672
+ require-key.ts # Helper validazione chiavi API
673
+ murmurhash3.ts # MurmurHash3 per hashing favicon
674
+ composite/ # 13 orchestratori di strumenti compositi
675
+ recon.ts # Orchestratore ricognizione completa (quick/standard/deep)
676
+ scan-ports.ts # Composito scansione porte
677
+ scan-tls.ts # Composito analisi TLS
678
+ scan-dns.ts # Composito intelligence DNS
679
+ scan-http.ts # Composito fingerprinting HTTP
680
+ scan-paths.ts # Composito scoperta percorsi
681
+ scan-waf.ts # Composito rilevamento WAF/CDN
682
+ scan-services.ts # Composito sondaggio servizi
683
+ analyze.ts # Composito analisi passiva
684
+ correlate.ts # Composito motore di correlazione
685
+ enumerate.ts # Composito espansione scope
686
+ osint.ts # Composito arricchimento OSINT
687
+ meta.ts # Composito meta server
688
+ helpers.ts # Helper compositi condivisi
689
+ tcp/ # Tecniche sondaggio TCP (3)
690
+ tls/ # Tecniche analisi TLS/SSL (8)
691
+ ssh/ # Tecniche sondaggio SSH (3)
692
+ http/ # Tecniche fingerprinting HTTP (16)
693
+ web/ # Tecniche rilevamento tecnologie web (9)
694
+ path/ # Tecniche scoperta percorsi (5)
695
+ dns/ # Tecniche intelligence DNS (7)
696
+ waf/ # Tecniche rilevamento WAF/CDN (4)
697
+ timing/ # Tecniche analisi timing (2)
698
+ h2/ # Tecniche HTTP/2 e HTTP/3 (3)
699
+ smtp/ # Tecniche sondaggio SMTP (2)
700
+ iot/ # Tecniche rilevamento IoT/embedded (2)
701
+ app/ # Tecniche rilevamento applicazioni (3)
702
+ service/ # Tecniche sondaggio servizi (5)
703
+ infra/ # Tecniche rilevamento infrastruttura (3)
704
+ correlation/ # Motore di correlazione (5)
705
+ identify/ # Motore di identificazione (3)
706
+ passive/ # Analisi passiva (3)
707
+ osint/ # Tecniche arricchimento OSINT (6)
708
+ enum/ # Tecniche enumerazione (8)
709
+ meta/ # Strumenti meta (3)
710
+ data/ # Database di firme e librerie di pattern
711
+ jarm-signatures.ts # Fingerprint JARM conosciuti (C2, server, CDN)
712
+ waf-signatures.ts # Firme rilevamento WAF
713
+ service-banners.ts # Pattern banner servizi
714
+ tech-patterns.ts # Pattern rilevamento tecnologie
715
+ favicon-hashes.ts # Valori MurmurHash3 favicon conosciuti
716
+ c2-signatures.ts # Firme framework C2
717
+ ... # 15+ database di firme/pattern
718
+ ```
719
+
720
+ **Decisioni di design:**
721
+
722
+ - **13 strumenti compositi, 103 tecniche** &mdash; L'agente chiama strumenti di alto livello (`recon`, `scan_tls`, `scan_http`). Ogni composito orchestra molteplici tecniche di basso livello e restituisce risultati correlati. Questo riduce l'overhead delle chiamate mantenendo la granularità.
723
+ - **21 provider, 1 server** &mdash; Ogni livello di fingerprinting è un modulo indipendente. L'orchestratore composito seleziona le tecniche in base al contesto e alla profondità.
724
+ - **Prima l'attivo, OSINT opzionale** &mdash; 80+ tecniche funzionano sondando direttamente il target senza alcuna chiave API. I provider OSINT (Shodan, Censys, VirusTotal, SecurityTrails) aggiungono arricchimento ma non sono mai necessari.
725
+ - **Rate limiter per provider** &mdash; Ogni provider ha la propria istanza `RateLimiter`. Il sondaggio attivo è limitato per evitare il rilevamento; le API OSINT sono calibrate sulle loro quote.
726
+ - **Cache TTL** &mdash; I record DNS (10min), i risultati OSINT (15min), i log CT (30min) sono memorizzati in cache per evitare ricerche ridondanti durante flussi di lavoro multi-strumento.
727
+ - **Degradazione graduale** &mdash; Le chiavi API mancanti non fanno crashare il server. Gli strumenti OSINT restituiscono messaggi descrittivi: "Imposta SHODAN_API_KEY per abilitare la ricerca host Shodan."
728
+ - **3 dipendenze** &mdash; `@modelcontextprotocol/sdk`, `zod` e `cheerio`. Tutto l'I/O di rete tramite `fetch()` nativo e i moduli Node.js `net`/`tls`/`dns`. Nessun nmap, nessun binario esterno.
729
+
730
+ ---
731
+
732
+ ## Limitazioni
733
+
734
+ - Gli strumenti OSINT (Shodan, Censys, VirusTotal, SecurityTrails) richiedono chiavi API per le rispettive tecniche
735
+ - Il piano gratuito Censys è limitato a 250 query/mese
736
+ - Il piano gratuito VirusTotal è limitato a 500 query/giorno
737
+ - La scansione porte usa TCP connect (non scansione SYN) &mdash; meno furtivo di nmap ma non richiede privilegi root
738
+ - Il fingerprinting JARM richiede accesso TCP diretto al target (potrebbe essere bloccato dai firewall)
739
+ - La scoperta UPnP/SSDP funziona solo su reti locali
740
+ - Il sondaggio servizi (MySQL, PostgreSQL, Redis) si connette ma non si autentica
741
+ - L'enumerazione dei sottodomini si basa su log CT e fonti passive (nessun brute-force)
742
+ - Testato su macOS / Linux (Windows non testato)
743
+
744
+ ---
745
+
746
+ ## Parte della Suite di Sicurezza MCP
747
+
748
+ | Progetto | Dominio | Strumenti |
749
+ |----------|---------|-----------|
750
+ | [hackbrowser-mcp](https://github.com/badchars/hackbrowser-mcp) | Test di sicurezza basati su browser | 39 strumenti, Firefox, test di injection |
751
+ | [cloud-audit-mcp](https://github.com/badchars/cloud-audit-mcp) | Sicurezza cloud (AWS/Azure/GCP) | 38 strumenti, 60+ controlli |
752
+ | [github-security-mcp](https://github.com/badchars/github-security-mcp) | Postura di sicurezza GitHub | 39 strumenti, 45 controlli |
753
+ | [cve-mcp](https://github.com/badchars/cve-mcp) | Intelligence sulle vulnerabilità | 23 strumenti, 5 fonti |
754
+ | [osint-mcp-server](https://github.com/badchars/osint-mcp-server) | OSINT e ricognizione | 37 strumenti, 12 fonti |
755
+ | [darknet-mcp-server](https://github.com/badchars/darknet-mcp-server) | Dark web e threat intelligence | 66 strumenti, 16 fonti |
756
+ | **fingerprint-mcp** | **Fingerprinting digitale universale** | **13 strumenti, 103 tecniche, 21 provider** |
757
+
758
+ ---
759
+
760
+ <p align="center">
761
+ <b>Solo per test di sicurezza e valutazioni autorizzate.</b><br>
762
+ Assicurati sempre di avere l'autorizzazione adeguata prima di eseguire il fingerprinting su qualsiasi target.
763
+ </p>
764
+
765
+ <p align="center">
766
+ <a href="LICENSE">Licenza AGPL-3.0</a> &bull; Realizzato con Bun + TypeScript
767
+ </p>