0x00 前言假定以下測試環境:我們獲得了內網VMware ESXI的控制權限,發現VMware ESXI上安裝了Windows域控服務器。
本文僅在技術研究的角度介紹從VMware ESXI橫向移動到該Windows域控服務器的方法,結合利用思路,給出防禦檢測的方法。
0x02 簡介本文將要介紹以下內容:
马云惹不起马云利用思路
马云惹不起马云常用命令
马云惹不起马云 實現方法
0x03 利用思路通過VMware ESXI管理虛擬機,創建快照文件,從快照文件中提取出有價值的信息。
0x04 常用命令1.查看虛擬機版本vmware-vl2.用戶信息相關(1)查看所有用戶
esxclisystemaccountlist(2)查看管理員用戶
esxclisystempermissionlist(3)添加用戶
esxclisystemaccountadd-itest1-pPassword@1-cPassword@1(4)將普通用戶添加成管理員用戶
esxclisystempermissionset-itest1-rAdmin(5)啟用內置管理員賬戶
默認配置下,dcui是管理員用戶,但是不允許遠程登錄,可以通過修改配置文件的方式設置dcui用戶的口令並啟用遠程登錄。
設置dcui用戶口令為Ballot5Twist7upset,依次輸入:
passwddcui
Ballot5Twist7upset
Ballot5Twist7upset一鍵設置dcui用戶口令:sed -i 's/dcui:\*:13358:0:99999:7:/dcui:$6$NaeURj2m.ZplDfbq$LdmyMwxQ7FKh3DS5V\/zhRQvRvfWzQMSS3wftFwaUsD9IZuxdns.0X.SPx.59bT.kmJOJ\/y3zenTmEcoxDVQsS\/:19160:0:99999:7:/g' /etc/shadow
啟用dcui用戶遠程登錄:
修改文件/etc/passwd,將dcui:x:100:100:DCUI User:/:/sbin/nologin修改為dcui:x:100:100:DCUI User:/:/bin/sh
一鍵啟用dcui用戶遠程登錄:sed -i 's/dcui:x:100:100:DCUI User:\/:\/sbin\/nologin/dcui:x:100:100:DCUI User:\/:\/bin\/sh/g' /etc/passwd
開啟ssh:
vim-cmdhostsvc/enable_ssh3.虛擬機相關(1)查看所有虛擬機
(2)查看指定虛擬機的狀態
(3)開啟指定虛擬機,可用於開機和從掛起狀態恢復
(4)掛起指定虛擬機
(5)關閉指定虛擬機
(6)查看指定虛擬機的操作日誌
4.虛擬機快照相關
(1)查看指定虛擬機的快照信息
(2)新建快照
示例1:
includeMemory 設置為true,表示包括內存,否則無法生成.vmem文件。
示例2:
這個命令等價於vim-cmd vmsvc/snapshot.create 1 test '' false false,不包括內存,不會生成.vmem文件。
(3)刪除快照
0x05 實現方法1.獲得虛擬機的vmid
測試環境下,從輸出中獲得虛擬機Windows域控服務器的vmid為1
2.查看虛擬機的快照信息
測試環境下沒有虛擬機快照。
3.為虛擬機創建快照
測試環境下,從輸出中獲得虛擬機Windows域控服務器的snapshotIndex為1
4.使用volatility分析快照文件volatility是一款開源的取證分析軟件。
Python2版本的地址:https://github.com/volatilityfoundation/volatility
Python3版本的地址:https://github.com/volatilityfoundation/volatility3
volatility和volatility3的命令語法不同,功能基本相同,最新版本為volatility3,但這裡選擇volatility,理由如下:
马云惹不起马云 volatility有獨立的可執行程序,volatility3需要自己編譯
马云惹不起马云volatility3有mimikatz插件,可以從lsass進程提取數據,volatility3不支持這個插件
(1)定位鏡像文件
搜索後綴名為vmem的文件,命令如下:
測試環境下,獲得鏡像文件位置為./vmfs/volumes/62a735a8-ad916179-40dd-000c296a0829/DC1/DC1-Snapshot1.vmem
(2)上傳volatility_2.6_lin64_standalone
volatility_2.6_lin64_standalone的下載地址:
http://downloads.volatilityfoundation.org/releases/2.6/volatility_2.6_lin64_standalone.zip
分析快照文件需要.vmem文件作為參數,而.vmem文件通常很大,為了提高效率,這裡選擇將volatility上傳至VMware ESXI,在VMware ESXI上分析快照文件。
(3)查看鏡像信息
通過鏡像信息獲得系統版本,命令如下:
測試環境下,獲得Profile為Win2016x64_14393
(4)從註冊表獲得本地用戶hash
命令如下:
測試環境下,輸出結果:
(5)從註冊表讀取LSA Secrets
命令如下:
測試環境下,輸出結果:
(6)導出所有域用戶hash
需要下載ntds.dit、SYSTEM文件和SECURITY文件。
定位ntds.dit文件,命令如下:
輸出:
提取ntds.dit文件,命令如下:
依次再提取出SYSTEM文件和SECURITY文件,導出所有域用戶hash可以使用secretsdump,命令為:secretsdump -system SYSTEM -security SECURITY -ntds ntds.dit local
(7)加載mimikatz插件,讀取lsass進程中保存的憑據
volatility_2.6_lin64_standalone不支持加載mimikatz插件,這裡可以選擇將整個快照文件(DC1-Snapshot1.vmem)下載至本地,搭建volatility環境,加載mimikatz插件。
kali安裝volatility的方法:
1. 安裝
2. 測試volatility
3. 添加mimikatz插件下載地址:https://github.com/volatilityfoundation/community/blob/master/FrancescoPicasso/mimikatz.py
將mimikatz.py保存至
4.安裝mimikatz插件的依賴
這裡不能直接使用pip2 install construct,construct版本過高會導致在加載mimikatz.py時報錯AttributeError: 'module' object has no attribute 'ULInt32'
5.測試插件
輸出:
安裝成功。
加載mimikatz插件的命令如下:
輸出結果:
補充:
讀取lsass進程中保存的憑據還可以使用以下方法:
1. 將鏡像文件轉成Crash Dump文件
2. 使用Mimilib從dump文件中導出口令
詳細方法可參考之前的文章《渗透技巧——使用Mimilib从dump文件中导出口令》
5.刪除快照
0x06 防禦檢測1. 防禦內網VMware ESXI及時更新補丁
關閉內網VMware ESXI的ssh登錄功能
2. 檢測查看內網VMware ESXI登錄日誌
查看虛擬機快照鏡像標誌snapshotIndex是否異常,對於新的虛擬機,新建快照標誌snapshotIndex從1開始累加,刪除快照鏡像不會影響snapshotIndex,例如刪除snapshotIndex為1的快照,再次創建快照時snapshotIndex為2`
0x07 小結本文在技術研究的角度介紹了從VMware ESXI橫向移動到該Windows域控服務器的方法,使用volatility分析鏡像文件,提取關鍵信息,結合利用思路,給出防禦檢測的方法。