Blue Team Companion

HTTP Crafter — Reconnaissance & Header Fingerprinting Detection

A single crafted request is indistinguishable from normal traffic and should not alert. Reconnaissance is a statistical signal, so the detection belongs in aggregation — request cadence, path diversity, and 404 ratio — not in per-request signatures.

Open in Red Team Toolkit — http
A single crafted request is indistinguishable from normal traffic and should not alert. Reconnaissance is a statistical signal, so the detection belongs in aggregation — request cadence, path diversity, and 404 ratio — not in per-request signatures.

Telemetry generated

Log sourceField / identifierWhat it shows
Web Access Logmethod / path / user_agent / status / response_timePrimary reconnaissance signal. 404 volume and distribution is the clearest content-discovery indicator. Unusual HTTP methods (TRACE, PROPFIND, DEBUG) appear in the method field. User agent strings identify scanner tools but are trivially spoofed.
WAF / CDN Lograte_limit_event / bot_scoreRate and bot-score events from edge infrastructure. A high bot score with low rate-limit triggers indicates a scanner operating just below the rate threshold — the behavioural profile query below catches this.
404 and 405 Volumestatus_code distributionThe clearest content-discovery signal. A source generating many 404s across diverse paths is enumerating the application surface. 405 Method Not Allowed spikes indicate method probing.

Detection rules

Sigma — Two Reconnaissance Rules
# Rule 1: High distinct 404 URI stems per client IP over 5 minutes
title: Web Content Discovery — High 404 Rate per Source
id: d4e5f6a7-b8c9-0123-defa-234567890123
status: experimental
logsource:
  category: webserver
detection:
  selection:
    sc-status: 404
  timeframe: 5m
  condition: selection | count(cs-uri-stem) by c-ip > 50
level: medium
tags:
  - attack.reconnaissance
  - attack.t1595.002

---

# Rule 2: Unusual HTTP methods indicating WebDAV or debug probing
title: Unusual HTTP Method — WebDAV or Debug Probe
id: e5f6a7b8-c9d0-1234-efab-345678901234
status: experimental
logsource:
  category: webserver
detection:
  selection:
    cs-method|contains:
      - 'TRACE'
      - 'TRACK'
      - 'PROPFIND'
      - 'PROPPATCH'
      - 'MKCOL'
      - 'COPY'
      - 'MOVE'
      - 'SEARCH'
      - 'DEBUG'
  condition: selection
level: medium
tags:
  - attack.reconnaissance
  - attack.t1595.002

Evasion & counters

Evasion

Slowing the scan below rate thresholds so no single 5-minute window triggers the 404 rule.

Counter

Extend detection windows to hours or days as a scheduled hunt using cumulative distinct-404 counts. A source that generates 500 unique 404s over 48 hours is still a scanner even if each 5-minute window is quiet.

Evasion

Rotating source IPs across a proxy pool so each source is below threshold.

Counter

Aggregate by REQUESTED PATH instead of source. A rarely-requested admin path (e.g. /wp-admin, /.env, /actuator) receiving hits from many different source IPs is anomalous even when each individual source is quiet.

Evasion

Spoofing a legitimate browser user agent string to avoid the known-scanner-agent check.

Counter

User agent is a weak signal by design — weight the behavioural features (404 ratio, path diversity, request cadence) far more heavily. Correlate with the absence of asset requests a real browser would make: a "Chrome" user agent that never requests CSS, JS, or image files is not a browser.

Evasion

Requesting only paths that exist (using prior knowledge of the application) to avoid generating 404s.

Counter

This requires prior knowledge and severely limits discovery scope, which is itself a defensive win. It also means the attacker's traffic blends with legitimate users — at which point the detection shifts to authentication anomalies and access pattern analysis.

Rule tuning

Preventive control

Suppress Server and X-Powered-By response headers to remove version disclosure. Use non-default session cookie names. Return a consistent 404 response for both nonexistent and forbidden paths — a 403 confirms the path exists. Apply edge rate limiting at the CDN or load balancer layer.

Back to Detection Library