Detection rules › Sigma

File Download with Headless Browser

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

Detects execution of chromium based browser in headless mode using the "dump-dom" command line to download files

MITRE ATT&CK coverage

Event coverage

Rule body yaml

title: File Download with Headless Browser
id: 0e8cfe08-02c9-4815-a2f8-0d157b7ed33e
related:
    - id: ef9dcfed-690c-4c5d-a9d1-482cd422225c
      type: derived
status: test
description: Detects execution of chromium based browser in headless mode using the "dump-dom" command line to download files
references:
    - https://twitter.com/mrd0x/status/1478234484881436672?s=12
    - https://www.trendmicro.com/en_us/research/23/e/managed-xdr-investigation-of-ducktail-in-trend-micro-vision-one.html
author: Sreeman, Florian Roth (Nextron Systems)
date: 2022-01-04
modified: 2025-10-07
tags:
    - attack.command-and-control
    - attack.stealth
    - attack.t1105
    - attack.t1564.003
logsource:
    category: process_creation
    product: windows
detection:
    selection:
        Image|endswith:
            - '\brave.exe'
            - '\chrome.exe'
            - '\msedge.exe'
            - '\opera.exe'
            - '\vivaldi.exe'
        CommandLine|contains|all:
            - '--headless'
            - 'dump-dom'
            - 'http'
    filter_optional_edge_1:
        Image|startswith:
            - 'C:\Program Files (x86)\Microsoft\Edge\Application\'
            - 'C:\Program Files (x86)\Microsoft\EdgeCore\'
            - 'C:\Program Files (x86)\Microsoft\EdgeWebView\'
            - 'C:\Program Files\Microsoft\Edge\Application\'
            - 'C:\Program Files\Microsoft\EdgeCore\'
            - 'C:\Program Files\Microsoft\EdgeWebView\'
            - 'C:\Program Files\WindowsApps\Microsoft.MicrosoftEdge'
        Image|endswith:
            - '\msedge.exe'
            - '\msedgewebview2.exe'
            - '\MicrosoftEdge.exe'
        CommandLine|contains: '--headless --disable-gpu --disable-extensions --disable-plugins --mute-audio --no-first-run --incognito --aggressive-cache-discard --dump-dom'
    filter_optional_edge_2:
        Image|contains:
            - '\AppData\Local\Microsoft\WindowsApps\'
            - '\Windows\SystemApps\Microsoft.MicrosoftEdge'
        Image|endswith:
            - '\msedge.exe'
            - '\MicrosoftEdge.exe'
        CommandLine|contains: '--headless --disable-gpu --disable-extensions --disable-plugins --mute-audio --no-first-run --incognito --aggressive-cache-discard --dump-dom'
    condition: selection and not 1 of filter_optional_*
falsepositives:
    - Unknown
level: high
regression_tests_path: regression_data/rules/windows/process_creation/proc_creation_win_browsers_chromium_headless_file_download/info.yml

Stages and Predicates

Stage 0: condition

selection and not 1 of filter_optional_*

Stage 1: selection

selection:
    Image|endswith:
        - '\brave.exe'
        - '\chrome.exe'
        - '\msedge.exe'
        - '\opera.exe'
        - '\vivaldi.exe'
    CommandLine|contains|all:
        - '--headless'
        - 'dump-dom'
        - 'http'

Stage 2: not filter_optional_*

filter_optional_edge_1:
    Image|startswith:
        - 'C:\Program Files (x86)\Microsoft\Edge\Application\'
        - 'C:\Program Files (x86)\Microsoft\EdgeCore\'
        - 'C:\Program Files (x86)\Microsoft\EdgeWebView\'
        - 'C:\Program Files\Microsoft\Edge\Application\'
        - 'C:\Program Files\Microsoft\EdgeCore\'
        - 'C:\Program Files\Microsoft\EdgeWebView\'
        - 'C:\Program Files\WindowsApps\Microsoft.MicrosoftEdge'
    Image|endswith:
        - '\msedge.exe'
        - '\msedgewebview2.exe'
        - '\MicrosoftEdge.exe'
    CommandLine|contains: '--headless --disable-gpu --disable-extensions --disable-plugins --mute-audio --no-first-run --incognito --aggressive-cache-discard --dump-dom'
filter_optional_edge_2:
    Image|contains:
        - '\AppData\Local\Microsoft\WindowsApps\'
        - '\Windows\SystemApps\Microsoft.MicrosoftEdge'
    Image|endswith:
        - '\msedge.exe'
        - '\MicrosoftEdge.exe'
    CommandLine|contains: '--headless --disable-gpu --disable-extensions --disable-plugins --mute-audio --no-first-run --incognito --aggressive-cache-discard --dump-dom'

Exclusions

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

FieldKindExcluded values
Imageends_with\MicrosoftEdge.exe
Imageends_with\msedge.exe
Imageends_with\msedgewebview2.exe
Imagestarts_withC:\Program Files (x86)\Microsoft\EdgeCore\
Imagestarts_withC:\Program Files (x86)\Microsoft\EdgeWebView\
Imagestarts_withC:\Program Files (x86)\Microsoft\Edge\Application\
Imagestarts_withC:\Program Files\Microsoft\EdgeCore\
Imagestarts_withC:\Program Files\Microsoft\EdgeWebView\
Imagestarts_withC:\Program Files\Microsoft\Edge\Application\
Imagestarts_withC:\Program Files\WindowsApps\Microsoft.MicrosoftEdge
CommandLinematch--headless --disable-gpu --disable-extensions --disable-plugins --mute-audio --no-first-run --incognito --aggressive-cache-discard --dump-dom
Imageends_with\MicrosoftEdge.exe
Imageends_with\msedge.exe
Imagematch\AppData\Local\Microsoft\WindowsApps\
Imagematch\Windows\SystemApps\Microsoft.MicrosoftEdge
CommandLinematch--headless --disable-gpu --disable-extensions --disable-plugins --mute-audio --no-first-run --incognito --aggressive-cache-discard --dump-dom

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
  • --headless corpus 8 (sigma 6, splunk 2)
  • dump-dom
  • http corpus 39 (sigma 34, elastic 2, chronicle 2, splunk 1)
Imageends_with
  • \brave.exe corpus 11 (sigma 11)
  • \chrome.exe corpus 13 (sigma 13)
  • \msedge.exe corpus 14 (sigma 14)
  • \opera.exe corpus 11 (sigma 11)
  • \vivaldi.exe corpus 11 (sigma 11)