通過RDP隧道繞過網(wǎng)絡(luò)限制
遠(yuǎn)程桌面服務(wù)是Microsoft Windows的一個(gè)組件,各個(gè)公司都使用它來為系統(tǒng)管理員、工程師和遠(yuǎn)程員工提供便利。另一方面,遠(yuǎn)程桌面服務(wù),特別是遠(yuǎn)程桌面協(xié)議(RDP),在目標(biāo)系統(tǒng)感染期間為遠(yuǎn)程威脅行為者提供了同樣的便利。 當(dāng)先進(jìn)的威脅行為者建立立足點(diǎn)并獲得充足的登錄憑據(jù)時(shí),他們可能會(huì)從后門切換到使用直接RDP會(huì)話進(jìn)行遠(yuǎn)程訪問。 當(dāng)惡意軟件從目標(biāo)機(jī)中移除時(shí),入侵變得越來越難以檢測。
一、RDP可避開規(guī)則
與非圖形后門相比,威脅行為者更喜歡RDP的穩(wěn)定性和功能性優(yōu)勢,但這可能會(huì)在系統(tǒng)上留下不必要的痕跡。由此,F(xiàn)ireEye觀察到使用本機(jī)Windows RDP程序的威脅行為者在受感染環(huán)境中跨系統(tǒng)進(jìn)行橫向連接。從歷史上看,受防火墻和NAT規(guī)則保護(hù)的非暴露系統(tǒng)通常被認(rèn)為不容易受到入站RDP嘗試的影響;然而,威脅行為者越來越多地開始使用網(wǎng)絡(luò)隧道和基于主機(jī)的端口轉(zhuǎn)發(fā)來破壞這些企業(yè)控制策略。
網(wǎng)絡(luò)隧道和端口轉(zhuǎn)發(fā)利用防火墻“針孔”(不受防火墻保護(hù)的端口,允許應(yīng)用程序訪問受防火墻保護(hù)的網(wǎng)絡(luò)中的主機(jī)上的服務(wù))與被防火墻阻止的遠(yuǎn)程服務(wù)器建立連接。一旦通過防火墻建立了與遠(yuǎn)程服務(wù)器的連接,該連接就可以用作傳輸機(jī)制,通過防火墻發(fā)送或“隧道”本地偵聽服務(wù)(位于防火墻內(nèi)),使遠(yuǎn)程服務(wù)器可以訪問它們(位于防火墻外面),如圖1所示。
圖1:使用RDP和SSH網(wǎng)絡(luò)隧道繞過企業(yè)防級(jí)火墻的示例
二、入站RDP通道
用于隧道RDP會(huì)話的常用實(shí)用程序是PuTTY Link,通常稱為Plink。Plink可用于使用任意源和目標(biāo)端口與其他系統(tǒng)建立安全shell(SSH)網(wǎng)絡(luò)連接。由于許多IT環(huán)境要么不執(zhí)行協(xié)議檢查,要么不阻止從其網(wǎng)絡(luò)出站的SSH通信,因此FIN8等攻擊者使用Plink創(chuàng)建加密隧道,允許受感染系統(tǒng)上的RDP端口與攻擊者命令和控制進(jìn)行通信(C2 )服務(wù)器。
圖2提供了使用Plink創(chuàng)建的成功RDP隧道的示例,圖3提供了使用來自攻擊者C2服務(wù)器的端口轉(zhuǎn)發(fā)建立隧道進(jìn)行通信的示例。
圖2:使用Plink創(chuàng)建的成功RDP隧道示例
圖3:從攻擊者C2服務(wù)器到受害者的成功端口轉(zhuǎn)發(fā)示例
應(yīng)該注意的是,對(duì)于能夠?qū)ο到y(tǒng)進(jìn)行RDP的攻擊者,他們必須已經(jīng)能夠通過其他方式訪問系統(tǒng),以便創(chuàng)建或訪問必要的隧道程序。例如,攻擊者的初始系統(tǒng)感染可能是從網(wǎng)絡(luò)釣魚電子郵件中釋放有效載荷的結(jié)果,旨在建立立足點(diǎn)進(jìn)入環(huán)境,同時(shí)獲取憑據(jù)以提升權(quán)限。 RDP隧道進(jìn)入受感染環(huán)境是攻擊者通常用于維護(hù)其在環(huán)境中存在的眾多訪問方法之一。
三、跳轉(zhuǎn)框Pivoting
RDP不僅是外部訪問受感染系統(tǒng)的完美工具,RDP會(huì)話還可以跨多個(gè)系統(tǒng)進(jìn)行菊花鏈連接,以便在環(huán)境中橫向移動(dòng)。 FireEye觀察到使用Windows Network Shell(netsh)命令的威脅行為者利用RDP端口轉(zhuǎn)發(fā)作為訪問新發(fā)現(xiàn)網(wǎng)段的方式,該網(wǎng)段僅通過管理跳轉(zhuǎn)框可到達(dá)。
例如,威脅行為者可以配置跳轉(zhuǎn)框以在任意端口上偵聽從之前受感染系統(tǒng)發(fā)送的流量。然后,流量將通過跳轉(zhuǎn)框直接轉(zhuǎn)發(fā)到分段網(wǎng)絡(luò)上的任何系統(tǒng),使用任何指定端口,包括默認(rèn)RDP端口TCP 3389。這種類型的RDP端口轉(zhuǎn)發(fā)為威脅行為者提供了一種利用跳轉(zhuǎn)框允許的網(wǎng)絡(luò)路由的方法,在正在進(jìn)行的RDP會(huì)話期間不會(huì)中斷正在使用跳轉(zhuǎn)框的合法管理員。 圖4提供了通過管理跳轉(zhuǎn)框到分段網(wǎng)絡(luò)的RDP橫向移動(dòng)的示例。
圖4:使用跳轉(zhuǎn)框通過RDP進(jìn)行橫向移動(dòng)到分段網(wǎng)絡(luò)
四、預(yù)防和檢測RDP
如果啟用了RDP,威脅行為者可以通過隧道或端口轉(zhuǎn)發(fā)來橫向移動(dòng)并保持在環(huán)境中的存在。為了減輕漏洞并檢測這些類型的RDP攻擊,機(jī)構(gòu)應(yīng)該關(guān)注基于主機(jī)和基于網(wǎng)絡(luò)的預(yù)防和檢測機(jī)制。有關(guān)其他信息,請參閱FireEye博客文章(establishing a baseline for remote desktop protocol)。
1. 基于主機(jī)的預(yù)防:
- 遠(yuǎn)程桌面服務(wù):在不需要遠(yuǎn)程連接服務(wù)的所有用戶工作站和系統(tǒng)上禁用遠(yuǎn)程桌面服務(wù)。
- 基于主機(jī)的防火墻:啟用基于主機(jī)的防火墻規(guī)則,明確拒絕入站RDP連接。
- 本地帳戶:通過啟用“拒絕通過遠(yuǎn)程桌面服務(wù)登錄”安全設(shè)置,防止在工作站上使用本地帳戶使用RDP。
2. 基于主機(jī)的檢測:
(1) 注冊表:
- 查看與Plink連接關(guān)聯(lián)的注冊表項(xiàng),這些連接可被RDP會(huì)話隧道濫用以識(shí)別唯一的源和目標(biāo)系統(tǒng)。默認(rèn)情況下,PuTTY和Plink都會(huì)在Windows系統(tǒng)上的以下注冊表項(xiàng)中存儲(chǔ)會(huì)話信息和之前連接的ssh服務(wù)器:
- HKEY_CURRENT_USER\Software\SimonTatham\PuTTY
- HKEY_CURRENT_USER\SoftWare\SimonTatham\PuTTY\SshHostKeys
同樣,使用以下Windows注冊表項(xiàng)存儲(chǔ)使用netsh創(chuàng)建PortProxy配置:
- HKEY_CURRENT_USER\SYSTEM\CurrentControlSet\Services\PortProxy\v4tov4
收集和查看這些注冊表項(xiàng)可以識(shí)別合法的SSH和意外的隧道活動(dòng),當(dāng)然需要進(jìn)一步審查以確認(rèn)其目的。
(2) 事件日志:
查看高真登錄事件的事件日志。常見的RDP登錄事件包含在Windows系統(tǒng)上的以下事件日志中:
- %systemroot%\Windows\System32\winevt\Logs\Microsoft-TerminalServices-LocalSessionmanager%3Operational.evtx
- %systemroot%\Windows\System32\winevt\Logs\Security.evtx
“TerminalServices-LocalSessionManager”日志包含由EID 21標(biāo)識(shí)的成功交互式本地或遠(yuǎn)程登錄事件,以及成功重新連接之前建立的RDP會(huì)話,該會(huì)話未由EID 25標(biāo)識(shí)的正確用戶注銷終止。“安全”日志包含由EID 4624標(biāo)識(shí)的10個(gè)成功的遠(yuǎn)程交互式登錄(RDP)。記錄為本地主機(jī)IP地址(127.0.0.1 – 127.255.255.255)的源IP地址表示從偵聽本地主機(jī)端口路由到本地主機(jī)的RDP的隧道登錄端口TCP 3389。
檢查“plink.exe”文件的執(zhí)行體。請注意,攻擊者可以重命名文件名以避免檢測。相關(guān)組件包括但不限于:
- 應(yīng)用程序兼容性緩存/ Shimcache
- Amcache
- Jump列表
- Prefetch
- 服務(wù)事件
- CCM最近使用的WMI存儲(chǔ)庫中的應(yīng)用程序
- 注冊表項(xiàng)
(3) 基于網(wǎng)絡(luò)的預(yù)防:
- 遠(yuǎn)程連接:需要RDP連接時(shí),強(qiáng)制從指定的跳轉(zhuǎn)框或集中管理服務(wù)器啟動(dòng)連接。
- 域帳戶:對(duì)特權(quán)帳戶(例如域管理員)和服務(wù)帳戶使用“拒絕通過遠(yuǎn)程桌面服務(wù)登錄”安全設(shè)置,因?yàn)檫@些類型的帳戶通常被威脅行為者用于橫向移動(dòng)到環(huán)境中的敏感系統(tǒng)。
(4) 基于網(wǎng)絡(luò)的檢測:
- 防火墻規(guī)則:查看現(xiàn)有防火墻規(guī)則,以確定端口轉(zhuǎn)發(fā)漏洞的區(qū)域。除了可能使用端口轉(zhuǎn)發(fā)之外,還應(yīng)對(duì)環(huán)境中工作站之間的內(nèi)部通信進(jìn)行監(jiān)控。通常,工作站不需要直接相互通信,并且可以使用防火墻規(guī)則來阻止此類通信(除非需要)。
- 網(wǎng)絡(luò)流量:執(zhí)行網(wǎng)絡(luò)流量的內(nèi)容檢查。并非所有在給定端口上通信的流量都是它看起來的流量。例如,威脅行為者可以使用TCP端口80或443與遠(yuǎn)程服務(wù)器建立RDP隧道。深入檢查網(wǎng)絡(luò)流量可能會(huì)發(fā)現(xiàn)它實(shí)際上不是HTTP或HTTPS,而是完全不同的流量。因此,機(jī)構(gòu)應(yīng)密切監(jiān)控其網(wǎng)絡(luò)流量。
- Snort規(guī)則:隧道RDP的主要標(biāo)志,當(dāng)RDP握手具有通常用于其他協(xié)議的指定低源端口。
圖5提供了兩個(gè)示例Snort規(guī)則,可以幫助安全團(tuán)隊(duì)通過識(shí)別通常用于其他協(xié)議的指定低源端口來識(shí)別其網(wǎng)絡(luò)流量中的RDP隧道。
圖5:用于識(shí)別RDP隧道的Snort規(guī)則示例
五、總結(jié)
RDP使IT環(huán)境能夠?yàn)橛脩籼峁┳杂珊突ゲ僮餍?。但隨著越來越多的威脅攻擊者使用RDP跨網(wǎng)段橫向移動(dòng),安全團(tuán)隊(duì)正面臨著區(qū)別合法和惡意RDP流量的挑戰(zhàn)。 因此,應(yīng)采取適當(dāng)?shù)幕谥鳈C(jī)和網(wǎng)絡(luò)的預(yù)防和檢測方法來主動(dòng)監(jiān)控并能夠識(shí)別惡意RDP使用情況。