CASE-2026-0317-C · ITDR · 3 runs across 8 days Suspicious DEEP PROACTIVE · ITDR CROSS-RUN MEMORY

The pattern that fired.
The fix that didn’t.

The agent ran an eight-pattern identity sweep three times across eight days. The first run was a clean baseline. The second caught a service account logging in via Chrome from a real employee’s laptop. The third, eight days later, found that the recommendation hadn’t been actioned, the misuse had continued daily, and a DLP event tied the same laptop to a Private-classified file access. No detection rule ever fired.

What was tested
8 MITRE identity techniques across 2 IdPs (Okta + Entra ID). 27 FSQL queries per run. No alert had fired in either platform.
What Workers found
Pattern 8, Service Account Abuse. svc-backup@ authenticated via Chrome from laptop LAP-890, breaking its automated server-only baseline. Cross-correlation identified tina.b***@ as the regular operator of that laptop.
What the memory caught
Eight days later, the same finding, escalated. Service account misuse had continued for seven consecutive days, now with post-login web activity, and a DLP event on the same laptop. Recommendation from Run 2 was not actioned.
3
Assessment runs
27
Queries / run
$1.1-1.6K
Analyst cost saved
2
IdPs swept
~200
Accounts analyzed
0
Alerts fired
→ Proactive identity assessment.

The agent did not wait for an alert. It tested eight MITRE identity techniques on a cadence across two IdPs. The most consequential finding came on the eighth pattern, in the second run. No alert ever fired.

→ Cross-investigation memory.

Run 3 did not start over. It read Run 2’s report, checked the recommendation status, and added what was new. The agent is not a goldfish. It tracks whether recommendations were actioned and flags the ones that weren’t.

→ Remediation tracking built in.

The agent checked whether prior recommendations were actioned and escalated when they weren’t. Run 3’s value came from memory, not rediscovery.

The Mandate

Eight MITRE techniques. Two identity providers. No alert needed.

Most identity threats don’t trigger alerts. They look like normal logins, until someone steps back and asks whether the right user from the wrong device, the wrong IP, or the wrong hour actually fits the baseline. That’s the question an ITDR assessment is built to answer.

The agent’s instructions on March 17 were to sweep the [tenant] mesh for eight identity-attack patterns across both connected IdPs (Okta and Microsoft Entra ID) and surface what no existing detection rule covered. Seven days of authentication data, thirty days of privilege-change data, ~200 accounts.

P1Password SprayingT1110.003
P2Credential StuffingT1110.004
P3Impossible TravelT1078
P4MFA FatigueT1621
P5Dormant Account ActivationT1078
P6Cross-IdP AnomalyT1078
P7Privilege EscalationT1098
P8Service Account AbuseT1078.001

The same eight-pattern sweep would be re-run on March 18 and again on March 26. The first run was a baseline. The second and third are why this case is here.

Run 1: Clean Baseline (March 17)

The first sweep was healthy. Mostly.

Run 1 produced an overall risk verdict of HEALTHY with documented caveats. Of the eight patterns, two surfaced low-confidence suspicious signal (shared public IPs across users, impossible-travel candidates) that the agent attributed to a test-bed environment with simulated data. Three patterns were clean. Three were blocked on data gaps.

The agent also documented an architectural insight that single-IdP tools hide from buyers: Okta was recording internal proxy IPs in src_endpoint.ip; Entra was recording public client IPs in device.ip. Until that field-path asymmetry was reconciled, cross-IdP IP correlation would produce false matches. The finding was logged. A query template update was queued.

P1Password SprayingT1110.003CLEAN
P2Credential StuffingT1110.004CLEAN
P3Impossible TravelT1078LOW-CONF
P4MFA FatigueT1621DATA GAP
P5Dormant AccountT1078INCOMPLETE
P6Cross-IdP AnomalyT1078CLEAN
P7Privilege EscalationT1098DATA GAP
P8Service Account AbuseT1078.001CLEAN

The agent signed off. A clean-with-caveats baseline. The next run would be scheduled for the following day.

Run 2: Pattern 8 Fires (March 18)

Same sweep. One pattern caught.

Run 2 swept the same eight patterns against fresh data. Seven came back clean or data-gap, just like the day before. Pattern 8, Service Account Abuse, moved from CLEAN to SUSPICIOUS, high confidence.

P1Password SprayingT1110.003CLEAN
P2Credential StuffingT1110.004CLEAN
P3Impossible TravelT1078CLEAN
P4MFA FatigueT1621DATA GAP
P5Dormant AccountT1078INCOMPLETE
P6Cross-IdP AnomalyT1078CLEAN
P7Privilege EscalationT1098DATA GAP
P8Service Account AbuseT1078.001SUSPICIOUS

At 2026-03-18 09:22:50 UTC, the service account svc-backup@[tenant].onmicrosoft.com authenticated to Okta. The login itself was successful. Nothing about it, in isolation, would trigger an alert. The agent’s hit came from comparing the login’s shape to the account’s baseline.

# Q7 — Pattern 8 baseline query QUERY authentication.actor.user.email_addr, authentication.src_endpoint.ip, authentication.time, authentication.http_request.user_agent FROM ‘Okta Signin Backup’ WITH authentication.actor.user.email_addr = ‘svc-backup@[tenant].onmicrosoft.com’ AFTER 7d → 5 records: 4 automated + 1 anomalous

The account had a consistent baseline: four automated logins per hour at fifteen-minute intervals from server 10.100.10.5, user-agent ServiceAgent/1.0 (BackupAutomation). The fifth record didn’t match. It was an interactive login from a different IP, using Chrome.

  • Baseline (4 of 5 records): 10.100.10.5, ServiceAgent/1.0 (BackupAutomation), 15-min intervals.
  • Anomalous (1 of 5 records): 172.16.82.127, Chrome/120.0.0.0, single timestamp.
Cross-Correlation

A laptop. A user. A four-minute window.

The IP 172.16.82.127 was internal RFC1918; it couldn’t be enriched with external threat intel. The agent took a different pivot: which device holds this IP, and who else has authenticated from it today?

A DHCP lookup mapped 172.16.82.127 to host LAP-890, a laptop, not a server. A second authentication query against that same IP across the prior 24 hours returned fourteen records. Thirteen of them belonged to one person.

Authentication activity on LAP-890 · 24h window

tina.b***@, regular operator

00:53 UTC · tina.b***@ login (success)
03:43 UTC · tina.b***@ login (success)
04:31 UTC · tina.b***@ login (success)
05:39 UTC · tina.b***@ login (success)
06:40 UTC · tina.b***@ login (success)

svc-backup@, anomalous login

09:22:50 UTC · svc-backup@ login via Chrome, INSIDE TINA’S ACTIVE SESSION WINDOW
10:52 UTC · tina.b***@ failed login from LAP-890
13:37 UTC · tina.b***@ login (success)
15:26 UTC · tina.b***@ login (success)
17:08 UTC · tina.b***@ login (success)
The anomalous service-account login falls inside tina.b***@‘s active session window on her own laptop. The likeliest person behind the service-account credentials is the person who uses the device every day. The agent did not conclude an attack. It recommended an interview, a credential rotation, and an IP restriction, with a disposition of SUSPICIOUS.

The recommendation went to the security team. The run was archived. A new run was queued for the following week.

Run 3: Memory Test (March 26)

Eight days later. Same finding. Worse.

Run 3 swept the same eight patterns against fresh data. Pattern 8 surfaced again: same service account, same laptop, now with seven consecutive days of daily logins. The agent did not re-discover the finding from scratch. It read its own prior assessment, confirmed the recommendation had not been actioned, and added the new evidence that had accumulated since.

Run 1
2026-03-17
HEALTHY · baseline
8 patterns swept. Mostly clean. Architectural IP-asymmetry insight logged.
Run 2
2026-03-18
SUSPICIOUS · P8 fires
svc-backup@ browser login from LAP-890. Cross-correlation identified tina.b***. Interview + rotate + restrict recommended.
Run 3
2026-03-26
ESCALATED · not remediated
Same finding daily × 7 days. Now with post-login web activity from svc-backup@. DLP event on same laptop: tina.b*** attempted to access a Private-classified file.

The Run 3 report’s first line is the kind of sentence security teams need agents to write: “The primary finding from the prior assessment was not remediated.” The agent had not forgotten. It had checked.

  • Pattern persistence: svc-backup@ continues to authenticate to Okta via Chrome from LAP-890 (172.16.82.127) every day at ~09:22 UTC. Mar 20 through Mar 26, inclusive, seven consecutive days.
  • New evidence: the service account is now making HTTP requests after the browser login, where the original baseline showed authentication-only activity.
  • DLP correlation: a DLP event on the same laptop in the intervening week shows tina.b***@ attempting to access a Private-classified file. The agent did not declare this causal; it surfaced it for analyst review.
  • Recommendation status: credential rotation, IP restriction, and conditional-access policy from Run 2 were not actioned. Escalation re-issued.
01

The most useful identity findings are not alerts.

No detection rule fired across the three runs. A periodic eight-pattern sweep with cross-source pivots caught what an alert-driven SOC would have missed entirely. ITDR assessments belong on a cadence, not an event trigger.

02

One pivot can replace ten enrichment queries.

The pivot from IP-of-the-anomalous-login to who else authenticated from that IP identified the user in one query. Threat intel has nothing to say about an RFC1918 address, and the agent did not waste budget asking. Pivot beats enrichment when the IP is internal.

03

Cross-run memory is a feature, not a luxury.

Run 3’s value came from comparing today against a previous report. Without memory, Run 3 would have surfaced “service account interactive login, investigate” as a fresh finding. With memory, it surfaced “the recommendation from Run 2 was not actioned, and here is what’s new since.” That’s the difference between a repeat alert and an escalation.

04

Data gaps are recommendations, not blockers.

MFA challenge logging absent. Privilege change events absent. Each run produced an explicit, prioritized remediation list for every gap it found. The gaps weren’t worked around. They were named, ranked, and handed to the platform team.

Queries, sources & gaps

Key queries across the three runs

R2·Q7 Pattern 8 baseline: svc-backup@ authentication history (7d) HIT
QUERY authentication.actor.user.email_addr, authentication.src_endpoint.ip, authentication.time, authentication.status_id, authentication.message, authentication.http_request.user_agent FROM ‘Okta Signin Backup’ WITH authentication.actor.user.email_addr = ‘svc-backup@[tenant].onmicrosoft.com’ AFTER 7d
5 records — 4 automated (10.100.10.5, ServiceAgent/1.0) + 1 anomalous (172.16.82.127, Chrome/120.0.0.0). Pattern shape clear after one query.
R2·Q9 Cross-pivot: who else authenticated from 172.16.82.127 today? PIVOT
QUERY authentication.actor.user.email_addr, authentication.src_endpoint.ip, authentication.time, authentication.status_id, authentication.message FROM ‘Okta Signin Backup’ WITH authentication.src_endpoint.ip = ‘172.16.82.127’ AFTER 24h
14 records — 13 tina.b***@, 1 svc-backup@. The single most efficient query in the case: one pivot, one correlation, one named user.
R2·Q10 DHCP map: which device holds 172.16.82.127? ENRICH
QUERY dhcp_activity.device.name, dhcp_activity.device.ip, dhcp_activity.time WITH dhcp_activity.device.ip = ‘172.16.82.127’ AFTER 24h
LAP-890 — laptop class, not server. Confirms anomaly: service account shouldn’t authenticate from a user laptop.
R3·Q3 Pattern 8 re-test (8 days later), same account, same query PERSISTS
QUERY authentication.actor.user.email_addr, authentication.src_endpoint.ip, authentication.time, authentication.http_request.user_agent FROM ‘Okta Signin Backup’ WITH authentication.actor.user.email_addr = ‘svc-backup@[tenant].onmicrosoft.com’ AFTER 7d
7 anomalous records (one per day, Mar 20–26) plus 28 automated. Pattern frequency unchanged. Recommendation not actioned.
R3·Q7 Post-login activity: is svc-backup@ doing anything new? NEW EVIDENCE
QUERY http_activity.user.email_addr, http_activity.url.text, http_activity.time WITH http_activity.user.email_addr = ‘svc-backup@[tenant].onmicrosoft.com’ AFTER 7d
HTTP requests now present where prior runs showed authentication-only activity. Behavioral baseline drift confirmed.
R3·Q9 DLP activity on LAP-890, same laptop, intervening week CROSS-DOMAIN
QUERY dlp_activity.user.email_addr, dlp_activity.file.name, dlp_activity.file.classification, dlp_activity.action, dlp_activity.time WITH dlp_activity.device.ip = ‘172.16.82.127’ AFTER 7d
1 record — tina.b***@ attempted access to a Private-classified file on Mar 23. Action: blocked. Surfaced for analyst correlation, not declared causal.

Showing 6 of 81 queries across the 3 runs. Full per-run query trails in queries.md for each assessment.

Sources queried · with status

SourceStatusNotes
identity.okta (Signin Backup)HITPrimary authentication record; svc-backup@ baseline + anomaly
identity.azuread (Entra Signin Backup)HITCross-IdP comparison; public client IPs via device.ip
network.dhcpHITIP → device pivot (172.16.82.127 → LAP-890)
http_activity (proxy)PARTIALBehavioral drift confirmed in Run 3; full URL classification limited
dlp_activityHITCross-domain correlation in Run 3, same laptop, same week
identity.entra (audit logs)GAPNo entity_management events. Pattern 7 not testable
identity.okta (mfa_challenges)GAPMFA fields empty on both connectors. Pattern 4 not testable

Gaps explicitly catalogued

  • MFA challenge logging not populated on either IdP. T1621 detection is blind. Remediation: enable Okta System Log MFA events + Entra sign-in logs with MFA detail.
  • Privilege escalation events not present. T1098 detection is blind. Remediation: onboard entity_management or account_change events from both IdPs.
  • Okta source IPs are all internal proxy. Geo-based impossible-travel detection on Okta side is degraded. Entra provides public client IPs via device.ip as compensating control.
  • Auth0 + JumpCloud auth connectors produce zero events. If these IdPs are in active use, identity events are being lost.

MITRE ATT&CK coverage

TechniquePatternResult across 3 runs
T1110.003Password SprayingCLEAN × 3
T1110.004Credential StuffingCLEAN × 3
T1078Impossible TravelLOW-CONF × 1, CLEAN × 2 (architectural shared-IP resolution)
T1621MFA FatigueDATA GAP × 3. Recommendation: enable logging
T1078Dormant AccountINCOMPLETE × 3. Recommendation: user inventory normalization
T1078Cross-IdP AnomalyCLEAN × 3. Architectural IP-field asymmetry documented
T1098Privilege EscalationDATA GAP × 3. Recommendation: onboard entity_management
T1078.001Service Account AbuseCLEAN → SUSPICIOUS → ESCALATED