亚洲乱色熟女一区二区三区丝袜,天堂√中文最新版在线,亚洲精品乱码久久久久久蜜桃图片,香蕉久久久久久av成人,欧美丰满熟妇bbb久久久

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

遠(yuǎn)程桌面訪問RDP協(xié)議探究

admin
2024年3月12日 19:28 本文熱度 2095

RDP 遠(yuǎn)程桌面連接協(xié)議,作為相對(duì)比較廣泛的協(xié)議。對(duì)于協(xié)議識(shí)別來說很值得學(xué)習(xí)。首先 RDP 資料豐富,開源的程序也特別多。另一方面作為一個(gè)比較老的協(xié)議,版本豐富,兼容性強(qiáng),小問題也多。從安全的角度更能看出協(xié)議的演變和發(fā)展。本文會(huì)從環(huán)境搭建、簡(jiǎn)要分析和思考這幾方面來講解。

預(yù)備知識(shí)

除非另有說明,否則數(shù)據(jù)包一律按 little-endian 字節(jié)順序排列

RDP協(xié)議的發(fā)展

RDP(Remote Desktop Protocol,遠(yuǎn)程桌面協(xié)議)是基于 ITU-T(國(guó)際電信聯(lián)盟)的T.120協(xié)議中的T.128應(yīng)用程序共享協(xié)議(又稱為 T.share),隨后由英國(guó)軟件公司 DataConnection Limited 優(yōu)化成 RDP 的雛形。此時(shí),微軟看到 RDP 是塊肥肉,果斷收購了DataConnection Limited,進(jìn)而把 RDP 變成自己的囊中物(知識(shí)產(chǎn)權(quán))。

發(fā)展至今,已經(jīng)有 10 個(gè)版本了。當(dāng)前主要使用的版本有 6.1(Windows Server 2008/Windows Vista SP1/Windows XP SP3),7.0(Windows Server 2008 R2/Windows 7),其中 7.0 版本增加了 Remote FX 功能,用于提升高清圖像的渲染效果,如 2D、3D 圖像。(摘自全球主流云桌面?zhèn)鬏攨f(xié)議 - 知乎 )

目前 RDP 協(xié)議標(biāo)志位(對(duì)應(yīng)了第一階段的RDP Negotiation Request,requestedProtocols 字段)一共有[六個(gè)版本]([MS-RDPBCGR]: RDP Negotiation Request (RDP_NEG_REQ) | Microsoft Learn)分別是 PROTOCOL_RDP、 PROTOCOL_SSL、 PROTOCOL_HYBRID、  PROTOCOL_RDSTLS、  PROTOCOL_HYBRID_EX 、PROTOCOL_RDSAAD。

PROTOCOL_RDP 又稱為標(biāo)準(zhǔn)型RDP協(xié)議,最早出現(xiàn)在Windows NT 4.0上,這個(gè)協(xié)議本身本身就存在很大隱患,它使用明文傳輸。之后采取多種安全級(jí)別的加密算法,它支持四個(gè)加密級(jí)別:低、客戶端兼容、高、 并且符合 FIPS(無、40位RC4、56位RC4、128位RC4或3DES ),可以在服務(wù)器上配置所需的加密級(jí)別來傳輸數(shù)據(jù)。

對(duì)于標(biāo)準(zhǔn)的RDP協(xié)議微軟犯了一個(gè)錯(cuò)誤,加密的算法使用 RSA, 但是公鑰是內(nèi)置在客戶端中。也就是說所有服務(wù)器的私鑰其實(shí)都是一樣的。微軟現(xiàn)在已經(jīng)公開了此私鑰:

[MS-RDPBCGR]: Terminal Services Signing Key | Microsoft Learn
https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpbcgr/c2389e29-5706-4ac4-b555-e26f93144db7

個(gè)版本中RDP Negotiation Request 并沒有 requestedProtocols 字段,后續(xù)設(shè)計(jì)為了保障安全微軟直接使用了 TLS 協(xié)議,同時(shí)為了兼容增加了requestedProtocols 字段作為可選字段。有些 rdp 協(xié)議的實(shí)現(xiàn)中并沒有注意這一點(diǎn)導(dǎo)致程序?qū)Υ税姹镜?RDP 不兼容(默認(rèn)配置的 windows 2000,windows 2003,xrdp)。

PROTOCOL_SSL 使用標(biāo)準(zhǔn)的加密層,類似于 http 和 https 的關(guān)系。數(shù)據(jù)默認(rèn)是安全的,所以在傳輸過程中內(nèi)部的數(shù)據(jù)是明文的,但是也有問題一旦知道私鑰就很容解出來例如在 clientInfo 中會(huì)直接傳遞明文包含賬戶密碼

在rdp協(xié)議鏈接階段也會(huì)把一些本地主機(jī)的信息發(fā)送給客戶端

RDP在前兩個(gè)版本里不具備鑒權(quán)功能,只有數(shù)據(jù)傳輸?shù)墓δ?。鑒權(quán)只能使用 windows 自身身份認(rèn)證的功能。

PROTOCL_HYBRID、PROTOCOL_HYBRID_EX就是為了解決這個(gè)問題,從 PROTOCL_HYBRID協(xié)議起,操作系統(tǒng)身份鑒別功能由憑證安全支持提供商(CredSSP)協(xié)議來提供,簡(jiǎn)單的來說,就是在進(jìn)入遠(yuǎn)程桌面的界面之前,需要實(shí)現(xiàn)輸入正確的用戶名和密碼,也就是我們常說的 NLA。

摘自死磕RDP協(xié)議,從截圖和爆破說起
https://www.freebuf.com/articles/network/365312.html

CredSSP 協(xié)議雖然也使用 TLS 隧道,但它不是在受保護(hù)的隧道中傳輸密碼,而是使用 NTLM 或 Kerberos 進(jìn)行身份驗(yàn)證。該協(xié)議也稱為網(wǎng)絡(luò)級(jí)認(rèn)證(NLA)。使用外部安全協(xié)議的好處是 RDP 開發(fā)人員不再需要手動(dòng)實(shí)現(xiàn)協(xié)議安全機(jī)制,而是可以依賴眾所周知且經(jīng)過驗(yàn)證的安全協(xié)議包(例如實(shí)現(xiàn) SSL 的 Schannel 安全包,請(qǐng)參閱 [MSDN- SCHANNEL])提供端到端安全性。

RDP協(xié)議的分層

RDP協(xié)議棧分為六個(gè)層次自上向下分別為

  1. 應(yīng)用層(也可以稱為RDP層,因?yàn)閼?yīng)用就是RDP,主要是基于T.128協(xié)議)
    在這一層,RDP 作為應(yīng)用程序運(yùn)行,處理遠(yuǎn)程桌面會(huì)話中的具體應(yīng)用邏輯,例如圖形界面的渲染、輸入設(shè)備的信號(hào)處理等。
  2. 安全層(用于加密)
    這一層負(fù)責(zé)加密 RDP 會(huì)話,以保護(hù)數(shù)據(jù)傳輸?shù)陌踩?。它們涉及?shù)據(jù)加密、身份驗(yàn)證和完整性檢查。
  3. MCS (Multipoint communication service) 、GCC(Generic Conference Control)層[ T.124 ](MCS和GCC都是國(guó)際電信聯(lián)盟 (ITU) T.120 系列的一部分)
    這一層處理會(huì)話的建立、管理和結(jié)束等多點(diǎn)通信服務(wù)。(負(fù)責(zé)維持連接)。區(qū)別: GCC 主要用于 RDP 會(huì)話的會(huì)議控制和管理提供了會(huì)議的創(chuàng)建和維護(hù)機(jī)制 ,MCS側(cè)重于數(shù)據(jù)傳輸和通信管理處理實(shí)際的數(shù)據(jù)交換和消息流。MCS負(fù)責(zé)數(shù)據(jù)傳輸和交換,GCC負(fù)責(zé)會(huì)話的創(chuàng)建和維護(hù)
  4. ISO 層(TPKT)(包含國(guó)際電信聯(lián)盟 (ITU) X224協(xié)議)和TCP/IP層
    它是一種連接層協(xié)議,用于在 RDP 會(huì)話中建立、管理和斷開連接。(為了防止TCP粘包)
  5. TCP/IP層
    最底層是網(wǎng)絡(luò)協(xié)議層,主要使用 TCP/IP 協(xié)議棧來傳輸 RDP 會(huì)話數(shù)據(jù)。這一層處理所有與網(wǎng)絡(luò)相關(guān)的通信,如 IP 地址管理和數(shù)據(jù)包傳輸。

工具

nmapwireshark

實(shí)際上nmapwireshark 可以解決大部分協(xié)議分析和學(xué)習(xí)問題。

環(huán)境

rdp client(kali linux rdesktop) 192.169.34.102 
rdp server(win7) 192.168.34.124
私鑰   rdesktop 抓包文件

準(zhǔn)備工作

獲取rdp 私鑰

Wireshark for Pentester: Decrypting RDP Traffic(https://www.hackingarticles.in/wireshark-for-pentester-decrypting-rdp-traffic/)

如何使用Wireshark解密Windows遠(yuǎn)程桌面(RDP)協(xié)議-二進(jìn)制漏洞-看雪-安全社區(qū)(https://bbs.kanxue.com/thread-255173.htm)

下載好最新版本的Mimikatz(https://github.com/gentilkiwi/mimikatz/releases把Mimikatz放到RDP服務(wù)器里,命令行執(zhí)行Mimikatz.exe 運(yùn)行下面3條命令

privilege::debug
crypto::capi
crypto::certificates -systemstore:CERT_SYSTEM_STORE_LOCAL_MACHINE -store:"Remote Desktop" /export

步驟2:把.pfx轉(zhuǎn)換成.pem

openssl pkcs12 -in win.pfx -out mykey.pem 

運(yùn)行上面的命令以后,會(huì)提示需要密碼( password ),輸入 mimikatz 即可

注意 測(cè)試的最新版本的 windows10 導(dǎo)出不了私鑰

抓取rdp流

為了抓取干凈的數(shù)據(jù)包需要進(jìn)行一些設(shè)置 首先捕獲過濾器設(shè)置

host 192.168.34.124 and port 3389

登錄后保存數(shù)據(jù)包

解密 RDP 數(shù)據(jù)流

wireshark 設(shè)置 菜單欄 Wireshark -> preference -> protocols ->TLS

設(shè)置完解密后rdp 連接初始化(Connect Request PDU)并沒有使用TLS加密。會(huì)顯示Ignored Unknown Record

這個(gè)是數(shù)據(jù)包解析錯(cuò)誤導(dǎo)致的,為了便于分析請(qǐng)?jiān)O(shè)置請(qǐng)選中此數(shù)據(jù)包


此時(shí)數(shù)據(jù)包會(huì)顯示正常

開始分析

微軟將rdp初始化連接分成10部分

連接順序可以分為十個(gè)不同的階段但是并不是所有的階段都會(huì)出現(xiàn)如 Security Exchange 在標(biāo)準(zhǔn)RDP中會(huì)出現(xiàn)。但是增強(qiáng)型RDP中沒有出現(xiàn)。我們這里只關(guān)注必要的階段

1. 初始化連接

X.224 Connection Request PDU

tpktHeader  數(shù)據(jù)格式如下

tpktHeader (4 bytes): A TPKT Header, as specified in [T123] section 8.

字段名稱長(zhǎng)度默認(rèn)值說明
版本1
當(dāng)前為3
保留字段1
默認(rèn)值為0
長(zhǎng)度2
從tpkt包頭部開始計(jì)算
x224Crq 數(shù)據(jù)格式如下

x224Crq (7 bytes): An X.224 Class 0 Connection Request transport protocol data unit (TPDU), as specified in [X224] section 13.3.

字段名稱長(zhǎng)度默認(rèn)值說明
length1
長(zhǎng)度 不包含本字段
CR_CDT1

DSR_REF2

SRC_REF2

CLASS_OPRION1

X.224 Connection Response PDU


圖片來源: RDP Negotiation Request (RDP_NEG_REQ) | Microsoft Learn --- [MS-RDPBCGR]:RDP 協(xié)商請(qǐng)求 (RDP_NEG_REQ) |Microsoft 學(xué)習(xí)

作為協(xié)議識(shí)別只需要知道第一個(gè)階段已經(jīng)可以粗略識(shí)別了。在這里參考bodyhack的代碼。

像fofa一樣解析RDP信息,RDP提取操作系統(tǒng),RDP登錄截屏 (Golang實(shí)現(xiàn))

https://xz.aliyun.com/t/11978

另外想要精確識(shí)別就是在進(jìn)行 tls連接后會(huì)進(jìn)行ntlmssp的挑戰(zhàn)響應(yīng),能夠非常準(zhǔn)確的提取出來主機(jī)名和操作系統(tǒng)的版本。

網(wǎng)絡(luò)空間測(cè)繪技術(shù)之:協(xié)議識(shí)別(RDP篇) - 知乎 (zhihu.com)
https://zhuanlan.zhihu.com/p/336936793


發(fā)現(xiàn)的問題

在實(shí)現(xiàn)的時(shí)候?yàn)榱藴?zhǔn)確和方便需要判斷如果flag支持 CredSSP。實(shí)現(xiàn)過程中發(fā)現(xiàn)我測(cè)試的 windows7 版本在發(fā)送 ntlm 協(xié)議的時(shí)候并沒有正確的返回?cái)?shù)據(jù)。抓包后發(fā)現(xiàn)NTLMSSP_NEGOTIATE消息被分開兩部分發(fā)送了。我們先看看正常的數(shù)據(jù)包

再看一下不正常的



先發(fā)送 30 再發(fā)送其他數(shù)據(jù)。經(jīng)過調(diào)試和分析發(fā)現(xiàn)是 Golang 標(biāo)準(zhǔn)庫在實(shí)現(xiàn)的時(shí)候?yàn)榱私鉀Q TLS1.0 的安全問題而引入的https://github.com/golang/go/blob/2184a394777ccc9ce9625932b2ad773e6e626be0/src/crypto/tls/conn.go#L1216


大概意思是 TLS 1.0 在使用塊模式密碼時(shí)容易受到選擇明文攻擊,因?yàn)樗鼈兊某跏蓟蛄渴强深A(yù)測(cè)的。通過將每個(gè)應(yīng)用數(shù)據(jù)記錄分成兩條記錄,可以有效地隨機(jī)化初始化向量,從而防止這種攻擊。解決此類問題有兩種方法:

第一種直接把按照tpkt協(xié)議只要第一次發(fā)送的數(shù)據(jù)超過4個(gè)字節(jié)后續(xù)數(shù)據(jù)會(huì)自動(dòng)組包(理論可以測(cè)試)
第二種作為協(xié)議識(shí)別的庫不在乎這類問題。直接刪除這里選擇把 crypto 庫獨(dú)立出來單獨(dú)維護(hù)直接刪除這一部分代碼 。經(jīng)過測(cè)試 ntlm 協(xié)議識(shí)別成功。

使用 FOFA (無腦吹確實(shí)好用)隨機(jī)選擇10000條測(cè)試一下效果

fofax -q 'protocol="rdp"' -ec -fs 10000 >rdp.txt

經(jīng)過 naabu 測(cè)試存活后測(cè)試。發(fā)現(xiàn) FOFA 對(duì)于使用 TLS1.0 版本的 ntlmssp 的挑戰(zhàn)響應(yīng)并沒有解析成功。

再次挑選測(cè)試發(fā)現(xiàn)有些版本的 windows 客戶端可以正確連接,但是使用 Golang 在進(jìn)行 TLS 握手的時(shí)候直接退出,看環(huán)境推測(cè)是 windows server 2016。搭建以后抓包

經(jīng)過分析,發(fā)現(xiàn) Server Hello 要求的 Cipher Suite 為TLS_RSA_WITH_AES_128_CBC_SHA256 (0x003c)。Client Hello 中并沒有支持。(go 默認(rèn)支持的很少)好吧統(tǒng)統(tǒng)加上去,可以正常識(shí)別了。

本文發(fā)布時(shí),此類問題 FOFA 已經(jīng)修復(fù),其他空間搜索引擎可以自測(cè)。

思考

在協(xié)議識(shí)別過程中,各家系統(tǒng)對(duì)協(xié)議支持都相對(duì)比較完善了。但是基礎(chǔ)庫應(yīng)該已經(jīng)是協(xié)議識(shí)別準(zhǔn)確率的短板。很多廠商很有可能并沒有關(guān)注這一塊。只是依賴編程語言的標(biāo)準(zhǔn)庫或者第三方庫。而對(duì)于不同的協(xié)議尤其是老舊協(xié)議的支持,還有加密算法的支持,可能隨著編程語言和安全的發(fā)展往往無法會(huì)廢棄掉,而這種基礎(chǔ)庫往往很見細(xì)節(jié),可能少實(shí)現(xiàn)一個(gè)都會(huì)漏掉很多。


該文章在 2024/3/12 19:28:13 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲(chǔ)管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved