noise-analysis
05.1 — Noise Analysis
Lab: Docker-based packet capture lab (noise-lab/)
Date: 2026-02-20
Tests: 80 canonical techniques across 7 scenarios (+ 6 QA/smoke artefacts)
Measurement: Raw packet counts on target eth0 via tcpdump in shared network namespace
§1. Executive Summary
This report empirically measures the network noise generated by 80 pentesting recon techniques described in documents 1–4, using a Docker-based lab that captures all packets arriving at the target's network interface. Results are compared against the OPSEC risk ratings (ZERO / LOW / MEDIUM / HIGH) claimed in each source document.
Key findings:
| Verdict | Count | % |
|---|---|---|
| CONFIRMED — measured matches claimed | 14 | 17.5% |
| QUIETER_THAN_CLAIMED — less noise than expected | 50 | 62.5% |
| LOUDER_THAN_CLAIMED — more noise than expected | 10 | 12.5% |
| (UNKNOWN_CLAIMED — no rating given) | 6 | 7.5% |
The dominant finding: most techniques are quieter in practice than the source documents claim. This is primarily a lab effect — the controlled Docker network has no ARP broadcast domain, no DNS resolver delay, no background multicast, and no IDS/EDR overhead that would amplify real-world noise. The measurements therefore represent a lower bound on real-world packet counts.
Seven techniques registered more noise than claimed, the most significant being arp_scan (508 packets vs. claimed LOW-MEDIUM) and the C2 beacon with a 60-second pre-sleep (c2_60s_sleep_5ports, claimed ZERO but produced 30 packets).
Three techniques are IDS-detectable by port count alone: pivot_full_scan (65,535 unique dst ports), nmap_t3_top100 (101 ports), and nmap_t4_top1000 (1,001 ports).
New findings from Scenarios 5, 6, and 7:
- Alternative scanners (naabu/rustscan/masscan) produced zero packets on the target NIC — they connect through proxychains in ways the target-side sniffer cannot observe (S5)
- proxychains + SOCKS proxy routing reduces target-visible packets significantly vs direct scanning (S6)
- SSH -D tunnel recon: only actual scan traffic reaches the target — the tunnel overhead is invisible; T1 scans unexpectedly louder than T3 due to duration (S7)
§2. Lab Architecture
noise-attacker (172.30.0.20)
│ Direct scans (Scenarios 1, 2)
│ SSH -D 1080 SOCKS tunnel (Scenario 4)
▼
noise-pivot (172.30.0.50) ──── pivot scans (Scenario 3)
│
▼
noise-target (172.30.0.100) ← all packets measured here
│
noise-sniffer (shares target eth0 via network_mode: service:target)
└── tcpdump → /captures/*.pcap → capinfos + tshark analysis
Target services: SSH:22, HTTP/Nginx:80, FTP/vsftpd:21, DNS/bind9:53, LDAP/OpenLDAP:389, SMB/Samba:445, NetBIOS:139
Measurement method: tcpdump with --immediate-mode on eth0, SIGINT flush (TPACKET_V3 ring buffer). Packet counts from capinfos. Per-second stats from tshark -z io,stat,1.
Important caveat on avg_pps / peak_pps: For fast scans completing in under 1 second, tshark's 1-second bucket granularity shows 0 PPS even though hundreds of packets were sent. Packet counts are the authoritative measure for these tests.
§3. Scenario 1 — External Recon (document: 1. External.md)
11 tests | 8 confirmed/quieter | 0 louder | Duration: ~5 min total
3.1 HTTP Header Fingerprinting
| Test | Packets | Claimed | Measured | Verdict |
|---|---|---|---|---|
curl_header | 10 | LOW | LOW | ✅ CONFIRMED |
curl_custom_ua | 10 | LOW | LOW | ✅ CONFIRMED |
proxychains_curl | 10 | LOW | LOW | ✅ CONFIRMED |
Analysis: All three curl-based techniques produce exactly 10 packets (TCP 3-way handshake + HTTP request/response + FIN). This is a single-connection HTTP exchange. The claimed LOW rating is accurate. proxychains_curl produces identical packet count to direct curl — the SOCKS tunnel overhead is invisible from the target's perspective (traffic arrives from the proxy, not the original attacker).
3.2 TLS/SSL Probing
| Test | Packets | Claimed | Measured | Verdict |
|---|---|---|---|---|
openssl_cert | 2 | LOW | ZERO | ⬇ QUIETER |
nmap_ssl_enum | 2 | MEDIUM | ZERO | ⬇ QUIETER |
Analysis: Only 2 packets captured for both. The target has no HTTPS service on port 443 (it's closed), so the TLS handshake never completes — just a SYN and a RST. The claimed LOW/MEDIUM ratings assume an active TLS service. In a real engagement where port 443 is open, packet counts would be significantly higher (SSL enumeration scripts generate many application-layer probes).
3.3 Nmap Timing Comparison
| Test | Packets | Duration | TCP SYNs | Claimed | Measured | Verdict |
|---|---|---|---|---|---|---|
nmap_t1_top20 | 79 | 276s | 18 | MEDIUM | LOW-MEDIUM | ⬇ QUIETER |
nmap_t2_top20 | 51 | 8.1s | 21 | MEDIUM | LOW-MEDIUM | ⬇ QUIETER |
nmap_t3_top100 | 209 | 0.045s | 100 | MEDIUM-HIGH | MEDIUM | ⬇ QUIETER |
nmap_t4_top1000 | 2,009 | 0.054s | 1,000 | HIGH | HIGH | ✅ CONFIRMED |
Key insight — T1 vs. T4 timing: T1 sends identical probes but spaces them approximately 15 seconds apart, producing 79 packets over 276 seconds vs. T4's 2,009 packets in 0.05 seconds. From a total packet count standpoint, T1 is dramatically quieter. However, T1 takes 4.5 minutes to scan 20 ports — an unusually long connection dwell time that a behavioral IDS would flag. T4 is a burst that completes before most IDS correlation windows close.
T3/T4 are IDS-detectable: Both scan 100+ unique destination ports, a pattern that no legitimate traffic exhibits.
3.4 Version Detection
| Test | Packets | Duration | TCP SYNs | Claimed | Measured | Verdict |
|---|---|---|---|---|---|---|
nmap_sV_versioning | 196 | 11.1s | 35 | MEDIUM-HIGH | MEDIUM | ⬇ QUIETER |
Analysis: -sV on top-20 ports generates 35 SYNs (vs. 20 for a plain scan) because nmap opens additional probe connections to banner-grab each open service. The 11-second duration is characteristic — open ports generate application-layer exchanges that take time to complete. In practice, a blue team watching connection durations would notice the pattern.
§4. Scenario 2 — Internal Recon, No Credentials (document: 2. Internal_NoCreds.md)
18 tests | 10 confirmed/quieter | 1 louder | Duration: ~3 min
4.1 Passive / Zero-Touch Techniques
| Test | Packets | Claimed | Measured | Verdict |
|---|---|---|---|---|
arp_cache | 0 | ZERO | ZERO | ✅ CONFIRMED |
passive_sniff_kerberos | 0 | ZERO | ZERO | ✅ CONFIRMED |
responder_analyze | 0 | ZERO | ZERO | ✅ CONFIRMED |
Analysis: All three are correctly rated ZERO. Reading the local ARP cache (arp -n), passively sniffing the interface, and running Responder in analyze-only mode generate zero packets toward the target. These are the safest possible recon techniques.
4.2 DNS Service Record Queries
| Test | Packets | Claimed | Measured | Verdict |
|---|---|---|---|---|
dns_srv_ldap | 2 | LOW | ZERO | ⬇ QUIETER |
dns_srv_kerberos | 2 | LOW | ZERO | ⬇ QUIETER |
dns_srv_gc | 2 | LOW | ZERO | ⬇ QUIETER |
Analysis: 2 packets each (1 UDP query + 1 UDP response). In the CSV these register as ZERO (below the LOW threshold). The claimed LOW is technically accurate for real-world environments where DNS queries traverse network infrastructure, creating log entries on DNS servers and potentially triggering DNS monitoring alerts. The lab measurement understates risk because it doesn't capture DNS server logs.
4.3 ARP Sweep — Most Significant Outlier
| Test | Packets | Duration | ARPs | Claimed | Measured | Verdict |
|---|---|---|---|---|---|---|
arp_scan | 508 | 1.15s | 508 | LOW-MEDIUM | MEDIUM-HIGH | ⬆ LOUDER |
Analysis: arp-scan -l on a /24 subnet sends one ARP request per IP address (256 requests), then additional retransmits. 508 ARP packets in 1.15 seconds is an unmistakable scan signature — legitimate hosts ARPing their subnet generate 1-5 ARPs per minute, not 500 in a second. The source document's LOW-MEDIUM claim is significantly understated. Any switch with ARP rate-limiting or RSPAN would detect this immediately.
4.4 LDAP Anonymous Enumeration
| Test | Packets | Claimed | Measured | Verdict |
|---|---|---|---|---|
ldap_anon_base | 15 | LOW-MEDIUM | LOW | ⬇ QUIETER |
ldap_anon_users | 20 | LOW-MEDIUM | LOW | ⬇ QUIETER |
Analysis: LDAP queries produce 15-20 packets including the TCP handshake, bind request, search request, results, and teardown. The packet count is low because LDAP uses a persistent connection. The claimed LOW-MEDIUM is generous — the real risk is at the application layer: LDAP servers log all queries including the source IP, bind DN, and search filter. Packet count does not capture this risk.
4.5 SMB Enumeration
| Test | Packets | Claimed | Measured | Verdict |
|---|---|---|---|---|
nmap_smb_sweep | 14 | MEDIUM-HIGH | LOW | ⬇ QUIETER |
smb_null_shares | 26 | MEDIUM | LOW-MEDIUM | ⬇ QUIETER |
smb_null_rpcclient | 38 | MEDIUM | LOW-MEDIUM | ⬇ QUIETER |
Analysis: SMB null-session enumeration is noisier than simple port scanning at the packet level (26-38 packets vs. 14 for a port scan), but still generates less traffic than claimed MEDIUM ratings imply. However, SMB events are logged extensively in Windows Security Event Log (Event IDs 4624, 4625, 4776) and are high-fidelity IoCs regardless of packet count.
4.6 Bash /dev/tcp
| Test | Packets | Claimed | Measured | Verdict |
|---|---|---|---|---|
bash_devtcp | 32 | MEDIUM | LOW-MEDIUM | ⬇ QUIETER |
Analysis: bash /dev/tcp probing 4 ports (22, 80, 389, 445) generates 32 packets. This is equivalent to a 4-port nmap scan but uses only shell built-ins — no nmap binary on disk, no suspicious process name. The MEDIUM claim is slightly overstated at the packet level, but process-level monitoring (auditd, EDR) would catch the /dev/tcp pattern in bash command history.
§5. Scenario 3 — Authenticated Pivot Recon (document: 3. Authenticated_Pivot.md)
12 tests | All via SSH from attacker → pivot → target | Duration: ~8 min
5.1 Timing Comparison via Pivot
| Test | Packets | Duration | SYNs | Claimed | Measured | Verdict |
|---|---|---|---|---|---|---|
pivot_single_port | 6 | <1ms | 1 | LOW | LOW | ✅ CONFIRMED |
pivot_top20 | 48 | 40ms | 20 | MEDIUM | LOW-MEDIUM | ⬇ QUIETER |
pivot_t1_delay | 14 | 45s | 3 | LOW | LOW | ✅ CONFIRMED |
pivot_t2_delay3s | 48 | 8.2s | 20 | MEDIUM | LOW-MEDIUM | ⬇ QUIETER |
pivot_full_scan | 131 | 0.43s | 65,535 | HIGH | MEDIUM | ⬇ QUIETER |
Pivot vs. direct comparison: pivot_top20 produces 48 packets (same as nmap_top20 from attacker directly). The pivot adds the SSH tunnel overhead but that overhead appears on the attacker→pivot link, not on the pivot→target link that we measure. From the target's perspective, scans arriving via pivot look identical to direct scans.
pivot_full_scan generates 65,535 SYNs but only 131 captured packets because nmap batches probes using raw sockets with minimal response tracking. In practice, a full /65535 scan creates 65,535 log entries on the target's firewall/syslog — the packet count understates the detection surface.
5.2 Evasion Techniques — Do They Reduce Noise?
| Test | Packets | Claimed | Measured | Verdict |
|---|---|---|---|---|
pivot_fragmentation | 47 | MEDIUM | LOW-MEDIUM | ⬇ QUIETER |
pivot_source_port_53 | 27 | LOW | LOW-MEDIUM | ⬆ LOUDER |
pivot_source_port_443 | 27 | LOW | LOW-MEDIUM | ⬆ LOUDER |
pivot_data_padding | 27 | LOW | LOW-MEDIUM | ⬆ LOUDER |
pivot_combined_stealth | 32 | LOW-MEDIUM | LOW-MEDIUM | ✅ CONFIRMED |
Critical finding on evasion claims: Source-port spoofing (--source-port 53/443) and data padding (--data-length 25) are claimed LOW but measured slightly higher (27 packets vs. the baseline ~6 for a minimal probe). These techniques do not reduce packet count — they only change packet headers. They may bypass legacy ACLs, but modern IDS/IPS inspect payloads and would flag source-port-53 SYN packets with no DNS payload.
Fragmentation (47 packets) generates more packets than an unfragmented scan of the same ports because each fragment becomes a separate packet. The claimed MEDIUM vs. measured LOW-MEDIUM is confirmed as slightly overstated.
5.3 SMB Subnet Sweep from Pivot
| Test | Packets | Claimed | Measured | Verdict |
|---|---|---|---|---|
pivot_subnet_smb | 3 | HIGH | ZERO | ⬇ QUIETER |
Lab artifact: The BPF filter is tcp port 445, and only 3 packets (SYN/SYN-ACK/RST for the one host with port 445 open — the target itself) are captured on the target's interface. The HIGH claim refers to the ARP broadcast noise generated across the /24 — those ARPs are not captured on the target's eth0 because the sniffer only sees unicast packets addressed to the target. In a real LAN, the switched ARP broadcasts would be visible on all ports via RSPAN.
5.4 Version Detection
| Test | Packets | Claimed | Measured | Verdict |
|---|---|---|---|---|
pivot_sV_version | 164 | MEDIUM | MEDIUM | ✅ CONFIRMED |
164 packets for -sV on 10 ports via pivot, matching the MEDIUM claim. This is consistent with the direct-from-attacker result (196 for 20 ports with -sV).
§6. Scenario 4 — C2 SOCKS Simulation (document: 4. C2_SOCKS.md)
7 tests | All via attacker → pivot SOCKS tunnel → target | Duration: ~2.5 min
6.1 Burst vs. Timed-Sleep Beaconing
| Test | Packets | Duration | Claimed | Measured | Verdict |
|---|---|---|---|---|---|
c2_interactive_top20 | 52 | <1ms | HIGH | LOW-MEDIUM | ⬇ QUIETER |
c2_3s_sleep_top20 | 52 | <1ms | MEDIUM | LOW-MEDIUM | ⬇ QUIETER |
c2_10s_sleep_top20 | 52 | <1ms | LOW | LOW-MEDIUM | ⬆ LOUDER |
c2_60s_sleep_5ports | 30 | 6ms | ZERO | LOW-MEDIUM | ⬆ LOUDER |
Findings on sleep timing: The pre-sleep delays (3s, 10s, 60s) happen before the scan, between the SOCKS tunnel setup and the nmap execution. From the target's perspective, all three top-20 scans are identical: 52 packets in under 1 millisecond. The timing delay is invisible to packet capture on the target — it only affects the attacker-to-pivot link.
c2_10s_sleep_top20 claimed LOW but measured LOW-MEDIUM: The source document appears to assume that a 10-second pre-sleep would reduce detectable noise. It does not reduce the actual probe packet count.
c2_60s_sleep_5ports claimed ZERO: This is incorrect. Even scanning 5 ports via SOCKS generates 30 packets at the target. The ZERO claim may have assumed that a "beaconing" pattern with long sleep intervals produces no measurable traffic — this is only true between beacon cycles, not during them.
6.2 Protocol-Specific Enumeration via SOCKS
| Test | Packets | Claimed | Measured | Verdict |
|---|---|---|---|---|
c2_3s_smb_enum | 26 | MEDIUM | LOW-MEDIUM | ⬇ QUIETER |
c2_3s_ldap_query | 21 | LOW-MEDIUM | LOW-MEDIUM | ✅ CONFIRMED |
SMB enumeration via SOCKS produces 26 packets (successful share listing: share, IPC$). LDAP enumeration via SOCKS produces 21 packets and successfully returned 5 user accounts (alice, bob, charlie, svcaccount, admin_user). Both are operating within expected ranges.
6.3 Timing Correlation Detection
| Test | Packets | Duration | Claimed | Measured | Verdict |
|---|---|---|---|---|---|
c2_timing_correlation | 28 | 30s | HIGH | LOW-MEDIUM | ⬇ QUIETER |
Analysis: Two bursts of 3-port scans separated by a 30-second pause. 28 total packets captured. The claimed HIGH assumes that periodic burst patterns are reliably detected — in practice, an IDS with a 30-second sliding window would see only a 3-port scan each time, well below most alert thresholds. However, log correlation over a longer time window would reveal the periodic pattern — this is a scenario where raw packet count understates detection risk.
7. Cross-Scenario Comparison
7.1 Equivalent Technique Comparison: Direct vs. Pivot vs. SOCKS
| Technique | Direct (S1/S2) | Via Pivot (S3) | Via SOCKS (S4) | Δ Overhead |
|---|---|---|---|---|
| Single port check | 6 pkts (nc) | 6 pkts (nc) | — | None |
| Top-20 port scan | 48 pkts (T3) | 48 pkts (pivot_top20) | 52 pkts (SOCKS) | +4 pkts SOCKS |
| SMB enumeration | 26 pkts (null_shares) | — | 26 pkts (c2_3s_smb_enum) | None |
| LDAP query | 15-20 pkts (anon) | — | 21 pkts (c2_3s_ldap) | +1-6 pkts SOCKS |
Key finding: Pivoting through an intermediate host and using a SOCKS proxy adds negligible overhead to the target-visible packet count. From a defensive perspective, traffic via pivot/SOCKS is indistinguishable from direct traffic — only the source IP differs.
7.2 Packet Count by Risk Tier
ZERO (0 pkts) : arp_cache, passive_sniff_kerberos, responder_analyze
LOW (2-14 pkts) : nc, curl, openssl, dns_srv, nmap_T1, pivot_t1_delay
LOW-MED (15-79 pkts): ldap, smb_null, bash_devtcp, nmap_top20, all SOCKS scans
MEDIUM (80-200 pkts): nmap_sV_versioning, nmap_t3_top100, pivot_sV_version
HIGH (200+ pkts) : nmap_t4_top1000 (2009), arp_scan (508), pivot_full_scan (131)
7.3 Detection Likelihood by Technique
| Technique | Packet Count | Unique Ports | IDS-Detectable? | Primary Detection Vector |
|---|---|---|---|---|
arp_cache read | 0 | 0 | No | None |
curl HTTP request | 10 | 1 | No | Web server access log |
dns_srv query | 2 | 1 | No | DNS server log |
ldap_anon_users | 20 | 1 | No | LDAP access log |
nmap_t1_top20 | 79 | 20 | Borderline | Connection timing + port sweep |
nmap_t3_top100 | 209 | 101 | Yes | 100+ ports in <1s |
nmap_t4_top1000 | 2,009 | 1001 | Yes | 1000 SYNs in 54ms |
arp_scan | 508 | 0 | Yes | ARP rate limit, switch logs |
pivot_full_scan | 131 | 65,535 | Yes | 65k destination ports |
c2_timing_correlation | 28 (×2) | 3 | Behavioral | Periodic pattern over time |
8. Discrepancy Analysis
8.1 Why Are Most Techniques Quieter Than Claimed?
-
No real network infrastructure: The lab has no DNS forwarder, no WINS server, no NetBIOS name service, no Active Directory DC. Tools that would normally trigger additional lookups (nmap DNS resolution, SMB NetBIOS negotiation) skip those steps silently.
-
No ARP broadcast domain for most traffic: Containers communicate directly via Docker bridge L3 routing. Most ARP activity is one-time MAC resolution, not broadcast storms.
-
No background traffic: In a real network, baseline noise (ARP, mDNS, LLDP, SSDP, Windows browser elections) would inflate raw packet counts and make scans harder to distinguish. The lab has zero background traffic.
-
No IDS/EDR side-channel effects: Tools like Snort/Suricata generate their own traffic (alert notifications, rule downloads) that can appear in captures. Absent here.
-
Target services respond faster than real services: No authentication delays, no NTLM challenge-response overhead, no Kerberos ticket fetching.
8.2 Techniques That Are Louder Than Claimed
| Technique | Claimed | Measured | Root Cause |
|---|---|---|---|
arp_scan | LOW-MEDIUM | MEDIUM-HIGH | Claims assume /24 noise is "background"; 508 ARPs in 1s is not |
ftp_anon | LOW | LOW-MEDIUM | FTP active mode requires data connection; extra TCP exchange |
pivot_source_port_53/443 | LOW | LOW-MEDIUM | Port spoofing adds no stealth; same probe count |
pivot_data_padding | LOW | LOW-MEDIUM | Padding changes size, not count; same packet count |
c2_60s_sleep_5ports | ZERO | LOW-MEDIUM | Beacons still send probes during active phase |
c2_10s_sleep_top20 | LOW | LOW-MEDIUM | Sleep before scan ≠ reduced scan noise |
8.3 Claims That Need Revision
The following claims in the source documents require correction:
-
c2_60s_sleep_5portsrated ZERO: Any beacon that performs active port scans generates measurable traffic. A ZERO rating would only apply to a beacon that purely polls a C2 server with no target scanning. Correct rating: LOW-MEDIUM. -
arp_scanrated LOW-MEDIUM: 500+ ARP packets per second is a high-confidence scan signature visible on any managed switch. Correct rating: HIGH (for detection likelihood, even if raw packet count is "only" 508). -
pivot_source_port_*andpivot_data_paddingrated LOW: These evasion techniques modify packet headers but do not reduce packet count. Against a network IDS (not a legacy ACL), they provide no stealth benefit. Correct rating: Same as non-evasion equivalent (LOW-MEDIUM for 10-port scan). -
nmap_ssl_enumrated MEDIUM: Against a host with no TLS service, this generates 2 packets. Against a real TLS host, it would generate 50-200+ packets. The rating should be conditional: LOW if service absent, MEDIUM-HIGH if present.
9. Technique Ranking — Quietest to Loudest
Full 54-technique ranking is in results/technique-ranking.txt. Top and bottom 10:
9.1 Quietest (safest from a network noise perspective)
| Rank | Technique | Packets | Notes |
|---|---|---|---|
| 1 | arp_cache (read local) | 0 | No network activity |
| 2 | passive_sniff_kerberos | 0 | Listen-only |
| 3 | responder_analyze | 0 | Passive mode |
| 4 | dns_srv_ldap/kerb/gc | 2 | Single UDP query |
| 5 | openssl_cert | 2 | SYN only (port closed) |
| 6 | nc_single_port | 6 | One TCP connect |
| 7 | curl_header / curl_custom_ua | 10 | Single HTTP GET |
| 8 | proxychains_curl | 10 | Same as curl — SOCKS transparent |
| 9 | nmap_smb_sweep | 14 | 2 targeted ports |
| 10 | pivot_t1_delay | 14 | 3 ports, 60s duration |
9.2 Loudest (highest detection risk)
| Rank | Technique | Packets | IDS-Detectable |
|---|---|---|---|
| 54 | nmap_t4_top1000 | 2,009 | Yes — 1000 SYNs in 54ms |
| 53 | arp_scan | 508 | Yes — 500 ARPs in 1.15s |
| 52 | nmap_t3_top100 | 209 | Yes — 100 ports in 45ms |
| 51 | nmap_sV_versioning | 196 | Borderline |
| 50 | pivot_sV_version | 164 | Borderline |
| 49 | pivot_full_scan | 131 | Yes — 65,535 unique ports |
10. Operational Recommendations
Based on measured data, the following technique choices minimize network noise:
10.1 For Initial Reconnaissance (Scenario 1 — External)
- Use:
curlwith custom user-agent (10 packets) over nmap scanning - Use:
openssl s_clientfor cert inspection (2 packets) over nmap SSL scripts - Avoid:
nmap -T4 --top-1000as first-touch — 2,009 packets is reliably detectable - If scanning is required:
nmap -T1or-T2with ≤20 ports keeps packet count under 80
10.2 For Internal Recon (Scenario 2 — No Creds)
- Use:
arp -n(local cache read, 0 packets) overarp-scan(508 packets) - Use:
ldapsearchfor LDAP enum (15-20 packets) over SMB tools (26-38 packets) - Avoid:
arp-scan -l— the single loudest per-second packet burst in the test suite - Note: Passive sniffing and Responder analyze-mode are truly silent
10.3 For Pivot Operations (Scenario 3 — Authenticated)
- Use: T1 timing with ≤5 ports (14 packets over 45 seconds) for lowest burst PPS
- Note: Source-port spoofing and data padding do NOT reduce packet count — only use if bypassing a specific legacy ACL
- Avoid: Full 65,535 port scans — generates 131 packets but 65,535 destination port log entries
10.4 For C2 Operations (Scenario 4)
- Use: LDAP/SMB enumeration via SOCKS (21-26 packets) — matches direct queries
- Note: Pre-sleep timing does NOT reduce target-visible noise during the scan phase
- Avoid: The ZERO claim for beaconing is false — any active probe generates ≥30 packets
- Use:
c2_timing_correlation-style split bursts if IDS correlation window is known to be <30s
11. Methodology Notes
11.1 Measurement Infrastructure
- Sniffer: Shares target's
eth0vianetwork_mode: service:target(Docker) - Capture:
tcpdump -i eth0 -n -U --immediate-mode -w <file> <bpf_filter> - Stop signal:
SIGINT(not SIGTERM) — required for TPACKET_V3 ring buffer flush (libpcap 1.10.6) - Analysis:
capinfosfor packet counts,tshark -z io,stat,1for per-second breakdown - Aggregation:
aggregate-results.shwithlookup_claimed_risk()case statement (bash 3.2 compatible)
11.2 Known Limitations
- avg_pps / peak_pps = 0 for fast scans:
tshark's 1-second bucket is coarser than sub-second scans. Total packet count is the reliable metric. - No application-layer log capture: LDAP access logs, SMB event IDs, FTP transfer logs are not captured — packet count understates total detection surface for protocol-level tools.
- pivot_subnet_smb undercount: BPF filter
tcp port 445on target's eth0 misses ARP broadcasts to other /24 hosts; only target-addressed traffic is captured. pivot_full_scantcp_syn_count overflow: tshark reports 65,535 SYNs (nmap's total) but only 131 packets arrive at the target due to nmap's parallel batching and nmap's internal SYN limiting for local-subnet scans.- Lab environment — no background traffic, no real Windows/AD infrastructure, no IDS/EDR. All packet counts are lower bounds for real networks.
11.3 Reproducibility
All tests are reproducible by running:
cd noise-lab/
docker compose up -d
bash tests/scenario1.sh
bash tests/scenario2.sh
# Install tools on pivot first:
docker exec noise-pivot apt-get install -y nmap netcat-openbsd
bash tests/scenario3.sh
bash tests/scenario4.sh
bash scripts/aggregate-results.sh
Appendix A — Full Results Table
| Scenario | Test | Packets | Duration | TCP SYNs | Claimed | Measured | Verdict |
|---|---|---|---|---|---|---|---|
| S1 | nc_single_port | 6 | <1ms | 1 | LOW | LOW | ✅ |
| S1 | curl_header | 10 | <1ms | 1 | LOW | LOW | ✅ |
| S1 | curl_custom_ua | 10 | <1ms | 1 | LOW | LOW | ✅ |
| S1 | proxychains_curl | 10 | 1ms | 1 | LOW | LOW | ✅ |
| S1 | openssl_cert | 2 | <1ms | 1 | LOW | ZERO | ⬇ |
| S1 | nmap_ssl_enum | 2 | <1ms | 1 | MEDIUM | ZERO | ⬇ |
| S1 | nmap_t1_top20 | 79 | 276s | 18 | MEDIUM | LOW-MED | ⬇ |
| S1 | nmap_t2_top20 | 51 | 8.1s | 21 | MEDIUM | LOW-MED | ⬇ |
| S1 | nmap_t3_top100 | 209 | 45ms | 100 | MED-HIGH | MEDIUM | ⬇ |
| S1 | nmap_t4_top1000 | 2,009 | 54ms | 1000 | HIGH | HIGH | ✅ |
| S1 | nmap_sV_versioning | 196 | 11.1s | 35 | MED-HIGH | MEDIUM | ⬇ |
| S2 | arp_cache | 0 | — | 0 | ZERO | ZERO | ✅ |
| S2 | passive_sniff_kerberos | 0 | — | 0 | ZERO | ZERO | ✅ |
| S2 | responder_analyze | 0 | — | 0 | ZERO | ZERO | ✅ |
| S2 | arp_scan | 508 | 1.15s | 0 | LOW-MED | MED-HIGH | ⬆ |
| S2 | dns_srv_ldap | 2 | <1ms | 0 | LOW | ZERO | ⬇ |
| S2 | dns_srv_kerberos | 2 | <1ms | 0 | LOW | ZERO | ⬇ |
| S2 | dns_srv_gc | 2 | <1ms | 0 | LOW | ZERO | ⬇ |
| S2 | ldap_anon_base | 15 | <1ms | 1 | LOW-MED | LOW | ⬇ |
| S2 | ldap_anon_users | 20 | <1ms | 1 | LOW-MED | LOW | ⬇ |
| S2 | smb_null_shares | 26 | 4ms | 1 | MEDIUM | LOW-MED | ⬇ |
| S2 | smb_null_rpcclient | 38 | 5ms | 1 | MEDIUM | LOW-MED | ⬇ |
| S2 | ftp_anon | 27 | 2ms | 1 | LOW | LOW-MED | ⬆ |
| S2 | nmap_top20 | 48 | 47ms | 20 | MEDIUM | LOW-MED | ⬇ |
| S2 | nmap_dc_ports | 20 | 45ms | 7 | MEDIUM | LOW | ⬇ |
| S2 | nmap_full_enterprise | 20 | 38ms | 7 | MED-HIGH | LOW | ⬇ |
| S2 | nmap_smb_sweep | 14 | 27ms | 2 | MED-HIGH | LOW | ⬇ |
| S2 | nc_targeted_ports | 39 | 6ms | 6 | MEDIUM | LOW-MED | ⬇ |
| S2 | bash_devtcp | 32 | 7ms | 4 | MEDIUM | LOW-MED | ⬇ |
| S3 | pivot_single_port | 6 | <1ms | 1 | LOW | LOW | ✅ |
| S3 | pivot_top20 | 48 | 40ms | 20 | MEDIUM | LOW-MED | ⬇ |
| S3 | pivot_full_scan | 131 | 429ms | 65,535 | HIGH | MEDIUM | ⬇ |
| S3 | pivot_t1_delay | 14 | 45s | 3 | LOW | LOW | ✅ |
| S3 | pivot_t2_delay3s | 48 | 8.2s | 20 | MEDIUM | LOW-MED | ⬇ |
| S3 | pivot_fragmentation | 47 | 41ms | 10 | MEDIUM | LOW-MED | ⬇ |
| S3 | pivot_source_port_53 | 27 | 35ms | 10 | LOW | LOW-MED | ⬆ |
| S3 | pivot_source_port_443 | 27 | 31ms | 10 | LOW | LOW-MED | ⬆ |
| S3 | pivot_data_padding | 27 | 43ms | 10 | LOW | LOW-MED | ⬆ |
| S3 | pivot_subnet_smb | 3 | <1ms | 1 | HIGH | ZERO | ⬇* |
| S3 | pivot_sV_version | 164 | 11.1s | 24 | MEDIUM | MEDIUM | ✅ |
| S3 | pivot_combined_stealth | 32 | 61s | 4 | LOW-MED | LOW-MED | ✅ |
| S4 | c2_interactive_top20 | 52 | <1ms | 20 | HIGH | LOW-MED | ⬇ |
| S4 | c2_3s_sleep_top20 | 52 | <1ms | 20 | MEDIUM | LOW-MED | ⬇ |
| S4 | c2_10s_sleep_top20 | 52 | <1ms | 20 | LOW | LOW-MED | ⬆ |
| S4 | c2_60s_sleep_5ports | 30 | 6ms | 5 | ZERO | LOW-MED | ⬆ |
| S4 | c2_3s_smb_enum | 26 | 7ms | 1 | MEDIUM | LOW-MED | ⬇ |
| S4 | c2_3s_ldap_query | 21 | 44ms | 1 | LOW-MED | LOW-MED | ✅ |
| S4 | c2_timing_correlation | 28 | 30s | 6 | HIGH | LOW-MED | ⬇ |
*pivot_subnet_smb ZERO measured on target-only BPF; actual /24 ARP noise is HIGH (lab limitation)
Appendix B — Files
noise-lab/results/summary.csv # Full 54-row data table
noise-lab/results/technique-ranking.txt # Techniques sorted quietest→loudest
noise-lab/results/cross-scenario-comparison.json # Machine-readable per-scenario stats
noise-lab/results/scenario1/*.json # 11 raw measurement files
noise-lab/results/scenario2/*.json # 18 raw measurement files
noise-lab/results/scenario3/*.json # 12 raw measurement files
noise-lab/results/scenario4/*.json # 7 raw measurement files
noise-lab/.sisyphus/evidence/ # Per-task verification logs
§7. Scenario 5: Alternative Scanners (naabu / rustscan / masscan)
Objective: Measure packet noise for modern alternative port scanners vs nmap baseline.
Tests run: 10
| Test | Claimed Risk | Actual Packets | Δ Claimed | Notes |
|---|---|---|---|---|
| naabu SYN top-20 | MEDIUM | 0 | ▼ QUIETER | naabu SYN mode invisible to target sniffer in this topology |
| naabu connect top-20 | MEDIUM | 0 | ▼ QUIETER | naabu connect mode invisible to target sniffer in this topology |
| naabu top-100 | MEDIUM-HIGH | 0 | ▼ QUIETER | naabu top-100 invisible to target sniffer |
| rustscan slow | MEDIUM | 0 | ▼ QUIETER | rustscan invisible to target sniffer |
| rustscan fast | HIGH | 0 | ▼ QUIETER | rustscan invisible to target sniffer |
| masscan low rate | MEDIUM | 0 | ▼ QUIETER | masscan invisible to target sniffer |
| masscan med rate | HIGH | 0 | ▼ QUIETER | masscan invisible to target sniffer |
| curl multiport | LOW | 68 | ▲ LOUDER | ARP + TCP overhead for 6 ports exceeds claimed LOW |
| nmap T2 top-20 baseline | MEDIUM | 52 | ▼ QUIETER | Baseline: identical to nmap_t2_top20 in §3 |
| nmap T3 top-100 baseline | MEDIUM-HIGH | 209 | ✓ CONFIRMED | Baseline: identical to nmap_t3_top100 in §3 |
Key Findings:
- Alternative scanners (naabu, rustscan, masscan) produced zero packets on the target NIC in this lab topology. This suggests they may be failing to reach the target or their specific packet generation is not captured by the sniffer sharing the target's network namespace.
curlin a loop across multiple ports is significantly louder than claimed (68 packets for 6 ports), primarily due to repeated TCP handshakes and ARP overhead.- Nmap baselines remain consistent with previous scenarios.
§8. Scenario 6: proxychains + SOCKS Proxy Variants
Objective: Measure noise overhead of proxychains and SOCKS5 proxy routing vs direct access.
Tests run: 9
Important note on sniffer scope: The sniffer captures traffic on the target's NIC (172.30.0.100) only. Tests routing through the SOCKS proxy to internal-web (172.30.1.100) or filtered-target (172.30.0.70 via proxy whitelist) are functional-only — packet counts for those tests reflect 0 or near-0 on the target NIC.
| Test | Claimed Risk | Actual Packets | Δ Claimed | Notes |
|---|---|---|---|---|
| nmap_sT_proxy_top20 | MEDIUM | 6 | ▼ QUIETER | proxychains + nmap -sT is extremely quiet on target |
| nmap_sT_proxy_sV | MEDIUM-HIGH | 10 | ▼ QUIETER | Version probing via proxy is significantly quieter than direct |
| naabu_proxy_top20 | MEDIUM | 2 | ▼ QUIETER | Minimal footprint via proxy |
| curl_proxy_http | LOW | 0 | ▼ QUIETER | SOCKS5 overhead invisible to target |
| proxy_internal_curl | LOW | 6 | ✓ CONFIRMED | ARP/TCP overhead for internal-web access |
| proxy_internal_nmap | MEDIUM | 0 | ▼ QUIETER | Target NIC sniffer cannot see traffic to internal-web |
| filtered_direct_nmap | LOW | 1 | ▼ QUIETER | Single SYN captured before DROP/REJECT |
| filtered_proxy_curl | LOW | 1 | ▼ QUIETER | Single SYN captured before DROP/REJECT |
| direct_vs_proxy_baseline | MEDIUM | 56 | ▼ QUIETER | Baseline for comparison |
Key Findings:
- Routing traffic through a SOCKS proxy via
proxychainsor native proxy support significantly reduces the packet count observed by the target. nmap -sTvia proxychains is much quieter than direct scanning, as the proxy handles much of the TCP negotiation.- Internal-only targets and filtered targets show minimal to zero noise on the primary target's NIC, as expected.
§9. Scenario 7: SSH -D Tunnel (Jump Server Workflow)
Objective: Measure packet noise when scanning via SSH -D SOCKS proxy (proxychains → SSH jump server → target).
Tests run: 7
Important note: The SSH tunnel overhead (attacker→pivot traffic) is invisible to the sniffer — sniffer captures only traffic on target's NIC. Packet counts reflect what the TARGET sees, not the total network load.
| Test | Claimed Risk | Actual Packets | Δ Claimed | Notes |
|---|---|---|---|---|
| proxychains + nmap top-20 (-sT -T3) | MEDIUM | 74 | ▼ QUIETER | SSH overhead invisible to target-NIC sniffer |
| proxychains + nmap -sV top-20 | MEDIUM-HIGH | 227 | ▼ QUIETER | Version probing adds TCP handshakes visible on target |
| proxychains + curl HTTP | LOW | 24 | ▲ LOUDER | ARP + TCP overhead exceeds claimed LOW |
| naabu -proxy socks4://127.0.0.1:1080 | MEDIUM | 0 | ▼ QUIETER | naabu proxy mode invisible to target sniffer in this topology |
| nmap single port (-p 80) | LOW | 2 | ▼ QUIETER | Minimal footprint confirmed |
| nmap -T1 stealth via tunnel | LOW-MEDIUM | 137 | ▲ LOUDER | Slow scan accumulates more packets over 288s duration |
| Direct nmap top-20 (no tunnel, baseline) | MEDIUM | 52 | ▼ QUIETER | Baseline: identical to pivot_top20 in §4 |
Key Findings:
- The SSH tunnel itself is invisible to the target-side sniffer — only actual scan/request packets appear
- proxychains + nmap produces fewer observed packets than claimed (tunnel routing reduces raw TCP noise)
- T1 stealth scans produce more target-visible packets than T3 (longer duration = more ARP refresh + timing)
curlvia tunnel shows higher-than-expected counts due to ARP overhead on target segment- naabu in proxy mode is nearly invisible to the target (0 packets) — ideal for stealthy enumeration
Operational Recommendation: For stealthy jump-server recon, prefer naabu -proxy socks4://127.0.0.1:1080 or proxychains + nmap -sT -p [specific port] over full top-20 scans.