index.md
3 KiB

#Volatility-Traces - MntcrlCTF 2026

 · Carbo

#Description

It’s been a while since I’ve seen a Volatility challenge.

#Initial Analysis

First, let’s identify the provided file.

file challenge.vmem
challenge.vmem: Windows Event Trace Log

Although file reports it as a Windows Event Trace Log, Volatility is still able to parse it correctly.

Running windows.info confirms that this is a Windows 10 x64 memory image.

vol -f challenge.vmem windows.info

Output (trimmed):

Kernel Base        0xf8000d800000
DTB                0x1ad000
Major/Minor        15.19041
MachineType        34404
SystemTime         2026-05-14 18:11:59+00:00
NtSystemRoot       C:\Windows
...

#Process Enumeration

The next step is to enumerate the running processes.

vol -f challenge.vmem windows.pslist

Among the running processes, one immediately stands out:

1980    804    mstsc.exe    0xa1897ee82080    ...

mstsc.exe is the Microsoft Remote Desktop client, indicating that the user established an RDP session.

A useful property of the RDP client is that the remote desktop framebuffer is often present in the process’ virtual memory. Recovering this framebuffer can reveal the contents of the remote desktop without requiring any additional artifacts, making mstsc.exe the most promising target.

#Dumping the RDP Process

To inspect the process memory, dump its memory mappings using windows.memmap.

vol -f challenge.vmem windows.memmap --pid 1980 --dump -o dump/

This produces raw dumps for the mapped memory regions of the process. These dumps do not necessarily contain standard image formats, but graphical framebuffers are often stored as raw pixel data.

#Recovering the Screen

The dumped memory does not contain a standard image format. Instead, it stores raw pixel data, so we need to import it manually as a raw image.

Open the dumped file in GIMP as a raw image (File → Open As Layers or Open → Select File Type → Raw image data, depending on the version).

Since the dump contains raw pixel data, GIMP will ask for the image dimensions.

The only challenge here is finding the correct width and height. There are only a handful of common screen resolutions, so trying a few combinations quickly reveals the correct image.

Once the correct dimensions are selected, the RDP desktop becomes visible.

#Recovering the QR Code

The recovered desktop contains a partially visible QR code.

Fortunately, only a small portion of the QR code is missing. Reconstructing the missing modules manually is enough for a QR decoder to recover the original contents thanks to the built-in error correction.

The decoded QR code contains the flag.

mntcrl{pwnc3tt4_3_p3c0r1n0_1s_th3_b3st_t34m}

~ Carbo