프로세스는 WMI를 사용하여 사용자 이름과 비밀번호 또는 해시가 알려진 호스트에서 열 수 있습니다. Wmiexec를 사용하여 WMI를 통해 명령이 실행되며, 반대화면 셸 경험을 제공합니다.
dcomexec.py: 다양한 DCOM 엔드포인트를 활용하여 이 스크립트는 wmiexec.py와 유사한 반대화면 셸을 제공하며, 특히 ShellBrowserWindow DCOM 객체를 활용합니다. 현재 MMC20, Application, Shell Windows 및 Shell Browser Window 객체를 지원합니다. (출처: Hacking Articles)
WMI Fundamentals
Namespace
디렉토리 스타일의 계층 구조로 구성된 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")