如何清除Windows中的RDP連接歷史記錄
遠程桌面協議(RDP, Remote Desktop Protocol)是一個多通道(multi-channel)的協議,讓用戶(客戶端或稱「本地電腦」)連上提供微軟終端機服務的電腦(伺服器端或稱「遠程電腦」),大部分的Windows都有客戶端所需軟體。
對於每次成功連接後,Windows(mstsc.exe)中的RDP客戶端都會保存遠程計算機名稱或IP地址以及用於登錄的用戶名。這樣在下一次開始連接時,RDP客戶端就會自動提供用戶之前使用的連接過。用戶可以從連接列表中選擇遠程rdp伺服器的名稱,這樣客戶端就會自動填寫用於登錄的用戶名。
從用戶的角度來看,這確實很方便,但從安全形度來看卻是不安全的,特別是當rdp連接發生在公用或不可信的計算機時。
有關遠程桌面(終端)會話的信息會被單獨存儲在每個用戶的配置文件中,即用戶(假設普通用戶而不是管理員)不能查看另一個用戶的RDP連接歷史。
主要內容分為以下3大塊:
1.如何從註冊表中刪除RDP連接緩存;
2.如何使用腳本清除RDP連接歷史記錄;
3.如何清除緩存的RDP憑證;
如何從註冊表中刪除RDP連接緩存
有關所有RDP連接的信息都會被存儲在每個用戶的註冊表中,由於使用內置Windows工具從rdp連接列表中刪除一台或多台計算機是不可能的,你將不得不手動刪除某些註冊表項。
1.運行註冊表編輯器regedit.exe,並進入HKEY_CURRENT_USERSoftwareMicrosoftTerminal Server Client。
2.這時你需要兩個註冊表項,默認表項(存儲最後10個rdp連接的歷史記錄)和伺服器表項(包含先前用於登錄的所有rdp伺服器和用戶名的列表)。
3.將註冊表項HKEY_CURRENT_USERSoftwareMicrosoftTerminal Server ClientDefault進行擴展,其中包含最近使用過(Most recently used即MRU)的遠程rdp伺服器的10個IP地址或DNS名稱列表。遠程桌面伺服器的名稱或IP地址保存在MRU *值中。所以要清除最近的rdp連接的歷史記錄,就要選擇名稱為MRU0-MRU9的所有值,右鍵單擊並選擇刪除。
4.接下來,將HKEY_CURRENT_USERSoftwareMicrosoftTerminal Server ClientServers進行擴展。該擴展包含所有已經建立的RDC(遠程桌面客戶端)連接的列表。如果使用任何伺服器的名稱或IP地址展開節點,則UsernameHint(提示用戶名)將顯示由rdp連接的用戶的名稱。
5.要清除所有rdp連接和保存的用戶名的歷史記錄,你就必須清除伺服器註冊表項的內容。由於無法一次選擇所有註冊表項,因此最簡單辦法就是刪除整個伺服器註冊表項,然後手動重新創建它。
6.除了指定的註冊表項之外,還需要刪除Default.rdp中存儲的默認rdp連接文件,其中包含有關最新的rdp會話的信息,默認rdp連接文件是位於文檔目錄中的隱藏文件。
注意:上文所述的清除終端rdp連接歷史記錄的方法適用於所有版本的Windows XP,Vista,Windows 7,Windows 8和Windows 10以及Windows Server平台,如Windows Server 2003/2008/2012/2016。
如何使用腳本清除RDP連接歷史記錄
我已經在上文介紹了如何通過註冊表手動清除遠程桌面歷史記錄。但是,手動執行,特別是在多台計算機上執行時非常耗時的。因此,我編寫了一個小腳本(BAT文件),可以讓你輕鬆的自動清除歷史記錄。
可以將以下腳本放入開始連接的時候,這樣就可以自動執行rdp歷史清理,或使用組策略將其部署到計算機中。
@echo off
reg delete "HKEY_CURRENT_USERSoftwareMicrosoftTerminal Server ClientDefault" /va /f
reg delete "HKEY_CURRENT_USERSoftwareMicrosoftTerminal Server ClientServers" /f
reg add "HKEY_CURRENT_USERSoftwareMicrosoftTerminal Server ClientServers"
cd %userprofile%documents
attrib Default.rdp -s -h
del Default.rdp
注意:在某些情況下,文檔文件夾可以從標準目錄(c:users\%username% Documents)中移動。例如,由於系統驅動器上缺少空間而文檔文件夾存儲在另一個分區上。在這種情況下,你必須更改目錄的路徑或手動查找文件Default.rdp。
以下就是腳本的所有操作,分為7步:
1.禁用向控制台輸出信息;
2.刪除註冊表項HKCUSoftwareMicrosoftTerminal Server ClientDefault中的所有值,即清除最近的rdp連接列表;
3.從HKCUSoftwareMicrosoftTerminal Server ClientServers中刪除整個內容,即清除rdp連接歷史記錄和保存的用戶名;
4.重新創建以前刪除的註冊表項;
5.使用目錄中的Default.rdp文件;
6.更改Default.rdp文件屬性,默認情況下它是隱藏的;
7.刪除Default.rdp文件;
另外,你可以使用以下PowerShell腳本來清除RDP連接的歷史記錄。
Get-ChildItem "HKCU:SoftwareMicrosoftTerminal Server Client" -Recurse | Remove-ItemProperty -Name UsernameHint -Ea 0
Remove-Item -Path "HKCU:SoftwareMicrosoftTerminal Server Clientservers" -Recurse 2>&1 | Out-Null
Remove-ItemProperty -Path "HKCU:SoftwareMicrosoftTerminal Server ClientDefault" "MR*" 2>&1 | Out-Null
$docs = [environment]::getfolderpath("mydocuments") + "Default.rdp"
remove-item $docs -Force 2>&1 | Out-Null
注意:RDP歷史清理的功能會被內置於許多系統和註冊表清理程序中,如CCCleaner等。
清除緩存的RDP憑證
如果在建立新的遠程RDP連接時,在輸入密碼之前,用戶通常都會選中「記住我的用戶名」的選項,然後用戶名和密碼都將保存在系統憑證管理器中。等下次連接到同一台計算機時,RDP客戶端就會自動使用先前保存的密碼,進行遠程桌面上授權。
你可以直接從客戶端的mstsc.exe窗口中刪除此密碼,即從連接列表中選擇相同的連接,然後單擊刪除按鈕,確認保存的憑證被刪除。
或者,你可以直接從Windows Credential Manager中刪除保存的密碼。然後進入控制面板用戶帳戶憑證管理,選擇「管理Windows憑據」,並在保存的密碼列表中找到計算機名稱,格式為TERMSRV/192.168.1.100,最後展開找到的項並單擊刪除按鈕。
在域環境中,你可以使用「禁止存儲網路身份驗證的密碼和憑證」策略來禁用RDP連接的保存密碼。
※CVE-2018-0101:CISCO ASA遠程代碼執行和DOS漏洞分析
※這個15歲的英國少年黑客玩壞美國FBI,套取多份機密文件……
TAG:嘶吼RoarTalk |