← All Threat Hunting ReportsThreat Hunting Exercise

Threat Hunting Exercise: Analyzing IDS Cobalt Strike Malleable C2 Jitter Beacon Dataset

This hunt uses a simulated IDS/IPS alert dataset (ids_cs_malleable_2022-11-10T091000.json) capturing T1071.001: Web Protocols (Cobalt Strike Malleable C2), where a compromised host beacons to a C2 profile disguised as legitimate-looking HTTP/S traffic (e.g., mimicking a CDN or analytics service) but exhibits the characteristic fixed-interval-plus-jitter timing of a Cobalt Strike beacon.

Step 1: Hypothesis Formation

Hypothesis: A host generates repeated outbound HTTP/S requests to the same destination at a statistically regular base interval with a bounded random jitter percentage, and the request/response structure (URI patterns, headers, response size) matches a known Cobalt Strike malleable-C2 profile signature, indicating an active beacon rather than legitimate polling traffic. Indicators:

Null Hypothesis: The traffic is a legitimate polling application (e.g., a monitoring agent or SaaS heartbeat) that happens to use a regular interval and a CDN-style URI structure. Invalidate by checking the process image against known-good software inventory and confirming the destination domain's legitimacy via passive DNS/WHOIS history.

Rationale: Malleable C2 profiles are purpose-built to make Cobalt Strike traffic resemble benign web traffic to a human analyst reviewing raw logs, so detection depends on statistical beacon-interval analysis and payload-consistency signatures rather than surface-level URI/domain inspection alone.

Step 2: Data Sources and Scope

Step 3: Key Findings

Parsed events (5 shown) confirm WKS-DEV-071 beaconed to a spoofed "CDN" domain every ~60 seconds (±18% jitter) for nearly 3 hours, with response sizes matching a known Cobalt Strike default profile.

Timestamp (UTC)HostEventDetailIOC/Why Suspicious?
2022-11-10 09:10:03WKS-DEV-071IDS AlertET MALWARE Cobalt Strike Beacon Profile (jquery URI + cookie pattern) triggered on GET /jquery-3.3.1.min.jsSignature IOC: this specific URI-plus-cookie combination matches a widely-reused default/leaked Cobalt Strike malleable-C2 profile.
2022-11-10 09:10:03 - 11:54:58WKS-DEV-071Proxy (aggregate)166 requests to cdn-assets-edge.net, mean interval 60.4s, stdev 10.8s (~18% jitter)Beacon-Interval IOC: this tight statistical clustering around a fixed base interval with bounded jitter is characteristic of automated beaconing, not human-driven or event-driven browsing.
2022-11-10 09:10:03 - 11:54:58WKS-DEV-071Proxy (aggregate)Response body size fixed at exactly 2,048 bytes across all 166 requests regardless of URI queriedPayload-Consistency IOC: real CDN-hosted JS libraries vary in size and rarely return an identical byte count on every request; this indicates a synthetic C2 response, not real content.
2022-11-10 09:10:00WKS-DEV-071(EDR process event)Process rundll32.exe, no window/UI thread, hash matches known Cobalt Strike beacon.dll loaderNon-Browser IOC: the requesting process has no rendering engine or DOM activity, ruling out a legitimate browser-based fetch.
--(Passive DNS check)cdn-assets-edge.net registered 6 days prior; no historical resolution before registration; not a recognized CDN providerConfirms the domain is attacker-registered infrastructure impersonating a CDN, not legitimate third-party content delivery.

Validation:

Step 4: Recommendations & Next Steps

Hypothesis confirmed - a developer workstation was beaconing every ~60 seconds to a newly-registered domain impersonating a CDN, using a Cobalt Strike malleable-C2 profile with fixed synthetic response sizes to blend into normal web traffic!