CTF Writeup

UnderStudy — CORVID STUDIOS Incident — Writeup

Flag (reconstructed from evidence):

Contents

Flag (reconstructed from evidence):

r00t{svc_rendercache_Administrator_090217}

Format: r00t{compromised_credential_impacted_account_true_start_time}, time = hhmmss.

Reconstructed purely from the exported logs. If the scoreboard rejects the exact string, the only defensible variant is casing on the account: r00t{svc_rendercache_administrator_090217}. There is no literal true/false token — “true start time” is a descriptor for the real start time.


Evidence

Six exported event logs across CORVID.LOCAL (also provided as dump_evtx.py XML dumps):

HostLogsNotable IDs
wks-wren07security, sysmon4624, 4769, 4698, 1102, sysmon 1/3
srv-render02security, sysmon4624, sysmon 3
dc01security4662, 4661
wks-okafor03security4624

Raw .evtx record counts match the XML dumps exactly (e.g. dc01 = 15/15) — nothing hidden.

The key discriminator: the .884Z marker

Every genuine attacker event carries fractional seconds .884Z; all benign noise and decoy events end in .000. This cleanly separates the attack from background activity across all six logs. (The collector TimeCreated is uniformly 2026-08-01 — the collection run — so the embedded EventTime/UtcTime is the real event time.)

Kill chain (all .884Z, IP-stitched 10.20.4.41 → 10.20.4.52)

Time (UTC)HostEventMeaning
09:02:17wks-wren07Sysmon 1: WINWORD.EXEpowershell -NoP -W Hidden -Enc (user wren.ashworth), doc CallSheet_ProductionSchedule_v3.docmInitial access — true start
09:02:18wks-wren07Sysmon 3: powershell → 203.0.113.44:8080C2 beacon
09:22:17wks-wren07Sysmon 1: dsquery.exe user -limit 0Domain recon
09:29:17wks-wren07Sysmon 1: dsquery.exe group -limit 0Domain recon
09:36:17wks-wren07Sysmon 1: setspn.exe -Q */*Kerberoast SPN enumeration
13:05:17wks-wren074769 HTTP/rendercache-internal, enc=0x17 (RC4), ip=10.20.4.41Kerberoast → svc_rendercache credential compromised
13:29 / 13:32 / 13:40wks-wren074769 backup-agent / MSSQLSvc / print-svc, enc=0x12 (AES)Decoy TGS requests (AES = not the cracked one)
15:13:17wks-wren07 / srv-render024624 svc_rendercache LogonType 9 (runas, 127.0.0.1) + LogonType 3 (WinRM from 10.20.4.41)Lateral movement to render server
15:13:15srv-render02Sysmon 3: svchost → 10.20.4.52:5985 (WinRM)Pivot toward DC
18:06:17dc014662 svc_rendercache on CN=Administrator, replication GUIDs 1131f6aa…/1131f6ad…, ip=10.20.4.52DCSync — Administrator impacted
18:26:17wks-wren071102 Security log cleared (svc_rendercache)Anti-forensics (“suspiciously empty” log)
18:29:17wks-wren074698 scheduled task \RenderCacheSyncpowershell … IEX(New-Object Net.WebClient)Persistence

The decoy

t.okafor-adm accessing CN=svc_legacy00..03,OU=Disabled (4661) wears the .884Z marker but has no IP linkage to the real 10.20.4.41 → 10.20.4.52 chain. It is disabled-account “cleanup” bait, themed to mislead (the challenge name UnderStudy / legacy accounts). The 4662 events on CN=<staff>,OU=Staff (.000) are ordinary directory reads — also noise.

The three report facts

  1. compromised_credential = svc_rendercache — the Kerberoasted service account. The tell is the lone RC4 (0x17) service ticket for HTTP/rendercache-internal sitting among AES (0x12) decoys; RC4 is the crackable one, and the successful 15:13 logon as svc_rendercache confirms the crack.
  2. impacted_account = Administrator — the DCSync at 18:06 reads CN=Administrator with the directory-replication control access rights (DS-Replication-Get-Changes / …-All), dumping its secrets. That is the climax the report must name.
  3. true start time = 090217 — the macro→PowerShell initial access at 09:02:17, the real incident start, versus the apparent start (render pipeline failing / “flaky render server” from ~15:13). wren.ashworth is patient-zero and is represented by this timestamp, not by a separate slot.

r00t{svc_rendercache_Administrator_090217}