Appearance
Ransomware Incident Response Playbook
Purpose: End-to-end ransomware response procedure — from first alert through containment, investigation, recovery, and HIPAA notification. This playbook ties together all kill chain response runbooks into a single scenario.
Severity: P1 — Critical. Every step in this playbook is time-sensitive.
Owner: Rory Prerequisite reading: runbooks/incident-response.md (general IR principles). This playbook assumes those principles and focuses specifically on ransomware.
Note: This environment experienced a ransomware incident in November 2024. Lessons from that event are incorporated throughout.
Stage 0 — Before It Happens: Readiness Checks
Run these monthly during runbooks/monthly-security-review.md:
- [ ] All kill chain agents running and posting findings to SecOps
- [ ] Arctic Wolf MDR integration active — verify last heartbeat
- [ ] Cortex XDR sensors connected on all managed endpoints
- [ ] EventID 4688 + PowerShell logging confirmed in LAW (spot check KQL)
- [ ] Backup integrity verified (
runbooks/backup-restore-verification.md) - [ ] Break-glass credentials tested and current (
runbooks/annual-bgkit-verification.md) - [ ] Out-of-band comms plan reviewed (
runbooks/out-of-band-comms-plan.md) — ransomware may encrypt your email
Stage 1 — Detection
Expected First Signals
In roughly this order:
- Telegram notification — kill chain agents fire CRITICAL (execution, credential dumping, lateral movement)
- Arctic Wolf alert — MDR may call before SecOps notification if they detect behavior on endpoints
- Cortex XDR incident — behavioral detection on the endpoint (process injection, LSASS access)
- Palo Alto DNS Security — C2 callback domain blocked; check firewall threat logs
- User report — "files are renamed" or "can't open documents" — this is late-stage, encryption is starting
If only one signal: treat it as high-severity and begin triage. Do not wait for multiple confirmations.
Opening an Incident
- Open a P1 incident in SecOps immediately:
POST /api/incidentswithseverity=critical,category=ransomware - Start a time-stamped log — record every action with timestamp from this point forward
- Notify Rory via phone (not just Telegram) if not already aware — Telegram may be on the compromised device
Stage 2 — Triage (0–15 Minutes)
Goal: Determine scope before containing. Containment that's too narrow misses compromised hosts; too broad causes unnecessary downtime.
- Pull all active SecOps findings from the last 4 hours — which hosts, which accounts, which kill chain stages have fired?
- Check kill chain stage coverage:
- Execution detected? →
runbooks/kill-chain-execution-response.md - Persistence? →
runbooks/kill-chain-persistence-response.md - Credential dumping? →
runbooks/kill-chain-credential-dumping-response.md - Lateral movement? →
runbooks/kill-chain-lateral-movement-response.md
- Execution detected? →
- Map the affected hosts — build a list of: confirmed compromised, suspected compromised, clean
- Check if a domain controller is in the affected list — DC compromise changes the entire response (all credentials must be treated as compromised)
- Check if DDE environment (Medicare PHI app) hosts are affected — if yes, HIPAA breach notification is almost certainly required
Stage 3 — Containment (15–60 Minutes)
The November 2024 lesson: delay in containment allowed lateral movement to spread to additional hosts. Contain early, even with incomplete information.
Network Isolation
Isolate confirmed compromised hosts first, then suspected compromised:
Via Cortex XDR (preferred — maintains Cortex management channel):
- Console → Endpoints → [host] → Actions → Isolate
Via Arctic Wolf:
- Arctic Wolf has act-first authorization for containment without approval
- Contact via the Arctic Wolf hotline — they can isolate independently if Cortex isolation fails
Do NOT isolate:
- Domain controllers (unless confirmed as ransomware origin — isolation breaks domain auth)
- Network infrastructure (firewalls, switches) — contain via firewall rules instead
Firewall Segmentation
If the source of lateral movement is identified as a specific IP or segment:
- Panorama → Policies → Security → add deny rule blocking that IP from reaching the rest of the network
- If ransomware is communicating outbound (C2): block the destination IP and any known ransomware-related domains in DNS Security
Active Directory
If lateral movement is detected and credentials are suspected compromised:
- Disable the compromised account(s) in Active Directory immediately
- If a DA (Domain Admin) account is compromised: reset all privileged account passwords
- If a DC is confirmed compromised: force reset the krbtgt password twice (invalidates all Kerberos tickets)powershell
# Run on the PDC emulator Set-ADAccountPassword -Identity krbtgt -Reset -NewPassword (Read-Host -AsSecureString) # Wait 10 hours (max Kerberos ticket lifetime), then repeat
Cloud Access
Revoke Entra tokens for affected accounts:
- Entra → Users → [user] → Revoke sessions
- For all accounts with sessions on compromised hosts (see lateral movement KQL)
Stage 4 — Evidence Preservation (Parallel With Containment)
Do not destroy evidence before forensics. Run these in parallel with containment:
- Disk snapshots before isolation (if possible):
az snapshot create --source <disk-id> - Export LAW logs for the affected hosts and the 72 hours before first detection — save to a secure location
- Export Cortex XDR incident timeline — screenshot the causality view for each affected host
- Firewall session logs from Palo Alto — Panorama → Monitor → Traffic logs for the affected source IPs
- Document the blast radius — which hosts, accounts, data were touched
Stage 5 — Investigation (1–24 Hours)
Goal: Establish the complete attack timeline and initial access vector.
Timeline Reconstruction
Work backward from the first kill chain signal:
kql
// All events on affected hosts 72h before first kill chain detection
SecurityEvent
| where TimeGenerated > ago(72h)
| where Computer in ("<host1>", "<host2>")
| where EventID in (4688, 4624, 4648, 4625, 7045, 4698, 1102, 5140)
| project TimeGenerated, EventID, Computer, Account, NewProcessName, CommandLine
| order by TimeGenerated asckql
// Initial access — was there a successful login from a new location or device?
SignInLogs
| where TimeGenerated > ago(72h)
| where UserPrincipalName in ("<affected_account>")
| project TimeGenerated, UserPrincipalName, IPAddress, Location, DeviceDetail,
ConditionalAccessStatus, RiskLevelDuringSignIn
| order by TimeGenerated ascCommon Initial Access Vectors (from November 2024 lessons)
| Vector | What to Look For |
|---|---|
| Phishing | SignInLogs for account; 4688 LOLBin from Office parent shortly after email received |
| VPN credential theft | Twingate logs for first login from new IP; GeoIP anomaly |
| Exposed RDP | 4625 brute force followed by 4624 success from external IP |
| Supply chain | GitHub Actions audit log; new workflow runs; dependency changes |
| Legitimate tool abuse | IT admin tool used outside CM window (psexec, remote management) |
Ransomware Family Identification
- Check file extension on encrypted files (if encryption has begun)
- Check ransom note filename — ransomware families have distinctive note filenames
- Submit a sample to Cortex XDR threat intel or ID Ransomware (
https://id-ransomware.malwarehunterteam.com) - Share with Arctic Wolf — they may have seen the strain recently
Stage 6 — Eradication
After the full scope is known:
- Reimagine all confirmed compromised hosts — do not attempt to clean and reuse; ransomware often leaves backdoors
- For Azure VMs: delete and redeploy from Terraform
- For physical/unmanaged: clean install, verify firmware integrity before reattaching to network
- Reset passwords for all accounts that had sessions on any compromised host
- Force-reset krbtgt twice if any DC was compromised (if not already done in Stage 3)
- Review and rotate all service account passwords and API keys that were accessible from compromised hosts
Stage 7 — Recovery
- Restore from last known-good backup before the earliest confirmed compromise date:
- Azure workloads:
runbooks/veeam-restore-procedure.md - AWS workloads: AWS Backup restore
- PostgreSQL: Azure Database for PostgreSQL point-in-time restore
- Azure workloads:
- Verify backup integrity before restoring — ransomware may have corrupted backups if it had access to the backup system
- Bring systems back online in isolation first, verify clean, then reconnect to production network
- Monitor closely for 48–72 hours after recovery — reinfection is common if initial access vector is not fully closed
Stage 8 — HIPAA Notification Assessment
Run the 4-factor breach risk assessment per compliance/hipaa-breach-notification-procedure.md:
Questions to answer:
- Were any hosts with ePHI access compromised? (Azure PROD systems, DDE environment, psql-secops-prod, SharePoint with PHI)
- Did exfiltration occur? (Check
runbooks/kill-chain-exfiltration-response.md, Palo Alto traffic logs) - Was data encrypted in place (encrypted = likely accessible to attacker before encryption)?
- Can you demonstrate the attacker did not access specific ePHI? (High bar — usually cannot be conclusively demonstrated)
Conservative posture: If you cannot rule out ePHI access, treat it as a breach. The cost of over-notification is low; the cost of under-notification is severe.
Notification deadlines:
- Individual notification: within 60 days of discovery
- HHS: concurrent with individual notification (500+ affected) or annual log (<500)
- Adriana coordinates notification logistics
Stage 9 — Post-Incident
Within 72 Hours
- [ ] All compromised systems reimaged and restored
- [ ] All affected accounts with passwords reset
- [ ] Initial access vector closed
- [ ] Arctic Wolf post-incident report requested
- [ ] Cortex XDR support case opened if sensor was bypassed
Within 30 Days
- [ ] Full incident timeline documented in SecOps
- [ ] HIPAA breach risk assessment completed and documented
- [ ] Root cause analysis completed (
skills/RootCauseAnalysis) - [ ] Lessons learned documented
- [ ] New detection rules or known-good rules added based on findings
- [ ] HIPAA risk assessment updated (
compliance/hipaa-risk-assessment.md) - [ ] IR tabletop findings updated (
compliance/ir-tabletop-findings-template.md)
Quick Reference — Key Contacts and Resources
| Contact / Resource | Use For |
|---|---|
| Rory (phone) | All P1 escalations |
| Arctic Wolf hotline | Containment, forensics, independent verification |
| Adriana | HIPAA breach notification coordination |
| Kevin / Greg | DR operations, AD if Rory unreachable |
| HHS OCR portal | ocrportal.hhs.gov — breach reporting |
| Palo Alto support | Cortex XDR sensor bypass, firewall issues |
Related Documents
runbooks/kill-chain-execution-response.mdrunbooks/kill-chain-persistence-response.mdrunbooks/kill-chain-credential-dumping-response.mdrunbooks/kill-chain-lateral-movement-response.mdrunbooks/kill-chain-exfiltration-response.mdrunbooks/kill-chain-defense-evasion-response.mdrunbooks/incident-response.md— general IR principlesrunbooks/backup-restore-verification.mdrunbooks/break-glass-procedure.mdcompliance/hipaa-breach-notification-procedure.mdrunbooks/out-of-band-comms-plan.md