Flag:
Hero{albus.dumbledore;22/11/2025-23:13:41;192.168.56.200;192.168.56.230}
We’re given Windows event logs from the Principal Domain Controller of the Ministry of Magic. The story:
A critical user has been compromised and is performing nasty magic using the DCsync spell.
We must extract four things from the DC’s logs:
sAMAccountName (lowercase) of the compromised account performing bad stuff.DD/MM/YYYY-HH:MM:SS (local SystemTime, not literally the word SystemTime).And return them as:
Hero{user;DD/MM/YYYY-HH:MM:SS;attack_ip;last_legit_ip}
We work with the Security.evtx from the DC.
On Windows, we can use EvtxECmd (Eric Zimmerman’s tool) to convert EVTX to CSV:
EvtxECmd.exe -f "C:\lab\logs\Security.evtx" --csv "C:\lab\parsed" --csvf Security.csv
This produces:
C:\lab\parsed\Security.csv
All further analysis is based on that Security.csv.
We then load it (Excel, Timeline Explorer, or Python) and verify key columns:
EventIdTimeCreated (local machine time)SubjectUserName, SubjectDomainNameTargetUserName, TargetDomainNameSubjectLogonId, TargetLogonIdIpAddressA DCsync attack abuses normal AD replication to pull password hashes from a Domain Controller. On Windows Security logs, this usually appears as:
ObjectServer = DSAccessMask = 0x100 (Control Access)Properties containing AD replication rights GUIDs, especially:
1131f6aa-9c07-11d1-f79f-00c04fc2dcd2 → DS-Replication-Get-Changes1131f6ad-9c07-11d1-f79f-00c04fc2dcd2 → DS-Replication-Get-Changes-All89e95b76-444d-4c62-991a-0facbeda640c → DS-Replication-Get-Changes-In-Filtered-SetIn the CSV:
EventId = 4662.AccessMask = 0x100.Properties (or equivalent payload fields) for the replication GUIDs:
1131f6aa1131f6ad89e95b76This gives all DCsync-like operations.
Among those 4662 events we see two main subjects:
SubjectUserName = MINISTRY$ – the DC’s own machine account (legitimate replication).SubjectUserName = albus.dumbledore – a user account (our malicious DCsync operator).So the compromised account actually performing DCsync is:
albus.dumbledore
This directly answers:
sAMAccountName (lowercase) of the compromised account performing bad stuff →
albus.dumbledore
The author clarified:
“Timestamp of the beginning of the attack”
→ The timestamp where the DCsync started (local machine time).
So we just need the first 4662 DCsync event for albus.dumbledore.
From the DCsync 4662 set, filter:
SubjectUserName = albus.dumbledoreThen sort those rows by TimeCreated ascending.
The earliest event looks like:
EventId : 4662
SubjectUserName: albus.dumbledore
AccessMask : 0x100
Properties : ... {1131f6aa...}, {1131f6ad...}, ...
TimeCreated : 2025-11-22 23:13:41.3159347
SubjectLogonId : 0x420B75
...
So the first DCsync by the compromised user albus.dumbledore starts at:
2025-11-22 23:13:41.3159347 (local)
The challenge wants DD/MM/YYYY-HH:MM:SS (seconds precision, no word SystemTime), so we format it as:
22/11/2025-23:13:41
This is our “beginning of the attack” value.
The 4662 event itself usually doesn’t show the source IP, but it has a LogonId. We can correlate that with 4624 (logon) events.
From that first DCsync 4662, we note:
SubjectLogonId = 0x420B75
In Security.csv:
EventId = 4624.TargetLogonId = 0x420B75.We find a corresponding event:
EventId : 4624
TimeCreated : 2025-11-22 23:13:41.2170939
TargetUserName : albus.dumbledore
TargetDomainName: hogwarts
LogonType : 3
IpAddress : 192.168.56.200
...
Thus, the DCsync session (LogonId 0x420B75) originates from:
192.168.56.200
This IP is used by the attacker box to perform DCsync.
Source IP address used for this attack:
192.168.56.200
This part relied on the admin’s clarification:
“The last legitimate IP used to login before the attack”
→ Last legitimate IP used by any user before the DCsync started.
So:
TimeCreated < 2025-11-22 23:13:41.3159347.We treat:
192.168.56.200 as not legitimate.::1, 10.0.2.15, fe80::...) as internal, not client “legit” IPs.From Security.csv:
EventId = 4624.TimeCreated < 2025-11-22 23:13:41.3159347.TimeCreated ascending.Now inspect the last few events just before DCsync.
The final “client-style” logon from a non-attacker IP before the DCsync burst is:
TimeCreated : 2025-11-22 23:11:29.7866694
TargetUserName : pensive.svc
IpAddress : 192.168.56.230
Between 23:11:29 and 23:13:41:
::1, 10.0.2.15, fe80::... (internal DC activity).albus.dumbledore from 192.168.56.200 (attacker).So the last legitimate IP used by any user before DCsync is:
192.168.56.230
Last legitimate IP used to login before the attack:
192.168.56.230
We now have all four required values:
albus.dumbledore22/11/2025-23:13:41192.168.56.200192.168.56.230So the final flag is:
Hero{albus.dumbledore;22/11/2025-23:13:41;192.168.56.200;192.168.56.230}
Even though the flag only needs four values, the lab was built to look like a real engagement:
pensive.svc log in from legitimate servers (192.168.56.230).MINISTRY$ has regular replication and internal logons from ::1, 10.0.2.15, fe80::....albus.dumbledore) and starts logging in from 192.168.56.200.albus.dumbledore sessions from that IP.0x420B75 (on 192.168.56.200), the attacker performs DCsync:
AccessMask = 0x100, replication GUIDs appear at 2025-11-22 23:13:41.315....192.168.56.200 → the attack workstation performing DCsync.192.168.56.230 → the last “legitimate” machine to log in before the DCsync began.