导语:远程桌面协议(RDP)被管理员广泛地用于内部网络。RDP允许系统所有者和管理员远程管理Windows环境。然而,RDP同样也可以给攻击者提供各种机会进行攻击,这些攻击可以用于red团队场景中的横向渗透。
远程桌面协议(RDP)被管理员广泛地用于内部网络。RDP允许系统所有者和管理员远程管理Windows环境。然而,RDP同样也可以给攻击者提供各种机会进行攻击,这些攻击可以用于red团队场景中的横向渗透。下面的攻击可以让red团队获得凭证,以劫持其他用户的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
Seth-中间人
在执行时,该工具将在后台执行一系列步骤,以确保成功地实现攻击。这些步骤是:
欺骗ARP应答
启用IPv4流量的转发,将来自受害者主机的流量重定向到实施攻击的机器,然后再转发到目标RDP服务器。
配置一个iptable规则来拒绝SYN包,以防止直接RDP身份验证。
捕获目标主机的SYN包。
SSL证书的克隆。
重新配置iptables规则,将来自受害者工作站的通信路由到目标RDP主机上。
阻塞到端口88的通信,以将Kerberos身份验证降级为NTLM。
步骤1-3将在受害者身份验证之前执行。尝试通过RDP对目标服务器进行身份验证的用户将收到以下消息:
远程桌面连接-证书错误。
当用户建立连接时,凭证将以明文形式展现给攻击者。
Seth – RDP明文密码
RDP启动
MDSec发现了一种技术,它允许攻击者通过启动时执行任意代码,在网络中实现横向渗透,并且该技术通过RDP连接进行传播。为了便于攻击,MDSec开发了一个批处理脚本,以实现概念验证和深度攻击脚本。在一个攻击者已经获得访问的工作站中执行批处理脚本将会产生一个shell。
RDP启动-执行BAT文件
如果一个高级用户(管理员或域名管理员)试图通过RDP对已经被感染的主机进行身份验证,那么该批处理脚本将会被复制并在其他用户的系统上复制。
RDP启动-管理员通过RDP连接到工作站
每次工作站启动时,都将执行批处理脚本以实现持久性。
RDP启动-代码传播
当通过RDP向被感染的主机认证的高权限用户重新启动他的机器时,代码将被执行。
RDP启动- DC上的Meterpreter
活动的Meterpreter会话列表将验证攻击者在这两个系统上是否都有访问权限。
RDP启动- Meterpreter活动会话
RDP会话劫持
如果在目标系统上获得了本地管理员访问,攻击者则可能会劫持另一个用户的RDP会话。这使得攻击者不需要再获取该用户的凭证。该技术最初是由Alexander Korzniko发现的,在他的博客中也有描述。
可以被利用的可用会话列表,可以从“用户”选项卡的Windows任务管理器中检索。
RDP会话Gui
可以从命令提示符获得相同的信息。
1 query user
RDP会话终端
创建具有系统级别特权的tscon服务将劫持具有3作为ID的会话。
1 sc create sesshijack binpath= "cmd.exe /k tscon 3 /dest:rdp-tcp#0" 2 net start sesshijack
通过服务劫持的RDP会话
当服务启动时,用户“测试”可以在不知道密码的情况下使用netbiosX会话。
RDP会话通过服务进行劫持——netbiosX用户
Mimikatz也支持这种技术。第一步是检索终端服务会话列表。
1 ts::sessions
Mimikatz -终端服务会话
由于Mimikatz没有作为SYSTEM被执行,所以直接使用会话1的尝试将失败。因此,下面的命令将把单点登录权限从本地管理员提升到SYSTEM,以便在不需要知道用户密码的情况下使用另一个会话。
1 ts::remote /id:1 2 privilege::debug 3 token::elevate
Mimikatz – RDP会话劫持
再次执行以下命令将劫持netbiosX用户的会话。
1 ts::remote /id:1
Mimikatz – netbiosX的RDP会话