System Binary Proxy Execution: Rundll32 T1218.011

Tactic: Stealth

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}).

Events covered

13 catalog events are tagged with this technique by at least one rule.

Authoring guide

Patterns shared across the 124 rules above: which fields they filter on, what specific values they look for, and what they exclude. The catalog normalizes field names across vendors so Sigma's Image, Elastic's process.name, and Splunk's process_name collapse into one row. Each rule contributes at most once per row.

Fields filtered most (46 distinct)

The fields most rules look at when detecting this technique. The How column shows the operators authors use (eq, wildcard, regex_match, match) and how often each appears. Sample values are concrete examples to start from, not an exhaustive list.

FieldRulesHowSample values
CommandLine66contains 35, ends_with 12, match 12, regex_match 7, in 6, wildcard 3, is_not_null 2, eq 1, is_null 1, starts_with 1(?i)\.dll\"?,DLLRegisterServer, (?i)\.dll\,(RS32|VirtualAllocEx|NtUnmapViewOfSection|Crea..., (?i)\.dll\,RS32, .cpl, \x5c\x5c?[-_]{2,}[-_]{2,}[-_]{2,}.+,
process_name50eq 42, regex_match 4, match 2, wildcard 2rundll32.exe, cmd.exe, powershell.exe, (?i)rundll32\.exe, certutil.exe
Image40ends_with 35, starts_with 3, wildcard 3, eq 1\rundll32.exe, \cmd.exe, \regasm.exe, \regsvcs.exe, \installutil.exe
OriginalFileName37eq 34, in 2, contains 1, is_null 1rundll32.exe, cmd.exe, cscript.exe, installutil.exe, comsvcs.dll
EventID33eq 334688, 1, 4104, 11, 22
parent_process_name26eq 16, regex_match 6, contains 2, in 2cmd.exe, explorer.exe, mshta.exe, rundll32.exe, ((?i)(powershell\.exe)|(cmd\.exe)|(services\.exe)|(dllhos...
event.type25eq 25start
ParentImage15ends_with 9, eq 3, contains 2, in 1, wildcard 1\rundll32.exe, \tracker.exe, *:\\perflogs\\*, *:\\programdata\\*, *:\\recycle.bin\\*
ParentCommandLine10contains 7, is_not_null 2, wildcard 2#568, #570, #572, *extensionHost*, *runner*entrypoint.sh
process.args10eq 7, wildcard 5, starts_with 3, contains 2C:\Intel\, *Reflection.Assembly*, *Remove-Item*, *]::Delete(*, *del *
Type9eq 9
EventType4eq 3, in 1start, ProcessRollup2, exec, exec_event
ImageLoaded3starts_with 2, contains 1, ends_with 1, regex_match 1.dll, .tmp-\avira.oe.setup.customactions.dll, .tmp-\microsoft.deployment.windowsinstaller.dll, :\programdata, [a-za-z]{5,6}\.wll
TargetFilename3contains 2, ends_with 1, in 1*.dll, *.exe, .scr, :\$windows.~bt\newos\, :\windows\system32\
process.args_count3eq 2, ge 11, 2

Top indicator values (817 distinct)

Specific (field, operator, value) combinations the rules check for, ranked by how many rules under this technique use each one. The Corpus reach column counts how many rules across the entire catalog (any technique) check the same combination. High numbers point to widely-used indicators that are likely noisy on their own; combine them with another condition for useful signal. Blank means the combination is specific to rules under this technique. Click a value to expand the rules under this technique that use it.

FieldKindValueRules (here)Corpus reach
process_nameeq
rundll32.exe
3860
process_nameeq
powershell.exe
14104
process_nameeq
cmd.exe
1377
process_nameeq
mshta.exe
931
process_nameeq
wscript.exe
929
process_nameeq
cscript.exe
825
process_nameeq
regsvr32.exe
725
process_nameeq
certutil.exe
622
process_nameeq
pwsh.exe
662
process_nameeq
bitsadmin.exe
514
process_nameeq
curl.exe
515
process_nameeq
msiexec.exe
522
process_nameeq
schtasks.exe
521
process_nameeq
wmic.exe
547
process_nameeq
installutil.exe
418
process_nameeq
reg.exe
420
process_nameeq
regasm.exe
411
process_nameeq
regsvcs.exe
410
process_nameeq
sc.exe
429
OriginalFileNameeq
rundll32.exe
3162
Imageends_with
\rundll32.exe
2695
Imageends_with
\regsvr32.exe
565
event.typeeq
start
25606
EventIDeq
4688
12313
EventIDeq
1
11237
EventIDeq
4104
8268
CommandLinecontains
control_rundll
55
CommandLinecontains
rundll32.exe
48
CommandLinecontains
shell32.dll
43
parent_process_nameeq
rundll32.exe
410

Exclusions (246 distinct)

Field/operator/value combinations excluded by rules under this technique (top-level not() clauses), sorted by how many rules exclude each. These are the false-positive paths the community has learned to filter out. A new rule that ignores the high-count entries here will likely fire on the same noisy paths. Click a value to expand the rules under this technique that exclude it.

FieldKindValueRules excluding
process_nameeq
cmd.exe
5
process_nameeq
powershell.exe
3
parent_process_namematch
(?i)iexplore\.exe
4
CommandLineregex_match
(?i)(rundll32(\.exe)?\"?\s+(\/\w+\s+)?[\w.]+\.dll)|(C:\x5c(Windows\x5c(System...
3
dest_ipcidr_match
10.0.0.0/8
3
dest_ipcidr_match
127.0.0.0/8
3
dest_ipcidr_match
169.254.0.0/16
3
dest_ipcidr_match
172.16.0.0/12
3
dest_ipcidr_match
192.168.0.0/16
3
user.ideq
S-1-5-18
3
CommandLinecontains
shell32.dll
2
CommandLinematch
(?i)(^\"C:\x5cWindows\x5csystem32\x5crundll32\.exe\"$)|(\.dll)
2
CommandLinematch
(?i)C:\x5cWindows\x5csystem32\x5cinetcpl\.cpl,ClearMyTracksByProcess
2
CommandLinematch
(?i)InetCpl\.cpl\,ClearMyTracksByProcess
2
CommandLinematch
\".*\.exe[^\"].*
2

Rules under this technique

Every rule in the catalog tagged with this technique, grouped by vendor. Click a rule title for its full predicates, exclusions, and indicators.

Platform (all)
Domain (all)

Sigma 43 rules

Elastic 29 rules

Splunk 50 rules

Kusto 2 rules