作为网页挂马的散布者,其目的是将木马下载到用户本地,并进一步执行,当木马获得执行之后,就意味着会有更多的木马被下载,进一步被执行,进入一个恶性的循环,从而使用户的电脑遭到攻击和控制。为达到目的首先要将木马下载到本地。
常见的网页挂马方式有以下几种:
1. 将木马伪装为页面元素。木马则会被浏览器自动下载到本地。
2. 利用脚本运行的漏洞下载木马
3. 利用脚本运行的漏洞释放隐含在网页脚本中的木马
4. 将木马伪装为缺失的组件,或和缺失的组件捆绑在一起(例如:flash播放插件)。这样既达到了下载的目的,下载的组件又会被浏览器自动执行。
5. 通过脚本运行调用某些com组件,利用其漏洞下载木马。
6. 在渲染页面内容的过程中利用格式溢出释放木马(例如:ani格式溢出漏洞)
7. 在渲染页面内容的过程中利用格式溢出下载木马(例如:flash9.0.115的播放漏洞)
在完成下载之后,执行木马的方式有以下几种:
1. 利用页面元素渲染过程中的格式溢出执行shellcode进一步执行下载的木马
2. 利用脚本运行的漏洞执行木马
3. 伪装成缺失组件的安装包被浏览器自动执行
4. 通过脚本调用com组件利用其漏洞执行木马。
5. 利用页面元素渲染过程中的格式溢出直接执行木马。
6. 利用com组件与外部其他程序通讯,通过其他程序启动木马(例如:realplayer10.5存在的播放列表溢出漏洞)
在与网马斗争的过程中,为了躲避杀毒软件的检测,一些网马还具有了以下行为:
1. 修改系统时间,使杀毒软件失效
2. 摘除杀毒软件的HOOK挂钩,使杀毒软件检测失效
3. 修改杀毒软件病毒库,使之检测不到恶意代码。
4. 通过溢出漏洞不直接执行恶意代码,而是执行一段调用脚本,以躲避杀毒软件对父进程的检测。
网页挂马的检测
传统的检测防御方式:
1. 特征匹配。将网页挂马的脚本按脚本病毒处理进行检测。但是网页脚本变形方、加密方式比起传统的PE格式病毒更为多样,检测起来也更加困难。
2. 主动防御。当浏览器要做出某些动作时,做出提示,例如:下载了某插件的安装包,会提示是否运行,比如浏览器创建一个暴风影音播放器时,提示是否允许运行。在多数情况下用户都会点击是,网页木马会因此得到执行。
3. 检查父进程是否为浏览器。这种方法可以很容易的被躲过且会对很多插件造成误报。
行为分析方式:
1. 检测伪装文件格式。通过对文件格式精确的识别,判断页面元素是否为伪装的恶意代码。
2. 检查页面元素来源是否为长期散布网页挂马的站点。
3. 检测特定函数调用堆栈实现。
a) 区分用户下载文件,浏览器自动下载文件。
b) 检测已知缓冲区漏洞。
c) 检测进程创建调用堆栈、调用参数是否和浏览器常规一致,以检测未知漏洞造成的文件执行。
4. 对文件执行进行监控,检测文件执行参数等特征。
5. 对部分目录写文件操作进行监控。
6. 检测系统时钟修改。
7. 检测对系统DLL内存镜像修改(导入、导出表、函数体内容)。
8. 检查PE文件和CAB包裹的数字签名。
9. 特定文件格式检测,检测已知的格式溢出。
通过对以上几项的加权处理,可以实现有效对已知和未知网页挂马的检测。