用数字签名检查系统安全
董师傅茶坊
读者VS董师傅
杨浩:我很怕Windows Vista的系统文件被病毒或其他程序修改,造成系统崩溃。想请问一下董师傅有没有什么方法可以检测系统是否被修改过。
董师傅:Vista具有强大的安全功能,特别是其中的数字签名功能。只要经常检查系统文件的数字签名就可以知道是否被修改。具体内容请看本文。
很多朋友都知道,Windows Vista下提供了名为UAC(User Account Control)的安全机制,UAC会根据根证书检查进程的数字签名信息,对于信任的系统进程会显示绿色的提示框,对于有数字签名的第三方进程会显示灰色的提示框,对于未知的数字签名信息的进程则显示黄色的提示框,对于被阻止的数字签名信息则显示为红色。正常情况下,所有的系统文件都应该有数字签名,签署者是Microsoft Windows,但假如系统文件被替换,那么数字签名信息将丢失,可以利用这一原理对系统的安全状况进行检查。就算杀毒软件没有检查出来也可以将被修改过的系统文件找出来,然后从安装光盘中进行恢复。
这里,我们可以使用FileDigitalSignVerify检查系统目录中所有文件的数字签名信息,快速查找出数字签名中有问题的文件,从而确定系统的安全状况。FileDigitalSignVerify是Microsoft MVP所开发的一款系统工具。下载地址为http://www.cpcw.com/bzsoft/,将它解压缩到某个路径下。
验证系统文件的数字签名信息
需要指出的是,我们应该在命令提示符下运行FileDigitalSignVerify.exe,这里需要以管理员的权限运行,右击开始菜单下的“所有程序→附件→命令提示符”,从快捷菜单中选择“以管理员身份运行”,进入命令提示符环境下,输入“FileDigitalSignverify.EXE d:\Windows\regedit.exe -p”格式的命令进行验证,该命令可以验证“regedit.exe”文件的数字签名信息,这里的“-p”参数是显示证书链信息。假如需要对系统目录下的所有文件进行数字签名验证,那么请使用类似于“d:\Windows\System32”的格式,不过需要的时候运行会比较漫长。
当选定文件的数字签名有效时,FileDigitalSignVerify将返回“0x00000000”的信息,同时会显示数字签名签署者的身份信息(图1),可以看到这个文件所使用的数字证书是有效和合法的,我们可以在这里很清楚地看到相应的证书链信息:Microsoft Windows证书是由Microsoft Windows Verification PCA证书所颁发,而Microsoft Windows Verification PCA证书则是由Microsoft Root Certificate Authority所颁发,这是系统信任的所谓根证书,自然是真实有效的。

如果数字签名验证失败,将返回相应的错误编码,例如“0x800b0100”,这些错误编码的含义可以使用Microsoft Exchange Server Error Code Look-up Tool进行查询,这个错误编码查询工具可以访问http://www.microsoft.com/downloads/details.aspx?familyid=be596899-7bb8-4208-b7fc-09e02a13696c进行下载。
在图形界面中验证系统文件
如果你经常使用SRE(System Repair Engineer)作为系统分析工具(下载地址:http://www.cpcw.com/bzsoft/),这同样是微软MVP开发的一款非常有用的系统工具,支持多语言界面和插件,下载回来解压缩后直接运行即可。
现在,我们可以将FileDigitalSignVerify目录中的FILEDSV.SRE文件复制到SRE的Plugins目录下,运行SRE程序,切换到“扩展”标签页(图2),在这里可以发现所添加的“文件数字签名验证程序”,单击右侧的“启动插件”按钮,然后运行“扩展→插件”打开插件管理器进行调用,这样就可以获得更方便使用的图形界面(图3),我们可以很方便地在这里找出缺少数字签名或非系统签名的文件,如果发现有什么可疑之处,就要好好地检查一下。

