PowerShell Alias Cmdlets (Set-Alias/New-Alias) in Script Block Logging

Alerts on PowerShell scripts that create aliases via Set-Alias/New-Alias, a common obfuscation technique, using ScriptBlockText logging.

FreeUnreviewedSigmalowv1
title: PowerShell Alias Cmdlets (Set-Alias/New-Alias) in Script Block Logging
id: 1d3f833a-a48b-4fc5-aa76-728498df1000
related:
  - id: e8314f79-564d-4f79-bc13-fbc0bf2660d8
    type: derived
  - id: 96cd126d-f970-49c4-848a-da3a09f55c55
    type: derived
status: test
description: This rule flags PowerShell script block text containing the Set-Alias or New-Alias cmdlets, which attackers may use to obscure command intent and make scripts harder to analyze. The detection relies on ScriptBlockText telemetry from Windows PowerShell logging and matches the presence of alias-creation statements. It suppresses a set of known alias patterns used by specific CIM-related commands via an explicit negative filter.
references:
  - https://github.com/1337Rin/Swag-PSO
  - https://github.com/SigmaHQ/sigma/blob/master/rules/windows/powershell/powershell_script/posh_ps_susp_set_alias.yml
author: frack113, Huntrule Team
date: 2023-01-08
modified: 2025-10-22
tags:
  - attack.execution
  - attack.stealth
  - attack.t1027
  - attack.t1059.001
logsource:
  product: windows
  category: ps_script
  definition: "Requirements: Script Block Logging must be enabled"
detection:
  selection:
    ScriptBlockText|contains:
      - "Set-Alias "
      - "New-Alias "
  filter_main_cim:
    ScriptBlockText:
      - Set-Alias -Name ncms -Value New-CimSession -Option ReadOnly, AllScope -ErrorAction SilentlyContinue
      - Set-Alias -Name gcls -Value Get-CimClass -Option ReadOnly, AllScope -ErrorAction SilentlyContinue
      - Set-Alias -Name ncso -Value New-CimSessionOption -Option ReadOnly, AllScope -ErrorAction SilentlyContinue
      - Set-Alias -Name gcms -Value Get-CimSession -Option ReadOnly, AllScope -ErrorAction SilentlyContinue
      - Set-Alias -Name rcms -Value Remove-cimSession -Option ReadOnly, AllScope -ErrorAction SilentlyContinue
      - Set-Alias -Name rcie -Value Register-CimIndicationEvent -Option ReadOnly, AllScope -ErrorAction SilentlyContinue
      - Set-Alias -Name gcai -Value Get-CimAssociatedInstance -Option ReadOnly, AllScope -ErrorAction SilentlyContinue
      - Set-Alias -Name gcim -Value Get-CimInstance -Option ReadOnly, AllScope -ErrorAction SilentlyContinue
      - Set-Alias -Name scim -Value Set-CimInstance -Option ReadOnly, AllScope -ErrorAction SilentlyContinue
      - Set-Alias -Name ncim -Value New-CimInstance -Option ReadOnly, AllScope -ErrorAction SilentlyContinue
      - Set-Alias -Name rcim -Value Remove-cimInstance -Option ReadOnly, AllScope -ErrorAction SilentlyContinue
      - Set-Alias -Name icim -Value Invoke-CimMethod -Option ReadOnly, AllScope -ErrorAction SilentlyContinue
  condition: selection and not 1 of filter_main_*
falsepositives:
  - Unknown
level: low
license: DRL-1.1

What it detects

This rule flags PowerShell script block text containing the Set-Alias or New-Alias cmdlets, which attackers may use to obscure command intent and make scripts harder to analyze. The detection relies on ScriptBlockText telemetry from Windows PowerShell logging and matches the presence of alias-creation statements. It suppresses a set of known alias patterns used by specific CIM-related commands via an explicit negative filter.

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.