一 、什么是网页木马
网页木马是利用网页来进行破坏的病毒,它包含在恶意网页之中,使用脚本语言编写恶意代码,依靠系统的漏洞,如IE浏览器存在的漏洞来实现病毒的传播。当用户登陆了包含网页病毒的恶意网站时,网页木马便被激活,受影响的系统一旦感染网页病毒,就会遭到破坏,轻则浏览器首页被修改,标题改变,系统自动弹出广告,重则被装上木马,感染病毒,使用户无法进行正常的使用。甚至会引起系统崩溃,敏感信息丢失等严重后果。由于脚本语言易于掌握,所以网页木马非常容易编写和修改,造成很难提取特征值,增加了杀毒软件查杀以及用户预防的困难。
目前的网页木马都是利用脚本语言、ActiveX、WSH等来实现对客户端计算机的远程操作,如改写注册表,添加、删除、更改文件夹等操作。网页病毒可以以此来达到传播的目的。
1.利用WSH(Windows Scripting Host Object Reference)等系统控件
WSH,是“Windows Scripting Host”的简称,可以直译为“Windows 脚本宿主”。在Windows系统中会默认安装,它是内嵌于 Windows 操作系统中的脚本语言工作环境。
Windows Scripting Host 这个概念最早出现于 Windows 98 操作系统。微软在研发 Windows 98 时,为了实现多类脚本文件在 Windows 界面或 Dos 命令提示符下的直接运行,就在系统内植入了一个基于 32 位 Windows 平台、并独立于语言的脚本运行环境,并将其命名为“Windows Scripting Host”。WSH 架构于 ActiveX 之上,通过充当 ActiveX 的脚本引擎控制器,WSH 为 Windows 用户充分利用威力强大的脚本指令语言扫清了障碍。
WSH也有它的不足之处,任何事物都有两面性,WSH 也不例外。WSH 的优点在于它使用户可以充分利用脚本来实现计算机工作的自动化;但也正是它的这一特点,使系统存在了安全隐患。计算机病毒制造者用脚本语言来编制病毒,并利用 WSH 的支持功能,让这些隐藏着病毒的脚本在网络中广为传播。借助WSH的缺陷,通过JAVAScript,VBScript,ActiveX等网页脚本语言,可以改动受影响系统的注册表,利用服务器端脚本程序如:ASP,PHP等来记录访问网页者的相关信息,浏览之后,系统目录被完全共享;IP地址、访问时间、操作系统名称会被网页木马所记录,造成敏感信息的泄露。
2.Microsoft Internet Explorer等浏览器存在漏洞
3.脚本语言
用JAVA编制的脚本语言主要是Java Applet和Java Script。Applet是Java编写的小应用程序,不能独立运行,需要嵌入HTML文件,遵循标准,在支持Java的浏览器(如Microsoft Internet Explorer) 上运行,是Java一个重要的应用分支,它改变了传统网页呆板的界面,在WWW网页(Home Page / Pages)设计中加入了动画、影像、音乐等元素。
JavaScript是一种基于对象(Object)和事件驱动(Event Driven)并具有安全性能的脚本语言。使用它的目的是与HTML超文本标记语言、与Web客户交互作用。从而可以开发客户端的应用程序等。它是通过嵌入或文件引用在标准的HTML语言中实现的。它的出现弥补了HTML语言的缺陷,它是Java与HTML折衷的选择,具有基于对象、简单、安全、动态、跨平台性等特性。
ActiveX是Microsoft提出的一组使用COM(Component Object Model,部件对象模型)使得软件部件在网络环境中进行交互的技术。它与具体的编程语言无关。作为针对Internet应用开发的技术,ActiveX被广泛应用于WEB服务器以及客户端的各个方面。同时,ActiveX技术也被用于方便地创建普通的桌面应用程序。在Applet中可以使用ActiveX技术,如直接嵌入ActiveX控制,或者以ActiveX技术为桥梁,将其它开发商提供的多种语言的程序对象集成到Java中。与Java的字节码技术相比,ActiveX提供了“代码签名”(Code Signing)技术保证其安全性。
造成网页病毒传播和形成的主要原因,是因为Windows操作系统以及Microsoft Internet Explorer等浏览器存在漏洞。
二、网页木马的攻击原理
网页木马实际上是一个HTML网页,与其它网页不同的是该网页是黑客精心制作的,用户一旦访问了该网页就会中木马。为什么说是黑客精心制作的呢?因为嵌入在这个网页中的脚本恰如其分地利用了IE浏览器的漏洞,让IE在后台自动下载黑客放置在网络上的木马并运行(安装)这个木马,也就是说,这个网页能下载木马到本地并运行(安装)下载到本地电脑上的木马,整个过程都在后台运行,用户一旦打开这个网页,下载过程和运行(安装)过程就自动开始。
打开一个网页,IE浏览器不会自动下载程序和运行程序,这是因为,为了安全,IE浏览器是禁止自动下载程序特别是运行程序的,但是,IE浏览器存在着一些已知和未知的漏洞,网页木马就是利用这些漏洞获得权限来下载程序和运行程序的。下面列举一些IE浏览器等存在的漏洞来分别说明为什么利用网页木马可以下载程序和运行程序。
1.下载可执行文件.
index里有一个代码漏洞,IE会把可执行文件误认为CSS样式表而下载到IE的临时文件目录.
也可以利用这段代码,把这段代码插入到网页源代码的…之间,运行后就会发现在IE的临时目录Temporary Internet Files下,已经下载了1.exe这个病毒文件。
2.自动运行程序
把这段代码插入到网页源代码的…之间,然后用IE打开该网页,这段代码可以在IE中自动打开记事本。
这段代码使用了shell.application控件,该控件能使网页获得执行权限,替换代码中的“Notepad.exe”(记事本)程序,就可以用它自动运行本地电脑上的任意程序。
通过以上的例子可以看出,利用IE的漏洞,在网页中插入相关的代码,IE完全可以自动下载和运行程序。
三、可能被网页木马利用的漏洞
1.利用URL格式漏洞
此类网页木马是利用URL格式漏洞来欺骗用户。构造一个看似JPG格式的文件诱惑用户下载,但事实上用户下载的却是一个EXE文件。
此类攻击,具有相当的隐蔽性,利用URL欺骗的方法有很多种,比如起个具有诱惑性的网站名称或使用易混的字母数字掉包进行银行网络钓鱼,还有漏洞百出的“%30%50”之类的Unicode编码等等,现在列举比较常见的几种方法:
(1).@标志过滤用户名的解析
本来@标志是E-mail地址的用户名与主机的分隔符,但在URL中同样适用,而且功能如出一辙。HTTP(超文本传输协议)规定了URL的完整格式是“Http://Name:Password@IP地址或主机名”,其中的“IP地址或主机名”是必填项。@标志与其前面的“Name:Password”,意为“用户名:密码”,属于可选项。也就是说,在URL中真正起解析作用的网址是从@标志后面开始的,这就是欺骗原理。
比如用户访问“Http://www.sina.com@www.Trojan.com.cn/HuiGeZi_Server.exe”,从表面上看,这是新浪网提供的一个链接,用户会认为这是一个无害的链接,而点击,而实际上 “www.sina.com”只是个写成新浪网址形式的用户名(此处的密码为空),因为后面有@标志。而真正链接的网址却是“www.Trojan.com.cn/HuiGeZi_Server.exe” 也就是说这个发来的URL地址其实完全等同于“Http://www www.Trojan.com.cn/HuiGeZi_Server.exe,而与前面的用户名毫无关系,只是迷惑性可就大大提高了。即使没有这个用户名,也完全不影响浏览器对URL的解析。(2).十进制的IP地址
常见的IP地址包括四个字节,一般表示形式为“xxx.xxx.xxx.xxx”(x表示一个十进制数码),例如“61.135.132.12”。因为数字IP地址较长,且过于抽象、难以记忆,所以采用域名服务DNS来与之对应。在浏览器地址栏中输入“Http://www.sohu.com”与“Http://61.135.132.12”的结果完全一样,都是访问搜狐网站,因为61.135.132.12就是搜狐域名www.sohu.com的IP地址。不过,用Http://1032291340访问的话,仍然可以打开搜狐网站,这是因为,四位点分十进制形式的IP地址“61.135.132.12”代表一组32位二进制数码,如果合在一起再转换成一个十进制数的话,答案就是1032291340。转换方法,就是数制的按权展开:12×2560+132×2561+135×2562+61×2563=12+33792+8847360+1023410176=1032291340(基数为256,即28)。在上文的例子中提到了“www.Trojan.com.cn/HuiGeZi_Server.exe”。这种字母域名有时还能被用户识破,而在把它对应的IP地址(假设为“61.135.132.13”)换算成一个十进制数后,结果是1032291341,再结合@标志过滤用户的解析,就会变成Http://www.sina.com@1032291341这样的地址,这样就更加隐蔽了。
(3).虚假的网址,网络钓鱼者注册一个域名和真实网站域名十分相似的网址,其用户界面也和真实网站页面非常相似,然后不URL提供给用户,那么一般的用户被引导到这样的虚拟网址上是难以察觉的,攻击者也就可以利用该网页来诱导用户输入自己的个人身份信息,达到窃取的目的,例如真实网站域名是www.lovebank.xxx,伪造网站域名是www.1ovebank.xxx,一个是小写的"L",一个是数字"1",域名服务器将解析到完全不同的IP地址上,但用户很难看出来。再如真实网站的域名是www.xxx.xxx.cn,而虚假网站使用域名www.xxx.xxx,很多人也无法判断
(4).更隐蔽的方法,是根据超文本标记语言的规则,可以对文字制作超链接,这样就使网络钓鱼者有机可乘。例如文件源代码可以写成:"http://www.xxbank.com.cn"。这样,屏幕上显示的是xxxbank的网址,而实际却链接到了xxbank的虚假网站。
(5).采用伪装手段。可以在浏览器打开虚假网站的时候,弹出一个很隐蔽的小图像,正好覆盖在浏览器显示网址的地方,该小图像显示被仿冒的网站的真实域名,而浏览器真正访问的地址被掩盖在下面。
(6).虚假的弹出窗口。一些虚假网站会将用户转移到真实的网址,但是转移之前制造假冒的弹出窗口,提示用户进行个人登陆的操作,很多用户会误认为这些弹出窗口是网站的一部分而进一步按照提示操作,直到透露出自己的个人身份信息。
(7).可以利用浏览器漏洞窃取个人信息,如IE就曾暴露出一个漏洞,该漏洞使攻击者可以在垃圾邮件中构造一种数据,用户点击后便可使IE浏览器显示的网址与实际访问的网址不同。采用这种方式进行攻击,欺骗性更好,可以通过向用户发送包含URL的垃圾邮件的方式,诱骗用户点击,用户如果不检查邮件的原始代码,根本无法知道自己被浏览器欺骗了。
(8).黑客程序可以修改用户计算机中的HOSTS文件,将特定域名的IP地址设置成自己的虚假网站的地址,用户访问这些网站时,机器会从HOSTS文件中获得对应的IP。除了上面的方法外,更为隐蔽和目前常用的攻击手法是,攻击者首先攻破一个正常的网站,然后修改网站的代码,通过跳转语句或嵌入JS脚本的手段,来改造一个挂马的网站,这样当用户点击了包含正常网站的URL时,是不会有戒备心理的,更容易造成更大的损失。
2.通过ActiveX控件制作网页木马。
通过 ActiveX 把普通的软件转化为可以在主页直接执行的软件的网页木马,此类网页木马对所有的系统和IE版本都有效,缺点是浏览网页木马时会弹出对话框,询问是否安装此插件。病毒作者通常是伪造微软、新浪、Google等知名公司的签名,伪装成它们的插件来迷惑用户。
3.利用WSH的缺陷
利用WSH修改注册表,使IE安全设置中“没有标记为安全的的activex控件和插件”的默认设置改为启用,然后再利用一些可以在本地运行EXE程序的网页代码来运行病毒。它的危害在于,可以利用IE的安全漏洞提升权限达到本地运行任意程序的后果。
4.利用MIME漏洞制做的网页木马。
它利用了Microsoft Internet Explorer中MIME/BASE64处理的漏洞,MIME(Multipurpose Internet Mail Extentions),一般译作“多用途的网络邮件扩充协议”。顾名思义,它可以传送多媒体文件,在一封电子邮件中附加各种格式文件一起送出。现在它已经演化成一种指定文件类型(Internet的任何形式的消息:E-mail,Usenet新闻和Web)的通用方法。在使用CGI程序时你可能接触过MIME类型,其中有一行叫作Content-type的语句,它用来指明传递的就是MIME类型的文件(如text/html或text/plain)。MIME在处理不正常的MIME类型时存在一个问题,攻击者可以创建一个Html格式的E-mail,该E-mail的附件为可执行文件,通过修改MIME头,使IE不能正确处理这个MIME所指定的可执行文件附件。IE处理附件的方式:一般情况下如果附件是文本文件,IE会读取文件,如果是VIDEO CLIP,IE会查看文件;如果附件是图形文件,IE就会显示文件;如果附件是一个EXE文件呢?IE会提示用户是否执行,但当攻击者更改MIME类型后,IE就不再提示用户是否执行而直接运行该附件。从而使攻击者加在附件中的程序,攻击命令能够按照攻击者设想的情况进行。在Win9X\ME以及WinNT4和Win2000下的Internet Explorer 5.0、5.01、5.5均存在该漏洞,微软邮件客户端软件Outlook Express也存在此漏洞。
5.利用系统的图片处理漏洞
这是种只要浏览图片就可以传播的网页木马。这种木马是把一个EXE文件伪装成一个BMP或JPG图片文件,在网页中添加如的代码来欺骗IE自动下载,然后利用网页中的Java Script脚本查找客户端的Internet临时文件夹,寻找下载的BMP格式文件,把它拷贝到TEMP目录.再利用脚本把找到的BMP文件用DEBUG还原成EXE,并添加到注册表启动项中,达到随系统的目的。
6.HTML文件木马
首先利用工具把EXE格式的文件转化成HTML文件的木马,这样.EXE文件看起来就变成了Htm文件,欺骗访问者访问假冒的Htm文件从而达到运行病毒的目的。它和BMP网页木马运用了同一个原理,也会利用JAVASCRIPT脚本和debug程序来转换回EXE文件。
7.Hta木马
Hta网页木马,是利用Internet Explorer Object Data(MS03-032)漏洞制作的网页木马,此漏洞是因为Internet Explorer在处理对象"Object"标记时没有正确处理要被装载的文件参数。("Object"标记用于插入ActiveX组件等对象到HTML页面。"Object"标记的"Type"属性用于设置或获取对象的MIME类型。通常合法MIME类型包括"plain/text"或"application/hta", "audio/x-mpeg"等。)Internet Explorer指定远程对象数据位置的参数没有充分检查被装载的文件属性,攻击者可以构建恶意页面,诱使用户访问来运行恶意页面指定的程序 。
8.利用CHM格式漏洞。
这种网页木马首先创建一个Htm文件,包含如下代码:
Microsoft Internet Explorer javaprxy.dll COM Object Remote Exploit
四、网页木马的基本用法
理解了网页木马攻击的原理,以及常用的漏洞,就可以写出相关的利用代码。制作出网页木马,然后就是传播网页木马,目前网页木马的主要传播途径是:
1.通过IM及时聊天软件传播
将包含网页木马的地址(网址)通过QQ等聊天软件在网络中分发,一旦有用户访问了该网页,该网页就会在系统中自动下载并运行放置在网络上的木马。
2.攻击知名网站,获得Webshell权限后,在网站中填加恶意代码,如:
(1)iframe
注:';
利用在知名门户网站,填加恶意脚本的攻击行为很多,例如,安天实验室在06年8月份就发现了针对KFC肯德基,雪花啤酒,迈拓硬盘等知名网站的攻击行为。所采用的都是此种方式。
3.利用美丽的网页名称及内容,诱惑用户访问。
很多恶意网页或是站点的制作者,对浏览者的心理进行了分析,对域名的选择和利用非常精明。很多网民对一些黄色信息比较感兴趣,成为了他们利用的渠道。他们会构建名www.love.com,或是http://bangbus.year.net等具有诱惑性的名称诱惑用户点击。
4.利用电子邮件等传播。
攻击者,利用电子邮件群发工具,发送包含诱惑性信息的主题邮件,诱惑用户点击其中包含的网页。
五、目前常用的网页木马制作方式
1.Javascript.Exception.Exploit
利用JS+WSH的完美结合,来制作恶意网页。
2.错误的MIME Multipurpose Internet Mail Extentions,多用途的网际邮件扩充协议头.几乎是现在网页木马流行利用的基本趋势,这个漏洞在IE5.0到IE6.0版本中都有。
3.EXE to .BMP + Javascritp.Exception.Exploit用虚假的BMP文件诱惑用户运行。
4.iframe 漏洞的利用
当微软的IE窗口打开另一个窗口时,如果子窗口是另一个域或安全区的话,安全检查应当阻止父窗口访问子窗口。但事实并非如此,父窗口可以访问子窗口文档的frame,这可能导致父窗口无论是域或安全区都能在子窗口中设置Frame或IFrame的URL。这会带来严重的安全问题,通过设置URL指向javascript协议,父窗口能在子域环境下运行脚本代码,包括任意的恶意代码。攻击者也能在“我的电脑”区域中运行脚本代码。这更会造成严重的后果。
5.通过安全认证的CAB,COX
此类方法就是在.CAB文件上做手脚,使证书.SPC和密钥.PVK合法
原理:IE读文件时会有文件读不出,就会去“升级”这样它会在网页中指定的位找 .cab 并在系统里写入个CID读入.cab里的文件。
方法:.cab是WINDOWS里的压缩文件, IE里所用的安全文件是用签名的,CAB也不例外,所做的CAB是经过安全使用证书引入的。也就是说IE认证攻击,之所以每次都能入侵,是因为它通过的是IE认证下的安全攻击。
6.EXE文件的捆绑
现在的网页木马捆绑机几乎是开始泛滥了,多的数不胜数。再将生成的MHT文件进行加密。
六、常用网页木马运行原理的分析
1.Javascript.Exception.Exploit
常用的攻击代码:
Function destroy(){
try
{
//ActiveX initialization 初始化ActiveX,为修改注册表做准备
a1=document.applets[0];
//获取applet运行对象,以下语句指向注册表中有关IE的表项
a1.setCLSID("{F935DC22-1CF0-11D0-ADB9-00C04FD58A0B}");
a1.createInstance();
Shl = a1.GetObject();
a1.setCLSID("{0D43FE01-F093-11CF-8940-00A0C9054228}");
a1.createInstance();
FSO = a1.GetObject();
a1.setCLSID("{F935DC26-1CF0-11D0-ADB9-00C04FD58A0B}");
a1.createInstance();
Net = a1.GetObject();
try
{
开始进行破坏
}
}
catch(e)
{}
}
catch(e)
{}
}
function do()
{
//初始化函数,并每隔一秒执行修改程序
setTimeout("destroy()", 1000); //设定运行时间1秒
}
Do() //进行破坏的执行函数指令
这个代码是JAVAScript编写,很简单,但却可以修改受影响系统的注册表,释放垃圾文件,格式化硬盘等。
2.错误的MIME Multipurpose Internet Mail Extentions,多用途的网际邮件扩充协议头
常用的攻击代码:
Content-Type: multipart/related;
type="multipart/alternative";
boundary="====B===="
--====B====
Content-Type: multipart/alternative;
boundary="====A===="
--====A====
Content-Type: text/html;
Content-Transfer-Encoding: quoted-printable
--====A====--
--====B====
Content-Type: audio/x-wav;
name="run.exe"
Content-Transfer-Encoding: base64
Content-ID: ---以下省略AAAAA N+1个---
把run.exe的类型定义为audio/x-wav,这是利用客户端支持的 MIME(多部分网际邮件扩展,Multipart Internet Mail Extension) 类型的漏洞来完成的。当申明邮件的类型audio/x-wav时,IE存在的一个漏洞会将附件认为是音频文件自动尝试打开,,结果导致邮件文件x.eml中的附件run.exe被执行。在win2000上,即使是用鼠标点击下载下来的 x.eml,或是拷贝粘贴,都会导致x.eml中的附件被运行。整个程序的运行还是依靠x.eml这个文件来支持。Content-Transfer-Encoding: base64 Content-ID: 从中可以看出,由于定义后字符格式为base64,那么一下的代码全部为加密过的代码,里面可以是任何执行的命令:
〈script language=vbs〉
On Error Resume Next• 容错语句,避免程序崩溃
set aa=CreateObject("WScript.Shell")•建立WScript对象
Set fs = CreateObject("Scripting.FileSystemObject")•建立文件系统对象
Set dir1 = fs.GetSpecialFolder(0)•得到Windows路径
Set dir2 = fs.GetSpecialFolder(1)•得到System路径
……省略……
之所以有的病毒不能准确的清除全部的病毒体,是因为很多杀毒软件,病毒监控只杀当时查到的,却不能处理新建的文件。
3.Iframe 漏洞的利用
常用攻击代码:
〈iframe src=run.eml width=0 height=0〉〈/iframe〉
常见的木马运用格式,高度和宽度为0的一个框架网页。
一个框架引用的新方式,对type="text/x-scriptlet" 的调整后,就可以实现和eml格式文件同样的效果。
4.Microsoft Internet Explorer浏览器弹出窗口Object类型验证漏洞的利用
常见攻击代码:
----- code cut start for run.asp -----
----- code cut end for run.asp -----
七、网页木马运行后特征分析
1.系统的默认主页被更改,并且IE工具栏内的修改功能被屏蔽掉;
2.在系统的桌面上无故出现陌生网站的链接,无论怎么删除,每次开机都依旧会出现,如果单击鼠标右键,出现的工具栏中有也会有大量陌生网站的链接;
3.系统桌面及桌面上的图标被隐藏;
4.注册表编辑器被锁定,从而无法修改注册表;
5.上网之前,系统一切正常,下网之后系统就会出现异常情况,如系统盘丢失、硬盘遭到格式化等;
6.上陌生网站后,出现提示框“您已经被XX病毒攻击”,之后系统出现异常;
7.登陆站点后,出现一个窗口迅速打开后又消失的现象,系统文件夹内出现异常文件;
8.系统的进程中出现未知进程,而且无法终止,终止后会自动重新出现;
9.系统CPU占用率高;
10.登陆某站点后,杀毒监控软件报警,并删除病毒文件,位置在IE的缓冲区。重新启动计算机后发现IE默认设置被修改。
11.自动弹出广告;
12.信用卡,QQ帐号丢失等;
八、网页木马的预防
1. 避免浏览包含不健康内容的网页;
2. 由于网页木马是含有害代码的ActiveX网页文件,因此在IE设置中将ActiveX插件和控件、Java脚本等全部禁止。
具体方法是:在IE窗口中点击"工具→Internet选项,在弹出的对话框中选择"安全"标签,再点击"自定义级别"按钮,就会弹出"安全设置"对话框,把其中所有ActiveX插件和控件以及Java相关全部选择"禁用"即可。不过,这样在网页浏览过程中可能会造成一些正常使用ActiveX的网站无法浏览。
3.对Windows 2000和WINDOWS XP用户,还可以通过在服务里,禁用远程注册表操作服务"Remote Registry Service",来对付该类网页。具体方法是:点击"管理工具→服务→Remote Registry Service(允许远程注册表操作)",禁用即可。
4.升级浏览器到IE6.0并及时安装升级补丁。
5.下载微软最新的Microsoft Windows Script
6. 安装反病毒软件以及防火墙,打开网页监控和脚本监控.
后记:
网页木马,目前的发展方向,是利用操作系统,浏览器存在的溢出漏洞,来下载Trojan-Downloader类木马,达到传播病毒的目的。而网页木马的传播方式,目前,主要是黑客攻击知名网站,在代码中填加恶意脚本,从而达到,利用知名网站,访问量高的特点,快速传播的目的。网页木马本身的危害巨大,但它带来的最大影响,是可能传播恶性的病毒,造成极大的危害。
通过最近的这些病毒分析,现在越来越多的入侵者采取网页挂马,来达到控制更多的“肉鸡”从而达到,靠流量和贩卖“肉鸡”来达到收入最大话,通过网站钓鱼,来捕获受害人的信用卡帐号以及个人隐私,更有甚者进行非法交易,出卖给一些商业间谍等,以后的病毒防范和研究工作还将继续进行下去,任重而道远。
欢迎大家和我交流,我们一同来打一场反黑反病毒的持久战,同时在这里我还是要感谢安天实验室的全体cert组成员,能全力支持我,配合我来更快更好的完成病毒分析工作,也同样感谢我的两个助手-----王清,王琪,以及诚信网安的全体成员,谢谢你们对我工作的支持和帮助。