The C2 beacon is your best shot: commodity loaders to domain ransomware, and why isolating one host fails
A phishing loader delivers a commodity RAT and opens a C2 beacon hours before anything is encrypted. That beacon is the cheap, early detection. But once a live C2 channel sits on a host with reachable privileged credentials, the operator pivots interactively, so isolating one host is not containment. Here is how the chain runs and what actually stops it.
Ransomware crews increasingly do not need custom malware to get in. A phishing lure drops a commodity RAT loader, the loader opens a command-and-control beacon, and a human operator works hands-on-keyboard from there. A commodity RAT loader that opens ordinary web C2 and ends in hands-on-keyboard domain ransomware is a clean example of the pattern. The important thing for a defender is the timing: the beacon exists for hours before the encryptor runs. That gap is where the incident is won or lost.
How it works
The entry is unremarkable. A user opens a lure attachment, and a loader launches a scripting-interpreter stager: powershell.exe spawned from an Office child process is the classic shape (T1566, Phishing, then T1059, Command and Scripting Interpreter). The stager opens a persistent channel to a command-and-control host over ordinary web traffic and begins regular, jittered check-ins (T1071, Application Layer Protocol). That is the RAT beacon, and it is quiet.
No files are encrypted yet. The operator reads LSASS on the beachhead to recover cached credentials (T1003, OS Credential Dumping), finds a reachable privileged account, and uses it to move over remote services to a second host, opening another beacon there (T1021, Remote Services). Only after they have spread and tampered with defenses on reachable hosts do they stage the ransomware payload for a coordinated push (T1486, Data Encrypted for Impact). Encryption is the last act, not the first.
Why the beacon is your best shot
Everything expensive happens later. The credential dumping, the lateral movement, the defense tampering, and the encryption all come after the channel is open. The beacon is the earliest reliable tell, and it is cheap to catch, because it has two anomalies at once: a process that should never egress is talking to the internet, and it is doing so on a regular cadence to an unfamiliar host.
CPU spikes, slow-machine reports, and the ransom note are late. They arrive at or after detonation, when your options have collapsed to recovery. The beacon arrives hours earlier and keeps firing. If you are watching process lineage and beaconing behavior, you can catch this while it is still one host.
How to detect it
Detect on lineage and cadence, not on the payload. A scripting host (powershell.exe, wscript, rundll32) making regular, jittered check-ins to a destination it has never contacted is the signal. Join that with the sequence that follows on the same host: an LSASS read, then an explicit-credential logon (4648) to a second host under the same account. That sequence, in minutes, on one workstation, is a hands-on-keyboard operator, not routine admin work. Add the beacon reappearing on a second host and you are watching the pivot in real time.
How to contain and shut it down
This is the part people get wrong. Once a live C2 channel sits on a host with reachable privileged credentials, isolating that one host does nothing. The operator already holds a credential that works from anywhere, and they are interactive. Pull the machine off the network and they pivot from the next host the credential reaches. Treat the reachable credential base as burned:
- Cut the C2 channel: block the destination at the proxy and kill the beaconing process on the beachhead.
- Isolate the beachhead, and every host the stolen credential touched, not just the first machine you saw.
- Disable and reset the compromised account and every privileged credential reachable from the beaconing host.
- Hunt the fleet for other beacons with the same lineage and cadence, and for the stolen credential’s logons across the window.
- Remove any staged payload and persistence on every touched host, and restore the defenses the operator disabled, before you trust a host again.
Then scope honestly. Even if you prevented encryption, a human operator had interactive access with a privileged credential for hours. The obligations follow what that credential could reach and act on, not whether the encryptor ran. Scope from the forensic record, then assess notification by data type and jurisdiction and any contractual duties. ‘No encryption, no incident’ understates a live interactive compromise.
Practice it
We built this as a scenario in GraphLattice Range: a phishing loader that drops a commodity RAT, a persistent C2 beacon hours before encryption, credential theft, an interactive pivot to a second host, and a ransomware payload staged for detonation. It forces the non-obvious call under time pressure. Isolate the one host you found, or cut C2 and treat the reachable credential base as burned. Teams that have made that call in a drill make it faster when it is real.