吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 42418|回复: 120
收起左侧

[原创工具] 【更新】亚洲诚信数字签名工具修改版 自定义时间戳 驱动签名

    [复制链接]
JemmyloveJenny 发表于 2019-9-22 00:36
本帖最后由 JemmyloveJenny 于 2019-9-22 23:56 编辑

我之前发布的亚洲诚信数字签名工具在 https://www.52pojie.cn/thread-877849-1-1.html
但是那个帖子已经没办法编辑了,所以只能重发一个

鉴于我之前发布的版本时间戳地址已经写死,无法方便地修改,我就更新了这个修改版。
与更新前的主要区别如下:
1.可以根据配置文件或者命令行参数修改伪造的签名时间
2.修改了Hook的函数,增加2个函数
3.修复之前版本的内存溢出漏洞
4.重构了软件架构

程序相同目录下的hook.ini中可以设置 时间戳签名时间 和 程序获取的时间
时间戳签名时间就是签名选项卡中看到的时间,是需要根据证书有效期来确定的
搜狗截图20190922002553.png

而程序获取的时间,对程序功能无任何影响,只会影响证书管理界面的证书颜色和到期天数
搜狗截图20190922002851.png


其他功能都与上一版本相同,详情请看ReadMe

简介

本项目编译结果为HookSigntool.dll,用于亚洲诚信数字签名工具(或其他类似的签名工具,如天威诚信代码签名证书助手,沃通代码签名工具,环玺信息数字签名工具等等)它的作用如下:

  1. Hook数字签名工具对证书有效期的判断,无需修改系统的时间,即可用过期的证书进行数字签名。
  2. 增加自建的时间戳服务器,配合过期证书使用,伪造证书有效期内的时间戳签名,使得整个签名能被验证。(此功能需要修改数字签名工具本身)

原理

编译出的HookSigntool.dll通过微软的Detours库Hook了签名工具的函数调用以达到目的
总共Hook了6个函数:

  1. crypt32.dll!CertVerifyTimeValidity 返回值改为0,让签名工具误以为所有证书都在有效期内,以便在不修改系统时间的情况下用过期证书签名。
  2. mssign32!SignerSign 传入参数 pwszHttpTimeStamp 修改为自建时间戳地址(自建时间戳接受地址中设定的时间,用以伪造签名)
  3. mssign32!SignerTimeStamp 同上
  4. mssign32!SignerTimeStampEx2 同上
  5. mssign32!SignerTimeStampEx3 同上 (此函数在 Windows 7 上不存在)
  6. kernel32.dll!GetLocalTime 返回值根据配置文件修改,对于程序功能无影响。

用法

这个dll有两种设置方法,一种是ini文件,另一种是命令行参数

时间表示方法

本程序所用的时间表示方法为SimpleDateFormat,即格式为 yyyy-MM-dd'T'HH:mm:ss 的UTC时间
北京时间是UTC+8,所以时间需要减掉8小时才能变成UTC时间
举几个例子:
北京时间 2011-04-01 08:00:00,表示为 2011-04-01T00:00:00
北京时间 2019-03-10 10:25:34,表示为 2019-03-10T02:25:34

ini文件

程序默认使用同目录下的hook.ini,当然,也可以通过命令行参数-config指定其他ini文件

;[Timestamp]Section中设置SignerTimeStamp的参数
;本处设置的是时间戳签名伪造的默认时间(SimpleDateFormat)
;可以通过命令行 -ts 参数传递替换的Timestamp
[Timestamp]
Timestamp=2011-04-01T00:00:00

;[Time]Section中设置GetLocalTime的返回值
;本处设置的时间不判断证书有效期,也不是时间戳时间,仅仅影响证书管理界面的证书颜色(到期天数)
;如需设置,请请删除注释分号
[Time]
;Year=2011
;Month=4
;Day=1
;Hour=0
;Minute=0
;Second=0

命令行参数

向数字签名工具的exe文件传递启动参数(如亚洲诚信数字签名工具,则是对DSigntool.exe传递参数)

-config

指定一个如上描述的ini文件的位置(相对路径或绝对路径),比如:

DSigntool.exe -config hook.ini
DSigntool.exe -config ../another.ini
DSigntool.exe -config D:\Signtool\config.ini
-ts

指定时间戳需要伪造的签名时间,用SimpleDateFormat表示
-ts传递的时间优先级高于ini文件中配置的时间,因此-ts-config参数同时存在时,程序使用-ts的时间

DSigntool.exe -ts 2011-04-01T00:00:00
DSigntool.exe -ts 2019-03-10T02:25:34

快捷方式

由于有命令行参数启动这种方式,所以可以通过lnk快捷方式启动数字签名工具,来达到修改时间戳日期的功能。
编辑指向数字签名工具的lnk快捷方式,在目标后面加上-ts参数即可。例如:

目标 "C:\Program Files (x86)\DSignTool\DSignTool.exe" -ts 2015-04-01T00:00:00
起始位置 "C:\Program Files (x86)\DSignTool"

通过这个lnk启动的数字签名工具就被设定了时间戳日期。
也可以根据需要制作多个不同的快捷方式,设定不同的时间。

编译

编译环境:Visual Studio 2019 (生成工具v142)

依赖库:Detours

编译步骤:

  1. 下载微软Detours库 https://www.microsoft.com/en-us/download/details.aspx?id=52586 并解压缩
  2. 开始菜单中打开x86 Native Tools Command Prompt for VS 2019,进入解压缩的Detours目录,运行nmake,编译出x86的lib (x64无需编译)
  3. 将Detours目录下include,lib.X86目录下的文件复制到 C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\{Version}目录的include,lib\x86子目录中,完成Detours的安装
  4. 打开项目文件HookSigntool.sln解决方案配置为Release,直接编译即可。

修改数字签名工具

想要数字签名工具加载HookSigntool.dll则需要用LordPE等工具修改这个exe的导入表,向导入表添加HookSigntool.dll!attach

绕过证书有效期验证

这个比较容易,只要签名工具加载了本dll,无需任何操作即可成功。

添加自定义时间戳

需要将软件内置的时间戳地址替换为特殊标记(包括http://部分整个替换)
一般是用十六进制编辑器直接找到字符串进行替换,原字符串的多余长度用 0x00 填充
SHA1的时间戳地址整个替换为 {CustomTimestampMarker-SHA1}
SHA256的时间戳地址整个替换为 {CustomTimestampMarker-SHA256}
这个标记与时间戳协议无关,无论是Authenticode还是RFC3161都相同
dll会特异性识别这个标记,自动将它修改为时间戳地址

关于时间戳服务器

时间戳服务器是我自己编写搭建的,域名是 timestamp.pki.jemmylovejenny.tk
根证书由我自己签发,时间戳有两条证书链,分别为SHA1和SHA256
以当前时间签名时,服务器地址是http://timestamp.pki.jemmylovejenny.tk/SHA1/http://timestamp.pki.jemmylovejenny.tk/SHA256/
伪造任意时间的时间戳签名时,服务器地址在以上基础上加上SimpleDateFormat表示的时间,例如:

http://timestamp.pki.jemmylovejenny.tk/SHA1/2011-04-01T00:00:00
http://timestamp.pki.jemmylovejenny.tk/SHA256/2019-03-10T02:25:34

Authenticode和RFC3161协议的地址都是相同的,服务器会根据请求的不同自动识别并处理。
域名中的timestamp可以简写为tsa,即tsa.pki.jemmylovejenny.tk

配合微软signtool使用

首先将程序签好名(不带时间戳),假设有N个签名
那么对于第一个签名打时间戳:signtool timestamp /t "<URL>" <filename>
对于之后的任意个签名打时间戳:signtool timestamp /tp <index> /tr "<URL>" <filename>
其中URL为时间戳服务器地址,index从1开始递增,例如:

signtool timestamp /t "http://tsa.pki.jemmylovejenny.tk/SHA1/2011-04-01T00:00:00" test.exe
signtool timestamp /tp 1 /tr "http://tsa.pki.jemmylovejenny.tk/SHA256/2011-04-01T00:00:00" test.exe

关于驱动签名

根据微软的最新签名策略 https://docs.microsoft.com/en-us/windows-hardware/drivers/install/kernel-mode-code-signing-policy--windows-vista-and-later-

任何有Microsoft Code Verification Root交叉签名,且颁发日期在2015-07-29以前的代码签名证书,配合伪造的时间戳签名,可以生成一个在任意Windows版本下都有效的驱动签名。

因此,采用泄露的证书,信任自建时间戳根证书,就可以在WinXP~Win10(SecureBoot Enabled)任意版本成功加载驱动。

关于我的自建PKI

我的自建PKI根证书为JemmyLoveJenny EV Root CA,我使用的所有自签名证书都由它颁发。
本程序使用的自建时间戳服务器的证书也不例外,因此想要时间戳受信,需要手动信任这个根证书。
更多信息请访问https://pki.jemmylovejenny.tk/



更多信息请访问https://pki.jemmylovejenny.tk/  
最后是下载链接:(下载修改版后 替换原版目录下的文件)
原版: https://www.trustasia.com/sign-tools
修改版: DSigntool.7z (1.1 MB, 下载次数: 9316)
修改版源码:https://github.com/JemmyLoveJenny/HookSigntool
过期签名证书我不提供

免费评分

参与人数 29吾爱币 +42 热心值 +25 收起 理由
lavenders + 1 我很赞同!
FleTime + 3 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
imeemi + 1 + 1 谢谢@Thanks!
阿花先生 + 1 我很赞同!
BY丶显示 + 2 + 1 谢谢@Thanks!
xiaolong23330 + 1 谢谢@Thanks!
misran + 1 + 1 用心讨论,共获提升!
smile1110 + 1 用心讨论,共获提升!
leanjon + 1 谢谢@Thanks!
jiangsg + 1 + 1 热心回复!
名字长网速慢 + 1 + 1 1111
gqdsc + 1 谢谢@Thanks!
照片依旧 + 1 热心回复!
jw8013 + 2 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
依然小圣 + 1 + 1 证书见54楼
jawy + 1 可以,谢谢大佬
xz00311 + 1 + 1 做了一个GUI来方便打你的自定义时间戳的工具
redbigbug + 1 + 1 谢谢@Thanks!
夜狼自大 + 1 我很赞同!
wdpfox + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
liareyou + 1 + 1 谢谢@Thanks!
Kido + 15 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
akinet + 1 + 1 谢谢@Thanks!
Wf5201314 + 1 + 1 这个必须评分,那么多签名软件,就你这个好用。
qq63 + 1 + 1 谢谢@Thanks!
凌乱丶烟雨 + 1 + 1 谢谢@Thanks!
ɑdministrator + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
crack5 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
lg560852 + 1 + 1 用心讨论,共获提升!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

依然小圣 发表于 2019-9-26 10:01
本帖最后由 依然小圣 于 2019-10-29 11:33 编辑

哎,好不容易找到证书,真是不容易 各位路过的赏点热心呀

代码签名数字证书(含私钥).zip

111.12 KB, 下载次数: 4090, 下载积分: 吾爱币 -2 CB

免费评分

参与人数 12吾爱币 +12 热心值 +11 收起 理由
Device + 1 + 1 谢谢@Thanks!
Rx0 + 1 + 1 十分感谢!!!!
TheHiddenOne + 1 + 1 我很赞同!
adsl_95 + 1 + 1 谢谢@Thanks!
imeemi + 1 + 1 谢谢@Thanks!
小六升臣 + 2 + 1 我很赞同!
xiaolong23330 + 1 热心回复!
不懂小生 + 1 + 1 热心回复!
cxmzhijia520 + 1 + 1 用心讨论,共获提升!
gqdsc + 1 今天只有这个给你了
zzylyzs + 1 + 1 终于有人分享了!
jw8013 + 1 + 1 谢谢@Thanks!

查看全部评分

nanbin27 发表于 2020-3-5 23:17
JemmyloveJenny 发表于 2020-2-4 18:01
嗯,因为服务器上一个程序耗尽了SQL句柄所以504了
改过程序后现在已经恢复了

谢谢 我找了你发帖纪录,搞了本地的那个 可以了 谢谢
xz00311 发表于 2019-9-25 17:19
我做了个自定义时间戳的软件做成GUI模式 自定义时间戳.zip (491.91 KB, 下载次数: 1511)

免费评分

参与人数 1吾爱币 +3 热心值 +1 收起 理由
FleTime + 3 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

crack5 发表于 2019-9-22 02:43
望大佬可以加一个鼠标右键快速
TIM图片20190922024232.png
 楼主| JemmyloveJenny 发表于 2019-9-26 19:25

你需要信任时间戳的根证书,导入一下附件里的 EVRootCA.reg

免费评分

参与人数 1热心值 +1 收起 理由
jiaokai123 + 1 好了

查看全部评分

akinet 发表于 2019-9-22 01:24
万事具备,只差证书
rxkj 发表于 2019-9-22 02:00
萌新表示看不懂
abs117 发表于 2019-9-22 04:48
感谢楼主发表,收藏了
loadwuai 发表于 2019-9-22 06:13
还是不够人性化,其实可以判断正式有效期,然后自动将时间更改到有效期范围呢。这样改时间和改系统时间差不多。
wswldx 发表于 2019-9-22 07:29
这个一定要看看
153826 发表于 2019-9-22 08:25
.............
刘郝聪明 发表于 2019-9-22 08:34
不觉明历啊
头像被屏蔽
袁煜914 发表于 2019-9-22 08:35
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-24 00:18

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表