Windows PowerShell: Suspicious GPO Enumeration via Get-GPO

Detects PowerShell script blocks using Get-GPO to enumerate domain Group Policy Objects.

FreeUnreviewedSigmalowv1
title: "Windows PowerShell: Suspicious GPO Enumeration via Get-GPO"
id: 3dd835a0-db8d-47ff-85ea-7b6379ba05fb
status: test
description: This rule flags PowerShell script block content containing the Get-GPO cmdlet, indicating an attempt to enumerate Group Policy Objects in a domain (for a specific GPO or all GPOs). Attackers may use GPO discovery to identify configuration targets and opportunities for further compromise. Telemetry relies on Script Block Logging capturing the PowerShell script text for analysis of the cmdlet string.
references:
  - https://github.com/redcanaryco/atomic-red-team/blob/f339e7da7d05f6057fdfcdd3742bfcf365fee2a9/atomics/T1615/T1615.md
  - https://learn.microsoft.com/en-us/powershell/module/grouppolicy/get-gpo?view=windowsserver2022-ps
  - https://github.com/SigmaHQ/sigma/blob/master/rules/windows/powershell/powershell_script/posh_ps_susp_get_gpo.yml
author: frack113, Huntrule Team
date: 2022-06-04
tags:
  - attack.discovery
  - attack.t1615
logsource:
  product: windows
  category: ps_script
  definition: "Requirements: Script Block Logging must be enabled"
detection:
  selection:
    ScriptBlockText|contains: Get-GPO
  condition: selection
falsepositives:
  - Legitimate PowerShell scripts
level: low
license: DRL-1.1
related:
  - id: eb2fd349-ec67-4caa-9143-d79c7fb34441
    type: derived

What it detects

This rule flags PowerShell script block content containing the Get-GPO cmdlet, indicating an attempt to enumerate Group Policy Objects in a domain (for a specific GPO or all GPOs). Attackers may use GPO discovery to identify configuration targets and opportunities for further compromise. Telemetry relies on Script Block Logging capturing the PowerShell script text for analysis of the cmdlet string.

Known false positives

  • Legitimate PowerShell scripts

Detection content is published as a reviewed draft. Tune thresholds and exclusions against your own telemetry before enabling this rule for alerting.