Overview
Thequery action executes WMI queries to enumerate system information both locally and remotely. WMI provides access to extensive system data including processes, services, hardware, network configuration, and security settings through a SQL-like query language (WQL).
Syntax
- Local Query
- Remote Query
Parameters
| Parameter | Required | Description |
|---|---|---|
action | Yes | Must be query |
query | Yes | WQL query string (SQL-like syntax) |
computername | No | Target host(s), comma-separated. Defaults to localhost |
namespace | No | WMI namespace. Defaults to root\cimv2 |
username | No | Username for authentication (requires password) |
password | No | Password for authentication (requires username) |
WQL queries use double quotes internally, so when passing to SharpWMI, use escaped quotes:
query=""select * from win32_service""WMI Namespaces
Common WMI namespaces for enumeration:| Namespace | Description | Common Classes |
|---|---|---|
root\cimv2 | Default namespace with most system information | Win32_Process, Win32_Service, Win32_UserAccount |
root\SecurityCenter2 | Security products (AV, Firewall) | AntiVirusProduct, FirewallProduct |
ROOT\StandardCIMV2 | Network and storage (Win8+) | MSFT_NetTCPConnection, MSFT_NetFirewallRule |
root\Microsoft\Windows\Defender | Windows Defender | MSFT_MpComputerStatus, MSFT_MpPreference |
root\directory\ldap | Active Directory information | ds_user, ds_computer, ds_group |
Usage Examples
Basic Queries
Security Enumeration
AntiVirus Detection
AntiVirus Detection
Firewall Products
Firewall Products
Windows Defender Status
Windows Defender Status
Process Enumeration
Running Processes
Running Processes
Processes by Name
Processes by Name
Processes by User
Processes by User
User and Group Enumeration
Local User Accounts
Local User Accounts
Local Groups
Local Groups
Administrator Group Members
Administrator Group Members
Network Enumeration
Network Connections (Windows 10+)
Network Connections (Windows 10+)
Network Adapters
Network Adapters
Network Shares
Network Shares
Software and Updates
Installed Software
Installed Software
Installed Hotfixes
Installed Hotfixes
Startup Programs
Startup Programs
Service Enumeration
Running Services
Running Services
Services by Start Mode
Services by Start Mode
Services Running as SYSTEM
Services Running as SYSTEM
Scheduled Tasks
Scheduled Jobs
Scheduled Jobs
System Information
Operating System
Operating System
Computer System
Computer System
BIOS Information
BIOS Information
Persistence Detection
WMI Event Subscriptions
WMI Event Subscriptions
Remote vs Local Usage
- Local Enumeration
- Remote Enumeration
Advantages:
- No network traffic
- Works without admin privileges for most queries
- No authentication required
- Faster execution
- Post-exploitation enumeration
- System reconnaissance after initial access
- Service/software enumeration
Detection Considerations
Detection Indicators
Detection Indicators
- Unusual WMI queries from non-administrative tools
- Queries against SecurityCenter2 namespace
- Bulk queries across multiple systems
- Queries for process command lines
- Event subscription enumeration
- Queries originating from user workstations
Event Log Indicators
Event Log Indicators
- Event ID 5857: WMI activity
- Event ID 5860: Registration of temporary event consumers
- Event ID 5861: Registration of permanent event consumers
- Sysmon Event ID 19: WMI event filter activity
- Sysmon Event ID 20: WMI consumer activity
- Sysmon Event ID 21: WMI consumer binding
Network Detection
Network Detection
- DCOM traffic on port 135
- Dynamic RPC ports (49152-65535)
- Multiple WMI connections from single source
- WMI traffic from unusual source IPs
Best Practices
Query Optimization
- Use WHERE clauses to filter results
- Select specific properties instead of *
- Avoid Win32_Product if possible (slow)
- Test queries locally before remote execution
Operational Security
- Blend in with legitimate admin activity
- Use standard WMI namespaces when possible
- Avoid bulk queries during business hours
- Limit query frequency to avoid detection
Troubleshooting
Access Denied
Access Denied
Cause: Insufficient privileges or wrong credentialsSolution:
- Verify credentials with username/password parameters
- Ensure user is admin on target system
- Check UAC remote restrictions
Invalid Query
Invalid Query
Cause: Syntax error in WQL querySolution:
- Test query with wmic.exe first:
wmic /node:target process list - Verify WMI class exists in namespace
- Check for proper quote escaping
Invalid Namespace
Invalid Namespace
Cause: Namespace doesn’t exist on target systemSolution:
- Verify namespace exists:
wmic /namespace:\\root path __NAMESPACE - Use default root\cimv2 for most queries
- Some namespaces only exist on certain Windows versions