WMI를 사용하여 사용자 이름과 비밀번호 또는 해시가 알려진 호스트에서 프로세스를 열 수 있습니다. Wmiexec을 사용하여 WMI를 통해 명령을 실행하면 반-대화식 셸 환경이 제공됩니다.
dcomexec.py: 다양한 DCOM 엔드포인트를 활용하여 이 스크립트는 wmiexec.py와 유사한 반-대화식 셸을 제공하며, 특히 ShellBrowserWindow DCOM 객체를 활용합니다. 현재 MMC20. Application, Shell Windows 및 Shell Browser Window 객체를 지원합니다. (출처: Hacking Articles)
WMI 기본 사항
네임스페이스
디렉토리 스타일의 계층 구조로 구성된 WMI의 최상위 컨테이너는 \root이며, 이 하위에는 네임스페이스라고 하는 추가 디렉토리가 구성됩니다. 네임스페이스를 나열하는 명령어:
# Retrieval of Root namespacesgwmi-namespace"root"-Class"__Namespace"|SelectName# Enumeration of all namespaces (administrator privileges may be required)Get-WmiObject-Class"__Namespace"-Namespace"Root"-List-Recurse2> $null |select __Namespace |sort__Namespace# Listing of namespaces within "root\cimv2"Get-WmiObject -Class "__Namespace" -Namespace "root\cimv2" -List -Recurse 2> $null | select __Namespace | sort __Namespace
네임스페이스 내의 클래스는 다음을 사용하여 나열할 수 있습니다:
gwmwi-List-Recurse# Defaults to "root\cimv2" if no namespace specifiedgwmi-Namespace"root/microsoft"-List-Recurse
클래스
WMI 작업에 있어서 win32_process와 같은 WMI 클래스 이름과 해당 클래스가 속한 네임스페이스를 알아야 합니다. win32로 시작하는 클래스를 나열하는 명령어:
Get-WmiObject-Recurse-List-classwin32*|more# Defaults to "root\cimv2"gwmi-Namespace"root/microsoft"-List-Recurse-Class"MSFT_MpComput*"
클래스의 호출:
# Defaults to "root/cimv2" when namespace isn't specifiedGet-WmiObject-Classwin32_shareGet-WmiObject-Namespace"root/microsoft/windows/defender"-ClassMSFT_MpComputerStatus
메서드
메서드는 WMI 클래스의 하나 이상의 실행 가능한 함수입니다. 이러한 메서드는 실행될 수 있습니다.
# Class loading, method listing, and execution$c = [wmiclass]"win32_share"$c.methods# To create a share: $c.Create("c:\share\path","name",0,$null,"My Description")