使用 CAT(安全编录)文件数字签名 / 检验文件

本文介绍如何使用CAT文件实现非PE文件的数字签名,并详细解释了CAT文件的生成过程及验证方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://blog.sina.com.cn/s/blog_69956eab0102w3bb.html

经常有网友在问,WINDOWS下除了PE文件,能不能对任一格式的文件进行数字签名?为什么一个PE文件,右键“属性”没有“数字签名”标签卡,但仍然可以通过其他软件检测出该程序已签名?​

今天,就为大家做一个介绍。这所有的一切,皆是CAT文件的功劳。​

(本文仅介绍CAT文件之于数字签名的作用,其他功能不涉及。)

什么是CAT文件?我们来看张图。​

“安全编录”里有两个项目,这其实就对应着两个文件,以上图为例,标记为“89E4...”的这一项就代表着该文件(demo.txt)通过SHA1散列算法得到的Hash值是89E4...​​

 

我们只要对这个CAT文件进行数字签名,再辅以一定的策略,那么这两个文件就能被系统识别为已签名,效果和PE文件的内嵌签名一致。​

下面,就先介绍这个CAT文件如何生成。​

两种方法:1、使用数字证书厂商提供的图形化工具,这类的软件有WoSign的《沃通代码签名工具》、TrustAsia的《数字签名工具专业版》等;2、借助Microsoft的命令行程序手工制作。这里向大家介绍第二种方法。​

环境:有两个文件,demo.txt和demo.exe,通过CAT文件实现数字签名。​​

如图,制作一个文本文件cat.txt。​

说明:第四、第五行后的TxtFile、ExeFile是起一个标识作用,大家可以起一个自己喜欢的名称。​

保存后,使用微软的makecat.exe文件,将这个文本文件转换成CAT文件。​

打开demo.cat文件​

系统提示“该安全编录没有经过数字签名,因此不能被验证。”​

接下来,我们需要使用自己的数字证书(含私钥),借助一些工具软件,对CAT文件进行代码签名,工具软件有上文提及的WoSign的《沃通代码签名工具》、TrustAsia的《数字签名工具专业版》,也可以使用笔者制作的《signtool GUI》。这里以微软的signtool.exe对demo.cat进行代码签名。

​数字签名的参数,这里暂且不做讲解了。

现在再打开已代码签名的demo.cat,​系统提示“该安全编录有效”。

​右键单击demo.cat,选择“属性”——“数字签名”,我们可以查阅签名方信息。

​至此,我们已经完成了对编录文件的签名。下面,以demo.txt为例,介绍如何验证文本文件的签名(工具仍然以微软的signtool.exe为例)。

​通过CAT文件来代码签名文件,这种方式的签名验证和传统的内置式签名,略有区别。输入以下命令。

​/pa 指定应使用默认认证码验证策略,如果未指定 /pa 选项,签名工具将使用 Windows 驱动程序验证策略;

/c ​通过名称指定目录文件,本例中demo.cat为安全编录文件。

如果demo.txt被修改了,签名将失效。

​提示:签名失效并非指demo.cat文件的代码签名失效。

从以上的演示中,大家不难发现,如果每次验证签名还要指定一个安全编录文件,有些繁琐,那么还有没有更便捷办法?​我们的系统C:\Windows\System32\catroot下有好多CAT文件?这之间有没有什么关联?

​对的,我们可以将demo.cat安装入系统的安全编录池。

这个“安装”​的动作,并不是简单地将这个文件复制到这个目录中,

执行以下命令(需管理员权限):

​安装完毕后,在验证代码签名的时候,我们可以执行以下命令:

/a 指定可以使用所有方法来验证文件。首先,搜索目录数据库以确定是否在目录中对文件进行签名。如果未在任何目录中对文件进行签名,签名工具将尝试验证文件的嵌入签名。验证可以或不能在目录中进行签名的文件时,建议使用该选项。 这些文件的示例包括 Windows 文件或驱动程序。 

​到此,我们完成了对一个非PE文件的代码签名和签名验证。事实上,这样的数字签名方式更灵活,这种方式在驱动程序的数字签名场景中,应用非常广泛。

​回顾:

实现本例所需准备的素材:1、代码签名数字证书(含私钥);2、互联网接入(数字时间戳用);3、微软的数字证书相关命令行工具:signtool.exe、makecat.exe等。

​本文粗略地介绍下了安全编录文件在数字签名方面的一些知识,不足之处,敬请指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值