无忧启动论坛

标题: 对Catroot下签名文件精简的思路和尝试 [打印本页]

作者: Windows_Air    时间: 2019-2-4 12:06
标题: 对Catroot下签名文件精简的思路和尝试
本帖最后由 Windows_Air 于 2019-2-4 16:17 编辑

一、引言


对于PE(Portable Executable)文件,如果要校验其完整性或有效性,很容易地想到使用数字签名的办法。

不过,数字签名也有一定的缺陷。还有其他的办法吗?既能快速判断文件的完整性,又能兼容各种文件格式,并且提高安全性?使用安全编录文件是一个不错的代替方案,安全编录数据库存储和文件的哈希值,可以通过比对文件哈希与数据库中的条目,来判断文件的完整性。
一般地,系统中的安全编录文件储存于Windows\System32\Catroot 下,根据不同的GUID分别存储在不同的文件夹中。

常见的GUID有以下几种:(具体请见WinVerifyTrustEx)
  1. {F750E6C3-38EE-11D1-85E5-00C04FC295EE} DRIVER_ACTION_VERIFY 驱动级别验证,最为常见的验证方式
  2. {127D0A1D-4EF2-11D1-8608-00C04FC295EE} NULL 未指定信任提供程序时的默认值
复制代码


这里,我们主要讨论{F750E6C3-38EE-11D1-85E5-00C04FC295EE}(在一些环境中,有可能也是唯一选项)。
进入到相应的路径中,可以看到这里标识了系统一些组件的签名文件:

同样也包含一些Windows Update更新后遗留下的一些文件:


打开任意一个文件:
签名文件需要数字签名才能被系统接受:

查看目录项,可以看到存储的哈希值,在多数情况下,系统采用SHA256算法记录文件的哈希:

在大多数情况下,不能直观地判断特定Hash对应的文件。而在有些时候,你可以在详细信息中看到一个名为Hint的条目,记录对应的文件信息。


二、思路


在Windows Update进行更新时,会在安全编录数据库中添加新的条目,以保证更新文件的完整性。在系统启动的过程中,同样会检验一些关键组件的校验信息。删除一些条目可能有利于加快启动时系统的加载进程,然而,随意删除更可能直接导致系统无法启动。
在实际的操作过程中,你可能想要删除掉一些“多余”的条目用以制作精简系统,那么具体应该如何操作才能保证能成功启动?可以尝试通过下面的方法进行精简:

在精简完文件后,你需要在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing中删除相应的注册表项目,否则将导致启动过程中蓝屏。
举个例子,如果删除了Microsoft-Windows-Foundation-Group-WOW64-mincore-Package~31bf3856ad364e35~amd64~en-US~10.0.14393.0.cat文件,那么在该项中查找包含"Microsoft-Windows-Foundation-Group-WOW64-mincore-Package"的条目并删除之(可能需要留意语言区别)。


如果精简完后出现问题,检查下面项目:
  1. *Client-Drivers-Package*
  2. *Client-Drivers-drivers-Package*
  3. *Client-Wired-Network-Drivers-Package*
  4. *Common-Drivers-Package*
  5. *DriverClasses-Package*
  6. *SnippingTool-Package*
  7. Adobe-Flash*
  8. *Basic-Http*
  9. Microsoft-Windows-Foundation-Package*
  10. *CameraCaptureUI*
复制代码

能不能进一步改进?如果不同的安全编录文件中包含相同的条目,能否保留其中一个?有些非pe的文件类型是否也存储在数据库中?有待进一步发掘。

三、尝试


试着写了个能列出可删除文件列表的小工具,精简后尚未发现问题。仍在继续测试中。


感兴趣的可以尝试下:
catfile.exe (107.5 KB, 下载次数: 120)

作者: qitiandashe1020    时间: 2019-2-4 12:29
好高深啊。。。。抢个沙发先
作者: 红毛樱木    时间: 2019-2-4 12:52
cat文件存储的文件信息也能读,厉害
作者: bdfcy    时间: 2019-2-4 17:47
还不懂,先收藏一个,以后再学习
作者: sx3k    时间: 2019-2-4 18:06
本帖最后由 sx3k 于 2019-2-4 18:41 编辑

我正好需要,谢谢分享。
我用 catfile.exe精简slore的Wimbuilder2生成的PE下的Catroot下的文件。
Wimbuilder2-基于hta/vbs/js/bat的图形界面新的PE生成器
http://bbs.wuyou.net/forum.php?m ... &fromuid=678854
(出处: 无忧启动论坛)
Re:WIN10XPE - 从零开始构建的PE+Admin双登录+MTP支持首发+19H1支持
http://bbs.wuyou.net/forum.php?m ... &fromuid=678854
(出处: 无忧启动论坛)

Windows 10 x64-2019-02-04-18-36-09.png (37.36 KB, 下载次数: 107)

Windows 10 x64-2019-02-04-18-36-09.png

作者: wangziqiang    时间: 2019-2-4 20:49
新年快乐 感谢分享
作者: slore    时间: 2019-2-4 23:07
本帖最后由 slore 于 2019-2-4 23:15 编辑
sx3k 发表于 2019-2-4 18:06
我正好需要,谢谢分享。
我用 catfile.exe精简slore的Wimbuilder2生成的PE下的Catroot下的文件。
Wimbuil ...


其实Re:WIN10XPE 自带了精简Catroot列表。

D:\dev\wimbuilder2\Projects\WIN10XPE\00-Configures\Build\Catalog.bat
@echo off

if not "x%opt[build.catalog]%"=="xfull" goto :CATALOG_ADDFILES

call AddFiles %0 :end_full_files
goto :end_full_files

;[Catalog_AddFiles_Info]
; Full Catalogs: \Windows\System32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}
; Use signtool.exe to find Catalogs ex: Signtool verify /kp /v /a X:\Windows\System32\drivers\*.sys > B:\SignDrivers.txt


\Windows\System32\catroot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}
:end_full_files
goto :EOF

:CATALOG_ADDFILES
call AddFiles %0 :end_files
goto :end_files
@\Windows\System32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\
+ver >= 17763
; typo? this line make all catalog ?
\Windows\System32\catroot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}


;skip
+ver = 0

Microsoft-Windows-Client-Desktop-Required-Package*.cat
Microsoft-Windows-Client-Desktop-Required-WOW64-Package*.cat
Microsoft-Windows-Client-Features-Package*.cat
...
; For updates
Package_*

:end_files


删除蓝色的部分就行了。不过为了保持兼容性,所以RS5暂时所有的文件都加了。

不知道signtool.exe的结果和楼主的catfile.exe有什么区别。

作者: Windows_Air    时间: 2019-2-6 11:00
sx3k 发表于 2019-2-4 18:06
我正好需要,谢谢分享。
我用 catfile.exe精简slore的Wimbuilder2生成的PE下的Catroot下的文件。
Wimbuil ...

效果如何?
作者: Windows_Air    时间: 2019-2-6 11:14
slore 发表于 2019-2-4 23:07
其实Re:WIN10XPE 自带了精简Catroot列表。

D:\dev\wimbuilder2\Projects\WIN10XPE\00-Configures\Bu ...

不太清楚。。。估计又造轮子了
作者: Windows_Air    时间: 2019-2-6 11:45
slore 发表于 2019-2-4 23:07
其实Re:WIN10XPE 自带了精简Catroot列表。

D:\dev\wimbuilder2\Projects\WIN10XPE\00-Configures\Bu ...

试了下,catfile还能节省1000...不清楚是不是姿势不对
作者: sx3k    时间: 2019-2-6 11:52
Windows_Air 发表于 2019-2-6 11:00
效果如何?


slore的方法解决了我的问题,楼主你的工具如我的图片所示的内容是什么问题?
作者: Windows_Air    时间: 2019-2-6 17:41
sx3k 发表于 2019-2-6 11:52
slore的方法解决了我的问题,楼主你的工具如我的图片所示的内容是什么问题?

能把CBS.log删除后再重新运行看看文件里面有什么错误吗
作者: xman00    时间: 2019-2-9 15:44
想删除更多,前期的设想是干掉所有KB相关的(更新有关的),结果失败。再通过错误日志补充,仍然不行。暂时没有安全精简的策略。希望得到更多指导。
作者: Windows_Air    时间: 2019-2-10 16:49
xman00 发表于 2019-2-9 15:44
想删除更多,前期的设想是干掉所有KB相关的(更新有关的),结果失败。再通过错误日志补充,仍然不行。暂时没 ...

失败?具体指?
作者: xman00    时间: 2019-2-10 18:36
开机蓝屏
作者: Windows_Air    时间: 2019-2-15 10:41
xman00 发表于 2019-2-10 18:36
开机蓝屏

有可能是注册表没删干净
作者: xman00    时间: 2019-2-18 09:39
Windows_Air 发表于 2019-2-15 10:41
有可能是注册表没删干净

已确定和注册表无关,注册表清理得相当干净的。
作者: xman00    时间: 2019-2-18 09:40
因为我只关心*KB*相关的cat文件,经过各种尝试,结论就是这部分动不动~有危害或隐患的
作者: xinhangxing123    时间: 2019-2-18 09:47
谢谢楼主分享
作者: xinhangxing123    时间: 2019-2-18 09:47
谢谢楼主分享
作者: chshrm    时间: 2019-2-19 10:30
顶起来,期待后续进展!
作者: xman00    时间: 2019-2-27 22:40
本帖最后由 xman00 于 2019-3-4 16:00 编辑

你好,我又来了。

请提供一下如下图的实现命令,很重要呢,谢谢

作者: Windows_Air    时间: 2019-3-2 12:33
xman00 发表于 2019-2-18 09:40
因为我只关心*KB*相关的cat文件,经过各种尝试,结论就是这部分动不动~有危害或隐患的

那就比较神奇了,至少还是能处理掉不少的
作者: chshrm    时间: 2019-3-18 20:10


如图所示,没找到那个划线部分的文件夹。只得到了一个可以精简的文件列表
作者: Anson4    时间: 2019-3-19 14:36
感谢分享!
作者: Windows_Air    时间: 2019-4-21 00:11
chshrm 发表于 2019-3-18 20:10
如图所示,没找到那个划线部分的文件夹。只得到了一个可以精简的文件列表

不太清楚,原本是想静默删除的。。。
作者: weiisusu    时间: 2020-9-1 03:24
800700c1然后一直卡1%,提示press any key to exit,请问啥原因?
作者: Windows_Air    时间: 2020-10-17 22:34
weiisusu 发表于 2020-9-1 03:24
800700c1然后一直卡1%,提示press any key to exit,请问啥原因?

可能是权限不够




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3