Windows PowerShell Script Block Matches Common Reflection and Injection Keywords
Alerts on PowerShell script block text containing reflection, dynamic assembly loading, and injection-related keywords.
- Product
- windows
- Category
- ps_script
- Author
- Florian Roth (Nextron Systems), Perez Diego (@darkquassar), Tuan Le (NCSGroup) (SigmaHQ), DRL 1.1
- Published
- 2019-02-11
- Updated
- 2026-07-31
ATT&CK techniques
ExecutionRecon
Resource Dev
Initial Access
Execution
Persistence
Priv Esc
Defense Evasion
Cred Access
Discovery
Lateral Movement
Collection
C2
Exfiltration
Impact
What it detects
This rule flags PowerShell script block content containing specific .NET reflection, assembly loading, interop, and injection-related keywords often seen in exploitation frameworks. Attackers may use these constructs to load assemblies dynamically, resolve unmanaged functions, or perform execution and process manipulation within PowerShell. It relies on telemetry that captures PowerShell script block text, such as Script Block Logging, and matches on substring presence for the listed patterns.
Reporting behind it
- posts.specterops.iohttps://posts.specterops.io/entering-a-covenant-net-command-and-control-e11038bcf462
- github.comhttps://github.com/PowerShellMafia/PowerSploit/blob/d943001a7defb5e0d1657085a77a0e78609be58f/CodeExecution/Invoke-ReflectivePEInjection.ps1
- github.comhttps://github.com/hlldz/Phant0m/blob/30c2935d8cf4aafda17ee2fab7cd0c4aa9a607c2/old/Invoke-Phant0m.ps1
- gist.github.comhttps://gist.github.com/MHaggis/0dbe00ad401daa7137c81c99c268cfb7
- github.comhttps://github.com/SigmaHQ/sigma/blob/master/rules/windows/powershell/powershell_script/posh_ps_susp_keywords.yml
Changelog
v2- v2Candidate ingested via manual entry.2026-07-31
- v1No changelog recorded for this version.2026-07-30
Detection content is published as a reviewed draft. Tune thresholds and exclusions against your own telemetry before enabling this rule for alerting.
title: Windows PowerShell Script Block Matches Common Reflection and Injection Keywords
id: b1c55a72-8de9-496e-b3ff-bf427b3b46d5
status: test
description: This rule flags PowerShell script block content containing specific .NET reflection, assembly loading, interop, and injection-related keywords often seen in exploitation frameworks. Attackers may use these constructs to load assemblies dynamically, resolve unmanaged functions, or perform execution and process manipulation within PowerShell. It relies on telemetry that captures PowerShell script block text, such as Script Block Logging, and matches on substring presence for the listed patterns.
references:
- https://posts.specterops.io/entering-a-covenant-net-command-and-control-e11038bcf462
- https://github.com/PowerShellMafia/PowerSploit/blob/d943001a7defb5e0d1657085a77a0e78609be58f/CodeExecution/Invoke-ReflectivePEInjection.ps1
- https://github.com/hlldz/Phant0m/blob/30c2935d8cf4aafda17ee2fab7cd0c4aa9a607c2/old/Invoke-Phant0m.ps1
- https://gist.github.com/MHaggis/0dbe00ad401daa7137c81c99c268cfb7
- https://github.com/SigmaHQ/sigma/blob/master/rules/windows/powershell/powershell_script/posh_ps_susp_keywords.yml
author: Florian Roth (Nextron Systems), Perez Diego (@darkquassar), Tuan Le (NCSGroup), Huntrule Team
date: 2019-02-11
modified: 2023-04-21
tags:
- attack.execution
- attack.t1059.001
logsource:
product: windows
category: ps_script
definition: "Requirements: Script Block Logging must be enabled"
detection:
selection:
ScriptBlockText|contains:
- System.Reflection.Assembly.Load($
- "[System.Reflection.Assembly]::Load($"
- "[Reflection.Assembly]::Load($"
- System.Reflection.AssemblyName
- Reflection.Emit.AssemblyBuilderAccess
- Reflection.Emit.CustomAttributeBuilder
- Runtime.InteropServices.UnmanagedType
- Runtime.InteropServices.DllImportAttribute
- SuspendThread
- rundll32
condition: selection
falsepositives:
- Unknown
level: medium
license: DRL-1.1
related:
- id: 1f49f2ab-26bc-48b3-96cc-dcffbc93eadf
type: derived