一種RDP明文數據解析方法及裝置與流程
2023-06-06 15:16:06 1

本發明涉及計算機領域,尤其涉及數據採集審計領域。
背景技術:
遠程桌面協議(The Remote Desktop Protocol,簡稱RDP)是一個多通道(multi-channel)協議,可以讓用戶PC機連接控制另一臺Windows作業系統的電腦。RDP支持虛擬通道來連續傳送客戶端與伺服器之間數據交流,例如來自伺服器的顯示數據,以及加密了的客戶端的滑鼠、鍵盤數據。以RDP協議為基礎的遠程桌面可以讓用戶可靠地使用遠程計算機上的所有應用程式、文件和網絡資源,而無需執行本地程序。
目前對於RDP協議的研究只能基於RDP協議前身相關的技術文檔或是分析已有的rdesktop原始碼得到初步的資料,再使用反向工程的分析方法,通過獲取Windows終端啟動和正常工作時的通訊數據包的明文來分析。該協議於2009年3月正式提供文檔說明,為RDP協議分析提供了方便。
隨著網際網路的快速發展,網絡安全問題也越來越多,而完備的審計系統是解決當前網絡安全問題的重要因素。審計系統可以通過分析日誌,及時發現網絡系統、應用系統中的非法用戶、非法訪問、異常操作、異常狀態等安全信息,及時發現敏感信息的洩密軌跡,還原信息洩密的歷史過程,追責定位,提高各種管理系統的安全水平。
現有技術是對接收到的所有RDP數據都進行分析,而RDP數據在一次傳輸過程中可能會傳輸多個數據報文或者僅傳輸數據報文的一部分,這樣直接地對接收到的數據報文進行分析將會導致提取錯誤信息。同時,對大量數據進行分析所需時間過長,生成日誌時間過慢。由此導致審計系統在對生成的 日誌進行數據分析時,無法快速準確地獲取到用戶登陸及操作信息,進而無法快速準確地幫助審計部門完成數據分析和定位。
技術實現要素:
本發明提供了一種解決以上問題的RDP明文數據解析方法及裝置。
在第一方面,本發明提供了一種RDP明文數據解析方法。該方法首先獲取一條完整的RDP明文數據報文。然後判定該完整RDP明文數據報文的類型。最後對不同類型的RDP明文數據報文進行差異化處理,提取客戶端與服務端之間的交互信息。
優選地,本發明還包括將上述交互信息封裝到固定格式日誌中的步驟。
優選地,本發明通過對接收到的RDP明文數據進行拆分和/或拼接的方式來獲取一條完整的RDP明文數據報文。
優選地,上述獲取一條完整的RDP明文數據報文的步驟包括:接收RDP明文數據信息,並與緩存數據形成新數據報文;其中,該RDP明文數據信息包括RDP明文數據長度、傳輸方向、RDP數據內容;判定該新數據報文的封裝類型;其中,該封裝類型包括未知封裝、RDP4封裝、RDP5封裝;對不同封裝類型的數據報文採用不同處理方式,得到相應的完整RDP數據報文長度;判斷所述RDP明文數據報文長度是否大於等於所述完整RDP數據報文長度,若大於等於,則通過該新數據報文中得到一條完整RDP明文數據報文。
優選地,根據上述新數據報文的首字節,來判定該新數據報文是否為RDP4封裝或RPD5封裝。若所述新數據報文的首字節為03,則該新數據報文封裝為RDP4封裝。若所述新數據報文首字節的最後兩位為00,則該新數據報文封裝為RDP5封裝。
優選地,上述判定完整RDP明文數據報文類型的步驟包括:判定該完整RDP明文數據報文為RDP4數據報文;判斷該RDP4明文數據報文是否為連接認證階段數據報文;如果是連接認證階段數據報文,則提取該連接認證階段數 據報文的MCS層初始化連接數據單元以及MCS層連接確認數據單元的通道號與通道名稱之間的對應關係;如果不是連接認證階段數據報文,則判斷該RDP數據報文的MCS層通道號是否為虛擬通道對應的通道號;如果該MCS層通道號是虛擬通道對應的通道號,則該RDP明文數據類型為通道格式類型數據報文,將該通道格式數據報文去頭部再封裝,進行信息提取;如果該MCS層通道號不是虛擬通道對應的通道號,則提取客戶端登陸註冊數據單元以及欄位為功能數據單元的數據單元類型中的信息。
優選地,上述判定完整RDP明文數據報文類型的步驟包括:判斷上述完整RDP明文數據報文是否為RDP5報文;若確認該RDP明文數據報文為RDP5報文,則將該RDP5報文去除頭部再封裝,進行信息提取。
在第二方面,本發明提供了一種RDP明文數據解析裝置。該裝置包括RDP完整數據獲取模塊、RDP數據類型判定模塊、交互數據提取模塊。該RDP完整數據獲取模塊用於獲取一條完整的RDP明文數據報文。該RDP數據類型判定模塊用於判定該完整RDP明文數據報文的類型。該交互數據提取模塊用於對不同類型的RDP明文數據報文進行差異化處理,以提取客戶端與服務端之間交互信息。
本發明通過對RDP數據進行拆分與拼接的操作,保證了每次處理一條完整的RDP數據報文,進而使審計系統獲取到準確的日誌信息。同時,由於本發明在RDP解析過程中,過濾掉了一些不需要進行信息提取的數據包,節省了RDP解析時間,更快地生成日誌,提高了用戶體驗。
附圖說明
圖1為本發明一個實施例的解析RDP明文數據及日誌封裝方法流程圖;
圖2為本發明一個實施例的獲取完整RDP明文數據報文流程圖;
圖3為本發明一個實施例的判斷RDP明文數據報文格式類型的流程圖;
圖4為本發明一個實施例的解析RDP明文數據及日誌封裝系統框圖。
具體實施方式
下面通過附圖和實施例,對本發明的技術方案做進一步的詳細描述。
圖1為本發明一個實施例的解析RDP明文數據及日誌封裝方法流程圖。
在步驟S101,對輸入的RDP明文數據進行處理,以獲取一條完整的RDP明文數據報文。
一個例子中,對輸入的RDP明文數據進行拆分和/或拼接,以獲取一條完整的RDP明文數據報文,便於解析。
在步驟S102,判定該完整RDP明文數據報文的類型,依據該類型過濾不需要進行信息提取的RDP明文數據報文。
具體地,RDP明文數據報文類型包括RDP5格式數據報文類型、RDP4格式數據報文類型;其中,RDP4格式數據報文包括連接認證階段數據報文及非連接認證階段的RDP4數據報文,而該非連接認證階段的RDP4數據報文包括Channel格式數據報文(通道格式數據報文)、非Channel格式的RDP4數據報文(非通道格式的RDP4數據報文)。
需要提取信息的RDP數據報文包括:RDP5數據報文、連接認證階段數據報文中的MCS Connect Init ial PDU(MCS層初始化連接數據單元)和MCS Connect Response PDU(MCS層連接確認數據單元)、Channel格式數據報文、非Channel格式RDP4數據報文中的Cl ient Info PDU(客戶端登陸註冊數據單元)和欄位為DATA PDU(功能數據單元)的PDU type(數據單元類型)。
在步驟S103,對不同類型的RDP明文數據報文進行差異化處理,以提取客戶端與服務端之間交互的功能數據。
具體地,上述需要提取的功能數據包括:登錄信息、滑鼠鍵盤等操作的輸入數據、圖形界面等輸出數據、虛擬通道傳輸的印表機數據、剪貼板內容數據、聲音數據等。
在本發明的一個優選實施例中,包括步驟S104,即將上述步驟S103提取到的功能數據封裝到固定格式的日誌中。
在本發明的一個實施例中,上述固定格式的日誌內容包括:單字節(即1位元組)的日誌標識起始位,多字節(如4位元組)的日誌長度,多字節(n字節)的數據,單字節(即1位元組)的日誌標識結束位。較佳地,上述n字節的數據包括:30位元組的登陸時間、2位元組的源埠、2位元組的目的埠、4位元組的源IP、變量數據ID、變量會話ID、8位元組的數據詳細類型、變量域名、變量登陸名、變量登陸密碼、變量提取的數據類型、變量提取的數據,如下表1所示:
表1
較佳地,上述一條日誌所包含的信息包括一次或多次客戶端的請求以及該請求所對應的服務端響應;其中,該請求與響應之間的對應是根據本次請求開始到下次請求之前的所有請求與響應之間的對應。
圖2是本發明一個實施例的獲取完整RDP明文數據報文流程圖。
在步驟S201,判斷是否有RDP明文數據信息輸入,若有則轉到步驟S202,否則流程結束。
具體地,上述輸入的RDP明文數據信息包括RDP明文數據長度、傳輸方向(是客戶端到服務端還是服務端到客戶端)以及RDP明文數據內容。
在步驟S202,接收上述RDP明文數據信息,並與緩存數據形成新的數據報文。
在步驟S203,判定上述新數據報文(即當前數據報文)的封裝類型,若未知該當前數據的封裝類型,則轉到步驟S204;若已知該當前數據的封裝類型,且其封裝類型為RDP4封裝,則轉到步驟S205;若已知該當前數據的封裝 類型,且其封裝類型為RDP5封裝,則轉到步驟S210。
需要說明的是,初始數據報文封裝類型為未知封裝類型。
具體地,設置一個變量flag,flag表示當前數據報文封裝類型標誌;若flag=0,表示未知當前數據報文封裝類型;若flag=1,表示當前數據報文封裝類型為RDP4封裝;若flag=2,表示當前數據報文封裝類型為RDP5封裝;flag初始值為0。
在步驟S204,根據當前數據的首字節,判斷其是RDP4封裝或是RDP5封裝,然後轉到步驟S203。
具體地,若當前數據的首字節為03,則該當前數據封裝為RDP4封裝,且其封裝格式為TCP層、ISO層、MCS層、SEC層、RDP層;若當前數據首字節的最後兩位為00,則該當前數據封裝為RDP5封裝,且其封裝格式為TCP層、SEC層和RDP5層。
在步驟S205,判斷該當前數據(封裝類型為RDP4封裝)長度是否大於等於4位元組,若大於等於4位元組則轉到步驟S206,否則轉到步驟S201;其中,該當前數據長度信息由步驟S202得到。
需要說明的是,在RDP4格式封裝中,數據的前4個字節是TCP層數據,且該4個字節的最後兩個字節表示一條RDP完整數據報文的長度。
在步驟S206,從該當前數據的起始4位元組中,獲取到一條完整的RDP數據報文的長度信息。
在步驟S207,判斷該當前數據長度是否大於等於完整RDP數據報文長度,若滿足條件則轉到步驟S208,否則轉到步驟S201;其中,當前數據長度由步驟S202得到,RDP完整數據報文長度由步驟S206得到。
在步驟S208,依據上述完整RDP數據報文長度,從該當前數據報文中獲取到一條完整RDP數據報文,並設置f lag=0。
在步驟S209,判斷剩餘數據報文長度是否大於0,若大於0,則轉到步驟S204,否則轉到步驟S201。
在步驟S210,判斷上述當前數據長度是否大於等於3位元組,若大於等於3位元組則轉到步驟S211,否則轉到步驟S201;其中,該當前數據長度信息由步驟S202得到。
需要說明的是,在RDP5格式封裝中,數據的前兩個或三個字節為TCP層數據;若該TCP層數據第二個字節的首位為1,則表示該RDP完整數據報文長度信息在該當前數據的第二、第三字節中,否則表示該長度信息在該當前數據的第二個字節中。
在步驟S211,從該當前數據的起始3位元組中,獲取到一條完整的RDP數據報文的長度信息,然後轉到步驟S207。
圖3是本發明一個實施例的判斷RDP明文數據報文格式類型的流程圖。
在步驟S301,判斷是否有完整的RDP明文數據報文輸入,若有則轉到步驟S302,否則流程結束。
較佳地,上述是否有完整RDP明文數據報文輸入的判定方法可通過步驟S201至步驟S211獲得,具體參見流程圖2。
在步驟S302,判斷該完整RDP明文數據報文是否為RDP4報文,若是則轉到步驟S303,否則轉到步驟S308。
具體地,通過判斷該完整RDP明文數據報文的首字節是否為03來判斷該數據報文是否為RDP4數據報文;若該完整RDP明文數據報文首字節為03則該數據報文為RDP4數據報文,否則不是RDP4數據報文。
在步驟S303,判斷該完整RDP明文數據報文是否包含ISO層、MCS層、SEC層頭部的全部;若包含ISO層、MCS層、SEC層頭部的全部則轉到步驟S305,若僅包含ISO層、MCS層、SEC層頭部的一個或者兩個或者均不包含,則轉到步驟S304。
具體地,上述判斷完整RDP明文數據報文是否包含ISO層、MCS層、SEC層頭部的方法是,將該完整RDP數據報文與現有技術的RDP格式文檔進行比較,若該完整RDP數據報文滿足現有RDP格式文檔中ISO層、MCS層、SEC層 頭部格式,則說明包含ISO層、MCS層、SEC層頭部的全部。
在步驟S304,確認該完整RDP明文數據報文類型為連接認證階段數據報文,提取該連接認證階段數據報文中MCS Connect Initial PDU(MCS層初始化連接數據單元)的通道號和通道名稱之間的對應關係信息,以及提取該連接認證階段數據報文中MCS Connect Response PDU(MCS層連接確認數據單元)的通道號和通道名稱之間的對應關係信息,然後轉到步驟S301。
需要說明的是,MCS通道號主要有虛擬通道對應的通道號、RDP4通道號(即I/O通道號);其中,RDP4通道號包括用戶通道號及其他RDP4通道號,且I/O通道號、用戶通道號表示的是通道為傳輸RDP4數據報文的通道。
具體地,將上述連接認證數據報文與現有的RDP格式文檔進行比較,並從該連接認證數據報文中得到其MCS Connect Initial PDU通道號和通道名稱之間的對應關係,以及MCS Connect Response PDU通道號和通道名稱之間的對應關係。
在步驟S305,判定該RDP數據報文的MCS層通道號是否為虛擬通道對應的通道號;若該MCS層通道號為虛擬通道對應的通道號,則轉到步驟S307;若該MCS層通道號為RDP4通道號(即I/O通道號,且該RDP4通道號包括用戶通道號及其他RDP4通道號),則轉到步驟S306。
具體地,在該完整RDP數據報文中,首先跳過4位元組的TCP層數據和3位元組的ISO層數據,然後就是MCS層數據,而該MCS層數據的第四、第五字節即為MCS層通道號。
此外,將該RDP數據報文與現有的RDP格式文檔進行比較,並根據該RDP數據報文的MCS層通道號,即可判定該MCS層通道號是否為虛擬通道對應的通道號。
在步驟S306,確認該RDP數據報文類型為非Channel格式的RDP4數據報文;其中,Client Info PDU(客戶端登陸註冊數據單元)和欄位為DATA PDU(功能數據單元)的PDU type(數據單元類型)數據報文需要進行信息提取, 然後轉到步驟S301。
具體地,對照現有RDP格式文檔,並根據該RDP4數據報文的SEC層數據中加密標誌欄位,來判定該RDP數據報文是否為Client Info PDU(客戶端登陸註冊數據單元)。
此外,RDP4數據報文的RDP層數據前六個頭字節中包含了PDU type(數據單元類型)欄位,該PDU type包括:DEMAND AVCTIVE PDU(要求激活數據單元)、CONFIRM ACTIVE PDU(確認激活數據單元)、DEACTIVATE ALL PDU(解散數據單元)以及DATA PDU(功能數據單元);其中,DATA PDU是在正常會話過程中發送和接收信息,即需要獲取的信息。因此,將該RDP數據報文與現有RDP格式文檔進行對照,獲取該RDP數據報文中欄位為DATA PDU的PDU type信息,並將其提取出來。
在步驟S307,確認該RDP數據報文類型為Channel格式類型數據報文,將其去除頭部後再封裝,進行信息提取,然後轉到步驟S301。
在步驟S308,判斷該完整RDP數據報文的首字節最後兩位是否為00,如果是則轉到步驟S309,否則轉到步驟S301;此步驟是用來判斷該完整RDP數據報文是否為RDP5數據報文。
在步驟S309,確認該RDP數據報文類型為RDP5格式數據報文,將其去除頭部後再封裝,進行信息提取,然後轉到步驟S301。
在本發明的上述實施例中,對於不同類型的數據報文進行的是差異化處理(即不同的處理);其中,RDP5格式數據報文、Channel格式數據報文、可直接去除頭部各層封裝獲取功能數據;而非Channel格式RDP4數據報文中僅對Client Info PDU和欄位為DATA PDU的PDU type的報文進行處理,且處理時不僅需要跳過頭部各層封裝,還要去除不需要提取的欄位。此外,在Client Info PDU數據報文中可獲取用戶相關登錄信息的緩存信息;RDP5數據報文和PDU type欄位為DATA PDU的數據報文可獲取到客戶端滑鼠鍵盤操作信息和服務端返回的圖形界面數據等信息;Channel格式數據報文可獲取到 傳輸的印表機設備數據、剪貼板數據、聲音數據等。
圖4是本發明一個實施例的解析RDP明文數據及日誌封裝系統框圖。在該系統中,客戶端410與服務端420進行信息交互,且該交互信息是以RDP明文數據形式存在;RDP解析模塊430用於獲取該RDP明文數據,並對該明文數據進行解析,以得到客戶端410與服務端420之間交互的功能數據。
該RDP解析模塊430包括RDP完整數據獲取模塊431、RDP數據類型判定模塊432、交互數據提取模塊433;較佳地,該RDP解析模塊430還包括封裝模塊434。
該RDP完整數據獲取模塊431用於對輸入的RDP數據進行處理,以獲取一條完整的RDP數據報文。
該RDP數據類型判定模塊432用於判定該完整RDP數據報文的類型,並依據該類型過濾不需要進行信息提取的RDP數據報文。
該交互數據提取模塊433用於對不同類型的RDP數據報文進行差異化處理,以提取客戶端與服務端之間交互的功能數據。
該封裝模塊434用於將上述提取到的功能數據封裝到固定格式的日誌中。
最後所應說明的是,以上實施例僅用以說明本發明的技術方案而非限制,儘管參照較佳實施例對本發明進行了詳細說明,本領域的普通技術人員應當理解,可以對本發明的技術方案進行修改或者等同替換,而不脫離本發明技術方案的精神和範圍。