Playbook ID: PB-INSIDER | Default severity: SEV-3 (escalate to SEV-2 on confirmed exfiltration of regulated or trade-secret data, or any privileged/Tier-0 subject; SEV-1 on active sabotage) | Owner: Incident Commander, jointly with the Legal Liaison from the first hour
Open this playbook when the suspected actor is someone who is supposed to have access. Triggers:
git clone --mirror of repos outside their team, an outsized CRM export, a database dump from an account that normally runs single-row queries.Not for an external actor driving a stolen credential (14.3 or 14.4 — the disambiguation is Phase 1 step 4), contractor abuse where the vendor is the risk (14.5), or an insider-authorized fraudulent payment made under social-engineering pressure (14.2).
Every other playbook here assumes an adversary who had to break in. This one does not. The subject already holds the badge, the SSO session, the VPN profile, and — this is the part that hurts — the knowledge of exactly where the good data lives and which controls are theatre. No initial access to detect, no lateral movement, no beacon to hunt. T1078 Valid Accounts is not a step in the kill chain here. It is the whole kill chain.
Most cases are not the movie version. The dominant pattern is the departing employee taking "their" work: the rep who exports the pipeline before joining a competitor, the engineer who mirrors a repo they wrote most of. Very few think of themselves as thieves; they think of themselves as people packing a box. That belief is why the signal is so loud — own laptop, own account, business hours, no evasion — and why the human handling must be careful, because much of what looks like theft is genuinely ambiguous. The second pattern is negligence, which is more common and less interesting right up until it becomes notifiable: nobody exfiltrated anything, somebody clicked "anyone with the link," and GDPR Article 33 is triggered by a personal data breach, not by malice. The third pattern changed the numbers — Mandiant's M-Trends 2026 puts global median dwell at 14 days while internally detected dwell improved to 9, the aggregate dragged up by espionage and DPRK IT-worker cases at a 122-day median (M-Trends 2026). A fraudulently hired remote worker is an insider who was an adversary before their first standup.
The mistake teams make is running this alone. Someone sees a DLP hit, opens the subject's mailbox to "just check something," and posts a screenshot in a channel with forty people. In one afternoon you have wrecked the employment case, created discoverable material you will hate, and — if you were wrong — done real harm to someone who did nothing. Note that CISA's federal playbooks, the reference implementation for most of this chapter, contain no insider-threat content and no HR/Legal coordination path at all (CISA Playbooks).
Actionable takeaway: the Legal Liaison is engaged before the first query, not after the first finding.
| Role | Responsibility in this scenario |
|---|---|
| Incident Commander | Owns the covert/overt transition; holds the case access list to a minimum and approves every addition personally. |
| Legal Liaison | Engaged at T+0. Sets privilege structure, rules on lawful monitoring in the subject's jurisdiction, owns holds and demand letters. |
| HR Liaison | Sole authorized source of employment context; schedules and runs the employment action and sets its exact time. |
| Operations Lead | Executes collection and, on the IC's word, the containment burst. Does not improvise. |
| Forensics Lead | Acquires and analyses endpoints under chain of custody. Separate from the admin of the systems examined. |
| Scribe | Case timeline in UTC. Records decisions and approvers, not opinions about the subject. |
| Communications Lead | Prepares messaging for the subject's team; releases nothing until the IC says so. |
| Executive Sponsor | Approves law-enforcement referral, civil action, and any action against an officer. |
Table conventions. `TIP-OFF marks a step the subject can observe. EVIDENCE` marks a step that degrades evidence if run out of order. Do not reorder around those markers without the IC.
Covert. Nothing here may be visible to the subject.
| # | Action | Who | Done when | Evidence to capture |
|---|---|---|---|---|
| 1 | Open the case in a restricted case system with a named access list — not the SOC queue, not the shared IR channel, not a ticket the subject can read. | IC | Access list ≤6 names | Case ID, UTC creation time, access list |
| 2 | Notify the Legal Liaison before any collection. Get the privilege convention and channel instructions in writing. | IC | Written direction from counsel filed | Direction memo, privilege marking convention |
| 3 | Get HR's written authorization for targeted review, plus employment status, notice period, last working day, pending actions, jurisdiction. | HR Liaison | Authorization signed and filed | Dated authorization; HR facts as a memo to file, never a chat message |
| 4 | Disambiguate insider from account takeover. Compare device, IP/ASN and time-of-day against a 90-day baseline via the Entra sign-in logs, Get-MgRiskyUser and Get-MgRiskDetection. Own managed device, normal network, normal hours = insider. Anything else: stop, open 14.3 or 14.4. | Ops Lead | Hypothesis recorded with its evidence | Sign-in log export, device IDs, risk detections, written rationale |
| 5 | Place holds before anything touches retention: eDiscovery hold over the mailbox, OneDrive and the mailboxes/sites backing Teams and M365 Groups (holds); S3 Object Lock legal hold on collected artefacts — no expiry, stays until explicitly removed (Object Lock). | Legal Liaison + Ops Lead | Holds confirmed on every custodian location | Hold IDs, custodian list, s3:PutObjectLegalHold responses |
| 6 | Export short-retention logs now. Entra audit and sign-in logs are 7 days on Free, 30 on P1/P2; risky sign-ins reach 90 days only on P2; retention changes are not retroactive (Entra retention). Workspace email log search is 30 days. CloudTrail Event history is 90 days, management events only. | Ops Lead | Exports complete, hashed, stored | Manifest with SHA-256 per file, tool version, operator, UTC times |
| 7 | Quietly enable missing auditing: Set-Mailbox <mailbox> -AuditEnabled $true -AuditOwner @{Add="Create","Update"}, plus the manually-activated SearchQueryInitiated action where needed — then re-verify the full list, because adding it replaces the default set (CISA Expanded Cloud Logs Playbook). `TIP-OFF` where the subject holds admin or directory-read access | Ops Lead | Confirmed via `Get-Mailbox <id> \ | FL Audit` |
| 8 | Scope what was accessed. For mail, MailItemsAccessed — pivot on SessionID, ClientInfoString, ClientIPAddress, MailAccessType (Sync = whole folder, Bind = per message), and check IsThrottled: over 1,000 records in 24 hours stops logging for that mailbox for 24 hours. In Workspace, Drive log events and OAuth Token log events — the latter lags a couple of hours, so an immediate check yields false negatives (Workspace lag). | Forensics Lead | Dated file- or folder-level list of what moved | Query text, raw exports, hash manifest; interpretation as a separate document |
| 9 | Enumerate standing access and self-created persistence without changing anything: groups, privileged roles, OAuth grants, PATs, SSH and API keys, owned service accounts, `Get-InboxRule -Mailbox <mailbox> \ | FL Name,Description,DeleteMessage,MoveToFolder,Enabled, mailbox forwarding (ForwardingAddress/ForwardingSmtpAddress, which does **not** appear in Get-InboxRule` output), and external sharing links. | Ops Lead | Complete revocation target list exists, unexecuted |
| 10 | Classify: malicious, negligent or unresolved, and set severity. Record which evidence drove it. | IC + Legal Liaison | Classification written with rationale | Classification memo, severity inputs, named decision-maker |
Containment here is an employment decision with a technical execution. The two must be synchronized to the minute.
| # | Action | Who | Done when | Evidence to capture |
|---|---|---|---|---|
| 1 | Fix the covert/overt transition (Decision 1) and set T-zero: the exact UTC minute the employment conversation begins. Everything below is timed against it. | IC + HR Liaison + Legal Liaison | T-zero agreed and written down | Decision record with time, authority, attendees |
| 2 | Pre-stage the revocation bundle as a reviewed script covering every target from Phase 1 step 9. Dry-run against a test account. Do not execute. | Ops Lead | Peer-reviewed and rehearsed | Script, dry-run output, approver name and time |
| 3 | Acquire endpoint evidence before the device leaves the subject's possession, where case and jurisdiction allow: EDR investigation package or a triage collection (KAPE/Velociraptor), plus memory (WinPmem, or AVML/LiME on Linux) if sabotage is suspected. `EVIDENCE` if left until after the burst | Forensics Lead | Collection complete and hashed | Package, hashes, collector version, operator, UTC start/end, custody form opened |
| 4 | At T-zero, conversation underway, run the bundle as one atomic burst. Hybrid identity, on-prem AD first: Disable-ADAccount, then Set-ADAccountPassword -Reset twice, with two different random values — Microsoft's reason is mitigating pass-the-hash under replication delay (emergency revocation). `TIP-OFF` | Ops Lead | AD disabled, password reset twice | Command transcript with timestamps, operator, return values |
| 5 | Then Entra, in this order: Update-MgUser -UserId $User.Id -AccountEnabled:$false → Revoke-MgUserSignInSession -UserId $User.Id → Get-MgUserRegisteredDevice piped to Update-MgDevice -AccountEnabled:$false. Needs User Administrator (Privileged Authentication Administrator if the subject holds an admin role) and Cloud Device Administrator. `TIP-OFF` | Ops Lead | All three done; no new tokens issued after | Transcript, disabled device IDs, first post-burst failed sign-in |
| 6 | Workspace needs both calls: POST /admin/directory/v1/users/{userKey}/signOut kills sessions and resets sign-in cookies; DELETE /admin/directory/v1/users/{userKey}/tokens/{clientId} revokes each OAuth grant. signOut alone leaves third-party apps working (signOut, tokens.delete). `TIP-OFF` | Ops Lead | Sessions killed and every grant revoked | API responses; prior tokens.list output as the target inventory |
| 7 | Cloud: attach the AWSRevokeOlderSessions inline policy (a Deny conditioned on aws:TokenIssueTime) and change the underlying permissions — AWS states you "must also change permissions" (temporary credentials). Set long-term keys to Inactive with aws iam update-access-key. Sessions otherwise run up to 36 hours. `TIP-OFF` | Ops Lead | Policy attached, permissions changed, keys inactive | Policy document with timestamp, IAM change events from CloudTrail |
| 8 | Same burst: badge deactivation, VPN certificate revocation, MDM lock or selective wipe, every non-federated local account. Use the Phase 1 enumeration, not memory. `TIP-OFF` | Ops Lead + Facilities | Every enumerated target confirmed revoked | Per-system confirmations, badge system audit entry |
| 9 | Retrieve corporate devices at the end of the conversation. Do not power the device on. Do not let the subject delete personal files or log in one last time. Bag, tag, transfer. `EVIDENCE` | HR Liaison + Forensics Lead | Devices in custody, form signed by both parties | Chain of custody per RFC 3227: where/when/by whom collected, who handled it, custody periods, transfers |
| 10 | Data already outside your control — personal cloud, personal devices, a new employer — is a legal instrument, not a technical one. Hand it to Legal for preservation demand, return-and-certify-destruction, and injunctive relief if warranted. | Legal Liaison | Demand issued, response deadline diarized | Copy of the demand, proof of service, deadline in the timeline |
| # | Action | Who | Done when | Evidence to capture |
|---|---|---|---|---|
| 1 | Revoke OAuth grants the subject created or consented to: Remove-MgOauth2PermissionGrant for delegated grants, Remove-MgServicePrincipalAppRoleAssignment for application permissions. Microsoft is explicit that password resets and MFA "aren't effective against this type of attack, because these apps are external to the organization" (illicit consent grants). | Ops Lead | No grants remain attributable to the subject | Before/after grant inventory, removal transcript |
| 2 | Delete personal access tokens, deploy keys, SSH keys, CI/CD secrets and webhooks the subject created. A PAT outlives the SSO session that made it. | Ops Lead | Removed across every repo and pipeline | Token/key inventory before and after, deletion confirmations |
| 3 | Rotate every shared secret the subject knew: service account passwords, vault items in scope of their role, shared API keys, database credentials, restricted-network PSKs, any break-glass credential they could read. | Ops Lead | Rotation complete, services healthy | Rotation tickets, vault audit log showing prior read access, post-rotation checks |
| 4 | Remove mail and collaboration persistence: inbox rules, mailbox forwarding, mailbox and calendar delegation, external sharing links they created. | Ops Lead | None remain | Removal transcript; revoked links with the files they exposed |
| 5 | Re-validate standing access the subject approved for others. A malicious insider's most durable persistence is a second account they legitimized through the normal process. | Ops Lead + IAM owner | Every approval in the review window re-validated by a different approver | Approval audit export, re-validation with new approver names |
| 6 | Disable or delete service accounts and automation the subject personally owned. In GCP, disabling a key does not revoke short-lived credentials already minted from it — the service account itself must be disabled or deleted (key disable). | Ops Lead | No orphaned automation runs under their identity | Service account inventory before/after, dependent job list |
| 7 | Negligent cases: close the exposure. Revert public buckets and sites to private, revoke anyone-with-the-link shares, recall or purge misdirected mail where the platform allows. Then treat any consumer AI service, unsanctioned SaaS or personal cloud involved as an unmanaged data location and hand it to Legal for a deletion demand and written certification. | Ops Lead + Legal Liaison | Exposure closed and independently verified; certification received or gap logged as accepted risk | Config before/after, access logs for the exposure window, provider certification or risk acceptance with an owner |
| # | Action | Who | Done when | Evidence to capture |
|---|---|---|---|---|
| 1 | Verify data integrity where sabotage was possible: compare critical datasets, configurations and code against known-good, checking for silent modification, not only deletion. | Ops Lead | Integrity confirmed or damage scoped | Diff output, restore point used, verification sign-off |
| 2 | Restore what was deleted or degraded, following Chapter 12's order and validating from an immutable copy the subject could not reach. | Ops Lead | Verified by the business owner, not by IT | Restore log, business-owner sign-off |
| 3 | Transfer business-critical content and duties: mailbox and drive delegated to the manager under documented authorization, on-call reassigned, documentation gaps named. | HR Liaison + Ops Lead | No orphaned critical function | Delegation authorization, handover record |
| 4 | Close the gap the case revealed — the over-entitlement, missing egress control, or unmonitored channel that made the activity possible or invisible. | IC | Implemented, or a dated backlog item with a named owner | Change record or backlog entry with owner and due date |
| 5 | If the subject is cleared, restore them fully and quickly, and say so in writing. Restore access, correct the internal record, give the manager language that leaves no insinuation hanging. | HR Liaison + Legal Liaison | Access restored, correction issued, manager briefed | Clearance memo, restoration record, list of everyone who was ever told |
| 6 | Release legal holds only on the Legal Liaison's written instruction — never on a responder's sense that the case feels finished. | Legal Liaison | Written release instruction filed | Release instruction and confirmation |
| # | Action | Who | Done when | Evidence to capture |
|---|---|---|---|---|
| 1 | Produce the factual timeline in UTC, keeping observed facts and analytical conclusions in separate documents. Counsel decides what is written where. | Scribe + Legal Liaison | Reviewed by counsel and filed | Final timeline, review record |
| 2 | Decide law-enforcement referral and civil action (Decision 3), and record the decision either way with its reasoning. | Executive Sponsor on Legal Liaison recommendation | Decision recorded | Decision memo, referral reference if made |
| 3 | Notify the cyber insurer inside the policy window and preserve what the policy requires. | Legal Liaison | Insurer acknowledged | Notification copy, acknowledgement, claim number |
| 4 | Run the peer-scope review: did the subject's whole team share the same over-entitlement? Nine times in ten the answer is yes, and that is the actual finding. | IC + IAM owner | Peer entitlement review complete with remediation raised | Review output, remediation tickets |
| 5 | Blameless review for negligent cases, disciplinary process for malicious ones — and do not confuse the two. | HR Liaison + IC | Findings have owners and due dates | Review record, findings register |
| 6 | Tune the rule that fired, write the one that should have, log telemetry gaps as ingest work rather than detection work, and name the process defect — unowned offboarding checklist, unreviewed entitlements, unmonitored egress, or unclassified data store. | Detection owner + IC | Rules validated against a representative test event; defect accepted with owner and date | Rule diff, validation result, findings register entry |
The clock here is a data clock, and it starts on discovery, not on proof of intent. Chapter 15 carries the full matrix; three points are insider-specific.
Safe ungated — everything that gathers, nothing that acts: correlating HR lifecycle events with data-movement telemetry to raise a case rather than an accusation; firing the eDiscovery hold and short-retention log exports the instant a case opens, with hashing; generating the Phase 1 step 9 enumeration into a revocation target list that is never executed automatically; assembling a normalized UTC timeline with source and hash per entry.
Requires a human gate:
Actionable takeaway: automate to shorten the burst, never to start it.
Takeaway: the technical half of this playbook is the solved half — preserve, scope, revoke in one burst, verify. The half that decides whether you got it right is the one where a real person's job and reputation ride on evidence that is usually incomplete. Move deliberately in Phase 1. Move fast, and once, in Phase 2. And be as quick to clear someone as you were to open the case.