윈도우에서 WMI를 활용하는 방법: 시스템 자동화의 핵심 도구
Windows Management Instrumentation(WMI)는 윈도우 시스템 관리의 숨은 보석입니다. 시스템 내부 정보를 불러오거나 제어할 수 있는 강력한 인터페이스로, 일반 사용자부터 보안 전문가, 시스템 관리자, 자동화 엔지니어까지 폭넓게 사용됩니다. 이 글에서는 WMI의 개념부터, 실제 명령어 예시, 윈도우 창 감지, 원격 데스크톱 상태 확인 등 실용적인 활용법까지 정리해보겠습니다.
WMI란 무엇인가?
WMI(Windows Management Instrumentation)는 마이크로소프트가 개발한 시스템 관리용 프레임워크로, Windows 운영체제에서 하드웨어 상태, 운영체제 정보, 네트워크 구성, 프로세스/서비스 제어 등 다양한 정보를 API를 통해 제공하는 기술입니다. 즉, 스크립트나 프로그램으로 윈도우 내부 상태를 읽고 조작할 수 있는 창구입니다.
WMI를 활용하면 할 수 있는 일들
활용 목적 | 설명 |
---|---|
CPU 정보 조회 | 프로세서 모델명, 속도 등 확인 |
운영체제 상태 확인 | 버전, 설치일자, 부팅 시간 등 |
윈도우 창 감지 | 특정 프로그램이 실행되었는지 여부 확인 |
서비스 제어 | 서비스 시작/중지 여부 확인 및 제어 |
디스크 용량 조회 | 드라이브별 용량 및 사용량 확인 |
프로세스 관리 | 실행 중인 프로세스 목록 확인 및 종료 |
네트워크 구성 보기 | IP 주소, 게이트웨이, DNS 등 확인 |
원격 데스크톱 접속자 확인 | RDP 세션 정보 및 원격 로그인 여부 확인 |
PowerShell에서의 WMI 명령어 예시
# 운영체제 정보
Get-WmiObject -Class Win32_OperatingSystem
# CPU 정보
Get-WmiObject -Class Win32_Processor
# 디스크 정보
Get-WmiObject -Class Win32_LogicalDisk
# 네트워크 어댑터 설정
Get-WmiObject -Class Win32_NetworkAdapterConfiguration | Where-Object {$_.IPEnabled -eq $true}
# 실행 중인 프로세스 목록
Get-WmiObject -Class Win32_Process
윈도우 창 감지: 실행 중인 창 확인하기
WMI는 윈도우 창 자체에 대한 직접적인 이벤트 후킹은 어렵지만, 특정 프로세스가 실행 중인지 확인함으로써 창 유무를 추론할 수 있습니다.
# 예: notepad.exe가 실행 중인지 확인
Get-WmiObject -Query "SELECT * FROM Win32_Process WHERE Name='notepad.exe'"
Python 예시 코드:
import wmi
c = wmi.WMI()
for process in c.Win32_Process(name="notepad.exe"):
print(f"Notepad is running, PID: {process.ProcessId}")
WMI로 원격 데스크톱 접속자(RDP 세션) 확인하기
WMI를 이용해 현재 시스템에 원격으로 접속한 사용자(RDP 세션)을 조회할 수 있습니다. 다음은 PowerShell을 이용한 예시입니다.
# 원격 세션(RDP) 사용자 확인
query user
WMI를 활용한 세부 접근은 다음과 같습니다:
# WMI로 RDP 세션 확인 (간접 접근)
Get-WmiObject -Class Win32_LogonSession |
Where-Object { $_.LogonType -eq 10 } |
ForEach-Object {
$user = (Get-WmiObject -Class Win32_LoggedOnUser | Where-Object { $_.Dependent -match $_.LogonId }).Antecedent
$user
}
LogonType 10은 원격 대기 중인 세션(RDP)을 의미합니다.
WMI를 실생활에 적용하는 방법
1. 자동화 스크립트 제작
- 컴퓨터가 켜질 때 자동으로 서비스 상태 확인
- 일정 디스크 용량 이하일 경우 알림 보내기
2. 보안 및 모니터링
- 실행 중인 프로세스 감시 및 의심스러운 프로세스 자동 종료
- 원격 세션 여부 확인 및 로그인 추적
3. 자산 관리
- 기업 환경에서 사용자 PC의 하드웨어 정보 자동 수집
- 운영체제 버전 및 패치 상태 확인
WMI의 기능은 무궁무진
WMI는 겉으로 보기에 다소 생소하고 복잡하게 느껴질 수 있지만, 그 기능은 무궁무진합니다. 특히 PowerShell, Python 등과 연동하면 윈도우 내부를 손에 잡히듯 다룰 수 있게 됩니다. 시스템을 정밀하게 모니터링하고 자동화하고자 한다면, 지금부터라도 WMI의 세계에 발을 들여보는 건 어떨까요?
'정보보안' 카테고리의 다른 글
OSCP(Offensive Security Certified Professional) 자격증 독학으로 취득하기 (2) | 2025.07.21 |
---|---|
랜섬웨어와의 싸움, 협상 없는 복구 성공! SGI서울보증 해킹 사건의 교훈 (1) | 2025.07.19 |
스마트홈 보안의 핵심: Zigbee · Wi-Fi 해킹, 정말 가능한가? (0) | 2025.07.18 |
해시, 솔트, 페퍼의 진짜 의미 (0) | 2025.07.18 |
전자금융 인증과 vs 공인인증서 인증의 차이 (0) | 2025.07.18 |