Detection rules › Sigma

Suspicious PowerShell Invocations - Specific

Severity
high
Author
Florian Roth (Nextron Systems), Jonhnathan Ribeiro
Source
upstream

Detects suspicious PowerShell invocation command parameters

MITRE ATT&CK coverage

TacticTechniques
ExecutionT1059.001 Command and Scripting Interpreter: PowerShell

Event coverage

ProviderEvent IDTitle
PowerShell4104Creating Scriptblock text (MessageNumber of MessageTotal).

Stages and Predicates

Stage 1: 1 of selection_convert_b64

ScriptBlockText|contains: ' -c '
ScriptBlockText|contains: ' -w '
ScriptBlockText|contains: -nop
ScriptBlockText|contains: '[Convert]::FromBase64String'
ScriptBlockText|contains: hidden

Stage 2: 1 of selection_iex_selection

ScriptBlockText|contains: ' -c '
ScriptBlockText|contains: ' -w '
ScriptBlockText|contains: -noni
ScriptBlockText|contains: -nop
ScriptBlockText|contains: New-Object
ScriptBlockText|contains: hidden
ScriptBlockText|contains: iex

Stage 3: 1 of selection_enc_selection

ScriptBlockText|contains: ' -w '
ScriptBlockText|contains: -Enc
ScriptBlockText|contains: -ep
ScriptBlockText|contains: bypass
ScriptBlockText|contains: hidden

Stage 4: 1 of selection_reg_selection

or:
ScriptBlockText|contains: '\software\microsoft\windows\currentversion\policies\explorer\run'
ScriptBlockText|contains: '\software\microsoft\windows\currentversion\run'
ScriptBlockText|contains: '\software\wow6432node\microsoft\windows\currentversion\run'
ScriptBlockText|contains: add
ScriptBlockText|contains: powershell
ScriptBlockText|contains: reg

Stage 5: 1 of selection_webclient_selection

ScriptBlockText|contains: -noprofile
ScriptBlockText|contains: -windowstyle
ScriptBlockText|contains: .download
ScriptBlockText|contains: bypass
ScriptBlockText|contains: hidden
ScriptBlockText|contains: new-object
ScriptBlockText|contains: system.net.webclient

Stage 6: 1 of selection_iex_webclient

ScriptBlockText|contains: .Download
ScriptBlockText|contains: Net.WebClient
ScriptBlockText|contains: New-Object
ScriptBlockText|contains: iex

Stage 7: not 1 of filter_chocolatey

or:
ScriptBlockText|contains: '(New-Object System.Net.WebClient).DownloadString(''https://chocolatey.org/install.ps1'')'
ScriptBlockText|contains: '(New-Object System.Net.WebClient).DownloadString(''https://community.chocolatey.org/install.ps1'
ScriptBlockText|contains: Write-ChocolateyWarning

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
ScriptBlockTextmatch
  • -c
  • -w
  • (New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1') corpus 2 (sigma 2)
  • (New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1
  • -Enc
  • -ep
  • -noni
  • -nop
  • -noprofile
  • -windowstyle
  • .Download
  • .download
  • Net.WebClient
  • New-Object corpus 6 (sigma 6)
  • Write-ChocolateyWarning
  • [Convert]::FromBase64String
  • \software\microsoft\windows\currentversion\policies\explorer\run
  • \software\microsoft\windows\currentversion\run
  • \software\wow6432node\microsoft\windows\currentversion\run
  • add
  • bypass corpus 2 (sigma 2)
  • hidden
  • iex corpus 2 (sigma 2)
  • new-object corpus 2 (sigma 2)
  • powershell corpus 3 (sigma 3)
  • reg
  • system.net.webclient

Neighbors

Broader alternatives (more inclusive than this rule)

These rules match a superset of what this rule catches. They cover the same events plus more. Use them if you want wider coverage and can absorb more false positives.