PowerShell IEX Obfuscated Invocation Indicators from Invoke-Obfuscation Patterns
Alerts on obfuscated PowerShell IEX invocation strings built from Invoke-Obfuscation style concatenation patterns in ScriptBlockText.
FreeUnreviewedSigmahighv1
powershell-iex-obfuscated-invocation-indicators-from-invoke-obfuscation-patterns-1b9dc62e
title: PowerShell IEX Obfuscated Invocation Indicators from Invoke-Obfuscation Patterns
id: 42ab965e-b209-450d-88e5-9a1c8e0c0f85
status: test
description: This rule flags PowerShell script block content containing string/array concatenation patterns commonly produced by the Invoke-Obfuscation framework when building values used with IEX. Attackers rely on obfuscation to evade static detection and to execute dynamically constructed code. The rule matches specific regular-expression substrings in ScriptBlockText, assuming Script Block Logging is available.
references:
- https://github.com/danielbohannon/Invoke-Obfuscation/blob/f20e7f843edd0a3a7716736e9eddfa423395dd26/Out-ObfuscatedStringCommand.ps1#L873-L888
- https://github.com/SigmaHQ/sigma/blob/master/rules/windows/powershell/powershell_script/posh_ps_invoke_obfuscation_obfuscated_iex.yml
author: Daniel Bohannon (@Mandiant/@FireEye), oscd.community, Huntrule Team
date: 2019-11-08
modified: 2022-12-31
tags:
- attack.stealth
- attack.t1027
- attack.execution
- attack.t1059.001
logsource:
product: windows
category: ps_script
definition: "Requirements: Script Block Logging must be enabled"
detection:
selection_iex:
- ScriptBlockText|re: \$PSHome\[\s*\d{1,3}\s*\]\s*\+\s*\$PSHome\[
- ScriptBlockText|re: \$ShellId\[\s*\d{1,3}\s*\]\s*\+\s*\$ShellId\[
- ScriptBlockText|re: \$env:Public\[\s*\d{1,3}\s*\]\s*\+\s*\$env:Public\[
- ScriptBlockText|re: \$env:ComSpec\[(\s*\d{1,3}\s*,){2}
- ScriptBlockText|re: \*mdr\*\W\s*\)\.Name
- ScriptBlockText|re: \$VerbosePreference\.ToString\(
condition: selection_iex
falsepositives:
- Unknown
level: high
license: DRL-1.1
related:
- id: 1b9dc62e-6e9e-42a3-8990-94d7a10007f7
type: derived
What it detects
This rule flags PowerShell script block content containing string/array concatenation patterns commonly produced by the Invoke-Obfuscation framework when building values used with IEX. Attackers rely on obfuscation to evade static detection and to execute dynamically constructed code. The rule matches specific regular-expression substrings in ScriptBlockText, assuming Script Block Logging is available.
Known false positives
- Unknown
Detection content is published as a reviewed draft. Tune thresholds and exclusions against your own telemetry before enabling this rule for alerting.