写给同学看的,高手勿笑。

 

最近不知道为啥,电脑突然就出问题了,防火墙提示EXE文件MD5检验不合(也就是说EXE文件被修改了),Windows File Protection提示系统文件被替换,弄得我很恼火。然后重装,然后又是会提示系统文件被替换;然后断网重装,居然还是会提示系统文件被替换,让我着实郁闷了一阵子。可能是我电脑无毒状态持续得太久了,我没想到会有病毒,习惯性地上网一搜,才知道电脑中了一个很恶心的病毒。(我是看网上说是病毒才反应过来的,不过居然不是网上说的那个病毒,害我下的那个专杀没用)为了我下文叙述方便,根据我印象中的病毒命名法,自己先给它命个名先:Virus.PE. ???。至于为什么名字这么特殊,等下就会知道。

这样说可能有人还是不知道怎么回事,不过此类病毒中有一个大家都熟悉的例子:熊猫烧香。我不知道Virus.PE. ???是否有上传QQ资料的恶意行为,不过我还是觉得这个应该比熊猫烧香厉害点。熊猫烧香在运行已经感染的EXE文件的时候会生成病毒体(如果我没记错的话),而Virus.PE. ???却只是在进程空间里占有一个模块,至于病毒本体嘛,虽然不知道是哪个,不过在中毒期间,我曾经查看过进程模块信息,发现每个进程都多出个后缀为tmp的模块,这个应该就是病毒本体了。在进程空间里有个后缀为tmp的模块还是很神奇的,虽然并不是绝对不会有,像安装程序的那个进程空间就可能会有tmp后缀的模块,不过像Explorer.exesmss.exesvchost.exe这些进程空间里,出现tmp后缀的模块是不正常的。

 

说了一大段废话,现在进入主题。

说是杀毒经历,其实也不算,主要是杀毒的过程中重装过系统,剩下的工作就是判断其它盘的EXE文件里哪些被感染了,哪些没被感染;把那些被感染了的文件删了,那些没被感染的文件做好备份,以防再次被感染。那么如何判断呢?

引入一个工具PEID 0.94,如下图:

 

PEID主要是用来查软件入口点代码特征的,通俗地说就是查壳。(估计这个说法对大部分人来说不够通俗)比如图片里显示的“Microsoft Visual C++ 6.0的意思是这个EXE文件的入口点符合Microsoft Visual C++ 6.0所生成的EXE文件入口点的特征,一般来说,这个EXE文件就是Microsoft Visual C++ 6.0生成的。

EP区段那一栏,有个“.text”,这个一般是代码段。一个EXE文件能做什么,很大程序上取决于这个段的内容。点击EP区段后面那个“>”按钮会显示区段的详细信息:

 

这里面列出了4个区段,“.text”是代码段,“.rdata”是输入表段,“.data”是数据段,“.rsrc”是资源段。这个EXE文件因为是由编译器生成的,所以这些都有规律。如果由其它程序修改而成的,光看区段就不一定知道是什么段了,而且还会多出其它的段来。

下面是另一个EXE文件的区段信息:

 

这个EXE文件显然不是编译器生成的,看区段信息知道,头两个区段的名称分别为“.UPX0”“.UPX1”这个是某有名的压缩壳的区段特征,那壳的名字还就叫:UPX

区段的概念大概就是这样,让我们回到PEID的界面,入口点那一项:它指向的就是程序在系统加载后,执行的第一句代码的位置,通常这个位置位于代码段中。

该解释的东西解释完了,现在看看我从垃圾堆里找到的一个幸存的病毒样本(确切地说是被感染体)在PEID里显示的信息:

 

题外话:好像这个文件还是损坏了,清理得太完全了,都忘了存下样本。这个还是用软件找遍全盘被删除的文件才找出来的一个还像点样的。

 

通过这两幅图可以看出来病毒在EXE文件后面添加了一个区段,区段名为:“.qnk”(外加一个圆点)经过我对多个被感染体的检查,发现被增加的区段名都是三个字母并以一个“”(圆点,似乎这里显示不出来)结尾。所以我在命名的时候给了它一个这样的名,当然别的公司肯定会给出个正规的名字的。

如何使程序恢复正常的方法我也找到了,可能有更简单的方法,不过我只根据我自己的知识想出了这样一个方法。可笑的是这个方法正是我上个学期走了一个多月的弯路学到的,这里就不写了吧。它不但涉及新的软件,还要涉及汇编,不学计算机的没必要知道。

posted on 2009-05-12 15:46  李济民  阅读(640)  评论(0编辑  收藏  举报