Detection rules › Sigma

PowerShell Script Dropped Via PowerShell.EXE

Status
test
Severity
low
Log source
category file_event, product windows
Author
frack113
Source
github.com/SigmaHQ/sigma

Detects PowerShell creating a PowerShell file (.ps1). While often times this behavior is benign, sometimes it can be a sign of a dropper script trying to achieve persistence.

Known false positives

  • False positives will differ depending on the environment and scripts used. Apply additional filters accordingly.

MITRE ATT&CK coverage

TacticTechniques
PersistenceNo specific technique

Telemetry coverage

ProviderRecord / event type
SysmonEvent ID 11: FileCreate

Rule body

title: PowerShell Script Dropped Via PowerShell.EXE
id: 576426ad-0131-4001-ae01-be175da0c108
status: test
description: Detects PowerShell creating a PowerShell file (.ps1). While often times this behavior is benign, sometimes it can be a sign of a dropper script trying to achieve persistence.
references:
    - https://www.zscaler.com/blogs/security-research/onenote-growing-threat-malware-distribution
author: frack113
date: 2023-05-09
tags:
    - attack.persistence
logsource:
    product: windows
    category: file_event
detection:
    selection:
        Image|endswith:
            - '\powershell.exe'
            - '\pwsh.exe'
        TargetFilename|endswith: '.ps1'
    filter_main_psscriptpolicytest:
        TargetFilename|contains: '__PSScriptPolicyTest_'
    filter_main_appdata:
        TargetFilename|startswith: 'C:\Users\'
        TargetFilename|contains: '\AppData\Local\Temp\'
    filter_main_windows_temp:
        TargetFilename|startswith: 'C:\Windows\Temp\'
    condition: selection and not 1 of filter_main_*
falsepositives:
    - False positives will differ depending on the environment and scripts used. Apply additional filters accordingly.
level: low

Stages and Predicates

Stage 0: condition

selection and not 1 of filter_main_*

Stage 1: selection

selection:
    Image|endswith:
        - '\powershell.exe'
        - '\pwsh.exe'
    TargetFilename|endswith: '.ps1'

Stage 2: not filter_main_*

filter_main_psscriptpolicytest:
    TargetFilename|contains: '__PSScriptPolicyTest_'
filter_main_appdata:
    TargetFilename|startswith: 'C:\Users\'
    TargetFilename|contains: '\AppData\Local\Temp\'
filter_main_windows_temp:
    TargetFilename|startswith: 'C:\Windows\Temp\'

Exclusions

The rule actively suppresses these predicates.

FieldKindExcluded valuesSearch
TargetFilenamematch\AppData\Local\Temp\excludes:TargetFilename field:"TargetFilename" value:"\AppData\Local\Temp\"
TargetFilenamestarts_withC:\Users\excludes:TargetFilename field:"TargetFilename" value:"C:\Users\"
TargetFilenamematch__PSScriptPolicyTest_excludes:TargetFilename field:"TargetFilename" value:"__PSScriptPolicyTest_"
TargetFilenamestarts_withC:\Windows\Temp\excludes:TargetFilename field:"TargetFilename" value:"C:\Windows\Temp\"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
Imageends_with
  • \powershell.exe corpus 179 (sigma 178, kusto 1)
  • \pwsh.exe corpus 165 (sigma 164, kusto 1)
field:"Image" kind:ends_with
TargetFilenameends_with
  • .ps1 corpus 17 (sigma 17)
field:"TargetFilename" kind:ends_with value:".ps1"