通過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 )。
基於主機的預防:
· 遠端桌面服務:在不需要遠端連線服務的所有使用者工作站和系統上禁用遠端桌面服務。
· 基於主機的防火牆:啟用基於主機的防火牆規則,明確拒絕入站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”檔案的執行體。請注意,攻擊者可以重新命名檔名以避免檢測。相關元件包括但不限於:
·應用程式相容性快取/ Shimcache
· Amcache
·Jump列表
·Prefetch
·服務事件
· CCM最近使用的WMI儲存庫中的應用程式
·登錄檔項
基於網路的預防:
· 遠端連線:需要RDP連線時,強制從指定的跳轉框或集中管理伺服器啟動連線。
·域帳戶:對特權帳戶(例如域管理員)和服務帳戶使用“拒絕通過遠端桌面服務登入”安全設定,因為這些型別的帳戶通常被威脅行為者用於橫向移動到環境中的敏感系統。
基於網路的檢測:
· 防火牆規則:檢視現有防火牆規則,以確定埠轉發漏洞的區域。除了可能使用埠轉發之外,還應對環境中工作站之間的內部通訊進行監控。通常,工作站不需要直接相互通訊,並且可以使用防火牆規則來阻止此類通訊(除非需要)。
· 網路流量:執行網路流量的內容檢查。並非所有在給定埠上通訊的流量都是它看起來的流量。例如,威脅行為者可以使用TCP埠80或443與遠端伺服器建立RDP隧道。深入檢查網路流量可能會發現它實際上不是HTTP或HTTPS,而是完全不同的流量。因此,機構應密切監控其網路流量。
·Snort規則:隧道RDP的主要標誌,當RDP握手具有通常用於其他協議的指定低源埠。
圖5提供了兩個示例Snort規則,可以幫助安全團隊通過識別通常用於其他協議的指定低源埠來識別其網路流量中的RDP隧道。