大家都知道rootkit是用已经编辑好的软件来代替系统的一些常用命令,比如netstat,被替换后就不能列出正常的网络连接从而不能发现系统是否存在问题。下面向大家介绍一个很简单但是很有效的检查方法。*NIX下的md5sum在win2000是可以用的,我们可以这样,先用md5sum来计算出系统本身文件的散列数值(散列数值是根据文件内容来计算出一个唯一的数据,如果该文件被改变一个标点符号该数值都会发生改变),我们还是用netstat来举例,
md5sum.exe c:\winnt\system32\netstat.exec:\aa.txt,
这个就是通过md5sum计算出netstat的散列,然后把这个数值保存到了c:\aa.txt里面,你也可以用》来代替,这样就可以计算多个文件的散列然后把数值追加保存到c:\aa.txt文件里面了,见图1的cmd窗口。
图1
图2
图2是保存散列数值的文本文件窗口。
你可以先研究一下现在的rootkit一般都是来替换哪些系统文件的,你就可以针对这些文件去计算散列值然后保存到一个文本文件中。然后当你对一些文件有怀疑的时候就可以用上面提到的方法来检查其散列和以前保存的散列是否相同,相同就可以认为没有被修改。可是如果我们每两天就需要检测一次,每次要检测100个固定文件,我们不能每次都输入100个命令,也没有那么多的时间,一个一个的对照散列值也太麻烦,那怎么办呢?可以用批处理呀,编写一个文本文件,内容就是用md5sum检测这100个文件的命令,一个命令要占用1行,然后把文本文件后缀txt改成批处理文件后缀bat,然后运行这个bat文件,就把那100个文件的散列保存到了我们指定的文件中了。可是要检查起来也太麻烦了,100个数据一个一个的对比,真的是好麻烦呀。这又该怎么办呢?还是md5sum,为什么不用md5sum计算出前后两个保存散列的文本文件的散列,然后比较这两个文本文件的散列是否相同呢?比如已经编辑好了两个文件,文件1的内容是计算指定文件散列并保存到一个指定文件的批处理文件;文件2是保存计算出的散列数值的文本文件。现在我们拷贝文件1的内容到文件3.txt,并修改保存散列数值的文件的路径,如果原文件是把数值保存到c:\aa.txt,那么我们现在把它改成保存到c:\bb.txt,修改文件3的名字为文件3.bat。运行文件3.bat后你会发现在C盘上多了一个文件bb.txt出来。现在我们要计算出保存原始散列数值的c:\aa.txt和当前散列数值的c:\bb.txt是否相同,方法见图3。
图3
从图3我们可以看出c:\aa.txt和c:\bb.txt完全相同,也就是说我们所检查的指定文件没有出现我们不希望看到的问题,是原始文件。经过这样的检查,如果有一个系统文件被修改或替换你都可以轻松发觉。不过我要提醒你两点:一些系统文件在安装一些软件后会被修改,这是正常现象;还有一点是很重要的,不要在被替换之后才去计算散列,那样的话怎么计算md5sum都会告诉你平安无事的,最好在重新装完系统后就去计算那些比较可能被替换文件的散列,这样你的文件系统才相对安全。
写一个文本文件,内容就是用md5sum检测这100个文件的命令,一个命令要占用1行, 把后缀txt改成bat,然后运行这个bat文件,就把那100个文件的散列保存到了我们指定的文件中了。可是要检 查起来也太麻烦了,100个数据一个一个的对比,真的好麻烦呀。还是md5sun,为什么不用md5sum计算出前后两 个保存散列的文本文件的散列,然后比较这两个文本文件的散列是否相同呢?如果有一个系统文件被修改或替换 你都可以轻松发觉。不过我要提醒你的是,不要被替换之后才去计算散列,那样的话怎么计算mnd5sum都会告诉 你平安无事的,最好在重新装完系统后就去计算那些比较可能被替换文件的散列,这样你的文件系统才相对安全 。