Detection rules › Sigma

DLL Call by Ordinal Via Rundll32.EXE

Status
stable
Severity
medium
Log source
product windows, category process_creation
Author
Florian Roth (Nextron Systems)
Source
github.com/SigmaHQ/sigma

Detects calls of DLLs exports by ordinal numbers via rundll32.dll.

MITRE ATT&CK coverage

Event coverage

ProviderEventTitle
SysmonEvent ID 1Process creation

Rule body yaml

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

Top-level NOT(...) conjuncts: predicates this rule actively suppresses.

FieldKindExcluded values
CommandLinematch\FileTracker32.dll,#1
CommandLinematch\FileTracker32.dll",#1
CommandLinematch\FileTracker64.dll,#1
CommandLinematch\FileTracker64.dll",#1
ParentImagematch\Msbuild\Current\Bin\
ParentImagematch\Tracker.exe
ParentImagematch\VC\Tools\MSVC\
CommandLinematch#141
CommandLinematchEDGEHTML.dll

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.

FieldKindValues
CommandLinematch
  • , # corpus 3 (sigma 2, chronicle 1)
  • ,# corpus 3 (sigma 2, chronicle 1)
  • .dll #
  • .ocx #
Imageends_with
  • \rundll32.exe corpus 95 (sigma 95)
OriginalFileNameeq
  • RUNDLL32.EXE corpus 62 (sigma 35, splunk 21, elastic 6)