签名伪造的利用及思考
2020-11-27 11:19:31 Author: xz.aliyun.com(查看原文) 阅读量:246 收藏

前言

上周五有个朋友问我uac认证那个发布人能不能伪造,我问他伪造这玩意干啥,他说可以让钓鱼的exe更真实一点。

签名的作用

在当前零信任的互联网中,网站上充斥着大量钓鱼软件,普通网民无法识别这些恶意软件,但好在浏览器和计算机会帮你识别一些做工比较“粗糙”的钓鱼软件,作为攻击方我们不能指望用户“无脑”去点击下载这些已经被提示危险的软件,而对软件进行证书强签名就是为了解决这个问题。

已下是一些未签名的软件,浏览器的下载提示:

以下是我做的加载uac认证的微信客户端程序(未签名)

而有签名的uac是这样的:

颜色都不一样怎么骗人!!!

实验1(no)

伪造签名可能很多人第一时间想到的是sigthief.py,我之前一直也是用这个对我木马进行签名的,有时候只是单独用这个伪造一个微软签名也是能过某些杀软的(删掉),但事实证明这方法不太行。(可能是我把事情想太简单了)

//usage
python3 sigthief.py -i 要伪造的证书软件 -t 未签名的软件 -o 输出的文件名

这是我伪造某数字杀软证书的对比

实验2(yes)

//需要的工具
makecert.exe
cert2spc.exe
pvk2pfx.exe
signtool.exe
certmgr.exe

Windows SDK默认包含以上工具
SDK下载地址:https://www.microsoft.com/en-us/download/details.aspx?id=8279

0x01 生成一个自签名的根证书

1、makecert.exe -n "CN=Root" -r -sv Root.pvk Root.cer
2、然后自己随便设置一个私钥,我这里设置为123456

0x02 使用这个证书签发一个子证书

1、makecert.exe -n "CN=Child" -iv Root.pvk -ic Root.cer -sv Root.pvk Root.cer -sky signature
2、Subject Key为123456/Issuer Signature 为123456

0x03 公钥证书格式转换成SPC

cert2spc.exe Root.cer Root.spc

0x04 将公钥证书和私钥合并成一个PFX格式的证书文件

pvk2pfx.exe -pvk Root.pvk -pi 123456 -spc Root.spc -pfx Root.pfx -f

0x05 为木马签名

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

注意:这里如果直接用cmd运行signtool可能会报如下错误:(我在虚拟机的cmd中直接执行成功了)

> signtool sign /f Root.pfx /p 123456 rubt.exe
SignTool Error: No certificates were found that met all the given criteria.

解决方法使用vs开发人员命令提示符工具

0x06 导入证书

//普通权限
certmgr.exe -add -c Root.cer -s -r currentUser root
//管理员权限
certmgr.exe -add -c Root.cer -s -r localmachine root

0x07 实验结果

生成木马后,加载uac认证,最后再导入证书

注:不能先导入证书再加载uac认证,否则会签名失效(至于如何给任意exe加uac认证,这里提示是使用windows自带的mt.exe)

思考

1、这里我把刚刚在主机上做好的签名木马复制到虚拟机中,发现签名变成了如下图,这是因为虚拟机没有导入证书

那我们这样做不就等于白做工了嘛,我思考了很久,如果要解决这个问题只有加载本地默认安装的证书,但我没有找到怎么把系统默认的签名证书导出为pfx格式的工具,希望大佬不吝赐教!拜谢!

2、在使用cs的时候往往会使用流量问题被查杀,特别是阿里云服务器,这里是否可以使用特制的证书进行绕过流量查杀,需要大家自己去验证。


文章来源: http://xz.aliyun.com/t/8563
如有侵权请联系:admin#unsafe.sh