fingerprint-mcp 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +663 -0
- package/README.ar.md +767 -0
- package/README.bn.md +767 -0
- package/README.bs.md +767 -0
- package/README.da.md +767 -0
- package/README.de.md +770 -0
- package/README.el.md +767 -0
- package/README.es.md +769 -0
- package/README.fr.md +769 -0
- package/README.hi.md +767 -0
- package/README.it.md +767 -0
- package/README.ja.md +767 -0
- package/README.ko.md +772 -0
- package/README.md +767 -0
- package/README.no.md +767 -0
- package/README.pl.md +767 -0
- package/README.pt-BR.md +767 -0
- package/README.ru.md +767 -0
- package/README.th.md +767 -0
- package/README.tr.md +767 -0
- package/README.uk.md +767 -0
- package/README.vi.md +767 -0
- package/README.zh-TW.md +768 -0
- package/README.zh.md +768 -0
- package/dist/app/index.d.ts +3 -0
- package/dist/app/index.d.ts.map +1 -0
- package/dist/app/index.js +614 -0
- package/dist/app/index.js.map +1 -0
- package/dist/composite/analyze.d.ts +3 -0
- package/dist/composite/analyze.d.ts.map +1 -0
- package/dist/composite/analyze.js +59 -0
- package/dist/composite/analyze.js.map +1 -0
- package/dist/composite/correlate.d.ts +3 -0
- package/dist/composite/correlate.d.ts.map +1 -0
- package/dist/composite/correlate.js +184 -0
- package/dist/composite/correlate.js.map +1 -0
- package/dist/composite/enumerate.d.ts +3 -0
- package/dist/composite/enumerate.d.ts.map +1 -0
- package/dist/composite/enumerate.js +94 -0
- package/dist/composite/enumerate.js.map +1 -0
- package/dist/composite/helpers.d.ts +22 -0
- package/dist/composite/helpers.d.ts.map +1 -0
- package/dist/composite/helpers.js +111 -0
- package/dist/composite/helpers.js.map +1 -0
- package/dist/composite/index.d.ts +3 -0
- package/dist/composite/index.d.ts.map +1 -0
- package/dist/composite/index.js +29 -0
- package/dist/composite/index.js.map +1 -0
- package/dist/composite/meta.d.ts +3 -0
- package/dist/composite/meta.d.ts.map +1 -0
- package/dist/composite/meta.js +23 -0
- package/dist/composite/meta.js.map +1 -0
- package/dist/composite/osint.d.ts +3 -0
- package/dist/composite/osint.d.ts.map +1 -0
- package/dist/composite/osint.js +40 -0
- package/dist/composite/osint.js.map +1 -0
- package/dist/composite/recon.d.ts +3 -0
- package/dist/composite/recon.d.ts.map +1 -0
- package/dist/composite/recon.js +131 -0
- package/dist/composite/recon.js.map +1 -0
- package/dist/composite/scan-dns.d.ts +3 -0
- package/dist/composite/scan-dns.d.ts.map +1 -0
- package/dist/composite/scan-dns.js +44 -0
- package/dist/composite/scan-dns.js.map +1 -0
- package/dist/composite/scan-http.d.ts +3 -0
- package/dist/composite/scan-http.d.ts.map +1 -0
- package/dist/composite/scan-http.js +68 -0
- package/dist/composite/scan-http.js.map +1 -0
- package/dist/composite/scan-paths.d.ts +3 -0
- package/dist/composite/scan-paths.d.ts.map +1 -0
- package/dist/composite/scan-paths.js +32 -0
- package/dist/composite/scan-paths.js.map +1 -0
- package/dist/composite/scan-ports.d.ts +3 -0
- package/dist/composite/scan-ports.d.ts.map +1 -0
- package/dist/composite/scan-ports.js +79 -0
- package/dist/composite/scan-ports.js.map +1 -0
- package/dist/composite/scan-services.d.ts +3 -0
- package/dist/composite/scan-services.d.ts.map +1 -0
- package/dist/composite/scan-services.js +111 -0
- package/dist/composite/scan-services.js.map +1 -0
- package/dist/composite/scan-tls.d.ts +3 -0
- package/dist/composite/scan-tls.d.ts.map +1 -0
- package/dist/composite/scan-tls.js +32 -0
- package/dist/composite/scan-tls.js.map +1 -0
- package/dist/composite/scan-waf.d.ts +3 -0
- package/dist/composite/scan-waf.d.ts.map +1 -0
- package/dist/composite/scan-waf.js +35 -0
- package/dist/composite/scan-waf.js.map +1 -0
- package/dist/correlation/index.d.ts +3 -0
- package/dist/correlation/index.d.ts.map +1 -0
- package/dist/correlation/index.js +1044 -0
- package/dist/correlation/index.js.map +1 -0
- package/dist/data/analytics-patterns.d.ts +21 -0
- package/dist/data/analytics-patterns.d.ts.map +1 -0
- package/dist/data/analytics-patterns.js +449 -0
- package/dist/data/analytics-patterns.js.map +1 -0
- package/dist/data/app-signatures.d.ts +52 -0
- package/dist/data/app-signatures.d.ts.map +1 -0
- package/dist/data/app-signatures.js +1143 -0
- package/dist/data/app-signatures.js.map +1 -0
- package/dist/data/c2-signatures.d.ts +54 -0
- package/dist/data/c2-signatures.d.ts.map +1 -0
- package/dist/data/c2-signatures.js +256 -0
- package/dist/data/c2-signatures.js.map +1 -0
- package/dist/data/cloud-ranges.d.ts +34 -0
- package/dist/data/cloud-ranges.d.ts.map +1 -0
- package/dist/data/cloud-ranges.js +628 -0
- package/dist/data/cloud-ranges.js.map +1 -0
- package/dist/data/cookie-patterns.d.ts +28 -0
- package/dist/data/cookie-patterns.d.ts.map +1 -0
- package/dist/data/cookie-patterns.js +225 -0
- package/dist/data/cookie-patterns.js.map +1 -0
- package/dist/data/error-signatures.d.ts +19 -0
- package/dist/data/error-signatures.d.ts.map +1 -0
- package/dist/data/error-signatures.js +321 -0
- package/dist/data/error-signatures.js.map +1 -0
- package/dist/data/favicon-hashes.d.ts +25 -0
- package/dist/data/favicon-hashes.d.ts.map +1 -0
- package/dist/data/favicon-hashes.js +249 -0
- package/dist/data/favicon-hashes.js.map +1 -0
- package/dist/data/h2-signatures.d.ts +50 -0
- package/dist/data/h2-signatures.d.ts.map +1 -0
- package/dist/data/h2-signatures.js +211 -0
- package/dist/data/h2-signatures.js.map +1 -0
- package/dist/data/header-order.d.ts +38 -0
- package/dist/data/header-order.d.ts.map +1 -0
- package/dist/data/header-order.js +185 -0
- package/dist/data/header-order.js.map +1 -0
- package/dist/data/jarm-signatures.d.ts +25 -0
- package/dist/data/jarm-signatures.d.ts.map +1 -0
- package/dist/data/jarm-signatures.js +213 -0
- package/dist/data/jarm-signatures.js.map +1 -0
- package/dist/data/saas-patterns.d.ts +23 -0
- package/dist/data/saas-patterns.d.ts.map +1 -0
- package/dist/data/saas-patterns.js +139 -0
- package/dist/data/saas-patterns.js.map +1 -0
- package/dist/data/sensitive-paths.d.ts +12 -0
- package/dist/data/sensitive-paths.d.ts.map +1 -0
- package/dist/data/sensitive-paths.js +1539 -0
- package/dist/data/sensitive-paths.js.map +1 -0
- package/dist/data/service-banners.d.ts +59 -0
- package/dist/data/service-banners.d.ts.map +1 -0
- package/dist/data/service-banners.js +323 -0
- package/dist/data/service-banners.js.map +1 -0
- package/dist/data/smtp-signatures.d.ts +12 -0
- package/dist/data/smtp-signatures.d.ts.map +1 -0
- package/dist/data/smtp-signatures.js +350 -0
- package/dist/data/smtp-signatures.js.map +1 -0
- package/dist/data/takeover-patterns.d.ts +37 -0
- package/dist/data/takeover-patterns.d.ts.map +1 -0
- package/dist/data/takeover-patterns.js +249 -0
- package/dist/data/takeover-patterns.js.map +1 -0
- package/dist/data/tech-patterns.d.ts +44 -0
- package/dist/data/tech-patterns.d.ts.map +1 -0
- package/dist/data/tech-patterns.js +690 -0
- package/dist/data/tech-patterns.js.map +1 -0
- package/dist/data/waf-signatures.d.ts +21 -0
- package/dist/data/waf-signatures.d.ts.map +1 -0
- package/dist/data/waf-signatures.js +318 -0
- package/dist/data/waf-signatures.js.map +1 -0
- package/dist/dns/index.d.ts +3 -0
- package/dist/dns/index.d.ts.map +1 -0
- package/dist/dns/index.js +1067 -0
- package/dist/dns/index.js.map +1 -0
- package/dist/enum/index.d.ts +3 -0
- package/dist/enum/index.d.ts.map +1 -0
- package/dist/enum/index.js +818 -0
- package/dist/enum/index.js.map +1 -0
- package/dist/h2/index.d.ts +3 -0
- package/dist/h2/index.d.ts.map +1 -0
- package/dist/h2/index.js +414 -0
- package/dist/h2/index.js.map +1 -0
- package/dist/http/index.d.ts +3 -0
- package/dist/http/index.d.ts.map +1 -0
- package/dist/http/index.js +2444 -0
- package/dist/http/index.js.map +1 -0
- package/dist/identify/index.d.ts +3 -0
- package/dist/identify/index.d.ts.map +1 -0
- package/dist/identify/index.js +447 -0
- package/dist/identify/index.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +165 -0
- package/dist/index.js.map +1 -0
- package/dist/infra/index.d.ts +3 -0
- package/dist/infra/index.d.ts.map +1 -0
- package/dist/infra/index.js +989 -0
- package/dist/infra/index.js.map +1 -0
- package/dist/iot/index.d.ts +3 -0
- package/dist/iot/index.d.ts.map +1 -0
- package/dist/iot/index.js +610 -0
- package/dist/iot/index.js.map +1 -0
- package/dist/meta/index.d.ts +3 -0
- package/dist/meta/index.d.ts.map +1 -0
- package/dist/meta/index.js +442 -0
- package/dist/meta/index.js.map +1 -0
- package/dist/osint/index.d.ts +3 -0
- package/dist/osint/index.d.ts.map +1 -0
- package/dist/osint/index.js +687 -0
- package/dist/osint/index.js.map +1 -0
- package/dist/passive/index.d.ts +3 -0
- package/dist/passive/index.d.ts.map +1 -0
- package/dist/passive/index.js +944 -0
- package/dist/passive/index.js.map +1 -0
- package/dist/path/index.d.ts +3 -0
- package/dist/path/index.d.ts.map +1 -0
- package/dist/path/index.js +878 -0
- package/dist/path/index.js.map +1 -0
- package/dist/protocol/mcp-server.d.ts +4 -0
- package/dist/protocol/mcp-server.d.ts.map +1 -0
- package/dist/protocol/mcp-server.js +32 -0
- package/dist/protocol/mcp-server.js.map +1 -0
- package/dist/protocol/tools.d.ts +3 -0
- package/dist/protocol/tools.d.ts.map +1 -0
- package/dist/protocol/tools.js +5 -0
- package/dist/protocol/tools.js.map +1 -0
- package/dist/service/index.d.ts +3 -0
- package/dist/service/index.d.ts.map +1 -0
- package/dist/service/index.js +1053 -0
- package/dist/service/index.js.map +1 -0
- package/dist/smtp/index.d.ts +3 -0
- package/dist/smtp/index.d.ts.map +1 -0
- package/dist/smtp/index.js +437 -0
- package/dist/smtp/index.js.map +1 -0
- package/dist/ssh/index.d.ts +3 -0
- package/dist/ssh/index.d.ts.map +1 -0
- package/dist/ssh/index.js +676 -0
- package/dist/ssh/index.js.map +1 -0
- package/dist/tcp/index.d.ts +3 -0
- package/dist/tcp/index.d.ts.map +1 -0
- package/dist/tcp/index.js +369 -0
- package/dist/tcp/index.js.map +1 -0
- package/dist/timing/index.d.ts +3 -0
- package/dist/timing/index.d.ts.map +1 -0
- package/dist/timing/index.js +425 -0
- package/dist/timing/index.js.map +1 -0
- package/dist/tls/index.d.ts +3 -0
- package/dist/tls/index.d.ts.map +1 -0
- package/dist/tls/index.js +1332 -0
- package/dist/tls/index.js.map +1 -0
- package/dist/types/index.d.ts +26 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +8 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/cache.d.ts +11 -0
- package/dist/utils/cache.d.ts.map +1 -0
- package/dist/utils/cache.js +35 -0
- package/dist/utils/cache.js.map +1 -0
- package/dist/utils/murmurhash3.d.ts +3 -0
- package/dist/utils/murmurhash3.d.ts.map +1 -0
- package/dist/utils/murmurhash3.js +57 -0
- package/dist/utils/murmurhash3.js.map +1 -0
- package/dist/utils/rate-limiter.d.ts +10 -0
- package/dist/utils/rate-limiter.d.ts.map +1 -0
- package/dist/utils/rate-limiter.js +35 -0
- package/dist/utils/rate-limiter.js.map +1 -0
- package/dist/utils/require-key.d.ts +2 -0
- package/dist/utils/require-key.d.ts.map +1 -0
- package/dist/utils/require-key.js +8 -0
- package/dist/utils/require-key.js.map +1 -0
- package/dist/waf/index.d.ts +3 -0
- package/dist/waf/index.d.ts.map +1 -0
- package/dist/waf/index.js +767 -0
- package/dist/waf/index.js.map +1 -0
- package/dist/web/index.d.ts +3 -0
- package/dist/web/index.d.ts.map +1 -0
- package/dist/web/index.js +1366 -0
- package/dist/web/index.js.map +1 -0
- package/package.json +66 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ssh/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tcp/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAe,MAAM,mBAAmB,CAAC;AAkc9D,eAAO,MAAM,QAAQ,EAAE,OAAO,EAwB7B,CAAC"}
|
|
@@ -0,0 +1,369 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { RateLimiter } from "../utils/rate-limiter.js";
|
|
3
|
+
import { json } from "../types/index.js";
|
|
4
|
+
import * as net from "node:net";
|
|
5
|
+
const limiter = new RateLimiter(200);
|
|
6
|
+
// ─── Helpers ───
|
|
7
|
+
const DEFAULT_PORTS = [80, 443, 22, 8080, 8443];
|
|
8
|
+
const CONNECT_TIMEOUT = 5_000;
|
|
9
|
+
const BANNER_TIMEOUT = 2_000;
|
|
10
|
+
/** Connect to a TCP port and measure timing + grab initial banner data. */
|
|
11
|
+
function tcpConnect(host, port) {
|
|
12
|
+
return new Promise((resolve) => {
|
|
13
|
+
const start = performance.now();
|
|
14
|
+
const result = { port, open: false, connectTimeMs: 0 };
|
|
15
|
+
const connectTimer = setTimeout(() => {
|
|
16
|
+
socket.destroy();
|
|
17
|
+
result.error = "connection timeout";
|
|
18
|
+
resolve(result);
|
|
19
|
+
}, CONNECT_TIMEOUT);
|
|
20
|
+
const socket = net.connect({ host, port }, () => {
|
|
21
|
+
clearTimeout(connectTimer);
|
|
22
|
+
result.open = true;
|
|
23
|
+
result.connectTimeMs = Math.round((performance.now() - start) * 100) / 100;
|
|
24
|
+
result.remoteFamily = socket.remoteFamily;
|
|
25
|
+
result.localPort = socket.localPort;
|
|
26
|
+
const chunks = [];
|
|
27
|
+
let bannerTimer = null;
|
|
28
|
+
const finish = () => {
|
|
29
|
+
if (bannerTimer)
|
|
30
|
+
clearTimeout(bannerTimer);
|
|
31
|
+
socket.destroy();
|
|
32
|
+
if (chunks.length > 0) {
|
|
33
|
+
const raw = Buffer.concat(chunks);
|
|
34
|
+
// Attempt UTF-8 decode; fall back to hex for binary
|
|
35
|
+
const text = raw.toString("utf-8");
|
|
36
|
+
const hasBinary = text.includes("\ufffd") || /[\x00-\x08\x0e-\x1f]/.test(text.slice(0, 64));
|
|
37
|
+
result.banner = hasBinary
|
|
38
|
+
? `(binary ${raw.length} bytes) ${raw.toString("hex").slice(0, 128)}`
|
|
39
|
+
: text.trim().slice(0, 1024);
|
|
40
|
+
}
|
|
41
|
+
resolve(result);
|
|
42
|
+
};
|
|
43
|
+
socket.on("data", (data) => {
|
|
44
|
+
chunks.push(data);
|
|
45
|
+
// If we got data, give a short window for more, then finish
|
|
46
|
+
if (bannerTimer)
|
|
47
|
+
clearTimeout(bannerTimer);
|
|
48
|
+
bannerTimer = setTimeout(finish, 500);
|
|
49
|
+
});
|
|
50
|
+
// Wait up to BANNER_TIMEOUT for any data
|
|
51
|
+
bannerTimer = setTimeout(finish, BANNER_TIMEOUT);
|
|
52
|
+
});
|
|
53
|
+
socket.on("error", (err) => {
|
|
54
|
+
clearTimeout(connectTimer);
|
|
55
|
+
result.error = err.message;
|
|
56
|
+
resolve(result);
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
function detectProtocol(banner, rawBanner) {
|
|
61
|
+
if (!banner)
|
|
62
|
+
return null;
|
|
63
|
+
if (banner.startsWith("SSH-")) {
|
|
64
|
+
const match = banner.match(/^SSH-([\d.]+)-(.+?)(?:\s+(.+))?$/);
|
|
65
|
+
return {
|
|
66
|
+
protocol: "SSH",
|
|
67
|
+
confidence: "high",
|
|
68
|
+
version: match ? match[2] : undefined,
|
|
69
|
+
details: match?.[3] ?? undefined,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
if (/^220[\s-]/.test(banner)) {
|
|
73
|
+
// Distinguish FTP vs SMTP
|
|
74
|
+
if (/ftp|vsftpd|proftpd|pure-ftpd|filezilla/i.test(banner)) {
|
|
75
|
+
return { protocol: "FTP", confidence: "high", details: banner.split("\n")[0] };
|
|
76
|
+
}
|
|
77
|
+
if (/smtp|mail|postfix|sendmail|exim|exchange|esmtp/i.test(banner)) {
|
|
78
|
+
return { protocol: "SMTP", confidence: "high", details: banner.split("\n")[0] };
|
|
79
|
+
}
|
|
80
|
+
return { protocol: "FTP/SMTP", confidence: "medium", details: banner.split("\n")[0] };
|
|
81
|
+
}
|
|
82
|
+
if (banner.startsWith("* OK")) {
|
|
83
|
+
return { protocol: "IMAP", confidence: "high", details: banner.split("\n")[0] };
|
|
84
|
+
}
|
|
85
|
+
if (banner.startsWith("+OK")) {
|
|
86
|
+
return { protocol: "POP3", confidence: "high", details: banner.split("\n")[0] };
|
|
87
|
+
}
|
|
88
|
+
if (banner.startsWith("HTTP/")) {
|
|
89
|
+
const match = banner.match(/^HTTP\/([\d.]+)\s+(\d+)/);
|
|
90
|
+
return {
|
|
91
|
+
protocol: "HTTP",
|
|
92
|
+
confidence: "high",
|
|
93
|
+
version: match ? match[1] : undefined,
|
|
94
|
+
details: match ? `Status ${match[2]}` : undefined,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
if (banner.startsWith("-NOAUTH") || banner.startsWith("+PONG") || banner.startsWith("-ERR") || banner.startsWith("$")) {
|
|
98
|
+
return { protocol: "Redis", confidence: "high" };
|
|
99
|
+
}
|
|
100
|
+
if (banner.startsWith("STAT ") || banner.startsWith("END")) {
|
|
101
|
+
return { protocol: "Memcached", confidence: "high" };
|
|
102
|
+
}
|
|
103
|
+
// MySQL greeting: starts with binary packet containing 0x0a (protocol version 10)
|
|
104
|
+
if (rawBanner && rawBanner.startsWith("(binary")) {
|
|
105
|
+
const hexPart = rawBanner.replace(/^\(binary \d+ bytes\)\s*/, "");
|
|
106
|
+
// MySQL: packet length (3 bytes) + sequence (1 byte) + 0x0a
|
|
107
|
+
if (hexPart.length >= 10 && hexPart.substring(8, 10) === "0a") {
|
|
108
|
+
return { protocol: "MySQL", confidence: "medium" };
|
|
109
|
+
}
|
|
110
|
+
// MongoDB wire protocol
|
|
111
|
+
if (hexPart.length > 24) {
|
|
112
|
+
return { protocol: "Binary Protocol (possible MongoDB/custom)", confidence: "low" };
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
// ─── Tool 1: tcp_probe ───
|
|
118
|
+
async function tcpProbe(args, _ctx) {
|
|
119
|
+
const host = args.host;
|
|
120
|
+
const ports = args.ports ?? DEFAULT_PORTS;
|
|
121
|
+
await limiter.acquire();
|
|
122
|
+
const results = [];
|
|
123
|
+
for (const port of ports) {
|
|
124
|
+
const result = await tcpConnect(host, port);
|
|
125
|
+
results.push(result);
|
|
126
|
+
}
|
|
127
|
+
const openPorts = results.filter((r) => r.open);
|
|
128
|
+
const closedPorts = results.filter((r) => !r.open);
|
|
129
|
+
// Backend analysis: compare timing and banners across open ports
|
|
130
|
+
const analysis = {
|
|
131
|
+
openPorts: openPorts.map((r) => r.port),
|
|
132
|
+
closedPorts: closedPorts.map((r) => r.port),
|
|
133
|
+
backendGroups: [],
|
|
134
|
+
loadBalancerDetected: false,
|
|
135
|
+
notes: [],
|
|
136
|
+
};
|
|
137
|
+
// Group by similar timing (within 20% tolerance) and banner similarity
|
|
138
|
+
if (openPorts.length > 1) {
|
|
139
|
+
const groups = new Map();
|
|
140
|
+
for (const result of openPorts) {
|
|
141
|
+
const bannerKey = result.banner?.slice(0, 50) ?? "(no banner)";
|
|
142
|
+
let placed = false;
|
|
143
|
+
for (const [key, group] of groups) {
|
|
144
|
+
const avgTime = group.reduce((sum, r) => sum + r.connectTimeMs, 0) / group.length;
|
|
145
|
+
const timeDiff = Math.abs(result.connectTimeMs - avgTime) / avgTime;
|
|
146
|
+
const samePrefix = key === bannerKey;
|
|
147
|
+
if (timeDiff < 0.2 && samePrefix) {
|
|
148
|
+
group.push(result);
|
|
149
|
+
placed = true;
|
|
150
|
+
break;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
if (!placed) {
|
|
154
|
+
const key = bannerKey;
|
|
155
|
+
if (!groups.has(key))
|
|
156
|
+
groups.set(key, []);
|
|
157
|
+
groups.get(key).push(result);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
for (const [bannerKey, group] of groups) {
|
|
161
|
+
const avgTime = Math.round((group.reduce((sum, r) => sum + r.connectTimeMs, 0) / group.length) * 100) / 100;
|
|
162
|
+
analysis.backendGroups.push({
|
|
163
|
+
ports: group.map((r) => r.port),
|
|
164
|
+
avgConnectTimeMs: avgTime,
|
|
165
|
+
banner: bannerKey !== "(no banner)" ? bannerKey : undefined,
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
if (analysis.backendGroups.length > 1) {
|
|
169
|
+
analysis.loadBalancerDetected = true;
|
|
170
|
+
analysis.notes.push("Different backend groups detected across ports — possible load balancer, reverse proxy, or different services.");
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
analysis.notes.push("All open ports show similar timing and banner patterns — likely same backend.");
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
// Timing notes
|
|
177
|
+
if (openPorts.length > 0) {
|
|
178
|
+
const avgConnect = openPorts.reduce((sum, r) => sum + r.connectTimeMs, 0) / openPorts.length;
|
|
179
|
+
if (avgConnect < 5) {
|
|
180
|
+
analysis.notes.push("Very low latency — target is likely on same network or nearby.");
|
|
181
|
+
}
|
|
182
|
+
else if (avgConnect > 200) {
|
|
183
|
+
analysis.notes.push("High connection latency — target may be geographically distant or behind rate limiting.");
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
return json({
|
|
187
|
+
host,
|
|
188
|
+
probes: results.map((r) => ({
|
|
189
|
+
port: r.port,
|
|
190
|
+
open: r.open,
|
|
191
|
+
connectTimeMs: r.connectTimeMs,
|
|
192
|
+
remoteFamily: r.remoteFamily,
|
|
193
|
+
localPort: r.localPort,
|
|
194
|
+
banner: r.banner,
|
|
195
|
+
error: r.error,
|
|
196
|
+
})),
|
|
197
|
+
analysis,
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
// ─── Tool 2: tcp_banner ───
|
|
201
|
+
/** Protocol probes to send when no banner arrives automatically. */
|
|
202
|
+
const PROTOCOL_PROBES = [
|
|
203
|
+
{ name: "Redis PING", probe: Buffer.from("PING\r\n"), waitMs: 1500 },
|
|
204
|
+
{ name: "Memcached stats", probe: Buffer.from("stats\r\n"), waitMs: 1500 },
|
|
205
|
+
{ name: "HTTP GET", probe: Buffer.from("GET / HTTP/1.0\r\nHost: target\r\n\r\n"), waitMs: 2000 },
|
|
206
|
+
];
|
|
207
|
+
function tcpBannerGrab(host, port) {
|
|
208
|
+
return new Promise((resolve) => {
|
|
209
|
+
const start = performance.now();
|
|
210
|
+
let finished = false;
|
|
211
|
+
const finish = (result) => {
|
|
212
|
+
if (finished)
|
|
213
|
+
return;
|
|
214
|
+
finished = true;
|
|
215
|
+
socket.destroy();
|
|
216
|
+
resolve(result);
|
|
217
|
+
};
|
|
218
|
+
const connectTimer = setTimeout(() => {
|
|
219
|
+
finish({
|
|
220
|
+
banner: null,
|
|
221
|
+
protocol: null,
|
|
222
|
+
probeSent: null,
|
|
223
|
+
connectTimeMs: 0,
|
|
224
|
+
});
|
|
225
|
+
}, CONNECT_TIMEOUT);
|
|
226
|
+
const socket = net.connect({ host, port }, () => {
|
|
227
|
+
clearTimeout(connectTimer);
|
|
228
|
+
const connectTimeMs = Math.round((performance.now() - start) * 100) / 100;
|
|
229
|
+
const chunks = [];
|
|
230
|
+
let probeIndex = -1;
|
|
231
|
+
let probeSent = null;
|
|
232
|
+
let dataTimer = null;
|
|
233
|
+
let waitingForAutoResponse = true;
|
|
234
|
+
const processResponse = () => {
|
|
235
|
+
if (dataTimer)
|
|
236
|
+
clearTimeout(dataTimer);
|
|
237
|
+
const raw = Buffer.concat(chunks);
|
|
238
|
+
const text = raw.toString("utf-8").trim();
|
|
239
|
+
const hasBinary = /[\x00-\x08\x0e-\x1f]/.test(text.slice(0, 64));
|
|
240
|
+
const bannerStr = hasBinary
|
|
241
|
+
? `(binary ${raw.length} bytes) ${raw.toString("hex").slice(0, 128)}`
|
|
242
|
+
: text.slice(0, 2048);
|
|
243
|
+
const detected = detectProtocol(bannerStr, hasBinary ? bannerStr : undefined);
|
|
244
|
+
finish({
|
|
245
|
+
banner: bannerStr || null,
|
|
246
|
+
protocol: detected,
|
|
247
|
+
probeSent,
|
|
248
|
+
connectTimeMs,
|
|
249
|
+
rawHex: hasBinary ? raw.toString("hex").slice(0, 256) : undefined,
|
|
250
|
+
});
|
|
251
|
+
};
|
|
252
|
+
socket.on("data", (data) => {
|
|
253
|
+
chunks.push(data);
|
|
254
|
+
waitingForAutoResponse = false;
|
|
255
|
+
// Give a short window for more data
|
|
256
|
+
if (dataTimer)
|
|
257
|
+
clearTimeout(dataTimer);
|
|
258
|
+
dataTimer = setTimeout(processResponse, 500);
|
|
259
|
+
});
|
|
260
|
+
const sendNextProbe = () => {
|
|
261
|
+
if (!waitingForAutoResponse && chunks.length > 0) {
|
|
262
|
+
// Already got data, process it
|
|
263
|
+
processResponse();
|
|
264
|
+
return;
|
|
265
|
+
}
|
|
266
|
+
probeIndex++;
|
|
267
|
+
if (probeIndex >= PROTOCOL_PROBES.length) {
|
|
268
|
+
// No more probes to try — return what we have (if anything)
|
|
269
|
+
if (chunks.length > 0) {
|
|
270
|
+
processResponse();
|
|
271
|
+
}
|
|
272
|
+
else {
|
|
273
|
+
finish({
|
|
274
|
+
banner: null,
|
|
275
|
+
protocol: null,
|
|
276
|
+
probeSent,
|
|
277
|
+
connectTimeMs,
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
return;
|
|
281
|
+
}
|
|
282
|
+
const probe = PROTOCOL_PROBES[probeIndex];
|
|
283
|
+
probeSent = probe.name;
|
|
284
|
+
waitingForAutoResponse = false;
|
|
285
|
+
chunks.length = 0;
|
|
286
|
+
try {
|
|
287
|
+
socket.write(probe.probe);
|
|
288
|
+
}
|
|
289
|
+
catch {
|
|
290
|
+
// Socket may have been closed by remote
|
|
291
|
+
finish({
|
|
292
|
+
banner: null,
|
|
293
|
+
protocol: null,
|
|
294
|
+
probeSent,
|
|
295
|
+
connectTimeMs,
|
|
296
|
+
});
|
|
297
|
+
return;
|
|
298
|
+
}
|
|
299
|
+
dataTimer = setTimeout(() => {
|
|
300
|
+
if (chunks.length > 0) {
|
|
301
|
+
processResponse();
|
|
302
|
+
}
|
|
303
|
+
else {
|
|
304
|
+
sendNextProbe();
|
|
305
|
+
}
|
|
306
|
+
}, probe.waitMs);
|
|
307
|
+
};
|
|
308
|
+
// First, wait for auto-response from server (some protocols send greeting automatically)
|
|
309
|
+
dataTimer = setTimeout(() => {
|
|
310
|
+
if (chunks.length > 0) {
|
|
311
|
+
processResponse();
|
|
312
|
+
}
|
|
313
|
+
else {
|
|
314
|
+
// No auto-banner; start sending probes
|
|
315
|
+
sendNextProbe();
|
|
316
|
+
}
|
|
317
|
+
}, BANNER_TIMEOUT);
|
|
318
|
+
});
|
|
319
|
+
socket.on("error", (err) => {
|
|
320
|
+
clearTimeout(connectTimer);
|
|
321
|
+
finish({
|
|
322
|
+
banner: null,
|
|
323
|
+
protocol: null,
|
|
324
|
+
probeSent: null,
|
|
325
|
+
connectTimeMs: 0,
|
|
326
|
+
});
|
|
327
|
+
});
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
async function tcpBanner(args, _ctx) {
|
|
331
|
+
const host = args.host;
|
|
332
|
+
const port = args.port;
|
|
333
|
+
await limiter.acquire();
|
|
334
|
+
const result = await tcpBannerGrab(host, port);
|
|
335
|
+
return json({
|
|
336
|
+
host,
|
|
337
|
+
port,
|
|
338
|
+
banner: result.banner,
|
|
339
|
+
protocol: result.protocol,
|
|
340
|
+
probeSent: result.probeSent,
|
|
341
|
+
connectTimeMs: result.connectTimeMs,
|
|
342
|
+
rawHex: result.rawHex,
|
|
343
|
+
});
|
|
344
|
+
}
|
|
345
|
+
// ─── Tool Definitions ───
|
|
346
|
+
export const tcpTools = [
|
|
347
|
+
{
|
|
348
|
+
name: "tcp_probe",
|
|
349
|
+
description: "TCP connection fingerprint. Connects to target port(s) and measures SYN-ACK latency, reads initial banners, and compares signals across ports to detect load balancing or different backends. Useful for infrastructure mapping without HTTP.",
|
|
350
|
+
schema: {
|
|
351
|
+
host: z.string().describe("Target host"),
|
|
352
|
+
ports: z
|
|
353
|
+
.array(z.number())
|
|
354
|
+
.optional()
|
|
355
|
+
.describe("Ports to probe (default: [80, 443, 22, 8080, 8443])"),
|
|
356
|
+
},
|
|
357
|
+
execute: tcpProbe,
|
|
358
|
+
},
|
|
359
|
+
{
|
|
360
|
+
name: "tcp_banner",
|
|
361
|
+
description: "Banner grab on arbitrary TCP port. Connects via TCP, reads initial server data, and auto-detects protocol (SSH, FTP, SMTP, MySQL, Redis, IMAP, POP3, HTTP, Memcached, MongoDB). Sends protocol-specific probes for services that do not send a greeting automatically.",
|
|
362
|
+
schema: {
|
|
363
|
+
host: z.string().describe("Target host"),
|
|
364
|
+
port: z.number().describe("TCP port to grab banner from"),
|
|
365
|
+
},
|
|
366
|
+
execute: tcpBanner,
|
|
367
|
+
},
|
|
368
|
+
];
|
|
369
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tcp/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/timing/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAe,MAAM,mBAAmB,CAAC;AA6gB9D,eAAO,MAAM,WAAW,EAAE,OAAO,EAuChC,CAAC"}
|