钓鱼技巧:.manifest自启UAC与强签名
字数 916 2025-08-18 11:36:47

Windows UAC自启与强签名技术详解

一、UAC基础概念

UAC(用户账户控制)是Windows操作系统的核心安全机制,主要功能:

  • 默认以较低权限运行交互式管理员账户
  • 在执行需要管理员权限的任务时通过弹窗提示用户提升权限
  • 有效防止恶意软件自动获取高权限

典型表现:

  • 普通CMD:受限权限,无法修改系统关键设置
  • 通过UAC提权后的CMD:拥有完整管理员权限,可执行系统级操作

二、实现UAC自启的两种方法

方法1:Visual Studio配置

  1. 创建新项目
  2. 进入项目属性(Project > Properties)
  3. 导航至Linker > Manifest File
  4. 修改UAC Execution Level选项:
    • asInvoker:默认级别
    • highestAvailable:请求最高可用权限
    • requireAdministrator:必须管理员权限
  5. 重新编译后,程序图标将显示盾牌标识

方法2:使用mt.exe工具

mt.exe是Windows SDK提供的清单工具,使用步骤:

  1. 准备manifest文件(包含UAC请求)
  2. 执行命令:
    mt.exe -manifest yourfile.exe.manifest -outputresource:yourfile.exe;1
    
  3. 该命令将UAC声明嵌入可执行文件

三、发布者签名技术

所需工具

  • makecert.exe:创建证书
  • cert2spc.exe:转换证书格式
  • pvk2pfx.exe:合并公私钥
  • signtool.exe:文件签名
  • certmgr.exe:证书管理

签名流程

  1. 创建根证书

    makecert.exe -n "CN=Microsoft Windows" -r -sv RootIssuer.pvk RootIssuer.cer
    
  2. 创建子证书

    makecert.exe -n "CN=Child" -iv RootIssuer.pvk -ic RootIssuer.cer -sv ChildSubject.pvk ChildSubject.cer -sky signature
    
  3. 转换证书格式

    cert2spc.exe ChildSubject.cer ChildSubject.spc
    
  4. 合并为PFX格式

    pvk2pfx.exe -pvk ChildSubject.pvk -pi 123456 -spc ChildSubject.spc -pfx ChildSubject.pfx -f
    
  5. 签名可执行文件

    signtool sign /f ChildSubject.pfx /p 123456 yourfile.exe
    
  6. 证书部署(目标机器):

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

四、注意事项与限制

  1. 签名顺序:必须先添加UAC支持,再进行代码签名

  2. 跨设备限制

    • 签名证书未预装在目标系统时,仍显示"未知发布者"
    • 需先在目标系统安装根证书才能显示自定义发布者信息
  3. 安全影响

    • 此技术并非UAC绕过,只是让程序运行时自动触发UAC提示
    • 最终权限提升仍需用户手动确认

五、实际应用场景

  1. 红队操作中用于提高钓鱼成功率
  2. 权限维持时确保payload以高权限运行
  3. 需要管理员权限的合法工具分发

六、参考资源

  1. mt.exe官方文档
  2. UAC设计指南
  3. 证书签名实践
Windows UAC自启与强签名技术详解 一、UAC基础概念 UAC(用户账户控制)是Windows操作系统的核心安全机制,主要功能: 默认以较低权限运行交互式管理员账户 在执行需要管理员权限的任务时通过弹窗提示用户提升权限 有效防止恶意软件自动获取高权限 典型表现: 普通CMD:受限权限,无法修改系统关键设置 通过UAC提权后的CMD:拥有完整管理员权限,可执行系统级操作 二、实现UAC自启的两种方法 方法1:Visual Studio配置 创建新项目 进入项目属性(Project > Properties) 导航至Linker > Manifest File 修改UAC Execution Level选项: asInvoker :默认级别 highestAvailable :请求最高可用权限 requireAdministrator :必须管理员权限 重新编译后,程序图标将显示盾牌标识 方法2:使用mt.exe工具 mt.exe是Windows SDK提供的清单工具,使用步骤: 准备manifest文件(包含UAC请求) 执行命令: 该命令将UAC声明嵌入可执行文件 三、发布者签名技术 所需工具 makecert.exe:创建证书 cert2spc.exe:转换证书格式 pvk2pfx.exe:合并公私钥 signtool.exe:文件签名 certmgr.exe:证书管理 签名流程 创建根证书 : 创建子证书 : 转换证书格式 : 合并为PFX格式 : 签名可执行文件 : 证书部署 (目标机器): 普通用户权限: 管理员权限: 四、注意事项与限制 签名顺序 :必须先添加UAC支持,再进行代码签名 跨设备限制 : 签名证书未预装在目标系统时,仍显示"未知发布者" 需先在目标系统安装根证书才能显示自定义发布者信息 安全影响 : 此技术并非UAC绕过,只是让程序运行时自动触发UAC提示 最终权限提升仍需用户手动确认 五、实际应用场景 红队操作中用于提高钓鱼成功率 权限维持时确保payload以高权限运行 需要管理员权限的合法工具分发 六、参考资源 mt.exe官方文档 UAC设计指南 证书签名实践