0333-IE安全系列:IE的自我介绍 (II)

# IE安全系列:IE的自我介绍 (II)

本篇依然是三段

II.1 介绍一些基础概念和简单实现

II.2介绍一些实用操作

II.3介绍IE对某些内容实现的具体细节

三节的内容并不是强联系,需要了解的内容也并不相同,跳过一节并不会影响到其他内容的理解,请根据需要来阅读。

II.1 HTML与网马攻击
==============

* * *

跟龙总(@瞌睡龙)商量了一下更换了大纲顺序,所以本来放在后面的网马解密决定放在前面和HTML、Javascript一起来说了。现阶段网马大部分都是工具生成的,由于基本都是傻瓜式操作,买个站挂上,再批量拿下其它站来插代码就好了,所以导致攻击量居高不下。

这个问题在2007年附近尤其盛行,当时由于IE6的占有量巨大,而IE6又是一个安全问题频发的浏览器版本,加上盗版系统的占有率高,自动安装补丁的用户少,所以网马攻击很常见,大家经常会发现用着用着突然浏览器内存占用就升高了很多,这时候用户很可能就已经受到了攻击。

当然,随着Windows Vista的发布和许多新功能的加入,从IE9开始,此类问题已经逐渐得到了改善,但是显而易见的是,微软只是在逐渐提高攻击者的攻击门槛,从根本上看,每个厂商和软件都不太可能消除用户环境中各种原因产生的安全问题。

当时(2007)网马已经较为成熟,各种加密(或者专业一些,称作混淆,obfuscation)层出不穷,为了应付,当时我还做了一个工具叫Redoce,用户体验几乎没有,不嫌难用的也可以试试(本来想C++重写这个工具的,可惜时间不允许了)。

![enter image description here](http://drops.javaweb.org/uploads/images/f767fc93ec390fc4390dfea520d76671e3ce5e06.jpg)

图:国外各种Exploit Kit提供支持的漏洞利用代码

网马攻击,或者专业点称为“水坑式攻击”(Watering Hole Attack),是它的一个子集,水坑式攻击这个词应该是从2012年RSA Security处诞生的,意义是针对要攻击的人群,分析他们的习惯之后,在他们可能访问的网站上挂马,这些马可以是浏览器漏洞,钓鱼等等。

水坑攻击中关于钓鱼、欺骗的部分我暂且不提了,剩余部分,网马的代码一般涉及两个部分,一个是代码混淆,一个是漏洞利用。很简单,由于杀毒软件都有各种网盾之类的扫描机制,包括IE访问时还会产生本地缓存文件,如果不对利用代码进行免杀的话,凭借特征库,杀毒软件很容易就能检测到当前页面有恶意代码。

![enter image description here](http://drops.javaweb.org/uploads/images/44342ef405b3daed3c3a1bb716d425d21589054a.jpg)

图:某个Exploit Kit中提供的各种利用代码

漏洞利用部分,“解密”一词倒是有多重含义,取决于你需要怎么处置这段利用代码。常见的可以总结如下:

* 找到挂马的页面要下载什么木马,这个是最简单也是很常见的需求;

* 了解Shellcode部分是如何在各个系统正常运作的,这个也不是多难,因为分析点只需要集中在一大堆Shellcode部分即可;

* 完整分析漏洞,这个可能出现在你被0day给“水坑”了,而且你也对这个漏洞很好奇的时候,或者其他目的;

代码混淆部分,最初释放出的代码可能只有简单的混淆,例如变量名置换等等,但是后期漏洞利用代码一旦暴露时间增长,则挂马者为了躲避杀毒软件检测,会对代码进行各种加密。 但是肯定离不开代码的这一个单位:函数。

总的来说,网马的解密就是要靠眼睛,即使中间加密再牛,最后也无非就是一两招就能拆掉的。偶尔把自己当参数解密的这类难度系数可能会高上一层,但是也只是多费时间而已。

![enter image description here](http://drops.javaweb.org/uploads/images/57e243e4e4abe29bd15ec02ab0d222f20ba682c3.jpg)

图:某个Exploit Kit提供的漏洞利用脚本

网页挂马的方式最常见的就是通过注入代码,黑阔们可能会使用软件批量扫站,取得写入权限后向网页内注入恶意脚本。

通常,由于注入一大片脚本会导致文件大小突然变大很多,这样将很容易被发现,所以通常攻击者注入的都是简短的一行:

“`