CAT 文件数字签名使用技巧

发布于 2025-01-08 12:42:59 字数 6851 浏览 13 评论 0

0x00 前言

Windows 系统中的重要文件常常会被添加数字签名,用来防止被篡改,部分白名单规则的判定也会基于数字签名。

本文作为数字签名研究系列文章的基础内容,介绍两种数字签名的添加方法,分析 CAT 文件数字签名的特点,并且纠正一名读者对我文章的回复,地址如下:《利用 xwizard.exe 加载 dll》

基于我的测试,个人认为: 移动位置后,CAT 文件数字签名不会失效

0x01 简介

本文将要介绍以下内容:

  • 生成证书的方法
  • 将数字签名添加在文件末尾的方法(Authenticode)
  • 将数字签名保存在 CAT 文件中的方法(catalog)
  • 使用 CAT 数字签名的文件特点

0x02 将数字签名添加在文件末尾的方法 (Authenticode)

曾在隐写技巧的系列文章中研究过在数字签名中隐藏 payload 的方法,地址如下:《隐写技巧——在 PE 文件的数字证书中隐藏 Payload》

文中介绍过证书格式,在此不再赘述

向文件尾部添加数字签名后,可通过文件属性查看

实例:

C:\Windows\System32\consent.exe

自带微软数字签名,如下图

Alt text

可通过 powershell 验证数字签名:

Get-AuthenticodeSignature .\mimikatz.exe

也可以使用工具通过命令行查看数字签名

使用 signtool.exe 查看:

signtool.exe verify /v C:\Windows\System32\consent.exe

如下图

Alt text

使用 sigcheck.exe 查看:

sigcheck.exe -q C:\Windows\System32\consent.exe /accepteula

如下图

Alt text

注:signtool.exe:

可用于查看文件的数字签名

安装 Visual Studio 后包含 SDK,其中可找到 signtool.exe,位于 C:\Program Files\Microsoft SDKs\Windows\

进入开发人员工具的 cmd 可直接调用 signtool.exe

Windows 7 SDK 下载地址:https://www.microsoft.com/en-us/download/details.aspx?id=8279

sigcheck.exe:

可用于查看文件的数字签名

下载地址:https://docs.microsoft.com/zh-cn/sysinternals/downloads/sigcheck

本文相关文件已上传至 github,地址如下:https://github.com/3gstudent/signtools

生成测试证书的命令如下:

makecert -n "CN=Microsoft Windows Test" -r -sv Root.pvk Root.cer
cert2spc Root.cer Root.spc
pvk2pfx -pvk Root.pvk -pi 123456 -spc Root.spc -pfx Root.pfx -f

证书注册:

(管理员权限)

certmgr.exe -add -c Root.cer -s -r localmachine root

注:细节可参考之前的文章《A dirty way of tricking users to bypass UAC》

签名 mimikatz.exe:

signtool sign /f Root.pfx /p 123456 mimikatz.exe

显示数字签名正常,如下图

Alt text

0x03 将数字签名保存在 CAT 文件中的方法(catalog)

Windows 系统中,有些文件通过文件属性无法获得其数字签名信息,但是这些文件也包含数字签名,这里的数字签名指的就是 CAT(安全编录) 文件数字签名(catalog signing)

资料可参考:https://docs.microsoft.com/en-us/windows-hardware/drivers/install/catalog-files

签名流程的直观理解:

  • 将文件作 sha1 加密后得到的 hash 值保存在 CAT 文件中(一个 CAT 文件可保存多个文件 hash)
  • 对该 CAT 文件添加数字签名
  • 将 CAT 文件添加到系统的安全编录数据库
  • 这些文件也就有了数字签名

实例:C:\Windows\System32\catroot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\ntph.cat

属性-安全目录-项目详细信息-File,可以找到 Hash 值对应的文件

如下图

Alt text

通过文件属性无法查看 CAT 数字签名

.cat 文件保存格式为 ASN.1 标准,直接通过记事本无法查看,需要解密,在线网址如下:https://lapo.it/asn1js/

选择 cat 文件后即可解密显示完整格式

格式解析可参考:https://support.microsoft.com/en-us/help/287547/object-ids-associated-with-microsoft-cryptography

实例:C:\Windows\System32\xwizard.exe

自带 CAT 格式的数字签名,通过文件属性无法查看 CAT 数字签名

使用 powershell 无法获得 CAT 文件数字签名:

Get-AuthenticodeSignature C:\Windows\System32\xwizard.exe

如下图

Alt text

注:Win10 系统能够获取 CAT 文件数字签名,Win7 不可以

但可以使用 signtool.exe 和 sigcheck.exe 查看数字签名

使用 signtool.exe 查看:

signtool.exe verify /pa /a /v C:\Windows\System32\xwizard.exe

如下图

Alt text

使用 sigcheck.exe 查看:

sigcheck.exe -q C:\Windows\System32\xwizard.exe /accepteula

如下图

Alt text

下面介绍如何使用 CAT 文件数字签名

1、生成 CAT 文件

新建文本文档 cat.txt,内容如下:

[CatalogHeader]
Name=makecat1.cat
[CatalogFiles]
<hash>ExeFile1=mimikatz.exe

注:txt 文件尾部需要一个空行,否则,在接下来的操作会报错,提示文件无法找到

如下图

Alt text

使用 makecat.exe 生成 cat 文件:

makecat -v cat.txt

2、使用证书为 CAT 文件添加签名

signtool sign /f Root.pfx /p 123456 makecat1.cat

注:这里的证书使用的是 0x02 中生成的证书 Root.pfx

3、将 cat 文件添加到系统的安全编录数据库

(管理员权限)

signtool catdb -v makecat1.cat

注:删除使用 -r 参数: signtool catdb -r makecat1.cat

如果未添加到系统的安全编录数据库,签名状态为 unsigned,如下图

Alt text

添加到系统的安全编录数据库相当于在目录 C:\Windows\System32\catroot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE} 添加文件 makecat1.cat

删除等价于删除目录 C:\Windows\System32\catroot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE} 下对应的 CAT 文件 makecat1.cat

使用 signtool.exe 获取数字签名:

signtool.exe verify /pa /a mimikatz.exe

使用 sigcheck.exe 获取数字签名:

sigcheck.exe -q mimikatz.exe /accepteula

移动位置后,签名仍然有效

如下图

Alt text

验证结论: 移动位置后,CAT 文件数字签名不会失效

当然,利用带有 CAT 文件数字签名的 xwizard.exe 加载 dll,在某种程度上说,能够绕过应用程序白名单的拦截。

0x04 小结

本文介绍了两种数字签名的添加方法,分析 CAT 文件数字签名的特点,对于可执行文件,通过 Process Explorer 可验证两种不同的数字签名

如下图

Alt text

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

極樂鬼

暂无简介

文章
评论
26 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文