Kurzfassung: regsvr32.exe und rundll32.exe sind signierte Windows-Programme, die DLLs und Scriptlets ausführen - und zwei der beliebtesten LOLBins, um fremden Code über einen vertrauenswürdigen Prozess zu starten und die Anwendungssteuerung zu umgehen. Bekannt ist regsvr32 als "Squiblydoo" mit einem Remote-Scriptlet, rundll32 mit Inline-Skript oder url.dll. Die Erkennung setzt an drei Stellen an: der auffälligen Kommandozeile von regsvr32, der von rundll32 und der verdächtigen Eltern- oder Kindkette. Drei sigma-cli-validierte Sigma-Regeln, Härtung und der Test im Lab. Serie "Angriff erkennen".
Nach MSHTA und HTA folgen die beiden nächsten signierten Interpreter: regsvr32 und rundll32. Beide gehören zu Windows, sind von Microsoft signiert und dafür gedacht, Komponenten zu registrieren und DLL-Funktionen aufzurufen. Genau das macht sie für Angreifer wertvoll: Wer seinen Code hinter diese Programme hängt, lässt ihn von einem vertrauenswürdigen Systemprozess ausführen und umgeht viele Kontrollen, die auf unbekannte Binärdateien achten. regsvr32 ist als "Squiblydoo" bekannt, bei dem ein entferntes Scriptlet geladen wird; rundll32 führt Inline-Skripte oder Handler aus url.dll aus. Der Beitrag nimmt die Erkennung in den Blick und bleibt auf der Verteidigerseite.
Einordnung in ATT&CK: Die Technik ist System Binary Proxy Execution: Regsvr32 (T1218.010) und Rundll32 (T1218.011) in der Taktik Defense Evasion (TA0005). Beide sind signierte Microsoft-Programme; ihr Missbrauch dient zugleich der Ausführung und der Umgehung der Anwendungssteuerung - in dieser Serie stehen sie in der Spalte Execution und Stealth, neben MSHTA.
Was der Angreifer tut
Der Missbrauch beider Programme läuft auf der Ebene des Prinzips, nicht als Anleitung, in wenigen Varianten ab:
- Squiblydoo mit regsvr32. regsvr32 wird angewiesen, ein Scriptlet zu registrieren, das aus dem Netz geladen wird - der Code liegt nie dauerhaft auf der Platte.
- Inline-Skript mit rundll32. rundll32 führt ein kurzes javascript: aus, oft über mshtml und RunHTMLApplication, oder ruft einen Handler aus url.dll auf.
- Per Dokument auslösen. Ein Office-Makro oder ein Link startet regsvr32 oder rundll32 mit der Nutzlast, oft als Teil eines Phishing-Angriffs.
- Nachladen und weitermachen. Der ausgeführte Code startet den nächsten Schritt - eine PowerShell, ein weiteres LOLBin oder direkt die Schadsoftware.
Für die Erkennung ist entscheidend: Beide Programme haben im Normalbetrieb ein enges Muster. Ein Scriptlet, eine URL, ein Inline-Skript oder ein ungewöhnlicher Elternprozess fallen deshalb klar auf.
Welche Logquellen die Technik zeigt
- Prozess-Telemetrie. Event 4688 und Sysmon Event 1 zeigen die vollständige Kommandozeile von regsvr32 und rundll32 - hier werden Scriptlet, URL und Inline-Skript sichtbar.
- Die Elternkette. Dieselben Quellen zeigen, wer die beiden gestartet hat - Word, Outlook, ein Skript-Host oder ein Browser als Elternprozess sind verdächtig.
- Der Kindprozess. Startet eines der beiden anschließend cmd oder PowerShell, erscheint der nächste Schritt als Kind, siehe LOLBins-Erkennung.
- Netzwerk und Proxy. Lädt regsvr32 ein Remote-Scriptlet oder rundll32 eine Remote-Last, erscheint der Abruf in den Web-Proxy- und DNS-Protokollen - ein zusätzliches Signal.
Das Muster im Log
Das klarste Signal ist die Kommandozeile selbst. Bei regsvr32 ist das Scriptlet der Fingerabdruck: scrobj, eine .sct-Datei oder eine http-URL als Argument haben im Normalbetrieb keinen Platz - das ist Squiblydoo. Bei rundll32 sind es javascript:, mshtml mit RunHTMLApplication, eine URL oder ein url.dll-Handler. Dazu kommt die Elternkette: regsvr32 oder rundll32, gestartet von Word, Outlook oder einem Browser, deutet auf eine per Dokument ausgelöste Ausführung. Das dritte Signal ist das Verhalten danach - eines der beiden, das eine Shell oder PowerShell startet, ist werkzeugunabhängig verdächtig. Ein regulärer Aufruf registriert eine lokale DLL oder ruft eine DLL-Funktion mit benanntem Einsprungpunkt auf, ohne URL, Skript und ohne Shell-Kind.
Drei Sigma-Regeln
Die Regeln sind mit sigma-cli geprüft. Die erste nimmt regsvr32, die zweite rundll32, die dritte die Eltern- und Kindkette beider. Die dritte ist die tragende, weil sie werkzeugunabhängig greift.
1. regsvr32 mit Scriptlet oder Remote-Last (T1218.010). scrobj, eine .sct-Datei oder eine http-URL in der Kommandozeile - die Squiblydoo-Technik. Die Regel steht auf level: high.
title: regsvr32.exe laedt ein Scriptlet oder eine Remote-Last
id: 3b7e1a46-2c58-4f09-9d71-8a4c6e2b57f3
status: experimental
description: |
Erkennt regsvr32.exe, das ein Scriptlet (scrobj, .sct) oder eine aus dem Netz geladene Last
(http/https) verarbeitet - die als Squiblydoo bekannte Technik. regsvr32 ist ein signiertes
Windows-Programm und wird so als Proxy missbraucht, um Code auszufuehren und die
Anwendungssteuerung zu umgehen. Ein regulaerer Aufruf registriert eine lokale DLL.
references:
- https://attack.mitre.org/techniques/T1218/010/
author: blue-team.net
tags:
- attack.stealth
- attack.t1218.010
logsource:
product: windows
category: process_creation
detection:
sel_img:
Image|endswith: '\regsvr32.exe'
sel_scriptlet:
CommandLine|contains:
- 'scrobj'
- '.sct'
sel_remote:
CommandLine|contains:
- 'http://'
- 'https://'
condition: sel_img and (sel_scriptlet or sel_remote)
falsepositives:
- Einzelne Softwareinstaller registrieren Komponenten ueber regsvr32; bekannte Faelle nach Pfad und Konto ausnehmen
level: high
2. rundll32 mit Inline-Skript oder Remote-Last (T1218.011). javascript:, mshtml mit RunHTMLApplication, eine URL, ein Scriptlet oder ein url.dll-Handler. Ebenfalls level: high.
title: rundll32.exe mit Inline-Skript oder Remote-Last
id: 6d2f8b13-4a79-4c25-8e60-1b7a3c5d9e82
status: experimental
description: |
Erkennt rundll32.exe mit verdaechtigen Argumenten: einem Inline-Skript (javascript:, vbscript:),
dem Aufruf von mshtml und RunHTMLApplication, einer http-URL, einem Scriptlet (.sct) oder
url.dll-Handlern. rundll32 ist ein signiertes Windows-Programm und ein beliebter Proxy, um Code
auszufuehren. Ein regulaerer Aufruf laedt eine DLL mit benanntem Einsprungpunkt.
references:
- https://attack.mitre.org/techniques/T1218/011/
author: blue-team.net
tags:
- attack.stealth
- attack.t1218.011
logsource:
product: windows
category: process_creation
detection:
sel_img:
Image|endswith: '\rundll32.exe'
sel_susp:
CommandLine|contains:
- 'javascript:'
- 'vbscript:'
- 'mshtml'
- 'RunHTMLApplication'
- 'http://'
- 'https://'
- '.sct'
- 'FileProtocolHandler'
- 'url.dll,OpenURL'
condition: sel_img and sel_susp
falsepositives:
- Sehr selten; einzelne Altanwendungen rufen url.dll-Handler legitim auf - bekannte Faelle ausnehmen
level: high
3. Verdächtige Eltern- oder Kindkette (T1218.010/.011). Office, Skript-Host oder Browser startet eines der beiden - oder eines startet eine Shell. Das werkzeugunabhängige Verhaltenssignal, ebenfalls level: high.
title: regsvr32 oder rundll32 in verdaechtiger Eltern- oder Kindkette
id: 9a4c7e21-5b38-4d16-b702-6c1a8f3e45d9
status: experimental
description: |
Erkennt regsvr32.exe oder rundll32.exe, die von einer Office-Anwendung, einem Skript-Host oder
einem Browser gestartet werden, sowie den umgekehrten Fall, dass eines der beiden eine Shell oder
PowerShell startet. Beide Elternketten sind werkzeugunabhaengige Zeichen einer per Dokument oder
Nachladung ausgeloesten Proxy-Ausfuehrung. Ein Nutzer, der Word oeffnet, startet im Normalfall
kein regsvr32.
references:
- https://attack.mitre.org/techniques/T1218/011/
author: blue-team.net
tags:
- attack.stealth
- attack.t1218.011
- attack.t1218.010
logsource:
product: windows
category: process_creation
detection:
sel_self:
Image|endswith:
- '\regsvr32.exe'
- '\rundll32.exe'
sel_parent:
ParentImage|endswith:
- '\winword.exe'
- '\excel.exe'
- '\powerpnt.exe'
- '\outlook.exe'
- '\mshta.exe'
- '\wscript.exe'
- '\cscript.exe'
- '\chrome.exe'
- '\msedge.exe'
- '\firefox.exe'
sel_childparent:
ParentImage|endswith:
- '\regsvr32.exe'
- '\rundll32.exe'
sel_child:
Image|endswith:
- '\cmd.exe'
- '\powershell.exe'
- '\pwsh.exe'
- '\mshta.exe'
condition: (sel_self and sel_parent) or (sel_childparent and sel_child)
falsepositives:
- Einzelne Verwaltungs- oder Installationsprozesse rufen rundll32 ueber Skripte auf; bekannte Faelle als Baseline ausnehmen
level: high
Härtung: der Angriff, der ins Leere läuft
- Anwendungssteuerung scharf schalten. regsvr32 und rundll32 lassen sich mit WDAC oder AppLocker einschränken, besonders der Start aus Nutzer- und temporären Pfaden - das nimmt der Technik die Grundlage.
- Office-Kindprozesse bremsen. Mit ASR-Regeln (Attack Surface Reduction) verhindern, dass Office-Programme regsvr32, rundll32 und andere Interpreter starten.
- Ausgehenden Verkehr der LOLBins eindämmen. regsvr32 und rundll32 haben selten einen Grund, ins Internet zu telefonieren; ein Proxy- oder Firewall-Filter stoppt das Remote-Scriptlet.
- Verhaltensregel scharf schalten. regsvr32 mit Scriptlet und rundll32 mit Inline-Skript sollten immer alarmieren - das sind die zuverlässigsten Einzelregeln.
Der Test
Die Erkennung lässt sich im Lab gefahrlos prüfen, auf isolierten Systemen mit aktivem Sysmon:
- Für Regel 1 regsvr32 mit einem harmlosen lokalen Scriptlet aufrufen, das nur ein Fenster anzeigt. Die Kommandozeile mit scrobj muss in Event 4688 erscheinen.
- Für Regel 2 rundll32 mit einem harmlosen url.dll-Handler oder einem kurzen Inline-Skript starten. Die Kommandozeile muss sichtbar werden.
- Für Regel 3 eines der beiden über ein Office-Makro auslösen oder eine Shell daraus starten. Die Eltern- bzw. Kindkette muss erscheinen. Breiter wird der Test mit den Fällen zu T1218.010 und T1218.011 aus Atomic Red Team.
Fehlalarme und Tuning
- Softwareinstaller. Installer registrieren legitim Komponenten über regsvr32. Für Regel 1 die bekannten Installer und Pfade als Baseline ausnehmen.
- Legitime rundll32-Aufrufe. Windows nutzt rundll32 im Alltag für viele Systemfunktionen. Regel 2 greift nur bei den verdächtigen Argumenten und ist damit eng - die wenigen bekannten Ausnahmen dokumentieren.
- Verwaltungsskripte. Einzelne Skripte rufen die beiden Programme auf. Für Regel 3 die bekannten Dienste, Konten und Pfade ausnehmen, statt die Regel zu entschärfen.
- Korrelation schlägt Einzelregel. Wer Elternprozess, Kommandozeile und Kindprozess zusammen betrachtet, trennt Alltag und echten Angriff zuverlässiger als jede Einzelregel.
Fazit
regsvr32 und rundll32 sind signierte Windows-Programme und damit bequeme Wege, fremden Code über einen vertrauenswürdigen Prozess auszuführen. Die verlässlichen Signale sind das Scriptlet oder die URL bei regsvr32 (Squiblydoo), das Inline-Skript oder der url.dll-Handler bei rundll32 und die verdächtige Eltern- oder Kindkette beider. Die wirksamste Härtung schränkt die beiden per Anwendungssteuerung ein, bremst Office-Kindprozesse mit ASR-Regeln und dämmt ihren ausgehenden Verkehr ein. Damit ist die Reihe der signierten Proxy-Interpreter abgedeckt - zusammen mit MSHTA und den LOLBins allgemein. Verwandt bleibt die Ausführung über WMI und Dienste. Weitere Techniken dieser Taktik sammelt das Lexikon nach Taktik unter Stealth.