← Back to SOC feed Coverage →

PowerShell downloads (Normalized Process Events)

kql MEDIUM Azure-Sentinel
imProcessCreate
huntingmicrosoftofficialpowershell
This rule was pulled from an open-source repository and enriched with AI. Validate in a test environment before deploying to production.
View original rule at Azure-Sentinel →
Retrieved: 2026-04-22T09:00:00Z · Confidence: medium

Hunt Hypothesis

Unusual PowerShell execution events that involve downloading files may indicate an adversary attempting to exfiltrate data or deploy malicious payloads. SOC teams should proactively hunt for this behavior in Azure Sentinel to identify potential compromise early and prevent lateral movement or data theft.

KQL Query

imProcessCreate 
  | where Process has_any ("powershell.exe", "powershell_ise.exe") // perfromance pre-filtering
  | extend FileName=tostring(split(TargetProcessName, '\\')[-1])
  | where FileName in~ ("powershell.exe", "powershell_ise.exe")
  | where CommandLine has_any ("Net.WebClient", "DownloadFile", "Invoke-WebRequest", "Invoke-Shellcode", "http:", "https:")
  | project TimeGenerated, Dvc, User, ActingProcessName, FileName, CommandLine, EventVendor, EventProduct
  | top 100 by TimeGenerated
  | extend timestamp = TimeGenerated

Analytic Rule Definition

id: 93a4ed6c-83e6-4202-8df4-e340dbd20a38
name: PowerShell downloads (Normalized Process Events)
description: |
  'Finds PowerShell execution events that could involve a download'
requiredDataConnectors: []
tactics:
  - Execution
  - CommandAndControl
query: |
  imProcessCreate 
    | where Process has_any ("powershell.exe", "powershell_ise.exe") // perfromance pre-filtering
    | extend FileName=tostring(split(TargetProcessName, '\\')[-1])
    | where FileName in~ ("powershell.exe", "powershell_ise.exe")
    | where CommandLine has_any ("Net.WebClient", "DownloadFile", "Invoke-WebRequest", "Invoke-Shellcode", "http:", "https:")
    | project TimeGenerated, Dvc, User, ActingProcessName, FileName, CommandLine, EventVendor, EventProduct
    | top 100 by TimeGenerated
    | extend timestamp = TimeGenerated
version: 1.0.1

Required Data Sources

Sentinel TableNotes
imProcessCreateEnsure this data connector is enabled

MITRE ATT&CK Context

References

False Positive Guidance

Original source: https://github.com/Azure/Azure-Sentinel/blob/main/Hunting Queries/ASimProcess/imProcess_powershell_downloads.yaml