Detection rules › Sigma
DLL Call by Ordinal Via Rundll32.EXE
Detects calls of DLLs exports by ordinal numbers via rundll32.dll.
Known false positives
- False positives depend on scripts and administrative tools used in the monitored environment.
- Windows control panel elements have been identified as source (mmc).
MITRE ATT&CK coverage
| Tactic | Techniques |
|---|---|
| Stealth |
Telemetry coverage
| Provider | Record / event type |
|---|---|
| Sysmon | Event ID 1: Process creation |
Rule body
title: DLL Call by Ordinal Via Rundll32.EXE
id: e79a9e79-eb72-4e78-a628-0e7e8f59e89c
status: stable
description: Detects calls of DLLs exports by ordinal numbers via rundll32.dll.
references:
- https://web.archive.org/web/20200530031906/https://techtalk.pcmatic.com/2017/11/30/running-dll-files-malware-analysis/
- https://github.com/Neo23x0/DLLRunner
- https://twitter.com/cyb3rops/status/1186631731543236608
- https://www.welivesecurity.com/2022/03/01/isaacwiper-hermeticwizard-wiper-worm-targeting-ukraine/
author: Florian Roth (Nextron Systems)
date: 2019-10-22
modified: 2024-07-16
tags:
- attack.stealth
- attack.t1218.011
- detection.threat-hunting
logsource:
category: process_creation
product: windows
detection:
selection_img:
- Image|endswith: '\rundll32.exe'
- OriginalFileName: 'RUNDLL32.EXE'
selection_cli:
CommandLine|contains:
- ',#'
- ', #'
- '.dll #' # Sysmon removes , in its log
- '.ocx #' # HermeticWizard
filter_optional_edge:
CommandLine|contains|all:
- 'EDGEHTML.dll'
- '#141'
filter_optional_vsbuild_dll:
ParentImage|contains:
- '\Msbuild\Current\Bin\'
- '\VC\Tools\MSVC\'
- '\Tracker.exe'
CommandLine|contains:
- '\FileTracker32.dll,#1'
- '\FileTracker32.dll",#1'
- '\FileTracker64.dll,#1'
- '\FileTracker64.dll",#1'
condition: all of selection_* and not 1 of filter_optional_*
falsepositives:
- False positives depend on scripts and administrative tools used in the monitored environment.
- Windows control panel elements have been identified as source (mmc).
level: medium
Stages and Predicates
Stage 0: condition
all of selection_* and not 1 of filter_optional_*Stage 1: selection_img
selection_img:
- Image|endswith: '\rundll32.exe'
- OriginalFileName: 'RUNDLL32.EXE'
Stage 2: selection_cli
selection_cli:
CommandLine|contains:
- ',#'
- ', #'
- '.dll #'
- '.ocx #'
Stage 3: not filter_optional_*
filter_optional_edge:
CommandLine|contains|all:
- 'EDGEHTML.dll'
- '#141'
filter_optional_vsbuild_dll:
ParentImage|contains:
- '\Msbuild\Current\Bin\'
- '\VC\Tools\MSVC\'
- '\Tracker.exe'
CommandLine|contains:
- '\FileTracker32.dll,#1'
- '\FileTracker32.dll",#1'
- '\FileTracker64.dll,#1'
- '\FileTracker64.dll",#1'
Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
CommandLine | match | \FileTracker32.dll,#1 | excludes:CommandLine field:"CommandLine" value:"\FileTracker32.dll,#1" |
CommandLine | match | \FileTracker32.dll",#1 | excludes:CommandLine |
CommandLine | match | \FileTracker64.dll,#1 | excludes:CommandLine field:"CommandLine" value:"\FileTracker64.dll,#1" |
CommandLine | match | \FileTracker64.dll",#1 | excludes:CommandLine |
ParentImage | match | \Msbuild\Current\Bin\ | excludes:ParentImage field:"ParentImage" value:"\Msbuild\Current\Bin\" |
ParentImage | match | \Tracker.exe | excludes:ParentImage field:"ParentImage" value:"\Tracker.exe" |
ParentImage | match | \VC\Tools\MSVC\ | excludes:ParentImage field:"ParentImage" value:"\VC\Tools\MSVC\" |
CommandLine | match | #141 | excludes:CommandLine field:"CommandLine" value:"#141" |
CommandLine | match | EDGEHTML.dll | excludes:CommandLine field:"CommandLine" value:"EDGEHTML.dll" |
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
CommandLine | match |
| field:"CommandLine" kind:match |
Image | ends_with |
| field:"Image" kind:ends_with value:"\rundll32.exe" |
OriginalFileName | eq |
| field:"OriginalFileName" kind:eq value:"RUNDLL32.EXE" |