通過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_USER\Software\SimonTatham\PuTTY
- HKEY_CURRENT_USER\SoftWare\SimonTatham\PuTTY\SshHostKeys
同樣,使用以下Windows注冊表項存儲使用netsh創建PortProxy配置:
- HKEY_CURRENT_USER\SYSTEM\CurrentControlSet\Services\PortProxy\v4tov4
收集和查看這些注冊表項可以識別合法的SSH和意外的隧道活動,當然需要進一步審查以確認其目的。
(2) 事件日志:
查看高真登錄事件的事件日志。常見的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”文件的執行體。請注意,攻擊者可以重命名文件名以避免檢測。相關組件包括但不限于:
- 應用程序兼容性緩存/ 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使用情況。