New to Claude Skills? Learn how to install them →

mukul975 on GitHub

Hunting for WMI Persistence

Free

Detect and analyze WMI-based persistence mechanisms.

Get this skill

Free · Opens the source repo

What Hunting for WMI Persistence does

The 'Hunting for Persistence via WMI Subscriptions' skill is designed for security professionals and threat hunters focused on identifying and mitigating fileless persistence mechanisms in Windows environments. This skill leverages Windows Management Instrumentation (WMI) to monitor and analyze event subscriptions that could be exploited by adversaries to maintain persistence on compromised systems. By using this skill, users can proactively search for malicious WMI event filters, consumers, and their bindings, which are often utilized in advanced persistent threat (APT) scenarios.

The skill operates by querying existing WMI subscriptions, enabling users to identify anomalies that may indicate malicious activity. It captures critical Sysmon events related to WMI, such as event filters and consumers, and provides a structured workflow for analyzing the types of consumers that could execute harmful scripts or commands. This structured approach allows users to focus on high-risk consumer types, such as ActiveScriptEventConsumer and CommandLineEventConsumer, which are commonly associated with malicious persistence techniques.

For effective utilization, the skill requires specific prerequisites, including enabled Sysmon logging for WMI events and access to the WMI repository. It is particularly useful during incident response scenarios where traditional persistence mechanisms have been cleared, yet signs of malware persistence remain. By correlating WMI activity with other telemetry data, users can validate the presence of malicious subscriptions and take appropriate actions to eliminate them.

In summary, this skill is an essential tool for security teams looking to enhance their endpoint detection capabilities against sophisticated threats that leverage WMI for persistence. Its focus on event-driven execution aligns with current threat landscapes, making it a valuable addition to any security toolkit.

When to use it

Use this skill when investigating potential WMI-based persistence on Windows systems, especially after cleanup attempts have failed.

When not to use it

This skill may not be suitable for environments without WMI or where Sysmon logging is not enabled, limiting its effectiveness.

What you can build with it

Investigating APT29 Activity

Utilize the skill to detect WMI subscriptions created by APT29 that may execute backdoors on system startup.

Responding to Malware Persistence

Apply the skill during incident response to uncover WMI-based persistence mechanisms that survive system reboots.

Auditing WMI Repository

Use the skill to audit WMI event subscriptions in environments where standard persistence mechanisms appear clean.

How to install Hunting for WMI Persistence

View source

1. Install with the skills CLI

npx skills add mukul975/anthropic-cybersecurity-skills/hunting-for-persistence-via-wmi-subscriptions --agent claude-code

2. Or install it manually

Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.

Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs

Inside SKILL.md

Written by mukul975

Hunting for Persistence via WMI Subscriptions

When to Use

  • When proactively searching for fileless persistence mechanisms in Windows environments
  • After threat intelligence reports indicate WMI-based persistence by APT groups (APT29, APT32, FIN8)
  • When investigating systems where malware persists across reboots despite cleanup attempts
  • During incident response when standard persistence locations (Run keys, scheduled tasks) are clean
  • When WmiPrvSe.exe is observed spawning unexpected child processes

Prerequisites

  • Sysmon Event ID 19, 20, 21 (WMI Event Filter/Consumer/Binding) enabled
  • Windows Event ID 5861 (WMI activity logging) from Microsoft-Windows-WMI-Activity
  • PowerShell logging enabled (Script Block Logging, Module Logging)
  • WMI repository access for enumeration
  • SIEM platform for event correlation

Workflow

  1. Enumerate Existing WMI Subscriptions: Query all permanent WMI event subscriptions on target systems. A clean system typically has very few or zero permanent subscriptions, making anomalies easy to spot.
  2. Monitor WMI Event Creation (Sysmon 19/20/21): Sysmon Event 19 captures WmiEventFilter activity, Event 20 captures WmiEventConsumer activity, and Event 21 captures WmiEventConsumerToFilter binding.
  3. Analyze Consumer Types: Focus on ActiveScriptEventConsumer (runs VBScript/JScript) and CommandLineEventConsumer (executes commands) -- these are the dangerous types used for persistence.
  4. Check Event Filter Triggers: Examine what triggers the subscription. Common malicious triggers include system startup (Win32_ProcessStartTrace), user logon, or timer-based execution intervals.
  5. Investigate WmiPrvSe.exe Child Processes: When a WMI subscription fires, the action is executed by WmiPrvSe.exe. Hunt for unusual child processes of WmiPrvSe.exe.
  6. Correlate with MOF Compilation: Detect mofcomp.exe usage which compiles MOF files to create WMI subscriptions programmatically.
  7. Validate and Respond: Confirm malicious subscriptions, remove them, and trace back to the initial infection vector.

Key Concepts

ConceptDescription
T1546.003Event Triggered Execution: WMI Event Subscription
__EventFilterWMI class defining the trigger condition
__EventConsumerWMI class defining the action to perform
__FilterToConsumerBindingLinks a filter to a consumer
ActiveScriptEventConsumerConsumer that runs VBScript or JScript
CommandLineEventConsumerConsumer that executes command lines
WmiPrvSe.exeWMI Provider Host that executes subscription actions
MOF FileManaged Object Format used to define WMI objects

Detection Queries

Splunk -- WMI Subscription Creation via Sysmon

index=sysmon (EventCode=19 OR EventCode=20 OR EventCode=21)
| eval event_type=case(EventCode=19, "EventFilter", EventCode=20, "EventConsumer", EventCode=21, "FilterToConsumerBinding")
| table _time Computer User event_type EventNamespace Name Query Destination Operation

Splunk -- WMI Subscription via Windows Event 5861

index=wineventlog source="Microsoft-Windows-WMI-Activity/Operational" EventCode=5861
| table _time Computer NamespaceName Operation PossibleCause

PowerShell -- Enumerate WMI Subscriptions

Get-WmiObject -Namespace root\subscription -Class __EventFilter
Get-WmiObject -Namespace root\subscription -Class __EventConsumer
Get-WmiObject -Namespace root\subscription -Class __FilterToConsumerBinding

KQL -- WmiPrvSe.exe Spawning Suspicious Children

DeviceProcessEvents
| where Timestamp > ago(7d)
| where InitiatingProcessFileName =~ "wmiprvse.exe"
| where FileName in~ ("cmd.exe", "powershell.exe", "wscript.exe", "cscript.exe", "mshta.exe", "rundll32.exe")
| project Timestamp, DeviceName, FileName, ProcessCommandLine

Sigma Rule

title: WMI Event Subscription Persistence
status: stable
logsource:
    product: windows
    category: wmi_event
detection:
    selection_consumer:
        EventID: 20
        Destination|contains:
            - 'ActiveScriptEventConsumer'
            - 'CommandLineEventConsumer'
    condition: selection_consumer
level: high
tags:
    - attack.persistence
    - attack.t1546.003

Common Scenarios

  1. APT29 WMI Persistence: Creates an ActiveScriptEventConsumer that executes a VBScript backdoor on system startup, surviving reboots and credential resets.
  2. Turla WMI Backdoor: Uses Win32_ProcessStartTrace filter combined with CommandLineEventConsumer for covert command execution.
  3. FIN8 WMI Timer: Interval-based __IntervalTimerEvent triggering encoded PowerShell downloads every 30 minutes.
  4. MOF-Based Installation: Adversary drops a .mof file and compiles it with mofcomp.exe to silently create persistent subscriptions.

Output Format

Hunt ID: TH-WMI-[DATE]-[SEQ]
Host: [Hostname]
Subscription Name: [Filter/Consumer name]
Filter Query: [WQL trigger condition]
Consumer Type: [ActiveScript/CommandLine]
Consumer Action: [Script content or command]
Binding: [Filter-to-Consumer link]
Created: [Timestamp]
User Context: [SYSTEM/User]
Risk Level: [Critical/High/Medium/Low]

Frequently asked questions about Hunting for WMI Persistence

Similar skills