一直就想写这篇东西了,只是上班时说要上班,不写,回家后又忙着玩游戏,丢一边去了。现在只好不务正业的开写了,希望头儿不会知道我的blog。哈哈
在很久之前就对HTML的病毒很感兴趣了,很好奇怎么能远程向本地不经过允许就能下载可执行文件的,只是一直没机会搞得到ASP的原码,所以不才敢断章取义的去作什么分析。最近一次听一朋友说他看一个网页时病毒防火墙提示有病毒,叫我小心(先感谢一下他先),我闪了一下念头,就打开FlashGet把那个病毒首页下了下来。
稍微看了一下发现在首页代码的下面几行里有一个隐含的浮动帧。其引用的URL地址并不是本地的,感觉应该是了,然后再次动用FlashGet下了下来。居然发现放病毒的空间不支持ASP,下下来的ASP文件是源文件。这样兴趣来了,三下五除二的把所有病毒的相关文件都下了下来。
由于这个病毒很简单,所以我也只摘抄了一些片段而以,如果实在感兴趣的话,不防去找一个有病毒的网页瞅瞅,不过,不要用IE去看,要用FlashGet等下载工具下载下来,再用记事本打开,不然中招了可不要来找我,好了正文开始。
真正的病毒有三个文件,一个是引导文件,一个是下载文件,第三个是激活文件。
第一个引导文件
关键部分是:
这个作用是将下载和激活两个文件当作该页的对象来引用并运行,这个也是病毒文件能够在本地进行感染的关键地方,在引用的文件里居然能够无阻碍的引用客户端的Action组件,唉唉,这就是那把刀啊。
第二个是下载exe病毒文件
然后是怎么将exe下载下来,而不弹出下载的提示框呢。这个是收下载文件来完成的任务。
该病毒的作法是在服务器端用Microsoft.XMLHTTP组件和response.contenttype="image/gif"将病毒文件以图片格式下载到客户端的网页缓存里(这里是很简单的Get/BinaryWrite操作,就不详细说了)。
第三个是激活
感觉激活的过程很巧妙,病毒是先用fso在c:/下生成一个hta文件,将激活过程写到这个文件里。然后再用WScript.Shell来运行这个文件。这样,激活过程中需要大权限的操作(比如:写注册表操作)就没问题了。
具体操作过程是这样的。将在网页缓存目录里的病毒文件移动到系统文件目录,然后改名为win.exe。再往注册表里写入自启动的键,使得病毒能在系统重启后自动启动,然后删除hta文件,完成感染和激活。
这就是病毒的基本运行过程(依照惯例病毒破坏部分就不提了),但是这个对我们有什么用呢,其实这种病毒我是很讨厌的,但是,其下载exe和激活过程还是有可利用的地方的。比如:你作的系统必须要客户端下载一些组件并激活后才能使用的,这种操作面对了解的人当然是不成问题,但是如果你面对的是那种网络是什么都还没搞清林的用户时,我估计系统还没开始使用你的电话就要打爆了。如果借用种方式,在对方允许的情况下自动下载组件,并自动激活,那就省事多了,是吧。
不过,这种方式对小形文件是很方便,如果要下载1m以上的文件..那就要考虑多线程下载的操作了,当然这个不是这篇文章的范围了。以后有机会再说说用ASP+XML实现WEB多线程上传多线程下载的方法吧。