欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

怎么進(jìn)行MetasploitBlueKeep漏洞利用的簡要分析

這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)怎么進(jìn)行Metasploit BlueKeep漏洞利用的簡要分析,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

創(chuàng)新互聯(lián)主要從事成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)伊吾,10多年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575

*嚴(yán)正聲明:本文僅限于技術(shù)討論與分享,嚴(yán)禁用于非法途徑。

9月7日,Metasploit發(fā)布了BlueKeep遠(yuǎn)程桌面命令執(zhí)行漏洞利用模塊和分析博客。工具適用于64位Win7系統(tǒng)及打開啟用桌面音頻播放功能的64位2008系統(tǒng),本文將結(jié)合rdp相關(guān)實(shí)現(xiàn)對利用模塊進(jìn)行簡要分析。

漏洞原理

BlueKeep是一個(gè)釋放后使用(Use After Free)漏洞。存在漏洞的遠(yuǎn)程桌面服務(wù)器,在接收到特殊數(shù)據(jù)包時(shí)會釋放一個(gè)內(nèi)部信道MS_T120的控制結(jié)構(gòu)體,但并未將指向該結(jié)構(gòu)體的指針刪除,而且在遠(yuǎn)程桌面連接結(jié)束之后還會調(diào)用MS_T120結(jié)構(gòu)體內(nèi)的一個(gè)函數(shù)指針,若攻擊者可通過遠(yuǎn)程發(fā)送數(shù)據(jù)重新占據(jù)被釋放的MS_T120,并為結(jié)構(gòu)體內(nèi)的函數(shù)指針賦恰當(dāng)?shù)闹担纯蓪?shí)現(xiàn)遠(yuǎn)程命令執(zhí)行。 關(guān)于漏洞利用的詳細(xì)分析可參看雪安全峰會講座的相關(guān)內(nèi)容,安全研究員Hutchins的    分析和github用戶0xeb-bp的write-up

Metasploit BlueKeep模塊利用流程

基于cve_2019_0708_bluekeep_rce.rb文件進(jìn)行分析。利用模塊啟動后,會先掃描目標(biāo)是否存在BlueKeep漏洞(掃描原理),存在漏洞則開始漏洞利用流程,先建立rdp連接并注冊MS_T120(觸發(fā)漏洞)和RDPSND(內(nèi)核池噴射)兩個(gè)虛擬信道。    wiresharkRDPDR信道會在rdp連接建立后與客戶端進(jìn)行握手,相關(guān)協(xié)議可見微軟文檔。在接收到來自RDPDR信道的CLIENTID_CONFIRM消息后,程序便認(rèn)為rdp連接已建立完成,開始進(jìn)行下一漏洞利用步驟。

怎么進(jìn)行Metasploit BlueKeep漏洞利用的簡要分析

先介紹MS_T120結(jié)構(gòu)體和利用RDPSND在內(nèi)核非分頁池中分配數(shù)據(jù)。 MS_T120結(jié)構(gòu)體由rdp組件termdd.sys分配,用于控制rdp連接中的虛擬信道MS_T120。 微軟的一篇rdp驅(qū)動開發(fā)文檔中公開了這類結(jié)構(gòu)體的定義,雖然其中大部分字段名是保留的,但再結(jié)合termdd.sys可分析出其中數(shù)據(jù)代表的意義。 

怎么進(jìn)行Metasploit BlueKeep漏洞利用的簡要分析

termdd!IcaAllocateChannel中創(chuàng)建了信道控制結(jié)構(gòu)體并分配內(nèi)存空間,可看出分配的內(nèi)存位于內(nèi)核非分頁池,大小為0x160字節(jié)。則要在內(nèi)核非分頁池中分配大量相同大小的可控?cái)?shù)據(jù),方可在MS_T120被釋放后重新占據(jù)并控制關(guān)鍵字段的值。這就需求利用rdp協(xié)議進(jìn)行內(nèi)核池噴射(Pool Spray)(當(dāng)然非rdp的池噴同樣可以達(dá)到相同目的,BlueKeep利用模塊主要貢獻(xiàn)者zerosum0x0分享了一份利用SMBLoris和IP分片進(jìn)行池噴的    BlueKeep Exp,但要求目標(biāo)啟用額外服務(wù)無疑增加了漏洞利用條件。)。這一點(diǎn)可以利用向特殊虛擬信道中發(fā)送數(shù)據(jù)實(shí)現(xiàn)(虛擬信道數(shù)據(jù)包格式文檔 見此)。同樣在termdd.sys中的IcaChannelInputInternal用于處理發(fā)往虛擬信道的數(shù)據(jù),在接收到數(shù)據(jù)后,IcaChannelInputInternal會根據(jù)虛擬信道的狀態(tài)執(zhí)行不同的操作。關(guān)鍵代碼如下:

怎么進(jìn)行Metasploit BlueKeep漏洞利用的簡要分析

注意第154行的判斷,IrpList是虛擬信道結(jié)構(gòu)體中用于存放正在排隊(duì)的Irp讀取請求的鏈表。若該鏈表不空,則IcaChannelInputInternal會取出一個(gè)Irp并將接收的數(shù)據(jù)復(fù)制過去,此時(shí)不會在內(nèi)核非分頁池中分配數(shù)據(jù)。若鏈表為空,則IcaChannelInputInternal會將接收到的數(shù)據(jù)緩存在內(nèi)核非分頁池中,此時(shí)便可進(jìn)行池噴射,代碼如下:

怎么進(jìn)行Metasploit BlueKeep漏洞利用的簡要分析

可以看到此時(shí)接收的數(shù)據(jù)被完全儲存在內(nèi)核非分頁池中,但需要注意的是分配大小會比數(shù)據(jù)多0x38字節(jié)的不可控制區(qū)域,此部分用于儲存緩存數(shù)據(jù)的長度、位置、前后緩存塊等元數(shù)據(jù)。Metasploit BlueKeep利用模塊選取的RDPSND虛擬信道便滿足IrpList鏈表為空的要求,內(nèi)核調(diào)試可驗(yàn)證這一點(diǎn)。

怎么進(jìn)行Metasploit BlueKeep漏洞利用的簡要分析

但RDPSND信道是用于完成遠(yuǎn)程桌面音頻播放相關(guān)功能的,若此功能被禁用則RDPSND會在rdp連接建立前被關(guān)閉。Win7系統(tǒng)是默認(rèn)啟用遠(yuǎn)程桌面音頻播放功能的,2008系統(tǒng)是默認(rèn)禁用的,必須通過通過遠(yuǎn)程桌面會話主機(jī)配置相關(guān)選項(xiàng)才可啟用(也可通過注冊表操作)

怎么進(jìn)行Metasploit BlueKeep漏洞利用的簡要分析

向RDPSND信道發(fā)送Size大小字節(jié)數(shù)據(jù)會被保存在Size+0x38大小的內(nèi)核非分頁池中,可以用此來占據(jù)被釋放的MS_T120結(jié)構(gòu)體和寫入shellcode。經(jīng)計(jì)算可知需要發(fā)送0x128的數(shù)據(jù),這樣便會在內(nèi)核非分頁池中分配0x160大小的數(shù)據(jù),與MS_T120結(jié)構(gòu)體大小相同。Metasploit BlueKeep利用模塊先發(fā)送大量大小為0x128的數(shù)據(jù),這樣便會在內(nèi)核非分頁池中占據(jù)大量0x160字節(jié)內(nèi)存空間,再發(fā)送會觸發(fā)MS_T120釋放的數(shù)據(jù)包,緊接著再次發(fā)送大小為0x128的數(shù)據(jù)。由于此前已經(jīng)在內(nèi)核中占據(jù)了大量0x160大小的空間,剛剛被釋放的MS_T120結(jié)構(gòu)體原來所占據(jù)的0x160字節(jié)內(nèi)存空間就極有可能被這批新發(fā)送數(shù)據(jù)中的一個(gè)所占據(jù)。

怎么進(jìn)行Metasploit BlueKeep漏洞利用的簡要分析

成功占據(jù)被釋放的MS_T120結(jié)構(gòu)體后,利用模塊繼續(xù)利用RDPSND向內(nèi)核中大量寫入shellcode。

怎么進(jìn)行Metasploit BlueKeep漏洞利用的簡要分析

最后BlueKeep利用模塊將rdp連接斷開,觸發(fā)shellcode執(zhí)行。

怎么進(jìn)行Metasploit BlueKeep漏洞利用的簡要分析

這一步并不是絕對穩(wěn)定的,利用模塊在控制MS_T120結(jié)構(gòu)體后,將結(jié)構(gòu)體內(nèi)函數(shù)指針(偏移0x100處)設(shè)置為一個(gè)內(nèi)核非分頁池地址范圍中的值(參考Windows x64系統(tǒng)內(nèi)核虛擬地址空間布局),并期望向內(nèi)核中寫入的shellcode能占據(jù)這個(gè)值,如果成功占據(jù)則可順利觸發(fā)遠(yuǎn)程命令執(zhí)行,若不能占據(jù)則會造成目標(biāo)藍(lán)屏崩潰。Metasploit BlueKeep利用模塊針對不同場景預(yù)設(shè)了不同地址,可在利用漏洞前通過target選項(xiàng)選擇。

怎么進(jìn)行Metasploit BlueKeep漏洞利用的簡要分析

如果漏洞利用成功,則在termdd!IcaChannelInputInternal+17d處觸發(fā)shellcode執(zhí)行。

怎么進(jìn)行Metasploit BlueKeep漏洞利用的簡要分析

由于漏洞觸發(fā)點(diǎn)在termdd.sys中,shellcode執(zhí)行時(shí)IRQL為DISPATCH_LEVEL,需要進(jìn)行特殊的處理。BlueKeep利用模塊的shellcode實(shí)現(xiàn)邏輯與            永恒之藍(lán)基本一致,均是先hook syscall再利用APC注入完成R0到R3的轉(zhuǎn)移。有一點(diǎn)不同之處在于BlueKeep是在shellcode運(yùn)行過程中用egg hunter的方式搜尋并復(fù)制用戶態(tài)payload(出于虛擬信道單次發(fā)送數(shù)據(jù)大小有限的考慮),而永恒之藍(lán)用戶態(tài)payload偏移位置是固定的。BlueKeep

怎么進(jìn)行Metasploit BlueKeep漏洞利用的簡要分析

EternalBlue

怎么進(jìn)行Metasploit BlueKeep漏洞利用的簡要分析

而且BlueKeep的shellcode為避免返回到IcaChannelInputInternal函數(shù)的麻煩,選擇直接在hook syscall之后返回到IcaChannelInputInternal的上層函數(shù)。

怎么進(jìn)行Metasploit BlueKeep漏洞利用的簡要分析

這部分代碼與IcaChannelInputInternal結(jié)束返回部分功能是一致的。

怎么進(jìn)行Metasploit BlueKeep漏洞利用的簡要分析

但這也造成了一點(diǎn)小問題,IcaChannelInputInternal在之前獲取了信道結(jié)構(gòu)體中的同步鎖,這里直接退出了IcaChannelInputInternal而鎖并沒有釋放。

怎么進(jìn)行Metasploit BlueKeep漏洞利用的簡要分析

上述就是小編為大家分享的怎么進(jìn)行Metasploit BlueKeep漏洞利用的簡要分析了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

新聞名稱:怎么進(jìn)行MetasploitBlueKeep漏洞利用的簡要分析
轉(zhuǎn)載源于:http://www.chinadenli.net/article22/iiiicc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣網(wǎng)頁設(shè)計(jì)公司商城網(wǎng)站ChatGPTApp設(shè)計(jì)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)