Skip to content
Free lab

ITDR Lab

Identity is the new perimeter, and an identity attack hides in one line of a noisy sign-in feed. Work a stream of decoded identity-signal events and make the call on each: benign, or name the attack — an impossible-travel session, an MFA-fatigue flood, OAuth token abuse, a dormant account waking up, a password spray, a privilege-escalation role grant, MFA tampering, or a golden-SAML forgery — then pick the containment: step-up, revoke, disable, or open an IR case. You are scored on detection rate against false positives, because flagging a benign VPN hop or a ticketed role grant is its own failure. Clear the feed clean.

The real job. More noise, a tighter clock.

0sPro

Identity-signal feed

Triage as of snapshot 2026-10-14 10:00 UTC: name the identity attack (or call it benign), then pick the response.

#1

alice.tan@northwind.com

event

Two interactive sign-in successes ~27 minutes apart from different continents.

sign-in #109:14 UTC · Chicago, US · 73.12.x.x · managed laptop · MFA satisfied
sign-in #209:41 UTC · Lagos, NG · 102.89.x.x · new browser · MFA satisfied
velocity~9,900 km in 27 min — not physically possible
egresssign-in #2 from a residential ISP, not a known corp/VPN range

context: Sales rep, baseline is Chicago business hours. No travel on calendar.

#2

180 distinct accounts

event

One failed sign-in each against 180 different users from a single source, one password.

sourcesingle IP 45.146.x.x (hosting ASN, Seychelles)
pattern1 failed auth per account across 180 accounts in 11 min
passwordidentical candidate (Autumn2026!) tried once per account
lockoutsnone — stays under the per-account lockout threshold

context: Tenant has 4,100 users. No single account is being hammered.

#3

raj.patel@northwind.com

event

43 MFA push notifications in 8 minutes, then one approval from a new device abroad.

passwordcorrect on first try (credential already known to attacker)
MFA pushes43 prompts in 8 min — 42 denied, 1 approved
approvalapproved from a new Android in Bucharest, RO · 188.27.x.x
next eventapproved session created a new inbox forwarding rule

context: User in Austin, phone normally registered to a managed iPhone. User later says they "tapped to stop the buzzing".

#4

dana.k@northwind.com

event

Authenticator removed and a new MFA method enrolled from an unmanaged device, then login.

security-inforegistered authenticator app DELETED
security-infonew phone number +40-... registered as MFA
devicechange made from an unmanaged, non-compliant device
sequenceMFA change → password change → sign-in, all within 4 min

context: No IT help-desk ticket and no self-service reset request precedes the change.

#5

omar.said@northwind.com

event

Sign-ins from two cities an hour apart — both from the corporate VPN egress.

sign-in #108:05 UTC · "Dublin, IE" · 52.x.x.x
sign-in #209:02 UTC · "Frankfurt, DE" · 52.x.x.x
egressboth IPs are the company global-VPN range (ASN 8075, allow-listed)
devicesame managed laptop, one continuous SSO session, no re-auth

context: Corp VPN back-hauls to regional gateways; geo on the IP reflects the gateway, not the user.

#6

svc-nightly-etl (service principal)

event

Non-interactive token used from the datacenter at the usual 02:00 batch window.

authclient-credentials (managed identity), non-interactive
sourcedatacenter subnet 10.20.x.x — matches baseline
time02:00 UTC, the scheduled ETL window
scopeonly the Storage scope it has always held — no new consent

context: A service account for the nightly data pipeline; baseline is this exact pattern every night.

#7

contractor-lee (ex-vendor)

event

Account silent for 412 days authenticates and grants OAuth consent.

last sign-in412 days ago, then nothing until now
HR statusvendor engagement ended 13 months ago — account never disabled
nowinteractive sign-in + consent to a third-party mail app
sourceVPS provider IP, never seen for this account

context: Offboarding should have disabled this account; it was missed.

#8

priya.n@northwind.com

event

User consents to a third-party app requesting broad, offline mailbox+file scopes.

app"PDF Invoice Sync" — unverified publisher, registered 2 days ago
scopesMail.ReadWrite, Files.Read.All, offline_access (refresh token)
flowconsent link arrived in a phishing email; user clicked Accept
resultrefresh token issued — app can read mail with no further login

context: This is an illicit-consent-grant ("OAuth phishing") — no password is stolen; the user is tricked into granting an app.

#9

mark.d@northwind.com

event

A standard user is added to Global Administrators at 03:10, off change-window.

changeadded to role "Global Administrator"
grantorby account "it-helpdesk-07", itself created 6 days ago
time03:10 UTC, outside the approved change window
ticketno change ticket referenced

context: Role changes to Global Admin require a ticket and must happen in the business-hours change window.

#10

sofia.ruiz@northwind.com

event

61 MFA prompts in 15 minutes — every one denied, none approved.

passwordcorrect (attacker has the credential)
MFA pushes61 prompts in 15 min — all 61 DENIED
approvalnone — no session was ever created
userreports the buzzing to the help desk; did not approve

context: The password is clearly known to an attacker, but the user held the line and no prompt was approved.

#11

webapp-prod (service principal)

event

A refresh token is exchanged for a new access token from the same app and host.

flowrefresh_token grant → new access token (normal rotation)
sourcesame app registration, same datacenter IP as issuance
tokenold refresh token rotated out and invalidated, as designed
scopeunchanged from the original consent

context: OAuth refresh tokens are meant to be exchanged for access tokens; rotation is healthy, not replay.

#12

nina.ok@northwind.com

event

A user is added to an admin role during the change window with a linked ticket.

changeadded to "Helpdesk Administrator" role
grantorby an existing, established IAM admin
time14:20 UTC — inside the approved business-hours window
ticketCHG-20418 referenced; approved in the change system

context: Role grants are allowed when ticketed, in-window, and performed by an established admin.

#13

tom.vance@northwind.com

event

Laptop session in New York, then a mobile sign-in in London 70 minutes later.

sign-in #114:00 UTC · New York, US · managed laptop
sign-in #215:10 UTC · London, GB · personal phone
velocity~5,600 km in 70 min — far faster than any flight
egressLondon IP is a residential ISP, not a VPN/carrier relay

context: No VPN on either session; both are direct ISP egress. User has no dual-presence explanation.

Detection + containment

Call each event, then grade. So far 0/13 triaged, 0/9 attacks detected, 0 false positive(s).

How it is scored

Full credit needs BOTH the right detection and the right response — spotting the attack is half the job, the right containment is the other half.

A false positive (flagging benign activity) takes an extra hygiene bite — an identity queue that cries wolf burns the same trust as one that misses.

Harder tiers add subtler attacks and deliberate traps (VPN/CGNAT geo hops, normal token rotation, ticketed role grants, sanctioned break-glass).

Live arena

4 active
adversary kill-chain1/5
soc-hunter-noor17%
idp-eng-cho7%
iam-analyst-vega4%
iam-analyst-you (you)0%

adversary staging…

TL;DR

What this lab is

  • A free, browser-based Identity Threat Detection & Response (ITDR) lab: work a feed of ~18 decoded identity-signal events and, for each, name the identity attack (or call it benign) and pick the containment.
  • Attacks seeded across the feed: impossible travel, MFA fatigue / push bombing, OAuth token abuse (illicit consent grant and token replay), dormant-account reactivation, password spray, privilege-escalation / role-grant anomaly, MFA disabled / method tampering, and golden-SAML forged assertions.
  • Responses you choose from: step-up re-auth + credential reset, revoke sessions/tokens, disable the account, open an IR case, or leave a benign event alone — and full credit needs the right detection AND the right response.
  • You are graded on detection rate weighed against false positives — flagging normal activity (a VPN geo hop, a normal token refresh, a ticketed role grant, sanctioned break-glass) takes an extra hygiene penalty.
  • All signals are read against a fixed snapshot window, and after grading every event explains why that detection and that response are right.

Frequently asked questions

What is the ITDR Lab?

A free, in-browser Identity Threat Detection & Response exercise. You read a feed of decoded identity-signal events — sign-in geo and velocity, egress IP/ASN, device posture, MFA prompts and approvals, security-info and MFA-method changes, OAuth consent and token flows, directory role grants, and SAML assertions — and for each event you make two calls: which identity attack it is (or benign), and the correct response. You are scored on how many real attacks you detect and contain correctly versus how many benign events you wrongly flag.

Which identity attacks does it cover?

Impossible travel, MFA fatigue / push bombing, OAuth token abuse (both illicit consent grants to rogue apps and replay of stolen tokens), dormant-account reactivation, password spray, privilege-escalation / role-grant anomalies, MFA disabled or method tampering as ATO persistence, and golden-SAML forged assertions. Benign events — including deliberate false-positive traps like VPN/CGNAT geo hops, normal refresh-token rotation, ticketed in-window role grants, and sanctioned break-glass use during a declared incident — are salted throughout.

How is it graded?

Each event has one correct detection and one correct response, and full credit needs both — spotting the attack is half the job, choosing the right containment (step-up, revoke, disable, or open an IR case) is the other half. False positives — flagging a benign event as an attack — carry an extra hygiene penalty, because an identity alert queue responders cannot trust is as useless as one that misses attacks. A perfect run calls every event exactly right, benign ones included.

Does it connect to my identity provider?

No. Nothing is uploaded and no real IdP, directory or log is touched. The events are authored, realistic decoded identity-signal snapshots bundled with the page, and every call is made against a single fixed snapshot window so the feed is deterministic and never goes stale. It runs entirely in your browser — no account, no install, nothing sent anywhere.

Who is it for?

SOC analysts, identity and access engineers, and detection-and-response teams who triage sign-in risk and directory events, plus anyone prepping for a security interview who wants to feel why impossible travel means revoke, an unanswered MFA flood means step-up, a disabled MFA method means disable, and a password spray or golden-SAML event means open an IR case — and why a VPN geo hop or a ticketed role grant is not a finding at all.

🎉 New here? Use code WELCOME10 for 10% off any plan at checkout
ITDR Lab — Free Interactive Identity Threat Detection & Response Trainer · PlayCISO