foyl SIEMAlert Queue · INV-2026-0206
Live
Impossible Travel - Seattle to untrusted Tor source in 17 minutes
CRITICAL
09:44:18
Outbound C2 Callback - Known Tor exit on port 4444
CRITICAL
09:44:01
MFA Fatigue Attack Suspected - 9 push requests in 90 seconds
HIGH
08:51:02
Suspicious DNS - Lookalike domain secintel-id-secure.com resolved
HIGH
08:47:31
Lateral Movement - SMB ADMIN$ FINANCE-WS-07 → SI-DC-01
HIGH
09:14:55
Large Outbound Transfer - 847 MB to dropbox-cdn.io over HTTPS
CRITICAL
09:44:01
Alert Detail
← Select an alert
Key Concept
Alerts display in reverse chronological order but the attack ran forward in time. Reorder by timestamp to reconstruct the kill chain - the suspicious DNS at 08:47 is patient zero.
Reading the Alert Queue
Alerts fire in reverse chronological order but the investigation runs forward. Sort chronologically: suspicious DNS at 08:47 is patient zero - that's when Marcus clicked. Impossible travel and C2 callback firing simultaneously at 09:44 means the attacker already has a foothold and is actively operating. Triage starts with highest severity + earliest in the attack chain. Ask the class: "Which alert would you open first?" and why the answer isn't always the highest severity one.
Class Exercise
Put the 6 alerts in chronological order of when each event occurred (not when it fired). What does the gap between the DNS alert (08:47) and the impossible travel alert (09:44) tell you about how long the attacker had undetected access? Answer: 57 minutes of dwell time before detection.
foyl MailGuardMessage Trace · marcus.chen@secintel.corp
Message IDMSG-EG-001 ↗
Threat IDTHREAT-EG-001 ↗
FromIT-Security-Team@secintel-id-secure.com (domain registered 3 days prior)
Tomarcus.chen@secintel.corp
Subject⚠ URGENT: Verify your account - unusual sign-in detected
Received2026-06-05 08:12:04 UTC · via 185.220.101.47
DKIMFAIL
SPFFAIL - secintel-id-secure.com not authorized
DMARCFAIL → QUARANTINE (user self-released 08:45)
Dear Marcus,
Our security systems have detected an unusual sign-in attempt on your account. To protect your account, please verify your identity immediately.
Action Required: Click the link below. This link expires in 15 minutes.
https://secintel-id-secure.com/login/verify (click to add as IOC)
IT Security Team - foyl SecIntel
Proofpoint Analysis
AiTM phishing kit (EvilGinx2) - proxies the real Microsoft login and captures the post-authentication session token, allowing replay without a fresh MFA challenge
Domain secintel-id-secure.com registered 2026-06-02 - 3 days before attack. Cloudflare privacy guard.
Sending IP 185.220.101.47 matches known AiTM infrastructure (Tor exit node)
DMARC quarantined this email - user manually released at 08:45 and clicked at 08:47
Urgency language, IT impersonation, 15-minute countdown - classic social engineering
Why DMARC Didn't Stop This
DMARC worked correctly - it quarantined the email. The failure was a process gap: users could self-release quarantined email. DMARC is only as strong as your quarantine policy. Document this as a control gap, not a DMARC failure.
Analyst Tip - Domain Age
Any sending domain registered fewer than 30 days ago is a strong phishing indicator. Threat actors register lookalike domains days before campaigns. Check WHOIS or Proofpoint domain intelligence on every suspicious sender.
IOC Collector
Click highlighted elements to add IOCs
Exercise
Identify all IOCs from this email. What type is each one (IP, domain, URL, email)? Which IOC would you block first to prevent further phishing victims?
AiTM - Why MFA Didn't Stop This
Classic phishing steals credentials. AiTM proxies the real login in real time - Marcus authenticates including MFA, but the attacker's proxy captures the session cookie. That cookie is replayed without credentials or MFA. Key lesson: user self-released this email from quarantine. DMARC worked - user override defeated it. Document this as a process gap. This is also why FIDO2/passkeys are the only MFA that defeats AiTM - they bind the challenge to the origin domain, so the proxy can't relay it.
Discussion Point
If SecIntel had required FIDO2 hardware keys instead of push MFA, would this attack have succeeded? Why or why not? Answer: No - FIDO2 challenges are cryptographically bound to secintel.corp, so the proxy on secintel-id-secure.com would receive a challenge it can't fulfill.
Event Detail
← Select an event
Token Theft vs Credential Theft
Resetting Marcus's password won't remove the attacker's session - you must revoke all Entra tokens. Also: the OAuth app registered at 09:08 persists even after token revocation. It's a second persistence mechanism that must be removed separately. This two-step persistence (token + OAuth app) is standard attacker practice to survive remediation. Walk through the Sessions tab - ask students: "How do you tell which session is the attacker's without geolocation?"
Analyst Note
The 90-day default token TTL in M365 is what made this attack so impactful. Continuous Access Evaluation (CAE) would have forced re-authentication when the IP changed from US to Russia, potentially cutting attacker access in seconds instead of 57 minutes.
Filter:
Artifact Detail
← Select an event
Key Concept
The dropper chain here is textbook: Browser → cmd.exe → PowerShell (encoded) → File drop → Registry persistence → C2 beacon. Each step is detectable - browsers must never spawn cmd.exe.
Analyst Tip
Check file names masquerading as system processes: svchosts.exe (extra 's') mimics svchost.exe. Look at the file path - legitimate svchost.exe only runs from System32, never from AppData.
Dropper Anatomy
Walk through the timeline chronologically. The key detection opportunity is at 08:47:45: chrome.exe renderer spawning cmd.exe. This is almost never legitimate - browser renderers operate in sandboxed processes and should never interact with the shell. PowerShell script block logging would have captured the decoded payload. The Registry Run key in HKCU (user space) is chosen to avoid needing admin rights - the dropper runs entirely as marcus.chen with no privilege escalation.
Class Exercise
FINANCE-WS-07 is reimaged. Which artifacts could survive a reimage? Answer: None of these - all are user-space. However, the attacker's OAuth app in Entra ID and the stolen session token would survive endpoint remediation. This is why identity and endpoint remediation must happen in parallel.
Process Detail
← Select a process
Containment Checklist
Host Isolated✗ Pending
Sessions Revoked✗ Pending
C2 Killed✗ Pending
Order Matters
Isolate first - cuts all network paths simultaneously. Then revoke sessions. Then kill process. Killing C2 first may trigger secondary persistence.
Containment Order Matters
Isolate first - cuts all network paths simultaneously. Then revoke tokens. Then kill the process. If you kill C2 first, the attacker may trigger a secondary persistence mechanism. The browser→cmd→powershell chain is a classic click-to-execute dropper - chrome renderers should never spawn cmd.exe. That's your smoking gun in the process tree. Also: network isolation happens at the EDR agent level, so even if FINANCE-WS-07 is plugged in, it can't route traffic to the internet or the internal network during isolation.
Class Exercise
Click each containment action in order - Isolate, then Revoke, then Kill C2. Then discuss: What would happen if you revoked sessions first but forgot to isolate? The C2 channel (powershell.exe → port 4444) runs independently of the M365 session - so revoking tokens doesn't kill the C2. You need both.
INV-2026-0206 · ATT&CK Coverage
Initial Access
T1566.002Spearphishing Link
Execution
T1059.001PowerShell
Persistence
T1547.001Registry Run Keys
T1098.001Additional Cloud Credentials
Credential Access
T1557Adversary-in-the-Middle
T1539Steal Web Session Cookie
Defense Evasion
T1078Valid Accounts
Command & Control
T1090.003Multi-hop Proxy (Tor)
Lateral Movement
T1021.002SMB/Admin Shares
Collection
T1213Data from Info Repositories
Exfiltration
T1567.002Exfil to Cloud Storage
← Select a technique to see evidence and detection opportunities
Key Concept
MITRE ATT&CK is a knowledge base of adversary behaviors. Mapping an incident to ATT&CK techniques helps you answer: Where are your detection gaps? If you have no telemetry for a technique, that's a sensor coverage gap.
Exercise
For each technique, ask: Which security control could have prevented or detected it? Some techniques like T1078 (Valid Accounts) are nearly impossible to prevent - you can only detect through behavioral analytics.
ATT&CK Mapping - Instructor Notes
Walk through each phase left-to-right. This incident touches 9 tactics and 10 techniques - it's a comprehensive campaign, not a smash-and-grab. Focus on the detection gap conversation: the attacker used Tor (T1090.003) throughout, so IP-based blocking was difficult. The persistence via OAuth app (T1098.001) is particularly important because it survives all identity remediation except explicit app removal.
Discussion Point
If SecIntel had FIDO2 MFA, T1557 and T1539 would have failed at the credential access phase. Every subsequent technique would have been impossible. Ask students: which single control has the highest impact on this attack chain?