Detection rules › Elastic
Deprecated - PowerShell Script with Remote Execution Capabilities via WinRM
Identifies the use of Cmdlets and methods related to remote execution activities using WinRM. Attackers can abuse WinRM to perform lateral movement using built-in tools.
MITRE ATT&CK coverage
| Tactic | Techniques |
|---|---|
| Execution | T1047 Windows Management Instrumentation, T1059.001 Command and Scripting Interpreter: PowerShell |
| Lateral Movement | T1021.006 Remote Services: Windows Remote Management |
Rule body elastic
[metadata]
creation_date = "2023/07/12"
integration = ["windows"]
maturity = "production"
updated_date = "2026/03/24"
[rule]
author = ["Elastic"]
building_block_type = "default"
description = """
Identifies the use of Cmdlets and methods related to remote execution activities using WinRM. Attackers can abuse WinRM
to perform lateral movement using built-in tools.
"""
from = "now-119m"
index = ["winlogbeat-*", "logs-windows.powershell*"]
interval = "60m"
language = "kuery"
license = "Elastic License v2"
name = "Deprecated - PowerShell Script with Remote Execution Capabilities via WinRM"
references = [
"https://attack.mitre.org/techniques/T1021/006/",
"https://github.com/cobbr/SharpSploit/blob/master/SharpSploit/LateralMovement/PowerShellRemoting.cs",
"https://github.com/BC-SECURITY/Empire/blob/main/empire/server/modules/powershell/lateral_movement/invoke_psremoting.py",
]
risk_score = 21
rule_id = "0abf0c5b-62dd-48d2-ac4e-6b43fe3a6e83"
setup = """## Setup
PowerShell Script Block Logging must be enabled to generate the events used by this rule (e.g., 4104).
Setup instructions: https://ela.st/powershell-logging-setup
"""
severity = "low"
tags = [
"Domain: Endpoint",
"OS: Windows",
"Use Case: Threat Detection",
"Tactic: Lateral Movement",
"Tactic: Execution",
"Data Source: PowerShell Logs",
"Rule Type: BBR",
]
timestamp_override = "event.ingested"
type = "query"
query = '''
event.category:process and host.os.type:windows and
powershell.file.script_block_text : (
("Invoke-WmiMethod" or "Invoke-Command" or "Enter-PSSession") and "ComputerName"
) and
not user.id : "S-1-5-18" and
not file.directory : (
"C:\\Program Files\\LogicMonitor\\Agent\\tmp" or
"C:\\Program Files\\WindowsPowerShell\\Modules\\icinga-powershell-framework\\cache" or
"C:\\Program Files\\WindowsPowerShell\\Modules\\SmartCardTools\\1.2.2"
) and not
powershell.file.script_block_text : (
"Export-ModuleMember -Function @('Invoke-Expression''Invoke-Command')" and
"function Invoke-Command {"
)
'''
[[rule.filters]]
[rule.filters.meta]
negate = true
[rule.filters.query.wildcard."file.path"]
case_insensitive = true
value = "?:\\\\Program Files\\\\WindowsPowerShell\\\\Modules\\\\dbatools\\\\*\\\\allcommands.ps1"
[[rule.filters]]
[rule.filters.meta]
negate = true
[rule.filters.query.wildcard."file.directory"]
case_insensitive = true
value = "?:\\\\Program Files\\\\Microsoft\\\\Exchange Server\\\\*\\\\bin"
[[rule.filters]]
[rule.filters.meta]
negate = true
[rule.filters.query.wildcard."file.directory"]
case_insensitive = true
value = "?:\\\\ExchangeServer\\\\bin*"
[[rule.threat]]
framework = "MITRE ATT&CK"
[[rule.threat.technique]]
id = "T1021"
name = "Remote Services"
reference = "https://attack.mitre.org/techniques/T1021/"
[[rule.threat.technique.subtechnique]]
id = "T1021.006"
name = "Windows Remote Management"
reference = "https://attack.mitre.org/techniques/T1021/006/"
[rule.threat.tactic]
id = "TA0008"
name = "Lateral Movement"
reference = "https://attack.mitre.org/tactics/TA0008/"
[[rule.threat]]
framework = "MITRE ATT&CK"
[[rule.threat.technique]]
id = "T1047"
name = "Windows Management Instrumentation"
reference = "https://attack.mitre.org/techniques/T1047/"
[[rule.threat.technique]]
id = "T1059"
name = "Command and Scripting Interpreter"
reference = "https://attack.mitre.org/techniques/T1059/"
[[rule.threat.technique.subtechnique]]
id = "T1059.001"
name = "PowerShell"
reference = "https://attack.mitre.org/techniques/T1059/001/"
[rule.threat.tactic]
id = "TA0002"
name = "Execution"
reference = "https://attack.mitre.org/tactics/TA0002/"
Stages and Predicates
Stage 1: query
event.category:process and host.os.type:windows and
powershell.file.script_block_text : (
("Invoke-WmiMethod" or "Invoke-Command" or "Enter-PSSession") and "ComputerName"
) and
not user.id : "S-1-5-18" and
not file.directory : (
"C:\\Program Files\\LogicMonitor\\Agent\\tmp" or
"C:\\Program Files\\WindowsPowerShell\\Modules\\icinga-powershell-framework\\cache" or
"C:\\Program Files\\WindowsPowerShell\\Modules\\SmartCardTools\\1.2.2"
) and not
powershell.file.script_block_text : (
"Export-ModuleMember -Function @('Invoke-Expression''Invoke-Command')" and
"function Invoke-Command {"
)
Exclusions
Top-level NOT(...) conjuncts: predicates this rule actively suppresses.
| Field | Kind | Excluded values |
|---|---|---|
powershell.file.script_block_text | eq | Export-ModuleMember -Function @('Invoke-Expression''Invoke-Command') |
powershell.file.script_block_text | eq | function Invoke-Command { |
file.directory | in | C:\Program Files\LogicMonitor\Agent\tmp, C:\Program Files\WindowsPowerShell\Modules\SmartCardTools\1.2.2, C:\Program Files\WindowsPowerShell\Modules\icinga-powershell-framework\cache |
user.id | eq | S-1-5-18 |
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.
| Field | Kind | Values |
|---|---|---|
event.category | eq |
|
powershell.file.script_block_text | eq |
|
powershell.file.script_block_text | in |
|