萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 網路安全 >  >> 資訊安全防護

一鍵清除遠程桌面連接歷史 (RDP 緩存 IP/域名),消除信息洩露隱患

Windows 遠程桌面連接 (MSTSC) 會自動記錄成功連接的 IP/域名,顯示在下拉列表中。方便複用的同時,**洩露內網拓撲、服務器地址、管理員習慣**,被駭客利用可進行針對性滲透。本文提供徹底清除與持久禁用方案。

清除現有記錄 (兩個存儲位置)

  1. 註冊表 MRU 列表:
    路徑:`HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default`
    右側值名 (如 `MRU0`、`MRU1`...) 存儲歷史 IP/域名,**全選刪除**。
  2. 默認連接文件:
    路徑:`%UserProfile%\Documents\Default.rdp` (即「我的文檔」下)
    此文件存儲**最後一次連接參數** (IP/域名/用戶名/顯示設置等),**直接刪除文件**。

持久禁用歷史記錄 (權限鎖定法)

  1. 打開註冊表編輯器,定位上述 `Default` 鍵。
  2. 右鍵 →「權限」→「高級」→「停用繼承」→「將繼承的權限轉換為此對象的顯式權限」。
  3. 移除所有權限條目,**僅保留 SYSTEM 與當前用戶的「讀取」權限**,**拒絕「寫入/修改」**。
  4. 同理對 `Default.rdp` 文件:右鍵屬性 → 安全 → 編輯 → 拒絕當前用戶「寫入/修改」。

設置後,MSTSC 無法寫入新記錄,下拉列表永遠為空,最後連接欄也不再自動填充。

自動化腳本 (PowerShell 一鍵執行)

# 清除註冊表 MRU
$regPath = 'HKCU:\Software\Microsoft\Terminal Server Client\Default'
if (Test-Path $regPath) {
    Get-ItemProperty $regPath | ForEach-Object {
        $_.PSObject.Properties | Where-Object { $_.Name -match '^MRU\d+$' } | ForEach-Object {
            Remove-ItemProperty -Path $regPath -Name $_.Name -Force
        }
    }
}
# 刪除 Default.rdp
$rdp = Join-Path $env:USERPROFILE 'Documents\Default.rdp'
if (Test-Path $rdp) { Remove-Item $rdp -Force }

# 鎖定權限 (需管理員)
$acl = Get-Acl $regPath
$acl.SetAccessRuleProtection($true, $false)
$rule = New-Object System.Security.AccessControl.RegistryAccessRule($env:USERNAME, 'ReadKey', 'ContainerInherit,ObjectInherit', 'None', 'Allow')
$acl.RemoveAccessRuleAll($rule) # 先移除舊規則
$acl.AddAccessRule((New-Object System.Security.AccessControl.RegistryAccessRule('SYSTEM','FullControl','ContainerInherit,ObjectInherit','None','Allow')))
$acl.AddAccessRule((New-Object System.Security.AccessControl.RegistryAccessRule($env:USERNAME,'ReadKey','ContainerInherit,ObjectInherit','None','Allow')))
Set-Acl $regPath $acl

$rdpAcl = Get-Acl $rdp
$rdpAcl.SetAccessRuleProtection($true,$false)
$rdpAcl.AddAccessRule((New-Object System.Security.AccessControl.FileSystemAccessRule('SYSTEM','FullControl','ContainerInherit,ObjectInherit','None','Allow')))
$rdpAcl.AddAccessRule((New-Object System.Security.AccessControl.FileSystemAccessRule($env:USERNAME,'Read','ContainerInherit,ObjectInherit','None','Allow')))
Set-Acl $rdp $rdpAcl

Write-Host "RDP history cleared & write-protected. Reopen MSTSC to verify."

進階:組策略統一管控 (企業環境)

  • 用戶配置 → 管理範本 → Windows 元件 → 遠程桌面連接 →「不允許在遠程桌面連接中保存密碼」→ **啟用** (不存密碼)。
  • 用戶配置 → 管理範本 → Windows 元件 → 遠程桌面服務 → 遠程桌面會話主機 → 遠程會話環境 →「不保存遠程桌面連接的歷史記錄」→ **啟用** (Win10/Server 2016+ 支援)。
  • 配合 AppLocker/WDAC 限制 `mstsc.exe` 僅允許簽名版本運行,防止被替換為記錄版本。

Mac/Linux 遠程桌面客戶端清理

  • Microsoft Remote Desktop (Mac App Store 版):偏好設置 → 常規 → 「清除歷史記錄」/ 手動刪除 `~/Library/Containers/com.microsoft.rdc.macos/Data/Library/Application Support/Microsoft Remote Desktop/` 下相關 plist/sqlite。
  • Remmina / Vinagre / FreeRDP:配置文件通常在 `~/.config/remmina/`、`~/.local/share/remmina/`、`~/.freerdp/known_hosts2`,刪除對應條目。

遠程桌面歷史看似微不足道,實則是**偵察階段的禮物**。養成「用完即清、權限鎖定、策略下發」習慣,不給駭客留線索。

copyright © 萬盛學電腦網 all rights reserved