Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

颠覆信任控制 (T1553)

一句话通俗理解

颠覆信任控制就是伪造身份证或贿赂安检 – 让系统以为你是可信的,实际上你是假冒的。

难度等级

  • ⭐⭐⭐ 高级(需要较多基础)

需要理解代码签名、证书管理和操作系统信任机制。

技术描述

颠覆信任控制(Subvert Trust Controls,T1553)是MITRE ATT&CK框架中防御削弱战术的技术。

📚 打个比方:就像伪造一张登机牌,让机场安检系统认为你是合法乘客——颠覆信任控制就是攻击者通过伪造代码签名、篡改证书信任列表、关闭安全启动验证等方式,让操作系统“信任“恶意软件,使其绕过安全检测畅通无阻。

通俗解释: 机场安检:你的登机牌需要验证、你的身份证需要核验、你还需要过安检门。攻击者要做的,就是让所有这些验证都说“OK“ – 伪造签名、篡改证书信任列表、关闭安全启动验证,这样任何恶意代码都能畅行无阻。

技术原理: 操作系统有多种信任验证机制,攻击者通过颠覆这些机制绕过安全检测:

  1. 代码签名:使用窃取或购买的合法代码签名证书签署恶意软件
  2. 数字证书验证:在本地安装自签名的CA证书,使签名验证通过
  3. 安全启动:篡改UEFI安全启动的数据库,允许加载未签名驱动
  4. 安装根证书:在目标机构中安装攻击者控制的根证书

用途与影响: 颠覆信任控制是最高级的防御削弱技术之一。一旦破坏了信任链,攻击者的恶意软件可以像合法软件一样运行,安全产品无法通过数字签名区分。

子技术列表

子技术ID中文名称通俗解释
T1553.001代码签名给恶意程序签上有序的数字签名
T1553.002安装根证书在受信任的根证书颁发机构中安装攻击者控制的证书
T1553.003SIP信任提供方劫持劫持Windows软件完整性策略(SIP)信任提供方
T1553.004安全启动绕过篡改UEFI安全启动数据库允许加载未签名驱动
T1553.005安装根证书安装额外的根证书颁发机构以通过签名验证

攻击流程

graph TD
    A["获得系统权限"] --> B{"选择颠覆信任的方式"}
    B -->|"代码签名"| C["使用合法证书签署<br/>恶意软件"]
    B -->|"安装证书"| D["安装恶意CA证书<br/>到信任存储"]
    B -->|"安全启动绕过"| E["修改UEFI数据库"]
    C --> F["恶意软件被系统<br/>视为可信任"]
    D --> F
    E --> F

真实案例

案例1:APT41使用合法证书签署恶意驱动(2024年)

  • 时间: 2024年
  • 目标: 全球技术公司和游戏公司
  • 攻击组织: APT41
  • 手法: APT41使用窃取的合法代码签名证书签署其内核驱动和用户态工具。签署的恶意驱动被加载到受保护的系统进程中,由于数字签名有效,可以绕过Windows驱动签名策略和WDAC限制。
  • 参考: Mandiant - APT41

案例2:Lazarus使用Apple Developer证书(2024年)

  • 时间: 2024年
  • 目标: 加密货币公司、区块链开发者
  • 攻击组织: Lazarus Group
  • 手法: Lazarus集团利用苹果企业开发者计划获取合法企业签名证书,签署macOS恶意软件。
  • 参考: CISA - Lazarus Advisory

案例3:BlackLotus UEFI Bootkit绕过安全启动(2023年)

  • 时间: 2023年

  • 目标: Windows系统

  • 攻击组织: BlackLotus

  • 手法: BlackLotus bootkit利用CVE-2022-21894漏洞绕过UEFI安全启动。攻击者修改安全启动的数据库,添加恶意引导加载器的哈希值,使未签名的恶意组件在系统启动过程中被信任。

  • 参考: ESET - BlackLotus UEFI Bootkit

案例4:Pupy RAT使用签名的可执行文件安装根证书(2023年)

  • 时间: 2023年
  • 目标: 全球企业
  • 攻击组织: 多个APT组织
  • 手法: 攻击者使用合法签名安装攻击者控制的根证书到目标系统。通过在目标系统的信任存储中添加攻击者的CA证书,使后续签署的所有恶意软件都被系统视为可信。

红队视角

⚠️ 免责声明:以下内容仅用于合法的安全测试、渗透测试和教育目的。未经授权对他人系统进行测试是违法行为。

实战技巧:

  1. 代码签名证书是最有价值的资源,需要谨慎使用
  2. 安装根证书可以在目标系统上建立持久的信任基础

常用工具

工具名称用途平台
signtool代码签名工具Windows
certutil证书管理工具Windows
MakeCert创建测试证书Windows

注意事项

  • 窃取或购买的签名证书可能被吊销
  • 安装根证书需要管理员权限

蓝队视角

检测要点:

  • 监控系统信任存储中的证书添加事件
  • 监控使用已知被盗签名证书的软件
  • 检测安全启动数据库修改

防御重点:

  • 启用Windows Defender Application Control(WDAC)
  • 监控证书信任列表的修改
  • 使用证书吊销列表(CRL)检查

检测建议

网络层检测

检测方法: 监控证书吊销检查绕过、证书透明度异常和TLS证书异常

具体规则/命令示例:

# 检测证书吊销检查绕过
alert tcp $HOME_NET any -> $EXTERNAL_NET any (msg:"Certificate Trust Subversion - CRL Check Bypass"; flow:to_server; content:"certutil -urlfetch"; nocase; classtype:policy-violation; sid:1000060; rev:1;)

# 检测自签名或异常证书的TLS通信
alert tcp $HOME_NET any -> $EXTERNAL_NET any (msg:"Unusual TLS Certificate - Self-Signed"; tls_store; ssl_version; classtype:policy-violation; sid:1000061; rev:1;)

主机层检测

检测方法: 监控证书信任存储修改、驱动签名绕过和代码完整性绕过

Windows事件ID:

  • 事件ID 4688:检测certutil、certmgr等证书管理工具的执行
  • Sysmon事件ID 6(DriverLoad):监控未签名驱动的加载
  • 事件ID 6423:WDAC(Windows Defender Application Control)阻止未授权程序执行
  • 事件ID 6281:代码完整性检查失败

Linux日志:

  • 日志文件:/var/log/audit/audit.log
  • 关键字段:modprobe加载未签名内核模块、update-ca-certificates修改证书信任

具体命令示例:

# 检测证书存储修改
Get-WinEvent -FilterHashtable @{LogName='Security';ID=4688} | Where-Object {$_.Message -match 'certutil -addstore|certmgr|TrustedPublisher'}

应用层检测

Sigma规则示例:

title: Certificate Trust Store Modification
status: experimental
description: Detects modifications to certificate trust stores
logsource:
    service: security
    product: windows
detection:
    selection:
        EventID: 4688
        CommandLine|contains:
            - 'certutil -addstore'
            - 'certmgr'
            - 'TrustedPublisher'
            - 'Root\LocalMachine'
    condition: selection
level: high
tags:
    - attack.t1553

缓解措施

优先级1:关键措施

措施名称: 部署WDAC审核和强制策略

具体实施步骤:

  1. 启用Windows Defender Application Control(WDAC)强制策略
  2. 配置仅允许经过签名的驱动和可执行文件运行
  3. 启用HVCI(Hypervisor-protected Code Integrity)保护内核完整性

配置示例:

# 配置WDAC策略
New-CIPolicy -FilePath "C:\Policy.xml" -Level Publisher -ScanPath "C:\Windows\System32"
ConvertFrom-CIPolicy -XmlFilePath "C:\Policy.xml" -BinaryFilePath "C:\Policy.bin"

优先级2:重要措施

措施名称: 实施严格的证书管理策略

具体实施步骤:

  1. 限制谁有权将证书添加到受信任的根存储
  2. 定期审计证书信任存储中的异常证书
  3. 启用证书透明度(CT)监控异常证书签发

配置示例:

# 查看受信任的根证书
Get-ChildItem -Path "Cert:\LocalMachine\Root" | Format-Table Subject, Thumbprint, NotAfter

MITRE ATT&CK缓解措施映射

缓解措施ID缓解措施名称适用性说明
M1054软件配置适用部署WDAC审核和强制策略
M1040防篡改适用启用HVCI保护代码完整性
M1026特权账户管理适用实施严格的证书管理策略

动手实验

⚠️ 重要提示:所有实验必须在隔离的实验室环境中进行,禁止对未授权的真实系统进行测试。

实验1:使用MakeCert创建测试证书(初级)

# 创建测试证书
New-SelfSignedCertificate -Type CodeSigningCert -Subject "CN=Test" `
    -CertStoreLocation "Cert:\CurrentUser\My"

实验2:验证文件签名(初级)

# 检查文件签名状态
Get-AuthenticodeSignature C:\Windows\System32\notepad.exe

实验3:安装测试根证书(中级)

# 将自签名证书添加到"受信任的根证书颁发机构"存储
certutil -addstore Root test.cer

术语解释

术语英文原名通俗解释
代码签名Code Signing给软件添加数字签名,证明发布者的身份
安全启动Secure BootUEFI的启动安全机制,只允许签名的启动加载器
HVCIHypervisor-protected Code Integrity使用Hyper-V保护的代码完整性检查
WDACWindows Defender Application ControlWindows应用控制策略

参考资料