吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 19682|回复: 70
收起左侧

[原创工具] 时间戳签名库以及本地Demo服务器(可以倒填时间制造有效签名)

  [复制链接]
JemmyloveJenny 发表于 2019-3-23 12:41
本帖最后由 JemmyloveJenny 于 2019-3-23 20:30 编辑

不了解时间戳签名作用的童鞋可以先去看一下我的上一个帖子,里面解释的比较详细了 https://www.52pojie.cn/thread-877849-1-1.html
主要作用就是让系统认为某个程序是在证书过期/吊销之前被签名的,通过系统的签名验证。
我原本没想要发布这个单独的时间戳程序,但是有很多人问我有关时间戳的问题,因此就把原来Java写的代码翻译到CSharp,做了一个时间戳签名库和它的Demo。
代码已开源,在 https://github.com/JemmyLoveJenny/TimeStampResponder-CSharp
搜狗截图20190323123055.png

自建时间戳服务器只需要一张自签名的时间戳证书和对应的私钥和证书链。
时间戳证书必须是X509v3证书,包含标记critical的ExtendedKeyUsage属性,ExtKU只允许证书用于时间戳签名。
证书文件如果不是自签名的,则还需要包含证书链。子证书在最上面,CA证书在最下面,就像部署SSL证书链那样操作。
私钥文件必须使用PKCS1编码保存,PKCS8无法识别。
Github和Release中都有从我PKI中签发出的时间戳证书,可以作为一个证书的样板。
虽然我的证书默认不受信,但是我还是不希望你们滥用它。

本地时间戳服务器的地址是 http://localhost/TSA/ 注意!这个Demo真的只是一个本地的服务,不能作为广泛使用的时间戳服务器。
因为我设置了只能从localhost访问,局域网内其他电脑访问不到这个时间戳服务。甚至用127.0.0.1或者::1都不可以!
Demo可以和IIS共用80端口,如果有Apache或者Nginx这类服务器绑定了80端口,那么Demo就无法正常启动,表现为要求以管理员身份运行。
搜狗截图20190323123013.png
程序使用HttpListener组件实现简单的HTTP服务,因此必须要求以管理员身份运行
程序成功运行后,这个地址支持 Authenticode 和 RFC3161 时间戳,也就是说,在微软signtool中使用 /t "<URL>" 或者 /tr "<URL>" 都是可以的,可以根据自己的需要打不同协议的时间戳 (Authenticode时间戳兼容性比较好,支持XP)
搜狗截图20190323123304.png

自定义时间的话,就是在地址后面加上希望的时间(UTC时间,需要转换时区)。
格式为"yyyy-MM-dd'T'HH:mm:ss"
北京时间是UTC+8,所以地址后面的时间需要减掉8小时才能变成UTC时间。
举几个例子:
北京时间 2011-04-01 08:00:00,对应的时间戳地址是 http://localhost/TSA/2011-04-01T00:00:00
北京时间 2019-03-10 10:25:34,对应的时间戳地址是 http://localhost/TSA/2019-03-10T02:25:34

然后打时间戳就用微软的signtool,命令为 【signtool timestamp /t "<URL>" <filename>】
如果是双签名,另加/tp参数指定签名序号,打两次时间戳【signtool timestamp /tp <index> /tr "<URL>" <filename>】

比如说,给我要给 test.exe 单签名打2011-04-01 08:00:00的时间戳,完整命令为 【signtool timestamp /t "http://localhost/TSA/2011-04-01T00:00:00" test.exe】
如果 test.exe 有双签名,首先执行上一条命令,然后再用【signtool timestamp /tp 1 /tr "http://localhost/TSA/2011-04-01T00:00:00" test.exe】给第二个签名打时间戳

注意!自定义的时间戳日期最好接近证书的颁发时间,因为大部分泄露的证书已经被CA吊销,自定义的时间必须在证书吊销之前才能通过驱动签名验证!

最后是附件 Release.zip (811.4 KB, 下载次数: 638) 也可以到我的repo[https://github.com/JemmyLoveJenny/TimeStampResponder-CSharp]下载。

免费评分

参与人数 3吾爱币 +8 热心值 +2 收起 理由
蓝色马蹄莲 + 1 曾经我认为证书时间戳不能造假的,特么服了。。。
云在天 + 6 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
niceboge + 1 + 1 谢谢@Thanks!

查看全部评分

本帖被以下淘专辑推荐:

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

mycgb 发表于 2019-8-17 01:38
支持原创作品!
 楼主| JemmyloveJenny 发表于 2019-5-31 15:49
wxg13949028456 发表于 2019-5-31 09:37
我用吊销后的证书[HT srl]签名这个内核驱动文件...用的digicert的时间戳,怎么也加载成功了...好神奇..

...

对,本来就可以这样干的……
内核不进行吊销检查,时间怎样检查我就不知道了……
但是我记得signtool好像要求有效时间戳签名的
shenxian2007 发表于 2019-3-25 12:13
 楼主| JemmyloveJenny 发表于 2019-8-14 00:30
天心阁下 发表于 2019-8-14 00:17
只本地测试的话完美,可惜没有泄露的时间戳证书
这种东西不可能有的
时间戳证书由CA保管,肯定也是HSM保存私钥的
如果HSM泄露了,那还要时间戳证书干嘛,直接拿CA中级证书和根证书私钥多好……
会成功的人 发表于 2019-3-23 13:50
谢谢楼主分享
wjt12300 发表于 2019-3-23 16:31

谢谢楼主分享
titi183 发表于 2019-3-23 16:59


谢谢楼主分享
fands 发表于 2019-3-23 19:50
值得收藏
a570168993 发表于 2019-3-24 07:57
谢谢楼主的分享
muandmule 发表于 2019-3-24 07:58 来自手机
谢谢楼主分享
时光荏苒97 发表于 2019-3-24 08:20 来自手机
感谢分享哦
头像被屏蔽
铁索横江 发表于 2019-3-24 09:15
提示: 作者被禁止或删除 内容自动屏蔽
蓝色马蹄莲 发表于 2019-3-24 12:44
曾经我认为证书时间戳不能造假的,总认为要先黑掉时间证书服务器才能办到,现在特么服了。。。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-21 19:38

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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