WmicExec
How Does it works
Wmi allows to open process in hosts where you know username/(password/Hash). Then, Wmiexec uses wmi to execute each command that is asked to execute (this is why Wmicexec gives you semi-interactive shell).
dcomexec.py: This script gives a semi-interactive shell similar to wmiexec.py, but using different DCOM endpoints (ShellBrowserWindow DCOM object). Currently, it supports MMC20. Application, Shell Windows and Shell Browser Window objects. (from here)
WMI Basics
Namespace
WMI is divided into a directory-style hierarchy, the \root container, with other directories under \root. These "directory paths" are called namespaces. List namespaces:
#Get Root namespaces
gwmi -namespace "root" -Class "__Namespace" | Select Name
#List all namespaces (you may need administrator to list all of them)
Get-WmiObject -Class "__Namespace" -Namespace "Root" -List -Recurse 2> $null | select __Namespace | sort __Namespace
#List namespaces inside "root\cimv2"
Get-WmiObject -Class "__Namespace" -Namespace "root\cimv2" -List -Recurse 2> $null | select __Namespace | sort __NamespaceList classes of a namespace with:
gwmwi -List -Recurse #If no namespace is specified, by default is used: "root\cimv2"
gwmi -Namespace "root/microsoft" -List -RecurseClasses
The WMI class name eg: win32_process is a starting point for any WMI action. We always need to know a Class Name and the Namespace where it is located.
List classes starting with win32:
Call a class:
Methods
WMI classes have one or more functions that can be executed. These functions are called methods.
WMI Enumeration
Check WMI service
This how you can check if WMI service is running:
System Information
Process Information
From an attacker's perspective, WMI can be very valuable in enumerating sensitive information about a system or the domain.
Manual Remote WMI Querying
For example, here's a very stealthy way to discover local admins on a remote machine (note that domain is the computer name):
Another useful oneliner is to see who is logged on to a machine (for when you're hunting admins):
wmic can even read nodes from a text file and execute the command on all of them. If you have a text file of workstations:
We'll remotely create a process over WMI to execute a Empire agent:
We see it executed successfully (ReturnValue = 0). And a second later our Empire listener catches it. Note the process ID is the same as WMI returned.
All this information was extracted from here: https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/
Last updated