The most uncomfortable incident reviews are the ones where nothing failed. The firewall was current. The endpoint agent was deployed everywhere it could be deployed. The SOC was staffed around the clock and working its queue. Every control did the job it was bought to do, and an adversary still held the network for four months.
This is not a story about a gap in coverage. It is a story about a gap in composition — the difference between recording events and understanding a campaign.
What the endpoint actually saw
Endpoint platforms record far more than they escalate, and for good reason. Consider what a single compromised workstation contributes to the telemetry stream on a normal Tuesday:
- A PowerShell process spawned by a signed parent binary
- An outbound connection to an internal host the machine had not spoken to before
- A credential used slightly outside its owner's usual hours
- A short burst of SMB enumeration against a handful of neighbours
Not one of those crosses a detection threshold, and it would be a serious mistake to make it do so. Administrators run powershell. Machines talk to new peers when someone joins a project. People work late. An alert on any of these individually would bury the team inside a week.
The evidence was never missing. It was recorded, retained, and never assembled.
So the observations sat in telemetry, each one correctly judged unremarkable. The judgement was right at the level it was made. It was the level itself that was wrong.
What the network saw
From the network, the same four months look nothing like noise. A path forms — workstation to workstation to a device nobody manages, and out. The same peers, in the same order, at intervals no human keyboard produces. Discovery activity follows each new hop. Data leaves along the route it arrived on.
None of that is visible from any single host, because none of it happens on any single host. It is a property of the relationships between them.
Why the timing is the hard part
Reconstructing the path is necessary but not sufficient. To act on it you have to attribute traffic to a process, and that means knowing not roughly when a connection happened but exactly when.
Flow summaries typically resolve to an hour. An hour on a busy workstation contains hundreds of processes, which is no better than a guess. Preserving the precise observation time turns an impossible question into a narrow one:
hosts 2 of 1,400
window 12:57:44 - 12:57:51
look for process owning :4444
returns cmdline + parent + userTwo hosts and seven seconds is a question an endpoint platform answers instantly and authoritatively. It was always capable of answering it. Nothing had ever told it which question to ask.
Interrupt first, conclude later
The last piece is ordering. Conventional response waits for an investigation to finish before it acts, which means the adversary keeps their channel for exactly as long as triage takes.
There is no good reason for that sequence. Once a command-and-control path crosses a confidence threshold, the channel can be cut through an integrated firewall while the investigation continues. Because the mitigation is short-lived and targets one channel rather than one machine, a wrong call costs a brief interruption instead of an outage — which is what makes acting early affordable in the first place.
A false positive that takes a system offline is its own incident.
Four months of dwell time is not a story about tools that failed. It is a story about four months of evidence that nobody joined up. See how the correlation works, or how it drives an EDR.
