Prepare
Could we respond tonight?
Tools staged, retainers signed, and logs you can still reach if the directory goes down.
Every breach leaves evidence.
Finding it is the job.
Then make sure it never happens twice.
Most of this work starts on someone else's worst day. A ransom note on a file server. A payment sent to an account that isn't the supplier's. A cloud key in a public repository. The job is the same every time: find out what really happened, get the attacker out completely, bring the business back in the right order, and close the door they came through.
Collect it in the order it disappears. Then make every piece defensible.
A remote session can cache tiles of the operator's screen on the machine it came from.
Logon types, shell history, and folder-browsing records that outlive the folders themselves.
Injected code, live connections and keys often live nowhere else. Kill the process and they're gone.
Deleted rarely means destroyed. File tables, change journals and execution caches rebuild a file's whole life.
Pulling the plug loses memory and can lock encrypted disks. Isolate the network, keep the machine running.
Hash at collection and at every handover. One undocumented gap can undermine every finding built on it.
Contain the whole identity, or the attacker keeps a key.
Recovery is an attack surface too: verify help-desk resets through a channel the caller doesn't control.
Once an attacker owns the directory, rebuilding servers changes nothing. Eviction is a sequence.
Build clean admin workstations from offline media before you touch anything else.
Protected-account flags, nested top-tier groups and risky domain permissions. Group lists alone miss delegated rights.
Certificate services, federation, directory sync, backups and hypervisor management can all hand out the keys to everything.
The protected-account template is reapplied hourly, so a backdoor planted there comes back.
Reset the ticket-signing account twice, confirming replication and waiting out the maximum ticket lifetime (10 hours by default) in between. Forged tickets die; real logons don't.
Re-run the attack-path assessment against your baseline. If a path remains, you aren't finished.
Encryption is the last move, not the first. By then they've usually been inside for days.
A phish, MFA push fatigue, an unpatched edge device or a password recycled from an old breach.
Directory queries, network scans and the victim's own remote tools. It looks like admin work.
Credential memory scraped, service tickets cracked offline, directory replication faked.
Remote desktop, remote services and admin shares, often on legitimate tools.
Backup consoles and shadow copies are hit before the main event.
Bulk uploads to cloud storage. A clean restore won't undo this.
Often out of hours, often the hypervisor. One host, every server.
Trace impact back to first access. Restore before closing the way in, and you'll do this twice.
Could we respond tonight?
Tools staged, retainers signed, and logs you can still reach if the directory goes down.
What do we actually know?
Keep observed, inferred and unknown apart. Missing logs are a limitation, not an alibi.
How do we stop the spread?
Scope quietly, then hit every foothold at once. If encryption is live, isolate first and capture memory alongside.
Is every foothold gone?
Attackers plant spares. One missed backdoor undoes the cleanup, so rebuild wherever trust is gone.
Is it actually clean?
Clean means before the breach, not before the encryption. Test restores before you need them.
What changes now?
Blameless, within weeks. Compare the first chance to detect with the moment you did.
Recovery order is set by trust, not by whoever shouts loudest.
Unverified backups are the attacker's backups. Restore into isolation, then patch and reset before reconnecting.
Every owner says their system is critical. Real traffic shows the true dependencies.
Good response leaves better detection behind.
One query for unusual access to credential memory outlives every renamed tool.
Measure how regular callbacks are, not where they go.
Otherwise you run it by hand forever.
Alert when a log source stops talking.
A rule that fires a thousand times a day is switched off by lunch.
Agents hold credentials, call tools and follow instructions. Treat them as privileged users.
What an agent can do sets the damage. Irreversible actions need explicit approval and hard limits.
One hidden line in a PDF is enough. Everything an agent reads is untrusted.
Keep secrets and authorisation in code the model can't see.
Validate it before it reaches anything that renders, queries or runs it.
Enforce the user's permissions before a passage reaches the prompt.
Hash the weights, config and data first. An old model with a poisoned index isn't recovery.
Blameless, within weeks, while memories are fresh. Find the root cause, then rehearse with the people who'd really be in the room.