⚠ Incident — Operation: HOLLOW SHELL
You are an analyst at Nexum Financial Services. At 03:22 UTC on 14 Nov 2024, the EDR platform raised a high-severity alert on workstation WIN-FIN-07 (hostname: NEXUM-JD, user: jdawson, Finance department).
The machine is exhibiting high CPU usage, unexpected outbound connections, and a user complaint about a new shortcut on the desktop. You have been handed a memory dump (nexum_jd.raw), a disk image (nexum_jd.E01), a PCAP (capture_nov14.pcap), and the suspicious binary recovered by the EDR (winupd.exe). Work through each task in sequence. Don't skip ahead.
Lab Environment
REMnux is the right choice for this lab. It is a Linux distro built exclusively for malware analysis and reverse engineering — every tool used in this lab (Volatility 3, pefile, strings, tshark, upx, YARA) comes pre-installed. Kali Linux is built for offensive/penetration testing and lacks most of these tools by default. For the full IR workflow however, you ideally run three VMs together.
Hash it, look it up, and identify what it's pretending to be
C:\Users\jdawson\AppData\Local\Temp\winupd.exe. You've copied it to your REMnux workstation at /cases/hollow_shell/winupd.exe. Before you do anything else, you need to fingerprint it and check for prior knowledge.
Run the following commands on your REMnux VM (output shown below):
You submit the SHA256 to VirusTotal and get this response:
file command output shows the binary is UPX compressed. Why does this matter to a malware analyst?4a8f2c7e...e7 is your evidence fingerprint — record it now and never alter the original file. The VirusTotal hit (54/72 engines) with label trojan.agentTesla/generic confirms this is a known commodity RAT (Remote Access Trojan) widely used for credential theft and C2.upx -d winupd.exe before doing deeper static analysis, or proceed directly to dynamic/memory analysis which catches it post-decompression.winupd.exe impersonates a Windows Update binary. Legitimate Windows Update components live in C:\Windows\System32\ and C:\Windows\SoftwareDistribution\ — never in a user's Temp folder. This naming is a classic masquerading technique (MITRE T1036).
Unpack the binary, pull imports, and mine the strings for IOCs
KERNEL32.dll together indicate process injection. Name all three (separate with commas).%APPDATA%\Microsoft\Windows\winupd.exe tells you the malware copies itself to a persistence location. What Windows persistence mechanism is this path associated with?VirtualAllocEx allocates memory in another process, WriteProcessMemory writes shellcode into that memory, and CreateRemoteThread executes it. Together, these three are the textbook API sequence for classic DLL/shellcode injection (T1055.002).net user helpdesk Tr0ub4dor&3 /add creates a local account called "helpdesk" with password "Tr0ub4dor&3", then net localgroup administrators helpdesk /add elevates it to admin. The attacker now has a backdoor account that survives malware removal if the eradication step misses it.185.220.101.47, URL http://185.220.101.47/update/gate.php, Run key value WinUpdateSvc, copy path %APPDATA%\Microsoft\Windows\winupd.exe, rogue account helpdesk / password Tr0ub4dor&3.
Examine the captured packets to confirm C2 activity and decode the beacon
capture_nov14.pcap. You'll use tshark on REMnux to analyze it without opening Wireshark.
/update/gate.php? Why is consistent beacon interval significant to a defender?/update/gate.php with the victim's hostname, OS version, username, domain name, AV product, and malware version. This is a classic AgentTesla check-in — it registers the victim in the attacker's panel and keeps the session alive.Analyze the RAM dump — find the malware process, injection, and what the attacker ran
nexum_jd.raw (16 GB). You're working with the actual Volatility 3 output below. The memory image was taken at 03:38 UTC — two minutes before network isolation.
winupd.exe and what is its parent process?malfind output shows an MZ header in a PAGE_EXECUTE_READWRITE memory region. What does this specifically indicate, and why is PAGE_EXECUTE_READWRITE a red flag?net.exe processes (PIDs 6284 and 6291) were spawned by cmd.exe. Based on the cmdline output, what did the first net.exe do and what did the second one do?explorer.exe (the user's desktop) spawned winupd.exe (PID 5512) — meaning jdawson ran or was tricked into running it directly (likely via a phishing attachment or social engineering). winupd.exe then spawned cmd.exe which ran two net.exe commands: (1) create local account "helpdesk", (2) add "helpdesk" to Administrators. It also spawned powershell.exe which opened the reverse shell.4D 5A = "MZ") found inside a PAGE_EXECUTE_READWRITE region means a complete second executable was written into winupd.exe's own memory and is running there. Legitimate code doesn't need memory that is simultaneously writable AND executable — that combination is the exact signature of shellcode staging and process hollowing (T1055).CLOSE_WAIT — the attacker closed their end of the shell 2 minutes before memory acquisition. The shell session ran for ~12 seconds (per PCAP). Decode the PowerShell base64 to confirm what the reverse shell payload was.
Confirm persistence mechanisms and decode the PowerShell payload
iex $data specifically do?%APPDATA%\Microsoft\Windows\winupd.exe (runs as jdawson on login). HKLM points to C:\ProgramData\Microsoft\winupd.exe (runs for any user who logs in). This means even after jdawson's account is remediated, another user login would re-execute the malware — eradication must remove both.185.220.101.47:4444. The attacker types a command → it's received as bytes → iex $data (Invoke-Expression) executes the received string as PowerShell — this is a fully interactive reverse shell. The output is sent back. This is T1059.001 (PowerShell) + T1071.001 (C2 over TCP).net user helpdesk /add and net localgroup administrators helpdesk /add → the attacker now has a local admin account → uses that (or UAC bypass) to write the HKLM key. This confirms privilege escalation occurred within 2 minutes of infection.
Compile all findings into a structured analyst report — this is your deliverable
📋 Incident Report — Operation: HOLLOW SHELL
Fill in your findings from all five tasks. When done, click Generate Report.