RDP協議

客戶和伺服器之間連接的協議

RDP,遠程顯示協議(Remote Display Protocol )簡稱RDP。該協議是對國際電信聯盟發布的一個國際標準的多通道會議協議T.120的一個擴展。

協議簡介


提供了客戶和伺服器之間的連接。Shadow Session,映像會話是MetaFrame 的一項重要功能,用戶可以通過這項功能映像其它用戶的桌面。管理員可以通過映像會話指導用戶使用軟體和系統,也可以用來監視客戶機運行情況。MetaFrame 的這一項功能可以實現一對一、一對多、多對多等功能。Windows 2000 Server 中的遠程管理功能與此相似,但只能實現一對一。RDP是微軟終端服務應用的協議,服務端基於win2000/winNT。協議基於T.128(T.120協議族)提供多通道通信。在客戶端支持多種資源緩衝和圖片數據的壓縮處理,運用RDP協議的虛擬化平台有VMwareMicrosoft等。
協議通過TCP/IP進行數據傳輸,在實際數據前進行了ISO/MCS/SEC三層的包裝,ISO/MCS兩層為多點併發式通信提供了可靠的傳輸保障,SEC層提供對RDP詳細數據的加解密處理。各層在數據的前端加有一段數據頭,用於對數據、傳輸的控制。具體的數據控制由STREAM類型的結構體管理(這種方法很靈活、易懂,可作為網路編程者的參考),不同的數據頭由不同的結構成員管理,層次清晰。RDP協議將終端虛擬環境中的設備映射為不同的數據包,將對設備的輸入輸出(I/O)重定向到網路句柄中,不同設備的數據按不同格式組織成為小的數據包,並將多個小數據包封裝成為一個大的數據包通過網路一次性發出,對方將網路解收的數據進行分解成為小包並按設備數據的類型進行不同的處理。
windows從NT開始提供終端服務,它是微軟買來的網路協議技術(Citrix),伺服器端要安裝、配置,客戶端要連接程序。終端服務使任何一台有許可權的終端機,用已知的賬號登錄伺服器,可以使用賬號內的資源,包括軟體,硬體資源;同時,在協議升級后,客戶端連接后可以使用本地的資源,包括本地印表機、聲音本地回放,本地磁碟資源和本地硬體介面。所有的計算都在伺服器端進行,客戶端只需要處理網路連接、接收數據、界面顯示和設備數據輸出。

協議功能


1、版本功能說明:RDP協議在終端服務推出后已有四個版本,4.0、5.0、5.1、5.2。一般來說,版本是根據windows的版本確定的。從客戶端的角度來說,5.X版本間提供的功能差別不是很大,相對於4.0版本,它提供了用戶帶密碼直接登錄、客戶端驅動器資源映射、客戶端音頻回放、最高24位色顯示和符合FIPS加密級別連接。另外,從4.0協議開始變提供的客戶端功能有:高、中、低三種數據加密級別,客戶端自定義初始登錄環境,客戶端印表機映射,客戶端LPT埠映射,客戶端com埠映射,剪貼板映射,客戶登錄的個性化設置(包括鍵盤、顯示界面大小等)。
2、協議層次說明:通過破解研究,我們掌握了RDP協議的基本層次結構。基本上,RDP協議的每一層次上都標示出其層內的數據長度值。對於層次劃分,主要是指RDP協議網路功能數據傳送時通常都包含的各層次,而對於各層次內所實現的單層次連接等功能將作為單獨的模塊來進行闡述。網路連接層:RDP協議建立在TCP/IP協議之上,由於傳輸的數據量比較大,因此在協議的底層首先定義一層網路連接層。它定義了一個完整的RDP數據邏輯包,以避免由於網路包長度過長而被分割使數據丟失。ISO數據層:在網路連接層之上是ISO數據層,它表示RDP數據的正常連接通信。虛擬通道層:在ISO數據層之上,RDP協議定義一個虛擬通道層,用以拆分標示不同虛擬通道的數據,加快客戶端處理速度,節省佔用網路介面的時間。加密解密層:在虛擬通道層之上,RDP定義一個數據加密解密層。此層用於對所有的功能數據進行加密、解密處理。功能數據層:在加密解密層之上是功能數據,畫面信息,本地資源轉換,聲音數據,列印數據等所有的功能數據信息都在此層進行處理。另外,根據數據類型的不同,這些數據都有各自不同層次的分割,他們的內部層次結構將在各個功能模塊中進行闡述。
3、其它說明:本協議解析中所提到的各層次結構都是指RDP功能數據正常傳送時的各底層結構,在功能數據傳送前的各層次的建立連接過程及其結構、實現都歸於模塊實現來進行說明。對於伺服器端的各種設置以及個版本間的內部實現差異請看RDP幫助文檔,以及rdpwin開發文檔。
4、連接過程說明:
1)客戶端連接伺服器
2)ISO數據層建立連接
3)發送初始協議相關信息,接收加密、解密密鑰
4)虛擬通道申請
5)加密形式發送客戶端系統信息,同時驗證加密協議
6)平台軟體證書驗證
7)各功能建立連接,各功能數據傳輸,功能實現

網路層次


1、網路連接層:在RDP協議網路實現連接中,本層的數據格式是固定的。內容,協議版本號,保留此邏輯包長度
位元組數 1 1 2值,當前版本皆是3 0 邏輯長度,從版本號開始到本包結束。
2、ISO數據層:在RDP功能數據網路傳輸中,本層的數據格式是固定的。內容,單層數據長度,SO包類型,標誌位元組數 1 1 1值 2,從下位元組開始計算 0xf0,表示數據 0x80。
3、虛擬通道層:虛擬通道層用於在正常的網路連接數據之上,中個虛擬通道的功能數據。此層次的連接另見初始連接模塊與通道申請模塊,在此只說明正常數據連接時的層次結構。
1)結構信息:內容,類型,虛擬通道個數,虛擬通道號,標誌位元組數 1 2 2 1值 0x64/0x68 0x0001 0x03eb至0x03ee 0x70/0xf0。
2)類型說明:0x64:客戶端發送數據0x68:客戶端接收數據3) 用戶號說明:本次連接的用戶號,伺服器發送的是0x0001;客戶端所發送的值是初始連接時請示通道后伺服器同意開通的虛擬個數。4) 虛擬通道號說明:虛擬通道號是本層次以上所發送的功能數據所在的虛擬通道號,其由初始連接通道申請建立時確定。5) 標誌說明:客戶端發送的標誌為0x70;伺服器端發送的標誌,當功能數據是圖像是(由通道號識別),其值為0x70,當功能數據是其它數據時,其值為0xf0。
4、加密解密層:加密解密層用於對網路連接中所發送、接收的數據進行加密、解密。為保證數據和系統的安全性,對網路數據進行加密傳輸是比較常用且必然的,RDP協議在此層對實際的功能數據進行加密。
1)結構信息:內容單層及層上數據總長度,加密標誌,未知標誌數字簽名位元組數 1-2 2 2 8值 從下位元組開始計算 0x0800 0x1000/0x0203 順序取得。
2)總長度說明:若長度大於0x7f,則長度以兩位元組表示,並按位與0x8000。這是由於版本升級贊成的格式不統一,長度不定,當前版本認為長度值不大於0x0fff(4095)因此只用長度值並按位與0x8000實現版本兼容,在版本升級後會以0x8x表示長度值的位元組數,其中8表示非1位元組,x表示具體的位元組個數。
3)加密標誌說明:RDP協議要求在正常的功能連接實現之前,首先licence認證,其標誌為0x8xxx,且其後數據不同於正常功能數據傳輸式的加密層格式,可以視licence認證為加密解密層的建立連接過程。另外功能數據的加密、解密的密鑰是在初始連接時獲得的,而加密解密功能的實現由加密、解密模塊闡述。
4)未知標誌說明:伺服器端發送過來的未知數據有兩種,目前不知其意,客戶端在發送數據時將其置為0x0000值。
5)數字簽名說明:對所有的加密數據在此放置8位元組數字簽名。其值由RC4會話鍵值和功能數據經過SHA運算和MD5運算得到。
5、功能數據層:功能數據是客戶端與伺服器進行交互的真正數據。他們都有各自固定格式,連接、控制方式,具體情況見各功能模塊的說明。根據當前我們所掌握的信息,RDP協議將圖像信息、聲音信息、設備信息、剪貼板內容都各自以單一的虛擬通道進行傳送,而印表機映射,磁碟映射,埠映射都做為設備信息的內容進行處理。限於當前左上角工作和項目工作的限度,設備信息中只考慮了印表機映射的部分,對於印表機信息與其他的設備相關的信息沒有進行有效隔離區分,而本協議說明中相關的連接信息、數據傳送都只認為是印表機映射的內容