Detection rules › Elastic

Potential Pentesting PowerShell Script

Source
github.com/elastic/protections-artifacts

Identifies the execution of PowerShell scripts with keywords from known open source penetration testing tools.

MITRE ATT&CK coverage

Rule body

[rule]
description = "Identifies the execution of PowerShell scripts with keywords from known open source penetration testing tools."
id = "c4cd4b82-6a78-484e-a86f-470381006ab5"
license = "Elastic License v2"
name = "Potential Pentesting PowerShell Script"
os_list = ["windows"]
version = "1.0.6"

query = '''
api where process.Ext.api.name == "AmsiScanBuffer" and
 (process.name in~ ("powershell.exe") or process.Ext.api.parameters.app_name == "PowerShell") and
  process.Ext.api.parameters.buffer : ("*Invoke-Empire*", "*Invoke-Mimikatz*", "*PowerShellMafia*", "*redcanaryco*", "*PowerShellEmpire*",
    "*EDR-Testing-Script*", "*0xfc,0xe8,0x82,0x0,0x0,0x0,0x60*", "*Get-VaultCredential*", "*Get-ChromeBookmarks*", "*Get-USBKeystrokes *",
    "*Get-Keystrokes*", "*Get-ClipboardContents*", "*Get-Keystrokes*", "*Get-Screenshot*", "*Get-GPPPassword*", "*Exploit-Jenkins*", "*New-InMemoryModule*",
    "*Invoke-CreateRemoteThread*", "*Invoke-PowerSpray*", "*Invoke-NetRipper*",
    "*Invoke-CredentialInjection*", "*Invoke-DllInjection*", "*Invoke-DpapiDump*",
    "*Invoke-EventVwrBypass*", "*Invoke-ImpersonateUser*", "*Invoke-HiveDump*",
    "*Invoke-Kerberoast*", "*Invoke-MemoryFreeLibrary*", "*Invoke-Patamenia*",
    "*Invoke-MemoryLoadLibrary*", "*Invoke-SMBRemoting*", "*Invoke-WMIRemoting*",
    "*Invoke-Mimikatz*", "*Invoke-NinjaCopy*", "*Invoke-GrabTheHash*",
    "*Invoke-PatchDll*", "*Invoke-Portscan*", "*Invoke-SessionHunter*",
    "*Invoke-PrivescAudit*", "*Invoke-ReflectivePEInjection*",
    "*Invoke-ReverseDnsLookup*", "*Invoke-RevertToSelf*", "*Invoke-PrivescCheck*",
    "*Invoke-ServiceAbuse*", "*Invoke-Shellcode*",
    "*Invoke-TokenManipulation*", "*Invoke-UserImpersonation*",
    "*Invoke-WmiCommand*", "*Invoke-Privesc*", "*Invoke-BloodHound*",
    "*Invoke-HostEnum*", "*Invoke-BruteForce*",
    "*Invoke-SessionGopher*", "*Invoke-AsSystem*",
    "*Invoke-WdigestDowngrade*",
    "*Invoke-DomainPasswordSpray*",
    "*Invoke-DCSync*", "*Invoke-PowerDump*", "*Invoke-SSIDExfil*",
    "*Invoke-PowerShellTCP*", "*Invoke-DropboxUpload*",
    "*Invoke-ExfilDataToGitHub*", "*Invoke-EgressCheck*",
    "*Invoke-PostExfil*", "*Invoke-NetworkRelay*",
    "*Invoke-WMIDebugger*", "*Invoke-SQLOSCMD*",
    "*Invoke-SMBExec*", "*Invoke-PSRemoting*",
    "*Invoke-ExecuteMSBuild*", "*Invoke-DCOM*",
    "*Invoke-Inveigh*", "*Invoke-PsExec*",
    "*Invoke-ResolverBackdoor*", "*Invoke-EventLogBackdoor*",
    "*Invoke-DeadUserBackdoor*", "*Invoke-DisableMachineAcctChange*",
    "*Invoke-AccessBinary*", "*Invoke-JSRatRegsvr*",
    "*Invoke-JSRatRundll*", "*Invoke-PoshRatHttps*",
    "*Invoke-PsGcatAgent*", "*Invoke-BackdoorLNK*",
    "*Invoke-PacketCapture*", "*Invoke-PowerShellTcpOneLine*", "*Invoke-PowerShellTcpOneLineBind*",
    "*Invoke-PowerShellUdp*", "*Invoke-PowerShellUdpOneLine*",
    "*Invoke-Vnc*", "*Invoke-LockWorkStation*",
    "*Invoke-EternalBlue*", "*Invoke-ShellcodeMSIL*",
    "*Invoke-MetasploitPayload*", "*Invoke-DowngradeAccount*",
    "*Invoke-MS16032*", "*Invoke-BypassUACTokenManipulation*",
    "*Invoke-SDCLTBypass*", "*Invoke-FodHelperBypass*",
    "*Invoke-EventVwrBypass*", "*Invoke-EnvBypass*", "*Invoke-PsUaCme*",
    "*Invoke-Tater*", "*Invoke-WScriptBypassUAC*",
    "*Invoke-Interceptor*", "*Invoke-PoshRatHttp*",
    "*Invoke-ExecCommandWMI*", "*Invoke-KillProcessWMI*",
    "*Invoke-CreateShareandExecute*", "*Invoke-RemoteScriptWithOutput*",
    "*Invoke-SchedJobManipulation*", "*Invoke-ServiceManipulation*",
    "*Invoke-PowerOptionsWMI*", "*Invoke-DirectoryListing*",
    "*Invoke-FileTransferOverWMI*", "*Invoke-WMImplant*",
    "*Invoke-WMIObfuscatedPSCommand*", "*Invoke-WMIDuplicateClass*",
    "*Invoke-WMIUpload*", "*Invoke-WMIRemoteExtract*", "*Invoke-winPEAS*") and

 not process.parent.executable :
              ("C:\\Program Files\\ASCI\\ActiveBatchV??\\bin\\abateagent.exe",
               "C:\\Program Files\\Windows Defender Advanced Threat Protection\\SenseIR.exe",
               "?:\\ProgramData\\Microsoft\\Windows Defender Advanced Threat Protection\\Platform\\*\\SenseIR.exe",
               "C:\\Program Files (x86)\\ossec-agent\\wazuh-agent.exe", 
               "C:\\Program Files (x86)\\Footprint\\Footprint Agent\\Footprint Agent.exe") and
 not (process.Ext.api.parameters.size == 63858 and process.Ext.api.parameters.buffer : "*$local:PowerSploitIndicators*") and
 not (process.Ext.api.parameters.size == 72914 and process.Ext.api.parameters.buffer : "*function Set-HookFunctionTabs*") and
 not (process.Ext.api.parameters.size == 4158 and process.Ext.api.parameters.content_name : "E:\\*\\Get-VaultEntry.ps1") and
 not (process.parent.executable : "C:\\Users\\*\\AppData\\Local\\Programs\\Microsoft VS Code\\Code.exe" and
      process.Ext.api.parameters.content_name : "E:\\SharePoint Sync\\*.ps1")
'''

min_endpoint_version = "8.16.0"
[[actions]]
action = "kill_process"
field = "process.entity_id"
state = 0
tree = true

[[optional_actions]]
action = "rollback"
field = "process.entity_id"
state = 0

[[threat]]
framework = "MITRE ATT&CK"
[[threat.technique]]
id = "T1059"
name = "Command and Scripting Interpreter"
reference = "https://attack.mitre.org/techniques/T1059/"
[[threat.technique.subtechnique]]
id = "T1059.001"
name = "PowerShell"
reference = "https://attack.mitre.org/techniques/T1059/001/"



[threat.tactic]
id = "TA0002"
name = "Execution"
reference = "https://attack.mitre.org/tactics/TA0002/"

[internal]
min_endpoint_version = "8.16.0"

Stages and Predicates

Stage 1: api

api where process.Ext.api.name == "AmsiScanBuffer" and
 (process.name in~ ("powershell.exe") or process.Ext.api.parameters.app_name == "PowerShell") and
  process.Ext.api.parameters.buffer : ("*Invoke-Empire*", "*Invoke-Mimikatz*", "*PowerShellMafia*", "*redcanaryco*", "*PowerShellEmpire*",
    "*EDR-Testing-Script*", "*0xfc,0xe8,0x82,0x0,0x0,0x0,0x60*", "*Get-VaultCredential*", "*Get-ChromeBookmarks*", "*Get-USBKeystrokes *",
    "*Get-Keystrokes*", "*Get-ClipboardContents*", "*Get-Keystrokes*", "*Get-Screenshot*", "*Get-GPPPassword*", "*Exploit-Jenkins*", "*New-InMemoryModule*",
    "*Invoke-CreateRemoteThread*", "*Invoke-PowerSpray*", "*Invoke-NetRipper*",
    "*Invoke-CredentialInjection*", "*Invoke-DllInjection*", "*Invoke-DpapiDump*",
    "*Invoke-EventVwrBypass*", "*Invoke-ImpersonateUser*", "*Invoke-HiveDump*",
    "*Invoke-Kerberoast*", "*Invoke-MemoryFreeLibrary*", "*Invoke-Patamenia*",
    "*Invoke-MemoryLoadLibrary*", "*Invoke-SMBRemoting*", "*Invoke-WMIRemoting*",
    "*Invoke-Mimikatz*", "*Invoke-NinjaCopy*", "*Invoke-GrabTheHash*",
    "*Invoke-PatchDll*", "*Invoke-Portscan*", "*Invoke-SessionHunter*",
    "*Invoke-PrivescAudit*", "*Invoke-ReflectivePEInjection*",
    "*Invoke-ReverseDnsLookup*", "*Invoke-RevertToSelf*", "*Invoke-PrivescCheck*",
    "*Invoke-ServiceAbuse*", "*Invoke-Shellcode*",
    "*Invoke-TokenManipulation*", "*Invoke-UserImpersonation*",
    "*Invoke-WmiCommand*", "*Invoke-Privesc*", "*Invoke-BloodHound*",
    "*Invoke-HostEnum*", "*Invoke-BruteForce*",
    "*Invoke-SessionGopher*", "*Invoke-AsSystem*",
    "*Invoke-WdigestDowngrade*",
    "*Invoke-DomainPasswordSpray*",
    "*Invoke-DCSync*", "*Invoke-PowerDump*", "*Invoke-SSIDExfil*",
    "*Invoke-PowerShellTCP*", "*Invoke-DropboxUpload*",
    "*Invoke-ExfilDataToGitHub*", "*Invoke-EgressCheck*",
    "*Invoke-PostExfil*", "*Invoke-NetworkRelay*",
    "*Invoke-WMIDebugger*", "*Invoke-SQLOSCMD*",
    "*Invoke-SMBExec*", "*Invoke-PSRemoting*",
    "*Invoke-ExecuteMSBuild*", "*Invoke-DCOM*",
    "*Invoke-Inveigh*", "*Invoke-PsExec*",
    "*Invoke-ResolverBackdoor*", "*Invoke-EventLogBackdoor*",
    "*Invoke-DeadUserBackdoor*", "*Invoke-DisableMachineAcctChange*",
    "*Invoke-AccessBinary*", "*Invoke-JSRatRegsvr*",
    "*Invoke-JSRatRundll*", "*Invoke-PoshRatHttps*",
    "*Invoke-PsGcatAgent*", "*Invoke-BackdoorLNK*",
    "*Invoke-PacketCapture*", "*Invoke-PowerShellTcpOneLine*", "*Invoke-PowerShellTcpOneLineBind*",
    "*Invoke-PowerShellUdp*", "*Invoke-PowerShellUdpOneLine*",
    "*Invoke-Vnc*", "*Invoke-LockWorkStation*",
    "*Invoke-EternalBlue*", "*Invoke-ShellcodeMSIL*",
    "*Invoke-MetasploitPayload*", "*Invoke-DowngradeAccount*",
    "*Invoke-MS16032*", "*Invoke-BypassUACTokenManipulation*",
    "*Invoke-SDCLTBypass*", "*Invoke-FodHelperBypass*",
    "*Invoke-EventVwrBypass*", "*Invoke-EnvBypass*", "*Invoke-PsUaCme*",
    "*Invoke-Tater*", "*Invoke-WScriptBypassUAC*",
    "*Invoke-Interceptor*", "*Invoke-PoshRatHttp*",
    "*Invoke-ExecCommandWMI*", "*Invoke-KillProcessWMI*",
    "*Invoke-CreateShareandExecute*", "*Invoke-RemoteScriptWithOutput*",
    "*Invoke-SchedJobManipulation*", "*Invoke-ServiceManipulation*",
    "*Invoke-PowerOptionsWMI*", "*Invoke-DirectoryListing*",
    "*Invoke-FileTransferOverWMI*", "*Invoke-WMImplant*",
    "*Invoke-WMIObfuscatedPSCommand*", "*Invoke-WMIDuplicateClass*",
    "*Invoke-WMIUpload*", "*Invoke-WMIRemoteExtract*", "*Invoke-winPEAS*") and

 not process.parent.executable :
              ("C:\\Program Files\\ASCI\\ActiveBatchV??\\bin\\abateagent.exe",
               "C:\\Program Files\\Windows Defender Advanced Threat Protection\\SenseIR.exe",
               "?:\\ProgramData\\Microsoft\\Windows Defender Advanced Threat Protection\\Platform\\*\\SenseIR.exe",
               "C:\\Program Files (x86)\\ossec-agent\\wazuh-agent.exe", 
               "C:\\Program Files (x86)\\Footprint\\Footprint Agent\\Footprint Agent.exe") and
 not (process.Ext.api.parameters.size == 63858 and process.Ext.api.parameters.buffer : "*$local:PowerSploitIndicators*") and
 not (process.Ext.api.parameters.size == 72914 and process.Ext.api.parameters.buffer : "*function Set-HookFunctionTabs*") and
 not (process.Ext.api.parameters.size == 4158 and process.Ext.api.parameters.content_name : "E:\\*\\Get-VaultEntry.ps1") and
 not (process.parent.executable : "C:\\Users\\*\\AppData\\Local\\Programs\\Microsoft VS Code\\Code.exe" and
      process.Ext.api.parameters.content_name : "E:\\SharePoint Sync\\*.ps1")

Exclusions

The rule actively suppresses these predicates.

FieldKindExcluded valuesSearch
process.Ext.api.parameters.buffermatch$local:PowerSploitIndicatorsexcludes:process.Ext.api.parameters.buffer field:"process.Ext.api.parameters.buffer" value:"$local:PowerSploitIndicators"
process.Ext.api.parameters.sizeeq63858excludes:process.Ext.api.parameters.size field:"process.Ext.api.parameters.size" value:"63858"
process.Ext.api.parameters.buffermatchfunction Set-HookFunctionTabsexcludes:process.Ext.api.parameters.buffer field:"process.Ext.api.parameters.buffer" value:"function Set-HookFunctionTabs"
process.Ext.api.parameters.sizeeq72914excludes:process.Ext.api.parameters.size field:"process.Ext.api.parameters.size" value:"72914"
process.Ext.api.parameters.content_namewildcardE:\*\Get-VaultEntry.ps1excludes:process.Ext.api.parameters.content_name field:"process.Ext.api.parameters.content_name" value:"E:\*\Get-VaultEntry.ps1"
process.Ext.api.parameters.sizeeq4158excludes:process.Ext.api.parameters.size field:"process.Ext.api.parameters.size" value:"4158"
process.Ext.api.parameters.content_namewildcardE:\SharePoint Sync\*.ps1excludes:process.Ext.api.parameters.content_name field:"process.Ext.api.parameters.content_name" value:"E:\SharePoint Sync\*.ps1"
process.parent.executablewildcardC:\Users\*\AppData\Local\Programs\Microsoft VS Code\Code.exeexcludes:process.parent.executable field:"process.parent.executable" value:"C:\Users\*\AppData\Local\Programs\Microsoft VS Code\Code.exe"
process.parent.executablewildcardC:\Program Files\ASCI\ActiveBatchV??\bin\abateagent.exe, C:\Program Files\Windows Defender Advanced Threat Protection\SenseIR.exe, ?:\ProgramData\Microsoft\Windows Defender Advanced Threat Protection\Platform\*\SenseIR.exe, C:\Program Files (x86)\ossec-agent\wazuh-agent.exe, C:\Program Files (x86)\Footprint\Footprint Agent\Footprint Agent.exeexcludes:process.parent.executable

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
process.Ext.api.nameeq
  • AmsiScanBuffer corpus 16 (elastic 16)
field:"process.Ext.api.name" kind:eq value:"AmsiScanBuffer"
process.Ext.api.parameters.app_nameeq
  • PowerShell corpus 10 (elastic 10)
field:"process.Ext.api.parameters.app_name" kind:eq value:"PowerShell"
process.Ext.api.parameters.bufferwildcard
  • *0xfc,0xe8,0x82,0x0,0x0,0x0,0x60*
  • *EDR-Testing-Script*
  • *Exploit-Jenkins*
  • *Get-ChromeBookmarks*
  • *Get-ClipboardContents*
  • *Get-GPPPassword*
  • *Get-Keystrokes*
  • *Get-Screenshot*
  • *Get-USBKeystrokes *
  • *Get-VaultCredential*
  • *Invoke-AccessBinary*
  • *Invoke-AsSystem*
  • *Invoke-BackdoorLNK*
  • *Invoke-BloodHound*
  • *Invoke-BruteForce*
  • *Invoke-BypassUACTokenManipulation*
  • *Invoke-CreateRemoteThread*
  • *Invoke-CreateShareandExecute*
  • *Invoke-CredentialInjection*
  • *Invoke-DCOM*
  • *Invoke-DCSync*
  • *Invoke-DeadUserBackdoor*
  • *Invoke-DirectoryListing*
  • *Invoke-DisableMachineAcctChange*
  • *Invoke-DllInjection*
  • *Invoke-DomainPasswordSpray*
  • *Invoke-DowngradeAccount*
  • *Invoke-DpapiDump*
  • *Invoke-DropboxUpload*
  • *Invoke-EgressCheck*
  • *Invoke-Empire*
  • *Invoke-EnvBypass*
  • *Invoke-EternalBlue*
  • *Invoke-EventLogBackdoor*
  • *Invoke-EventVwrBypass*
  • *Invoke-ExecCommandWMI*
  • *Invoke-ExecuteMSBuild*
  • *Invoke-ExfilDataToGitHub*
  • *Invoke-FileTransferOverWMI*
  • *Invoke-FodHelperBypass*
  • +77 more values (see full rule source)
field:"process.Ext.api.parameters.buffer" kind:wildcard
process.namein
  • powershell.exe corpus 184 (elastic 140, splunk 44)
field:"process_name" kind:in value:"powershell.exe"