遠(yuǎn)程桌面協(xié)議(Remote Desktop Protocol,簡稱RDP)是用于遠(yuǎn)程控制系統(tǒng)較流行的通信協(xié)議之一,適用于當(dāng)前大多數(shù)Windows操作系統(tǒng),通過提供圖形用戶界面,允許用戶遠(yuǎn)程訪問服務(wù)器或其他計(jì)算機(jī)。Microsoft甚至將其定位為管理運(yùn)行Windows系統(tǒng)Azure虛擬機(jī)的默認(rèn)方法。
由于RDP是一種非常流行的協(xié)議,攻擊者一旦獲取訪問權(quán)限,就會(huì)使用其轉(zhuǎn)移到其他系統(tǒng),所以,RDP也成功吸引了攻擊者的目光。因?yàn)樗麄円庾R到,相較于利用沒有必勝把握的漏洞,使用RDP這種遠(yuǎn)程訪問工具明顯更加高效——只需獲得正確的憑據(jù)即可訪問企業(yè)網(wǎng)絡(luò)。
根據(jù)最近的X-Force報(bào)告,竊取訪問這些系統(tǒng)的憑據(jù)是暗網(wǎng)上利潤最可觀的生意之一,不過,這些直接暴露的服務(wù)器并不是攻擊者使用(或者說濫用)RDP的唯一系統(tǒng),他們的目標(biāo)之一是融入常規(guī)流量。
RDP如何運(yùn)行?
在深入探討RDP威脅和防御之前,最好先了解一下它是如何運(yùn)行的。RDP是一個(gè)雙向通信協(xié)議。它可以將服務(wù)器的屏幕輸出傳輸?shù)娇蛻舳耍粚㈡I盤和鼠標(biāo)的輸入內(nèi)容從客戶端傳輸?shù)椒?wù)器;這個(gè)過程是非對稱的,因?yàn)榇蠖鄶?shù)數(shù)據(jù)都是從服務(wù)器到客戶端,但客戶端返回?cái)?shù)據(jù)很少。客戶端和服務(wù)器在建立通信之前必須經(jīng)歷多個(gè)階段。
客戶端連接后,就與服務(wù)器使用設(shè)置(例如屏幕分辨率)、支持功能與許可證信息達(dá)成一致。然后,它們就RDP安全類型達(dá)成一致,并從兩種支持模式中進(jìn)行選擇:一是標(biāo)準(zhǔn)模式,基于RC4;二是增強(qiáng)模式,其中RDP依賴于其他協(xié)議,例如TLS或CredSSP。
最后,客戶端與服務(wù)器必須就所需的通道數(shù)量達(dá)成一致。所謂通道即單獨(dú)的數(shù)據(jù)流,每個(gè)數(shù)據(jù)流都有自己的ID,從而構(gòu)成遠(yuǎn)程桌面協(xié)議。這些通道可以重定向?qū)ξ募到y(tǒng)的訪問,或啟用客戶端與服務(wù)器之間的剪貼板共享。
RDP相關(guān)漏洞及APT組織
BlueKeep
2019年,研究人員發(fā)現(xiàn)了RDP中的一個(gè)關(guān)鍵漏洞,稱為“BlueKeep”,利用該漏洞(CVE-2019-0708)可遠(yuǎn)程執(zhí)行隨機(jī)代碼,無需用戶執(zhí)行任何操作,同時(shí)無需有效憑證。這些事實(shí)結(jié)合起來可能會(huì)導(dǎo)致蠕蟲——可以在易受攻擊的系統(tǒng)間自我傳播的惡意軟件。幾年前出現(xiàn)的Wanncry惡意軟件中曾發(fā)現(xiàn)過了類似事情。BlueKeep的顯著特點(diǎn)是它可以連接到較老的Windows系統(tǒng)。這迫使微軟采取奇怪的步驟為其不再支持的系統(tǒng)版本制作新補(bǔ)丁。
DejaBlue
2019年8月,研究人員公布DejaBlue——它不是一個(gè)漏洞,而是一系列漏洞,類似于BlueKeep,允許攻擊者在沒有任何形式的身份驗(yàn)證情況下劫持易受攻擊的系統(tǒng)。與BlueKeep不同的是,DejaBlue的漏洞位于較新版本的Windows中。有時(shí)候,攻擊者無需濫用漏洞,只要簡單地利用配置錯(cuò)誤就能進(jìn)行攻擊。RDP安全中一些常見的風(fēng)險(xiǎn)包括:弱用戶登錄憑據(jù);未對RDP登錄服務(wù)器的行為進(jìn)行記錄或監(jiān)控,這些系統(tǒng)允許攻擊者隨意嘗試蠻力或密碼噴灑攻擊;未經(jīng)任何網(wǎng)絡(luò)過濾公開暴露的系統(tǒng)。
經(jīng)常利用RDP實(shí)施攻擊的組織包括:APT41、FIN6、FIN7等組織使用RDP進(jìn)行橫向移動(dòng);FLIPSIDE等組織使用RDP來竊取信息,例如,Ngrok就是一個(gè)合法的反向代理,可以通過對RDP中的流量隧道化來滲漏受害者數(shù)據(jù);WannaCry惡意軟件可以在現(xiàn)有的遠(yuǎn)程桌面會(huì)話中執(zhí)行惡意軟件,這種對會(huì)話的“竊取”行為通常稱為“RDP劫持”。
防范建議
雖然存在諸多安全風(fēng)險(xiǎn),但RDP仍然可以為我們提供很多價(jià)值。想要保護(hù)遠(yuǎn)程桌面服務(wù)器,需要考慮許多關(guān)鍵因素。
首先,補(bǔ)丁管理是基礎(chǔ),確保系統(tǒng)始終保持最新狀態(tài),尤其是對于關(guān)鍵的遠(yuǎn)程訪問服務(wù)而言,其重要性不言而喻。其次,大多數(shù)情況下,組織無需向全世界公開RDP,組織可以使用防火墻、IP限制、通過VPN限制訪問或使用即時(shí)訪問,后者大大降低了風(fēng)險(xiǎn),并且可以確保組織在需要時(shí)隨時(shí)訪問該服務(wù)。再次,確保不要為啟用RDP的帳戶使用易于猜測的密碼。如果不需要,不要允許遠(yuǎn)程訪問所有系統(tǒng)用戶。
此外,實(shí)現(xiàn)某種形式的自動(dòng)帳戶鎖定非常有意義,可以防止攻擊者通過暴力破解來猜測密碼。組織可能還需要啟用網(wǎng)絡(luò)級別身份驗(yàn)證或NLA——這是一種緩解措施,可防止對RDP隧道的意外訪問。
監(jiān)控和取證工件
無論組織的RDP設(shè)置多么安全,總會(huì)有攻擊者抓到機(jī)會(huì)的時(shí)候。這時(shí),組織需要依靠日志記錄和監(jiān)控來分析正在發(fā)生的事情。
RDP取證工件的重要來源包括:命令quser、qwinsta和qprocess提供有關(guān)RDP用戶、會(huì)話和進(jìn)程的信息;Microsoft-Windows-Terminal-Services-RemoteConnectionManager和Windows-TerminalServices-LocalSessionManager通知客戶端網(wǎng)絡(luò)連接以及RDP會(huì)話的起止;最后,Microsoft-Windows-Security-Auditing包括認(rèn)證嘗試成功或失敗的事件。
盡管RDP確實(shí)存在諸多風(fēng)險(xiǎn),而且攻擊者對遠(yuǎn)程訪問工具的興趣也日趨高漲,但這并不意味著組織不能以安全和可控的方式部署它們。如果組織充分考慮上述預(yù)防措施,并設(shè)置了足夠的日志記錄和監(jiān)控策略,應(yīng)該會(huì)收到不錯(cuò)的效果。