About

This is a SOC-analyst-style body of work built entirely on real packet captures: one baseline of my own "normal" traffic, and five real malware samples pulled from malware-traffic-analysis.net, each fully investigated end-to-end using the same four tools a SOC actually runs.

Real correlation, not staged

Two independent cases in this lab (a C2 beacon and a NetSupport RAT install) turned out to share a byte-for-byte identical C2 beacon protocol despite different dates, IPs, and victim environments — a real cross-case correlation discovered during investigation, not something written into the plan.

Walkthrough

Step 1 — Establish a baseline of normal traffic

Before hunting malware, 25 seconds of my own real traffic were captured (dumpcap -i 1 -a duration:25) while browsing GitHub/Python.org/Cloudflare and running DNS lookups — 11,430 packets. This gives every malware case something to be compared against.

Wireshark Protocol Hierarchy on the baseline capture
TLS/HTTPS-dominant, real DNS, QUIC, NTP, ARP, 3 benign plain-HTTP requests. No suspicious domains, no C2-shaped traffic — the "normal" against which every case below stands out.

Step 2 — Load the malware pcap (Lumma Stealer case, 2026-01-31)

Protocol hierarchy of the malware pcap
51,181 packets, real HTTP/TLS/Kerberos/LDAP/SMB traffic — a full small-office AD environment captured mid-infection.

Step 3-4 — Conversations, then filter to the suspicious one

IPv4 conversations
One conversation stands out: 10.1.21.58 ↔ 153.92.1.49, plain HTTP, non-Microsoft/non-cloud IP — the first real lead.
C2 HTTP filter
ip.addr==153.92.1.49 && http isolates 12 packets: bot-registration + exfiltration pattern, repeated once per browser.

Step 5 — Follow HTTP Stream

Follow HTTP Stream
Request goes to Host: whitepepper.su. The response fingerprints the browser (navigator.platform, hardwareConcurrency, deviceMemory) before the harvesting POST — reading the full stream instead of assuming "just an ack" is what caught this.

Step 6-7 — Cross-verify with NetworkMiner, tcpdump, and Zeek

Four more real, independent cases

Same methodology, applied to four more real samples covering different techniques.

C2 beacon (2026-02-28) — the case that revealed the correlation

Multi-domain C2 via Cloudflare Tunnel abuse (2025-06-13)

Multi-domain C2 filter
Filter across three rotating C2 domains — 64 matching packets. A PowerShell User-Agent hits a typosquatted eventtime-microsoft.org host. *.trycloudflare.com fronts part of the infrastructure specifically because Cloudflare's shared IP space defeats naive IP-based blocking.

PowerShell-delivered RAT via TeamViewer abuse (2025-01-22)

RAT staging sequence
594 matching packets: a PowerShell loader fetched first, then TeamViewer RAT components staged through the same generic file-get API — TeamViewer, a legitimate remote-access tool, deployed for attacker control.

NetSupport RAT install (2024-11-26) — the other half of the correlation

NetSupport check-in and C2
Real NetSupport Manager check-in followed by the same fakeurl.htm CMD=POLL/CMD=ENCD beacon loop seen in the 2026-02-28 case above — the cross-case correlation confirmed from both directions.

Every finding turned into a reusable Sigma rule

7 Sigma rules total across the 5 cases, tested against a real Sigma engine (Zircolite) including a zero-false-positive check against the baseline — the difference between "I know what to look for" and "here's a rule a SIEM could run today."

Findings summary

CaseTechniqueKey IOC
Lumma Stealer infostealerBrowser fingerprinting + credential exfilwhitepepper.su
Periodic C2 beaconNetSupport-style CMD=POLL protocol45.131.214.85
Multi-domain C2Cloudflare Tunnel abuse, typosquattingeventtime-microsoft.org, *.trycloudflare.com
PowerShell RAT deploymentTeamViewer component abuse5.252.153.241
NetSupport RAT installSame beacon protocol as case 2194.180.191.64

Full per-case reports, IOC exports (CSV/JSON), and Sigma rules are in the repository. Every export deliberately separates true threat indicators (blocklist-worthy) from incident observables (victim-environment facts, for internal correlation) and contextual infrastructure (legitimate vendor endpoints that happen to appear because a legitimate tool was abused) — none of it is a maintained production feed, and it says so.