Detecting C2 Beaconing in Sysmon Telemetry
Why this matters
Sysmon is one of the richest free sources of host telemetry, but that richness is also the problem: a busy workstation generates a continuous stream of EventID 3 network connections, and a command-and-control beacon is a handful of those events hiding among thousands of legitimate ones. The signal that separates “a process made an outbound connection” from “this process is talking to a live Cobalt Strike server” is almost never in the connection event by itself — it is in the reputation of the destination and the lineage of the process that opened it. Both are present in Sysmon; they just have to be correlated.
Indicators to look for in Sysmon telemetry
EventID 3(NetworkConnect) with aDestinationIpoutside your known SaaS/CDN ranges, often on a non-standardDestinationPort(our sample:185.220.101.42on4444)EventID 1(ProcessCreate) with aCommandLinecontainingpowershell -encor another base64 blob — the loader that stages the beaconEventID 22(DNSQuery) resolving a suspiciousQueryNamesuch asmalware-c2.ru, with theQueryResultspointing at the same IP the host later connects to- Repeated EventID 3 connections from the same
Imageat a regular interval — beacon cadence rather than human-driven traffic - A short chain where an encoded-PowerShell process, a network connection to a bad IP, and a matching DNS query all share a timeframe and a host
How LogTriage detects this
The Sysmon parser maps each event by EventID: EventID 3 becomes a network event whose path is DestinationIp:DestinationPort and whose DestinationIp is fed to threat-intelligence enrichment, while EventID 1 preserves the full CommandLine. Two independent scoring rules then fire on our sample. The NetworkConnect’s destination, 185.220.101.42, is a confirmed Tor-exit range already in LogTriage’s malicious CIDR table, and a single confirmed-malicious verdict floors that event’s risk score to 75 regardless of the additive base. Separately, the encoded-PowerShell loader matches the host-attack signature for obfuscated PowerShell execution and floors that event to 70 — this floor exists precisely because host telemetry carries no user-agent or ASN for the pipeline to score on otherwise. The EventID 22 DNS query to malware-c2.ru is preserved as the event path, giving you the domain-level pivot for hunting the same C2 elsewhere.
Detection / evidence checklist
- List every EventID 3 destination the suspect process contacted, with timestamps, and check each IP against current threat intelligence rather than a stale internal blocklist
- Pull the EventID 1
CommandLinefor the process and its parent — an encoded-PowerShell or LOLBin loader is the confirmation that the connection is not benign - Cross-reference EventID 22
QueryName/QueryResultsto establish which C2 domain resolved to the connected IP - Look for regular-interval repetition in the EventID 3 records — cadence is a stronger signal than any single connection
- Isolate the host and rotate any credentials active in a session on it during the beacon window, then trace the process tree back to the initial infection vector
Frequently Asked Questions
- Which Sysmon EventID actually records the C2 connection?
- EventID 3 (NetworkConnect). LogTriage extracts DestinationIp and DestinationPort and builds the event path as destination:port — in our sample that is 185.220.101.42:4444. The destination IP is then enriched against threat intelligence, which is what turns a bare connection event into a scored C2 finding. A non-standard port like 4444 is a corroborating signal, not the detection itself.
- Does Sysmon capture the encoded PowerShell that loaded the beacon?
- Yes, and this is where Sysmon beats EDR sources that only log the image name. The parser prefers the CommandLine field on EventID 1 (ProcessCreate) over the Image, so an invocation like cmd.exe /c powershell -enc JABjAG... is preserved in full. LogTriage's host-attack signature set matches encoded/obfuscated PowerShell and floors that event to 70.
- Why does the DNS query to the C2 domain matter?
- Sysmon EventID 22 (DNSQuery) records the QueryName the malware resolved before connecting — malware-c2.ru in our sample — and the QueryResults it got back. Even when a connection is short-lived, the DNS lookup is a durable indicator of which domain the host tried to reach, and it is often the pivot for hunting the same domain across other hosts.
- How does LogTriage tell a beacon apart from normal outbound traffic?
- Three signals in combination: the destination's threat-intelligence reputation (a confirmed-malicious verdict floors the event to 75 on its own), the loader context (an encoded-PowerShell parent process is not normal application behavior), and connection regularity across repeated EventID 3 records. Any one alone can be a false positive; together they confirm the behavior.
Related Resources
See this detection run on a real report
Try the live demo with a pre-loaded malicious log set — no signup required — or upload your own log file and get a full AI-reviewed threat report in minutes.