【免杀】用泄露的证书对exe签名
近期nvidia泄露了将近190gb的内容,其中有两个证书被公开了.正好之前学免杀的时候有听师傅讲过大公司的数字签名也能绕部分杀软.
先来看看这个泄露的证书文件目录结构
1 | 2022-03-08 14:02 <DIR> . |
cer后缀和pfx后缀都是证书文件.
使用微软的证书管理工具导出一个证书,可以发现主要是编码和后缀不同,而除了pfx格式的证书文件包含私钥外,cer和p7b都是不含私钥的.
证书中没有私钥,DER 编码二进制格式的证书文件,以cer作为证书文件后缀名。
证书中没有私钥,BASE64 编码格式的证书文件,也是以cer作为证书文件后缀名。
由Public Key Cryptography Standards #12,PKCS#12标准定义,包含了公钥和私钥的二进制格式的证书形式,以pfx作为证书文件后缀名。
使用微软的signtools工具对exe文件进行签名:
1 | signtool.exe sign /v /ac 1111222.cer /f current_cert.pfx /p 密码 FileName |
如果直接这样使用的话 signtool会取当前系统的本地时间作为时间参数输入 如果我们的证书是没有过期或者被吊销的那么也没什么问题,但是我们的证书是从黑客组织上泄露出来的 多半过期了或者或是证书已经被吊销了.那直接这样使用肯定是会不成功的.
如果签名一次就要修改本地时间,那不是很麻烦,所以我们用一般用bat脚本来使用比较方便
1 | @echo off |
用date命令设置时间参数为2013年3月8日,证书没有过期的时间点.重新使用bat脚本对exe程序进行签名.
这里提一下,如果系统是英文版本的话,date参数提供的时间就要符合英文系统的格式.
这里尝试签了一个mimikatz (还是直接被defender杀)
泄露的过期证书有什么用?
任何有Microsoft Code Verification Root交叉签名,且颁发日期在2015-07-29以前的代码签名证书,配合伪造的时间戳签名,可以生成一个在任意Windows版本下都有效的驱动签名。
因此,采用泄露的证书,信任自建时间戳根证书,就可以在WinXP~Win10(SecureBoot Enabled)任意版本成功加载驱动。