FakeRDP 是一個基於 C# 與 .NET 10 框架開發的防禦型 RDP 蜜罐。其核心目標是在受控的網路環境中模擬一個 Windows 遠端桌面服務,用以吸引並記錄試圖進行掃描或暴力破解的攻擊者。透過完整模擬 RDP 的協定握手流程,該工具能夠在攻擊者嘗試登入時,擷取其使用的帳號、密碼及網域資訊,協助資安人員分辨對方的攻擊手法是屬於字典攻擊還是特定的漏洞利用。
專案定位與解決問題
在企業網路防禦中,直接監控正式伺服器的登入失敗日誌雖能發現攻擊,但難以獲知攻擊者嘗試使用的具體憑證組合。FakeRDP 透過在非標準連接埠(如 4499, 4500 等)部署偽裝服務,將攻擊流量引導至隔離環境。它解決了偵測掃描器指紋與擷取攻擊者憑證的需求,且由於其不改寫系統服務或防火牆規則,具有零系統侵入的特性,降低了對主機環境的影響。
核心運作機制
FakeRDP 的運作流程嚴格遵循 RDP 協定規範,將連線分為多個階段處理。首先是 X.224 協商階段,伺服器會根據設定檔決定接受哪種安全模式。接著進入 TLS 1.2 握手,利用 RSA 憑證建立加密通道。隨後進入 MCS 階段,處理連線初始化、建立網域與附加使用者等步驟。最後,當客戶端送出包含認證資訊的 Info PDU 時,蜜罐會解析其中的 UTF-16 字串,提取出帳號與密碼。
該工具支援三種安全模式:標準 RDP 安全模式(利用 RSA 金鑰交換與 RC4 加密),SSL/TLS 安全模式(在 TLS 通道內讀取明文資訊),以及 NLA/CredSSP 模式。值得注意的是,在 NLA 模式下,由於現代 Windows 客戶端會驗證 SPNEGO 的 mechListMIC,蜜罐無法在不持有正確密碼雜湊的情況下完成驗證,因此在 NLA 路徑中僅能擷取帳號與網域,無法取得明文密碼。
技術亮點與資源保護
為了防止蜜罐本身被攻擊者利用資源耗盡攻擊(DoS),FakeRDP 實作了階層式的資源保護機制。它將連線分為輕量路徑與深度路徑:當全域併發數或單一 IP 的連線數超過閾值時,系統會自動降級為輕量回應,僅回覆 X.224 封包讓掃描器認為服務存在,而不再投入 TLS 握手或記憶體分配。此外,它採用 Lazy 建檔機制,只有進入深度處理的連線才會建立獨立的 Session 目錄。
在資料可靠性方面,專案引入了背景事件管線,利用 Bounded Channel 將憑證擷取事件與網路連線解耦,由背景寫入器批次記錄至 JSONL 檔案,避免磁碟 I/O 反壓影響網路效能。同時,它針對 Windows Schannel 的特性,將憑證以 PFX 格式持久化並註冊至金鑰存放區,解決了臨時金鑰不被系統支援的問題。
導入限制與成熟度判斷
從技術實作來看,FakeRDP 具有極高的協定還原度,能通過 Nmap 的服務偵測(判定為 ms-wbt-server),並提供完整的回歸測試集。然而,其成熟度仍處於研究與防禦工具階段,而非完整的 RDP 伺服器,它並不提供真實的桌面會話,僅在認證階段結束後關閉連線。
導入風險主要在於憑證管理與法律合規性。由於蜜罐會記錄明文密碼,這些日誌檔案屬於高度敏感資料,若儲存環境未加密或權限控管不足,將造成二次洩漏風險。此外,部署者必須確保僅在擁有授權的網段執行,以免觸犯妨害電腦使用罪。
實務建議
在實際部署時,建議將其放置於 DMZ 或隔離的蜜罐區,並搭配防火牆限制來源 IP。透過分析擷取結果的模式,例如單一 IP 嘗試大量不同密碼可判定為字典攻擊,而大量不同 IP 嘗試常見帳號則可判定為網際網路蠕蟲掃描。對於 NLA 模式中重複出現的 NTLM Type 3 封包,則可警示可能已有攻擊者掌握了有效的網域帳號。