You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 125ac07
Browse filesBrowse the repository at this point in the historyBrowse files
docs: correct honeypot detection docs for operators
- CLAUDE.md: HONEYPOT_SIGNATURES ships empty in this release; no active
generic signatures, the Heralding VNC tell is the only named-product match
the code can produce, and the generic mechanism is retained solely as an
extensibility point for future entries verified against real -sV output.
- CLAUDE.md + config.json.sample + the __honeypot_active_confirm_note__
constant in spoonmap.py: the active probe runs on hosts flagged by the
TTL-spread or port-profile signals, not on "any flagged host" — a host
flagged only by the older tarpit open-port-ratio heuristic feeds the finding
but is never probed.
- CLAUDE.md: document three limitations plainly, none of them fixed in code.
(1) On a Full 1-65535 scan essentially every ephemeral port is already
scanned, so _select_confirm_probe_ports() finds few or no candidates and the
probe silently does nothing. (2) All honeypot detection lives in mass_scan();
the direct-nmap port-discovery path used below nmap_threshold performs none
of it. (3) Every signal only becomes a FINDING when script_scan is true,
since generate_findings() returns immediately without nse_results/ — the
Stage 1 stdout warnings and discovery/*.txt files are written either way,
because those come from mass_scan().
- CLAUDE.md: record the unconditional truncation of the two new discovery
files, the pre-loop `enabled` check, and the new scope filter.
- README.md: add the missing `honeypot_active_confirm` config-key row, and
add "Likely Honeypot / Decoy Host" to the findings-severity catalog at all
three tiers it can now emit, following the table's existing one-row-per-
severity convention for multi-severity findings (cf. the SNMP and LLM-API
entries).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|`resume`|`"True"` / `"False"`| Skip completed port discovery on restart (default: False) |
309
309
|`check_for_updates`|`"True"` / `"False"`| Contact api.github.com at startup to check for a newer release. Off unless set; see `--check-update` for a one-off check (default: False) |
310
310
|`scanner_profile`|`false`, `"random"`, or an object | Substitutes strings that identify nmap/SpooNMAP in probe traffic (e.g. the RDP probe's `mstshash=nmap` cookie). Off unless set — see below |
311
+
|`honeypot_active_confirm`|`"True"` / `"False"`| Actively confirm suspected decoy hosts with a few raw TCP connects to unscanned high ports. Off unless set; only probes in-scope hosts flagged by the TTL-spread or port-profile signals, and only on the masscan scan path (default: False) |
311
312
|`__generated_by_prompts__`| String | Present only in a config the prompts wrote. While it is present, **[d]elete**/**[a]ppend** re-ask the options using this file's values as defaults; remove it to keep them fixed |
312
313
313
314
Keys beginning and ending with `__` are documentation and are ignored by the loader, so you can annotate the file freely — a re-prompted run preserves them.
@@ -554,6 +555,7 @@ After scanning, `generate_findings()` parses all nmap XML results and produces s
554
555
| HIGH | IKE Aggressive Mode with Pre-Shared Key (U:500, confirmed by `ike-version`) |
555
556
| HIGH | RealVNC Authentication Bypass (CVE-2006-2369) (5900/5901, confirmed by `realvnc-auth-bypass`) |
556
557
| HIGH | Service Exposed Externally (databases, RDP, SMB, SNMP, WebLogic, VNC, WSUS 8530/8531, etc. — external scan only) |
558
+
| HIGH | Likely Honeypot / Decoy Host — named product match (Heralding VNC) or an active confirmation-probe answer |
557
559
| MEDIUM | SMBv1 protocol enabled |
558
560
| MEDIUM | Weak SSH algorithms (deprecated ciphers/MACs/KEX) |
559
561
| MEDIUM | Java RMI registry exposed |
@@ -563,6 +565,8 @@ After scanning, `generate_findings()` parses all nmap XML results and produces s
563
565
| MEDIUM | OpenAI-Compatible LLM API Unauthenticated (1234/1337/3000/8000, custom NSE — internal scan) |
564
566
| MEDIUM | Gradio LLM Web UI Accessible (7860, custom NSE — internal scan) |
565
567
| MEDIUM | KoboldCpp LLM API Unauthenticated (5001, custom NSE — internal scan) |
568
+
| MEDIUM | Likely Honeypot / Decoy Host — two or more heuristic signals on one host |
569
+
| LOW | Likely Honeypot / Decoy Host — exactly one heuristic signal (tarpit open-port ratio, TTL spread, port profile, unmatched fingerprints, or silent open ports) |
566
570
| LOW | Anonymous FTP login (default LOW — review the share; escalate if it exposes sensitive data or is writable) |
567
571
| LOW | FTP exposed externally (plaintext protocol — credentials/data in cleartext; use FTPS/SFTP) |
568
572
| LOW | Telnet exposed externally (plaintext protocol — credentials/data in cleartext; use SSH) |
Copy file name to clipboardExpand all lines: config.json.sample
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -18,7 +18,7 @@
18
18
"resume" : false,
19
19
"__check_for_updates_note__": "Optional. When true, SpooNMAP contacts api.github.com at startup to see whether a newer release exists. Default false, and absent means false: the tool makes no network connection other than the scan itself unless you turn this on. Use --check-update for a one-off check without enabling it here.",
20
20
"check_for_updates": false,
21
-
"__honeypot_active_confirm_note__": "Optional. When true, SpooNMAP attempts a small number of raw TCP connects against unscanned high ports on any host flagged as a suspected honeypot, to confirm it. Default false, and absent means false: the tool sends no traffic beyond the scan itself unless you turn this on. A confirmed host answered a port that was never part of this scan, which is a strong tell that it accepts every connection rather than running a real service.",
21
+
"__honeypot_active_confirm_note__": "Optional. When true, SpooNMAP attempts a small number of raw TCP connects against unscanned high ports on any host flagged by the TTL-spread or port-profile signals, to confirm it. Hosts flagged only by the tarpit open-port-ratio heuristic are not probed. Default false, and absent means false: the tool sends no traffic beyond the scan itself unless you turn this on. A confirmed host answered a port that was never part of this scan, which is a strong tell that it accepts every connection rather than running a real service. Limitations: hosts outside target_file are never probed; on a Full (1-65535) scan there are almost no unscanned ports left to probe, so it does little or nothing; and honeypot detection as a whole only runs on the masscan path, not the direct-nmap path used for scans below nmap_threshold.",
22
22
"honeypot_active_confirm": false,
23
23
"__target_scan_choices__" : "External, Internal (case-insensitive; any other value stops the run rather than scanning with the Internal-only checks silently skipped)",
0 commit comments