Detecting Cobalt Strike with Sysmon
Cobalt Strike is the most widely abused commercial red-team framework in real-world attacks. It operates via a 'beacon' payload that performs process injection, C2 communication, and lateral movement — all using techniques designed to blend into normal Windows activity. Sysmon events 1, 3, 7, and 10 each expose a different layer of Cobalt Strike's behavior.
Severity
Critical
ATT&CK Tactic
Defense Evasion
Common attacker usage
Injecting beacon shellcode into legitimate processes (svchost.exe, explorer.exe, rundll32.exe) to hide C2 activity · Named pipe communication between beacon and post-exploitation modules · Process hollowing — spawning a legitimate process and replacing its memory with beacon code · Lateral movement via PsExec-style service creation or WMI remote execution
Investigate immediately if
- !Sysmon 10 (Process Access) shows GrantedAccess 0x1010 or 0x1fffff against a system process from cmd.exe or powershell.exe
- !Sysmon 3 shows powershell.exe or rundll32.exe making outbound connections to port 443 on newly registered or high-entropy domains
- !Sysmon 1 shows a process spawning from an injected parent with no matching on-disk binary
- !Sysmon 7 shows unsigned DLLs loading into a signed process (svchost.exe, explorer.exe) from AppData or Temp
MITRE ATT&CK
T1055 · Process Injection
Defense Evasion
Security Relevance
Cobalt Strike beacons are found in the majority of hands-on-keyboard ransomware attacks, nation-state intrusions, and enterprise breaches. Detection requires correlating process injection signals (Sysmon 10), spawned process context (Sysmon 1), loaded DLLs (Sysmon 7), and C2 network callbacks (Sysmon 3). No single event is sufficient — the attack chain across events is the detection.
Indicators of Malicious Use
- ⚑Sysmon 10: GrantedAccess 0x1010 (Mimikatz/beacon LSASS pattern) or 0x1fffff against lsass.exe, explorer.exe, or svchost.exe from unexpected SourceImage
- ⚑Sysmon 3: periodic outbound connections at regular intervals (default 60s ± jitter) from injected process — beacon heartbeat pattern
- ⚑Sysmon 1: process with no ParentImage on disk or parent spawned from temp path — process hollowing indicator
- ⚑Sysmon 7: reflective DLL load — ImageLoaded path does not exist on disk or resolves to memory region
- ⚑Sysmon 3: named pipe connection (\\pipe\) to localhost from unexpected process — inter-beacon communication
- ⚑Sysmon 1: rundll32.exe, regsvr32.exe, or mshta.exe with no arguments or a URL as argument — stager execution
Example Log Entry
// Sysmon Event 10 — Cobalt Strike beacon opening LSASS handle EventID: 10 SourceImage: C:\Windows\System32\rundll32.exe TargetImage: C:\Windows\System32\lsass.exe GrantedAccess: 0x1010 CallTrace: C:\Windows\SYSTEM32\ntdll.dll+...|UNKNOWN(00007FF...) // Sysmon Event 3 — Beacon C2 callback (regular interval) EventID: 3 Image: C:\Windows\System32\svchost.exe DestinationIp: 185.220.101.45 DestinationPort: 443 DestinationHostname: cdn-edge-node-14.fastly-cdn.net Initiated: true
Investigation Steps
- 1.Identify the initial access vector: search Sysmon 1 for processes spawned from Office applications, script hosts (wscript.exe, cscript.exe), or browser processes around the suspected compromise time — this is the stager.
- 2.Trace the injection chain: beacon injects into a host process; look for Sysmon 10 events where SourceImage is the stager and TargetImage is a system process (svchost.exe, explorer.exe). The GrantedAccess mask and CallTrace identify injected vs legitimate access.
- 3.Find the C2 server: pivot to Sysmon 3 from the injected process. Cobalt Strike beacons communicate on a regular interval — use time-series analysis on DestinationIp + Image to find the periodic pattern. The DestinationHostname may be a domain-fronted CDN.
- 4.Check for credential access: Sysmon 10 events against lsass.exe from the beacon's host process. GrantedAccess 0x1010 is Mimikatz sekurlsa; 0x1410 is ProcDump. This step typically follows initial C2 establishment.
- 5.Enumerate lateral movement: Sysmon 1 showing PsExec-style service binaries dropped to C\$\Windows (Sysmon 11) on remote hosts, or WMI spawning cmd.exe on target systems. Sysmon 3 from the beacon to port 445 on internal hosts precedes this.
- 6.Isolate the host immediately if any of the above chain is confirmed — Cobalt Strike beacons are interactive; an operator is actively working the environment.
Check your logs for detecting cobalt strike with sysmon — upload an EVTX file for instant detection, no account required.
Common False Positives
- ◎Legitimate red-team or penetration testing engagements — confirm with your security team before escalating
- ◎Some security products perform process injection for monitoring purposes (e.g. EDR agents); verify SourceImage is a known security vendor path
- ◎Named pipe communication between legitimate software components may superficially resemble inter-beacon traffic — verify the pipe name and process context
Remediation
- ✓Isolate the affected host immediately — Cobalt Strike means an active operator; every minute increases lateral movement risk
- ✓Identify and terminate the injected beacon process; dumping memory for forensic analysis before termination preserves evidence
- ✓Reset credentials for all accounts authenticated on the compromised host since the compromise timestamp
- ✓Hunt across all hosts for the same C2 IP/domain, same IMPHASH (Sysmon 1), and same GrantedAccess pattern (Sysmon 10) — Cobalt Strike deployments are rarely single-host
- ✓Block the C2 IP and domain at the perimeter; submit to threat intelligence sharing platforms
- ✓Enable Credential Guard and RunAsPPL on all servers to reduce LSASS exposure in future incidents
Related Event IDs
Related Detection Guides
Frequently Asked Questions
- Why is Cobalt Strike so hard to detect with native Windows logging?
- Cobalt Strike is specifically designed to abuse legitimate Windows functionality and blend into normal process activity. Its beacon injects into trusted processes like svchost.exe or explorer.exe, so the malicious code runs under a legitimate process identity. Its C2 communication uses HTTPS on port 443, which is indistinguishable from normal web traffic at the network layer. Native Windows events see only the host process (e.g. svchost.exe making a network connection) — without Sysmon's process injection visibility (Event 10) and network-to-process mapping (Event 3), the activity is nearly invisible.
- What is the most reliable single Sysmon rule for detecting Cobalt Strike?
- Sysmon Event 10 (Process Access) with TargetImage = lsass.exe and GrantedAccess = 0x1010 from any process that is not a known security tool is the highest-confidence single rule. This access mask is the Mimikatz sekurlsa pattern and is also used by Cobalt Strike's credential harvesting capability. Very few legitimate processes need this specific access mask on LSASS. The rule has near-zero false positives in environments with a known-good security product baseline.
- Does Cobalt Strike always use process injection?
- Not always. Cobalt Strike can run as a standalone executable or DLL, but most operators prefer injection to avoid leaving a beacon binary on disk and to run under a trusted process identity. The choice of injection target depends on the operator's goals: svchost.exe for persistence, explorer.exe for user context, lsass.exe access for credentials. Without injection, Cobalt Strike is more detectable via Sysmon 1 (unusual process binary) and Sysmon 3 (unexpected process making outbound connections).
- Can EventPeeker detect Cobalt Strike in an uploaded EVTX file?
- Yes — EventPeeker's detection engine looks for LSASS access patterns (Event ID 4663), LOLBin execution (Event ID 4688), suspicious PowerShell (Event ID 4104), and credential dumping indicators that overlap with Cobalt Strike's behavior. Sysmon EVTX files (Microsoft-Windows-Sysmon/Operational channel) provide the best coverage — upload your Sysmon log alongside your Security log for correlated detection across both channels.
Detect Detecting Cobalt Strike with Sysmon in your logs
Upload an .evtx file from servers, domain controllers, or endpoints — EventPeeker automatically detects detecting cobalt strike with sysmon patterns, maps findings to MITRE ATT&CK, and generates an AI triage report.
Scan for Detecting Cobalt Strike with Sysmon →