Detection rules › Sigma
Rundll32 Execution With Uncommon DLL Extension
Detects the execution of rundll32 with a command line that doesn't contain a common extension
MITRE ATT&CK coverage
| Tactic | Techniques |
|---|---|
| Stealth | T1218.011 System Binary Proxy Execution: Rundll32 |
Event coverage
| Provider | Event | Title |
|---|---|---|
| Sysmon | Event ID 1 | Process creation |
Rule body yaml
title: Rundll32 Execution With Uncommon DLL Extension
id: c3a99af4-35a9-4668-879e-c09aeb4f2bdf
status: test
description: Detects the execution of rundll32 with a command line that doesn't contain a common extension
references:
- https://twitter.com/mrd0x/status/1481630810495139841?s=12
author: Tim Shelton, Florian Roth (Nextron Systems), Yassine Oukessou
date: 2022-01-13
modified: 2024-04-04
tags:
- attack.stealth
- attack.t1218.011
logsource:
category: process_creation
product: windows
detection:
selection:
- Image|endswith: '\rundll32.exe'
- OriginalFileName: 'RUNDLL32.EXE'
filter_main_null:
CommandLine: null
filter_main_empty:
CommandLine: ''
filter_main_known_extension:
- CommandLine|contains:
# Note: This aims to cover: single and double quotes in addition to spaces and comma "," usage.
- '.cpl '
- '.cpl,'
- '.cpl"'
- ".cpl'"
- '.dll '
- '.dll,'
- '.dll"'
- ".dll'"
- '.inf '
- '.inf,'
- '.inf"'
- ".inf'"
- CommandLine|endswith:
# Note: This aims to cover: single and double quotes in addition to spaces and comma "," usage.
- '.cpl'
- '.dll'
- '.inf'
filter_main_localserver:
CommandLine|contains: ' -localserver '
filter_main_zzzzInvokeManagedCustomActionOutOfProc:
ParentImage|endswith: '\msiexec.exe'
CommandLine|contains|all:
- ':\Windows\Installer\'
- '.tmp'
- 'zzzzInvokeManagedCustomActionOutOfProc'
filter_optional_EdgeUpdate:
ParentCommandLine|contains|all:
- ':\Users\'
- '\AppData\Local\Microsoft\EdgeUpdate\Install\{'
- '\EDGEMITMP_'
- '.tmp\setup.exe'
- '--install-archive='
- '--previous-version='
- '--msedgewebview --verbose-logging --do-not-launch-msedge --user-level'
condition: selection and not 1 of filter_main_* and not 1 of filter_optional_*
falsepositives:
- Unknown
level: medium
Stages and Predicates
Stage 0: condition
selection and not 1 of filter_main_* and not 1 of filter_optional_*Stage 1: selection
selection:
- Image|endswith: '\rundll32.exe'
- OriginalFileName: 'RUNDLL32.EXE'
Stage 2: not filter_main_*
filter_main_null:
CommandLine: null
filter_main_empty:
CommandLine: ''
filter_main_known_extension:
- CommandLine|contains:
- '.cpl '
- '.cpl,'
- '.cpl"'
- ".cpl'"
- '.dll '
- '.dll,'
- '.dll"'
- ".dll'"
- '.inf '
- '.inf,'
- '.inf"'
- ".inf'"
- CommandLine|endswith:
- '.cpl'
- '.dll'
- '.inf'
filter_main_localserver:
CommandLine|contains: ' -localserver '
filter_main_zzzzInvokeManagedCustomActionOutOfProc:
ParentImage|endswith: '\msiexec.exe'
CommandLine|contains|all:
- ':\Windows\Installer\'
- '.tmp'
- 'zzzzInvokeManagedCustomActionOutOfProc'
Stage 3: not filter_optional_EdgeUpdate
filter_optional_EdgeUpdate:
ParentCommandLine|contains|all:
- ':\Users\'
- '\AppData\Local\Microsoft\EdgeUpdate\Install\{'
- '\EDGEMITMP_'
- '.tmp\setup.exe'
- '--install-archive='
- '--previous-version='
- '--msedgewebview --verbose-logging --do-not-launch-msedge --user-level'
Exclusions
Top-level NOT(...) conjuncts: predicates this rule actively suppresses.
| Field | Kind | Excluded values |
|---|---|---|
CommandLine | match | .tmp |
CommandLine | match | :\Windows\Installer\ |
CommandLine | match | zzzzInvokeManagedCustomActionOutOfProc |
ParentImage | ends_with | \msiexec.exe |
CommandLine | ends_with | .cpl |
CommandLine | ends_with | .dll |
CommandLine | ends_with | .inf |
CommandLine | is_null | |
CommandLine | match | -localserver |
CommandLine | match | .cpl |
CommandLine | match | .cpl' |
CommandLine | match | .cpl, |
CommandLine | match | .cpl" |
CommandLine | match | .dll |
CommandLine | match | .dll' |
CommandLine | match | .dll, |
CommandLine | match | .dll" |
CommandLine | match | .inf |
CommandLine | match | .inf' |
CommandLine | match | .inf, |
CommandLine | match | .inf" |
ParentCommandLine | match | --install-archive= |
ParentCommandLine | match | --msedgewebview --verbose-logging --do-not-launch-msedge --user-level |
ParentCommandLine | match | --previous-version= |
ParentCommandLine | match | .tmp\setup.exe |
ParentCommandLine | match | :\Users\ |
ParentCommandLine | match | \AppData\Local\Microsoft\EdgeUpdate\Install\{ |
ParentCommandLine | match | \EDGEMITMP_ |
Indicators
Each row is a field, operator, and value that the rule matches. The corpus column counts how many other rules in the catalog look for the same combination: high numbers point to widely-used, community-vetted indicators. Blank or 1 shows that the indicator is specific to this rule.
| Field | Kind | Values |
|---|---|---|
Image | ends_with |
|
OriginalFileName | eq |
|