登录
首页 >  文章 >  软件教程

RDP劫持内网漫游,远程代码执行攻略

时间:2025-05-10 21:34:42 487浏览 收藏

远程桌面协议(RDP)是管理员内部网络管理的重要工具,但也为攻击者提供了在内网中自由漫游的机会。通过RDP中间人攻击,攻击者可以获取域帐户的明文密码,利用工具如Seth自动执行攻击。此外,RDP Inception攻击利用“启动项”目录强制登录受害计算机执行恶意代码,而RDP会话劫持则允许攻击者在获得本地管理员权限后劫持其他用户的会话。这些攻击方式不仅获取凭据,还能在受感染的工作站上远程执行任意代码,严重威胁网络安全。

远程桌面协议(RDP)被广泛应用于管理员的内部网络管理中。它允许系统所有者和管理员远程管理其Windows环境。然而,RDP在提供便利的同时,也为攻击者开启了一扇窗,攻击者可利用此协议在内部网络中自由漫游。以下攻击方式可使攻击者获取凭据,劫持其他用户的RDP会话,并在使用RDP作为验证机制的受感染工作站上远程执行任意代码。

RDP中间人攻击是一种常用的获取凭据的攻击手段。通过对RDP会话进行此类攻击,攻击者可以轻易获取用于内网渗透的域帐户的明文密码。Seth是一种可帮助自动执行RDP中间人攻击的工具,无论目标是否启用了网络级身份验证(NLA),它都能完美执行。我们只需提供四个必要参数:

以太网接口、攻击者的IP、受害者工作站的IP(客户端)、目标RDP主机(服务器)的IP。

./seth.sh eth0 10.0.0.2 10.0.0.3 10.0.0.1

内网漫游:通过RDP劫持向远程系统执行任意代码

成功执行后,该工具将在后台执行一系列步骤,以确保攻击的成功实施。以下是执行的相关流程:

通过欺骗ARP回复启用IPv4流量转发,将流量从受害主机重定向到攻击者机器,然后再转发到目标RDP服务器。配置iptable规则拒绝SYN数据包,以防止直接的RDP认证。捕获目标主机的SYN数据包。克隆SSL证书。重新配置iptables规则,以将流量从受害工作站路由到目标RDP主机。阻止到端口88的流量,以将Kerberos身份验证降级到NTLM。这些步骤将在受害者身份验证之前执行。当用户尝试通过RDP向目标服务器进行身份验证时,将会收到以下消息:

内网漫游:通过RDP劫持向远程系统执行任意代码

当用户建立连接时,其凭据将以明文形式显示给攻击者。

内网漫游:通过RDP劫持向远程系统执行任意代码

RDP Inception是MDSec发现的一种攻击方式。其主要是基于“启动(Startup)”程序,利用大家熟知的“启动项”目录,强制登录进入RDP访客计算机执行恶意代码。为此,MDSec还开发了RDPInception的PoC验证程序,一个简单的批处理脚本。在攻击者已经获得访问权限的工作站上执行批处理脚本,攻击者将会获取到一个shell。

内网漫游:通过RDP劫持向远程系统执行任意代码

如果提权用户(管理员或域管理员)尝试通过RDP与已感染的主机进行身份验证,则批处理脚本将会被系统上的其他用户复制。

内网漫游:通过RDP劫持向远程系统执行任意代码

批处理脚本将会在工作站每次启动时执行,以实现后门持久化。

内网漫游:通过RDP劫持向远程系统执行任意代码

当通过RDP向受感染主机验证的提权用户重启他的机器时,代码将被执行。

内网漫游:通过RDP劫持向远程系统执行任意代码

新的Meterpreter会话将在管理员的主机上,通过RDP服务的滥用被打开,而不需要直接攻击该系统。

内网漫游:通过RDP劫持向远程系统执行任意代码

active Meterpreter sessions列表,将验证攻击者是否可以在两个系统上访问。

内网漫游:通过RDP劫持向远程系统执行任意代码

RDP会话劫持如果攻击者在目标系统上获得本地管理员访问权限,则可能劫持其他用户的RDP会话。这也解决了攻击者对该用户的凭据需求。这项技术最初是由Alexander Korznikov发现的,在他的博客中已有描述。

可使用的可用会话列表可以在Windows任务管理器中的“Users“选项卡中查看。

内网漫游:通过RDP劫持向远程系统执行任意代码

也可以从命令提示符中获取相同的信息。

query user

内网漫游:通过RDP劫持向远程系统执行任意代码

创建一个使用系统级权限执行tscon的服务,将劫持ID为3的会话。

sc create sesshijack binpath= "cmd.exe /k tscon 3 /dest:rdp-tcp#0" net start sesshijack

内网漫游:通过RDP劫持向远程系统执行任意代码

当服务启动时,用户“test”可以在不知道他密码的情况下使用netbiosX的会话。

内网漫游:通过RDP劫持向远程系统执行任意代码

Mimikatz也支持这种技术。第一步是检索终端服务会话列表。

ts::sessions

内网漫游:通过RDP劫持向远程系统执行任意代码

尝试直接使用会话1将失败,因为Mimikatz并未以SYSTEM权限执行。因此,下列命令将会将token从本地管理员提升到SYSTEM。这样一来,当再次使用其他会话时,将不需要提供用户的密码。

ts::remote /id:1 privilege::debug token::elevate

内网漫游:通过RDP劫持向远程系统执行任意代码

再次执行以下命令,将成功劫持netbiosX用户的会话。

ts::remote /id:1

内网漫游:通过RDP劫持向远程系统执行任意代码

*参考来源:pentestlab,FB小编 secist 编译,转载请注明来自FreeBuf.COM

到这里,我们也就讲完了《RDP劫持内网漫游,远程代码执行攻略》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于会话劫持,中间人攻击,RDP,RDPInception,远程执行代码的知识点!

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>