協定簡介
提供了客戶和伺服器之間的連線。Shadow Session,映像會話是MetaFrame 的一項重要功能,用戶可以通過這項功能映像其它用戶的桌面。管理員可以通過映像會話指導用戶使用軟體和系統,也可以用來監視客戶機運行情況。MetaFrame 的這一項功能可以實現一對一、一對多、多對多等功能。Windows 2000 Server 中的遠程管理功能與此相似,但只能實現一對一。RDP是微軟終端服務套用的協定,服務端基於win2000/winNT。協定基於T.128(T.120協定族)提供多通道通信。在客戶端支持多種資源緩衝和圖片數據的壓縮處理,運用RDP協定的虛擬化平台有VMware、Microsoft等 。
協定通過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功能數據網路傳輸中,本層的數據格式是固定的。 內容 單層數據長度 ISO包類型 標誌
位元組數 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協定將圖像信息、聲音信息、設備信息、剪貼簿內容都各自以單一的虛擬通道進行傳送,而印表機映射,磁碟映射,連線埠映射都做為設備信息的內容進行處理。限於當前左上角工作和項目工作的限度,設備信息中只考慮了印表機映射的部分,對於印表機信息與其他的設備相關的信息沒有進行有效隔離區分,而本協定說明中相關的連線信息、數據傳送都只認為是印表機映射的內容