1. The Team Server
The central C2 hub, deployed by the attacker on a VPS or bulletproof hosting provider. It manages beacon callbacks, hosts the Malleable C2 profiles, coordinates lateral movement, and logs all extracted data.
Understanding Cobalt Strike requires dissecting its three-tier architecture. Threat actors use this structure to abstract their actual location and maintain persistent access to compromised networks.
1. The Team Server
The central C2 hub, deployed by the attacker on a VPS or bulletproof hosting provider. It manages beacon callbacks, hosts the Malleable C2 profiles, coordinates lateral movement, and logs all extracted data.
2. The Client
The graphical user interface utilized by the threat actor to connect to the Team Server. It provides the operator with a real-time visual map of the compromised network.
3. The Beacon (Payload)
The actual implant deployed on the victim’s machine. It is a highly sophisticated, asynchronous agent that polls the Team Server for tasks, executes them entirely in memory, and returns the results.
The Beacon is much more than a standard reverse shell; it is a full-fledged post-exploitation Swiss Army knife designed to defeat static endpoint protection.
This is Cobalt Strike’s most formidable feature. Malleable C2 profiles allow the operator to completely rewrite the beacon’s network signature. An attacker can alter HTTP headers, URIs, User-Agents, and payload encoding to make their C2 traffic look exactly like Google Analytics, jQuery, or Microsoft Update telemetry. This renders traditional, signature-based IDS/IPS appliances almost useless.
Cobalt Strike aims to operate completely fileless after the initial execution. It relies heavily on Reflective DLL Injection and Process Hollowing.
The beacon typically injects its payload into legitimate Windows processes (like svchost.exe, rundll32.exe, or werfault.exe). Consequently, the malicious code runs inside a trusted, signed Microsoft binary memory space, bypassing legacy antivirus engines.
The Beacon includes built-in capabilities to execute Living Off The Land (LOLBAS) techniques natively:
If an endpoint cannot reach the internet (e.g., an isolated database server), an attacker can deploy an SMB Beacon. This beacon communicates with a primary, internet-facing beacon over the internal network usingNamed Pipes encapsulated in SMB. To network defenders, this traffic appears as standard internal Windows file sharing, keeping the deep network intrusion completely dark.
Detecting Cobalt Strike on an endpoint requires behavioral analysis and memory forensics.
rundll32.exe without any command-line arguments to host the injected beacon. A rundll32.exe process with an empty command line or spawned by an unexpected parent (like winword.exe or wscript.exe) is a massive red flag. (Correlate with Event 4688).svchost.exe or lsass.exe.1768.py) can carve the memory to locate the Beacon. Extracting the Beacon Configuration Block is the ultimate jackpot: it reveals the attacker’s Malleable C2 profile, sleep times, Named Pipe strings, and exact Team Server IP/Domains.Cyber Threat Intelligence (CTI) analysts do not just wait for alerts; they actively scan the IPv4 space to identify and block Cobalt Strike infrastructure before an attack occurs. According to advanced hunting methodologies by Hunt.io, Team Servers can be uncovered via distinct OPSEC failures by the attackers.
50050. Scanning for this exposed port is the first step in identifying amateur adversary infrastructure.07d14d16d21d21d00042d41d00041d...).404 Not Found error featuring an exact Content-Length: 0 and specific Date header formatting.payload.bin, beacon.exe, or default PowerShell stagers.// Detects suspicious rundll32 execution often associated with Cobalt Strike process injectionDeviceProcessEvents| where FileName =~ "rundll32.exe"// Cobalt Strike frequently spawns rundll32 without arguments to inject the beacon payload| where isempty(ProcessCommandLine) or ProcessCommandLine endswith "rundll32.exe"// Exclude normal parent processes to reduce noise| where InitiatingProcessFileName !in~ ("explorer.exe", "svchost.exe")| project TimeGenerated, DeviceName, InitiatingProcessFileName, FileName, ProcessCommandLinetitle: Cobalt Strike SMB Beacon Named Pipe Createdid: 8c9d0e1f-2a3b-4c5d-6e7f-8a9b0c1d2e3fstatus: stabledescription: Detects the creation of Named Pipes matching default Cobalt Strike Malleable C2 profiles, indicating SMB lateral movement.logsource: category: pipe_creation product: windowsdetection: selection: PipeName|contains: - '\msagent_' - '\mojo.5688.8052.' - '\postex_ssh_' - '\status_' condition: selectionlevel: criticaltags: - attack.command_and_control - attack.t1090