危险漫步博客
新鲜的“黑客思维”就是从全新的角度看待黑客技术,从更高的层面去思考;专注于黑客精神及技术交流分享的独立博客。
文章2307 浏览21469914

学360让MD5为安全护航

最近在鼓捣360时,发现不管是它的木马防火墙还是云查杀,都是通过计算文件的MD5值再与已经发现的恶意文件的MD5值进行对比来判断的,说白了就是一种比较文件hash值的安全检测方法,这种方法可以应用于多种领域,很多软件下载站提供软件下载的同时,也都会提供该软件的MD5值,就是这种方法的一个应用,其目的就是防止软件被恶意文件替换。自从Vista系统开始,这种方法也被微软用于Windows操作系统了,通过定期hash检测可以防止系统内核文件被rootkit了。对于我们或者网站管理员来说,使用这种方法也可以帮助我们及时的发现被替换的文件。本文我就向大家推荐两款精典的hash计算比较工具——fciv.exe和fsum.exe。

一、Fciv.exe

这两个都是命令行下的工具,我们首先来看fciv.exe,这是微软提供的一个小工具,功能还不错,它可以对某个文件、文件夹进行MD5或SHAI加密,在Windows处于安全状态时,就可以通过它来获得文件、文件夹的hash快照,一旦恶意攻击者替换了系统中的某些文件,在hash比较时就可以被发现!我们在cmd下直接运行fciv.exe,就可以看到该工具的具体用法,默认情况下程序使用了“-add”参数,所以一般都是使用“fciv.exe文件名/目录名”的格式,而无需再加上“-add”参数。

1、目录常用参数

当要计算某一个目录中的文件hash值时,我们通常会用到以下的两个参数:“-r”指的是使用递归计算该目录下的每一个目录中的文件,比如要计算“c:\windows”目录中所有文件的hash值,就可以输入“fciv c:\windows\-r”。“-type”用于指明要对某目录中的哪些类型的文件进行hash计算,比如“f:\test”目录下有一个txt文件和一个exe文件,如果我们执行“fciv f:\test -type *.exe”,则只会计算exe文件的hash。

2、选择hash计算方法

fciv.exe提供了两种hash计算方法,一种是我们熟悉的md5,另外一种是shal,默认使用的是md5计算方法,如果要使用shal计算方法,则需要使用“-shal”参数,如果两种计算方法都使用,则需要使用“-both”参数,比如我们要使用md5和shal这两种方法来计算“f:\test”目录下所有exe文件的hash值,则可以使用“fciv,exe f:\test -r -type *.exe -both”。

3、将hash值写入xml文件保存

如文章开始所描述的那样,计算文件hash并不难,比较hash以确定文件是否被替换才是最有意义的,在比较前我们需要将系统或网站安全状态下的文件进行hash计算并写人文件保存,fciv.exe提供了“-xml”参数用于将文件的hash以xml的形式保存到硬盘上,之所以使用xml格式保存,是为了比较hash时方便。比如我们要计算“c:\windows”目录下所有exe文件的hash值以防止恶意程序将其替换,则可以执行“fciv.exe c:\windows_r -type *.exe -xml windows.xml”。

4、检测文件hash

当把计算机安全状态下的文件hash值计算保存后,要检测系统或网站是否被替换了文件,则需要与原来安全状态下的hash值进行比较,这时候我们就需要使用“-v”参数,比如要检测windows目录下是否被植入并替换了恶意程序,则执行“fciv -v -xml windows.xml”。

相对于fciv.exe程序来讲,fsum.exe是一款更强大的hash计算工具,下面我们再看一下这款工具的具体用法。

二、fsum.exe

fsum.exe最大的亮点就是可以计算多种hash,在命令提示符下直接输入fsum,就可以查看到其具体的使用方法了,它不仅可以计算md5、shal,还可以计算md2、md4、sha256、sh a384、crc2等,而且它还有一个特点,就是运算速度快,这对于大型的虚拟主机来说是很有意义的。

这款工具的主要参数与fciv.exe类似,比如“-d”用于指明目录,“-r”用于指明递归查询某目录,值得注意的是,在使用“-d”参数时,“-d”与目录名之间没有空格。该程序与fciv不同的地方除了计算方法比较多之外,还主要体现在比较方法与hash存储上,使用fsum存储文件的hash值,需要重定向到某个文件中,比如要计算“c:\windows”目录下所有exe文件的md5值(该工具默认情况下与fciv.exe一样会计算Md5值),则执行“fsurn -r -dc:\windows *.exe

>windows.txt”。

如果想要使用其它的hash计算方法,则使用相关的参数即可,比如以shal方式计算“c:\windows”目录下exe文件的hash值,则执行"fsum -r -shal -dc:\windows *.exe>windows.txt”。

当然计算文件hash的意义就在于用它来进行比较,使用fsum.exe要比较文件的hash,首先需要指明在计算机安全状态下得到的hash文件,使用“-c”参数即可,然后需要指明比较后显示结果的方法,fsum.exe提供了以下几种方法:

-jf:只会显示hash值不匹配的行

-jm:使用md5格式比较,详细显示每条比较结果。

-js:使用SFV格式比较,-jm类似。

-jnc:比较时压缩描述。

在这四种方法中,一jf常用,因为既然是比较,我们关心的问题自然是hash值不相同的文件,比如要检测c:\windows下的exe文件是否被替换,则可以执行“fsum -dc:\windows -jf -c f:\test\windows.txt”,  “-c”指明的hash文件必须是完整路径。

相比较而言,使用fsum.exe效率比较高,但是fciv,exe给人的感觉是更核心一些,工具只要被制造出来就必然会有优劣,我们要做的事情就是选择一个相对合适的来使用。

三、注意事项

关于工具的使用就介绍完了,还有几点必须要进行说明,因为它很容易被忽视。

1、定期hash检测

大家都知道在没有主动防御、实时保护的情况下,杀毒软件的特点是只查杀已知的病毒,这就是要命的杀软滞后性,相对来说,杀软的滞后性可以原谅,但是人们思想的滞后性就不可原谅了,因为很多时候,只有在发现电脑中毒或中木马时才会想起安全问题,不得不说建立一种安全思维模式的确非常重要。上面介绍的方法,相当于理论,关键在于能做到定期进行hash检测,这相当于实践,定期检测系统文件hash值,可以通过任务计划来完成。

我们以fsum为例,首先编写一个批处理文件,把以下内容保存为fsum.bat: @fsum -dc:\windows -jf -c f:\test\windows.txt >diff.txt,在“开始”一“运行”栏中输入control打开“控制面板”,双击打开“任务计划”,双击打开“添加任务计划”,单击下一步,单击“浏览”,找到刚才编写的批处理文件fsum.bat,单击下一步,在弹出的窗口中勾选“每月”(可根据需要进行选择),单击下一步,根据自己的登录情况来选择时间,在接下来的窗口中输入相应的用户名和密码就完成任务计划的添加了,这样系统每个月都会自动进行hash检测,每月hash检查后,一旦发现同一目录中的diff.txt中有内容则说明hash比较发现了问题,系统中可能有文件已经被替换。

当然这里作为演示只是简单的描述,如果要真正打造这样的一个智能系统,首先建议你先把fsum.exe复制到%systemroot%\system32目录下,然后建立一个程序,定期执行相应的操作,并通过diff.txt的文件大小来判断是否有hash计算异常,如果diff.txt的大小大于0,则提示文件有可能被替换,这种方法比较适合网站管理员使用。

2、hash文件权限设置

Windows安全状态下的hash文件是我们进行hash检测的关键,该文件保护不好的话,则很容易被细心的攻击者替换掉,从而不能保证我们及时检测到系统中的恶意文件,这就要求我们对hash文件进行权限设置。

3,定位检测位置

hash比较法用于安全的另一个重要问题是决定何种文件需要进行hash检测,其实答案很简单,最容易被替换文件的位置最需要定期进行hash检测,比如c:\Program Files\Internet Explorer是很多人喜欢替换文件的位置,因为只要是联网,对于大多数人来说都会执行该目录中的IE浏览器,也就可以实现恶意程序的执行。具体进行hash计算的位置需要根据个人情况来定。