| name | analyzing-cobalt-strike-malleable-profiles |
| description | Parses Cobalt Strike malleable C2 profiles using pyMalleableC2 to extract beacon configuration, HTTP communication patterns, and sleep/jitter settings. Combines with JARM TLS fingerprinting to detect C2 servers on the network. Use when investigating suspected Cobalt Strike infrastructure or building detection signatures for C2 traffic.
|
| domain | cybersecurity |
| subdomain | security-operations |
| tags | ["analyzing","cobalt","strike","malleable"] |
| version | 1.0 |
| author | mahipal |
| license | Apache-2.0 |
Analyzing Cobalt Strike Malleable Profiles
Instructions
Parse malleable C2 profiles to extract IOCs and detection opportunities using the
pyMalleableC2 library. Combine with JARM fingerprinting to identify C2 servers.
from malleablec2 import Profile
profile = Profile.from_file("amazon.profile")
print(profile.ast.pretty())
Key analysis steps:
- Parse the malleable profile to extract HTTP-GET/POST URI patterns
- Extract User-Agent strings and custom headers for IDS signatures
- Identify sleep time and jitter for beaconing detection thresholds
- Scan suspect IPs with JARM to match known C2 fingerprint hashes
- Cross-reference extracted IOCs with network traffic logs
Examples
from malleablec2 import Profile
p = Profile.from_file("cobaltstrike.profile")
print(p)
import subprocess
result = subprocess.run(
["python3", "jarm.py", "suspect-server.com"],
capture_output=True, text=True
)
print(result.stdout)