通过RDP隧道绕过网络限制
远程桌面服务是Microsoft Windows的一个组件,各个公司都使用它来为系统管理员、工程师和远程员工提供便利。另一方面,远程桌面服务,特别是远程桌面协议(RDP),在目标系统感染期间为远程威胁行为者提供了同样的便利。 当先进的威胁行为者建立立足点并获得充足的登录凭据时,他们可能会从后门切换到使用直接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 )服务器。
图2提供了使用Plink创建的成功RDP隧道的示例,图3提供了使用来自攻击者C2服务器的端口转发建立隧道进行通信的示例。
图2:使用Plink创建的成功RDP隧道示例
图3:从攻击者C2服务器到受害者的成功端口转发示例
应该注意的是,对于能够对系统进行RDP的攻击者,他们必须已经能够通过其他方式访问系统,以便创建或访问必要的隧道程序。例如,攻击者的初始系统感染可能是从网络钓鱼电子邮件中释放有效载荷的结果,旨在建立立足点进入环境,同时获取凭据以提升权限。 RDP隧道进入受感染环境是攻击者通常用于维护其在环境中存在的众多访问方法之一。
三、跳转框Pivoting
RDP不仅是外部访问受感染系统的完美工具,RDP会话还可以跨多个系统进行菊花链连接,以便在环境中横向移动。 FireEye观察到使用Windows Network Shell(netsh)命令的威胁行为者利用RDP端口转发作为访问新发现网段的方式,该网段仅通过管理跳转框可到达。
例如,威胁行为者可以配置跳转框以在任意端口上侦听从之前受感染系统发送的流量。然后,流量将通过跳转框直接转发到分段网络上的任何系统,使用任何指定端口,包括默认RDP端口TCP 3389。这种类型的RDP端口转发为威胁行为者提供了一种利用跳转框允许的网络路由的方法,在正在进行的RDP会话期间不会中断正在使用跳转框的合法管理员。 图4提供了通过管理跳转框到分段网络的RDP横向移动的示例。
图4:使用跳转框通过RDP进行横向移动到分段网络
四、预防和检测RDP
如果启用了RDP,威胁行为者可以通过隧道或端口转发来横向移动并保持在环境中的存在。为了减轻漏洞并检测这些类型的RDP攻击,机构应该关注基于主机和基于网络的预防和检测机制。有关其他信息,请参阅FireEye博客文章(establishing a baseline for remote desktop protocol)。
1. 基于主机的预防:
- 远程桌面服务:在不需要远程连接服务的所有用户工作站和系统上禁用远程桌面服务。
- 基于主机的防火墙:启用基于主机的防火墙规则,明确拒绝入站RDP连接。
- 本地帐户:通过启用“拒绝通过远程桌面服务登录”安全设置,防止在工作站上使用本地帐户使用RDP。
2. 基于主机的检测:
(1) 注册表:
- 查看与Plink连接关联的注册表项,这些连接可被RDP会话隧道滥用以识别唯一的源和目标系统。默认情况下,PuTTY和Plink都会在Windows系统上的以下注册表项中存储会话信息和之前连接的ssh服务器:
- HKEY_CURRENT_USERSoftwareSimonTathamPuTTY
- HKEY_CURRENT_USERSoftWareSimonTathamPuTTYSshHostKeys
同样,使用以下Windows注册表项存储使用netsh创建PortProxy配置:
- HKEY_CURRENT_USERSYSTEMCurrentControlSetServicesPortProxyv4tov4
收集和查看这些注册表项可以识别合法的SSH和意外的隧道活动,当然需要进一步审查以确认其目的。
(2) 事件日志:
查看高真登录事件的事件日志。常见的RDP登录事件包含在Windows系统上的以下事件日志中:
- %systemroot%WindowsSystem32winevtLogsMicrosoft-TerminalServices-LocalSessionmanager%3Operational.evtx
- %systemroot%WindowsSystem32winevtLogsSecurity.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”文件的执行体。请注意,攻击者可以重命名文件名以避免检测。相关组件包括但不限于:
- 应用程序兼容性缓存/ Shimcache
- Amcache
- Jump列表
- Prefetch
- 服务事件
- CCM最近使用的WMI存储库中的应用程序
- 注册表项
(3) 基于网络的预防:
- 远程连接:需要RDP连接时,强制从指定的跳转框或集中管理服务器启动连接。
- 域帐户:对特权帐户(例如域管理员)和服务帐户使用“拒绝通过远程桌面服务登录”安全设置,因为这些类型的帐户通常被威胁行为者用于横向移动到环境中的敏感系统。
(4) 基于网络的检测:
- 防火墙规则:查看现有防火墙规则,以确定端口转发漏洞的区域。除了可能使用端口转发之外,还应对环境中工作站之间的内部通信进行监控。通常,工作站不需要直接相互通信,并且可以使用防火墙规则来阻止此类通信(除非需要)。
- 网络流量:执行网络流量的内容检查。并非所有在给定端口上通信的流量都是它看起来的流量。例如,威胁行为者可以使用TCP端口80或443与远程服务器建立RDP隧道。深入检查网络流量可能会发现它实际上不是HTTP或HTTPS,而是完全不同的流量。因此,机构应密切监控其网络流量。
- Snort规则:隧道RDP的主要标志,当RDP握手具有通常用于其他协议的指定低源端口。
图5提供了两个示例Snort规则,可以帮助安全团队通过识别通常用于其他协议的指定低源端口来识别其网络流量中的RDP隧道。
图5:用于识别RDP隧道的Snort规则示例
五、总结
RDP使IT环境能够为用户提供自由和互操作性。但随着越来越多的威胁攻击者使用RDP跨网段横向移动,安全团队正面临着区别合法和恶意RDP流量的挑战。 因此,应采取适当的基于主机和网络的预防和检测方法来主动监控并能够识别恶意RDP使用情况。