SMBGhost漏洞技術分析與防御方案

事件分析

最近國內外各安全廠商都發布了SMBGhost(CVE-2020-0796)漏洞的預警報告和分析報告,筆者利用周末休息時間也研究了一下,就算是做一個筆記了,分享給大家一起學習下,目前外面研究的POC大部分是通過SMB壓縮數據包長度整數溢出之后導致系統Crash,基本也沒啥用,估計現在各大廠商的漏洞研究人員和一些技術成熟的黑客組織都在加緊研究RCE完整利用程序吧,這個漏洞能不能完整利用,會不會像永恒之藍那樣,還需要持續研究跟蹤,同時也需要關注后面會不會抓到一些利用這個漏洞的在野攻擊樣本。

漏洞簡介

3月12日晚,微軟發布安全公告披露了一個最新的SMB遠程代碼執行漏洞(CVE-2020-0796),該漏洞主要是因為在最新的Windows 10系統中,處理SMB3.1.1協議的壓縮消息時,對頭部數據沒有做任何安全檢查,從而引發內存破壞漏洞,黑客利用此漏洞,可無須任何權限的情況下,即可實現遠程內核代碼執行。

漏洞成因

從Windows10 v1903/Windows Server v1903開始,微軟在協議SMB3.1.1中開啟了對數據壓縮傳輸的支持,但是由于SMB沒有正確處理壓縮的數據包,在客戶端/服務端解壓數據的時候,沒有對COMPRESSIN_TRANSFORM_HEADE結構進行安全校驗,導致后續代碼發生一連串整形溢出、越界讀寫等漏洞。

影響版本

Windows10 Version 1903 for 32-bit Systems

Windows10 Version 1903 for x64-based Systems

Windows10 Version 1903 for ARM64-based Systems?

Windows Server, Version 1903 (服務器核心安裝)

Windows10 Version 1909 for 32-bit Systems

Windows10 Version 1909 for x64-based Systems

Windows10 Version 1909 for ARM64-based Systems?

Windows Server, Version 1909 (服務器核心安裝)

漏洞捕獲

從事漏洞分析與研究的朋友都會時刻關注各大廠商公布的漏洞或補丁信息,從公布的這些漏洞信息與補丁,就可以定位到相應的模塊進行分析調試,此前微軟發布了各個版本操作系統的CVE-2020-0796的補丁包,如下所示:

查看這個漏洞的細節信息,包含漏洞簡介,如下所示:

影響范圍,以及相應的補丁下載,如下所示:

緩解措施,如下所示:

漏洞分析

1.分析SMB漏洞,需要對SMB漏洞的結構數據比較熟悉,SMB數據結構,可參考微軟的官網,里面有SMB的詳細數據結構信息,如下所示:

下載文檔之后,查看文檔目錄中關于對SMB傳輸壓縮數據包頭的處理,如下所示:

可以找到COMPRESSION_TRANSFORM_HEADE數據結構,如下所示:

里面各個字段的含義,如下所示:

上面這些信息是分析這個漏洞的基礎,一定要弄清楚!

2.漏洞的成因在于SMB在處理接收的壓縮數據包時出現的錯誤,先定位到接收壓縮數據后處理函數srv2!Srv2ReceiveHandler,通過上面的分析,我們可以利用COMPRESSION_TRANSFORM_HEADE的結構體中的ProtocolId字段定位到相關的代碼處,如下所示:

如果傳輸的數據為壓縮數據,則跳轉到解壓縮數據處理函數Srv2DecompressData,如下所示:

在Srv2DecompressData函數中,使用SrvNetAllocateBuffer進行內存分配時,未對傳入的數據進行校驗,會導致整數溢出,然后調用SmbCompressionDecompress函數進行數據解壓操作,如下所示:

打過補丁之后,微軟修改了這個函數,對傳入的值進行三次校驗,如下所示:

對比補丁前后的文件中對應的函數,如下所示:

漏洞檢測

發送SMB數據包,檢測返回的流量數據包特征,如下所示:

構造SMB壓縮數據包,SMB數據包頭數據,如下所示:

附加上數據壓縮算法,如下所示:

檢測返回的流量數據包中SMB壓縮版本,如下所示:

以及數據包最后的數據,如下所示:

這種檢測方法很弱,可能會有誤報,目前各廠商的檢測方案和工具都沒有公布,不然可以逆向分析看看。

防御方案

1.windows自動更新

設置->更新和安全->Windows更新,點擊“檢查更新”,如下所示:

2.手動安裝補丁包

查看自己的電腦Win10操作系統版本,可以按Win+R鍵,然后鍵入WINVER命令,如下所示:

確定之后會彈出Win10操作系統版本,我的版本為1809,如下所示:

如果操作系統版本為Windows 10 1903之后,可以根據自己操作系統的版本安裝微軟提供的對應補丁包程序,下載地址:

https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2020-0796

3.可以手動修改注冊表,防止被黑客遠程攻擊:

按Win+R鍵,然后鍵入WINVER命令,打開注冊表編輯器,如下所示:

HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters建立一個名為DisableCompression的DWORD,值為1,禁止SMB的壓縮功能,如下所示:

普通用戶只要用方法二去微軟官網下載相應的補丁包,安裝補丁包就可以了

參考鏈接:

1. https://github.com/ClarotyICS/CVE2020-0796

2.https://syntricks.com/cve-2020-0796-aka-smbghost-vulnerability/

3.https://www.synacktiv.com/posts/exploit/im-smbghost-daba-dee-daba-da.html

4.https://github.com/eerykitty/CVE-2020-0796-PoC

5.https://github.com/ioncodes/SMBGhost

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/716924.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/716924.shtml
英文地址,請注明出處:http://en.pswp.cn/news/716924.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【openGL4.x手冊04】基元

一、說明 OpenGL 中的術語“基元”用于指代兩個相似但獨立的概念。 “原語”的第一個含義是指 OpenGL 使用的解釋方案來確定渲染時頂點流所代表的內容,例如“GL_POINTS”。這樣的頂點序列可以是任意長的。 “原語”的另一個含義,也稱為“基本原語”&…

如何根據玩家數量和游戲需求選擇最合適的服務器配置?

根據玩家數量和游戲需求選擇最合適的服務器配置,首先需要考慮游戲的類型、玩家數量、預計的在線時間以及對內存和CPU性能的需求綜合考慮。對于大型多人在線游戲,如MMORPG或MOBA等,由于需要更多的CPU核心數來支持更復雜的游戲邏輯和處理大量數…

操作系統|概述|系統分類——筆記

1.1_1操作系統的概念和功能 操作系統的概念 操作系統(Operating System, OS) 是指控制和管理整個計算機系統的 硬件和軟件 資源,并合理地組織調度計算機和工作和資源的分配; 1操作系統是系統資源的管理者 以提供給用…

springboot攔截器和過濾器

過濾器 Filter依賴于servlet容器,屬于servlet規范的一部分 Filter的生命周期由servlet容器管理 Filter可攔截所有web資源(包括jsp,Servlet,靜態資源,Controller) 自定義Filter import javax.servlet.*; WebFilter(urlPatterns …

文件的順序讀寫函數舉例介紹

目錄 例1:(使用字符輸出函數fputc)例2:(使用字符輸入函數fgetc)例3:(使用文本行輸出函數fputs )例4:(使用文本行輸入函數fgets )例5&a…

Docker基礎教程 - 2 Docker安裝

更好的閱讀體驗:點這里 ( www.doubibiji.com ) 2 Docker安裝 Docker 的官網地址:https://www.docker.com/,在官網可以找到 Docker Engine 的安裝步驟。 下面進行 Docker 環境的安裝,正常情況下 Docker …

服務發現:CP or AP?

1 服務發現的意義 為高可用,生產環境中服務提供方都以集群對外提供服務,集群里這些IP隨時可能變化,也需要用一本“通信錄”及時獲取對應服務節點,這獲取過程即“服務發現”。 對服務調用方和服務提供方,其契約就是接…

(3)(3.1) FlightDeck FrSky發射器應用程序

文章目錄 前言 1 概述 2 Turnkey Packages 3 參數說明 前言 ?Craft and Theory 的 FlightDeck 可讓你輕松查看飛行模式、高度、速度、姿態和關鍵系統警報,包括故障保護和電池錯誤,如電池不平衡警告和發射機低電量警報。 1 概述 Craft and Theory 的…

【自然語言處理】NLP入門(二):1、正則表達式與Python中的實現(2):字符串格式化輸出(%、format()、f-string)

文章目錄 一、前言二、正則表達式與Python中的實現1.字符串構造2. 字符串截取3. 字符串格式化輸出3.1 %符號格式化字符串1. 一般形式2. 常用格式字符3. 最小寬度和精度4. 進位制和科學計數法5. 多個對象的格式化輸出6. 典例 3.2 format()方法格式化字符串1. 一般形式2. 參數傳遞…

51單片機-(中斷系統)

51單片機-(中斷系統) 了解51單片機中斷系統、中斷源、中斷響應條件和優先級等,通過外部中斷0實現按鍵控制LED亮滅為例理解中斷工作原理和編程實現過程。 1.中斷系統結構 89C51/52的中斷系統有5個中斷源 ,2個優先級,…

WiFi模塊引領智能家居革命:連接未來的生活

隨著科技的快速發展,智能家居正成為現代生活的一部分,極大地改變了我們與家庭環境互動的方式。其中,WiFi模塊作為關鍵的連接技術,在推動智能家居革命中發揮著不可忽視的作用。本文將深入探討WiFi模塊如何驅動智能家居革命。 設備互…

1027 打印沙漏

本題要求你寫個程序把給定的符號打印成沙漏的形狀。例如給定17個“*”,要求按下列格式打印 ***** *** * *** ***** 所謂“沙漏形狀”,是指每行輸出奇數個符號;各行符號中心對齊;相鄰兩行符號數差2;符號數先從大到…

多線程:線程通信

線程通信 什么是線程通信 當多個線程共同操作共享的資源時,線程間通過某種方式互相告知自己的的狀態,以相互協調,并避免無效的資源爭奪。 線程通信的常見模型(生產者與消費者模型) 生產者線程負責生產數據消費者線…

對抽象工廠模式的理解

目錄 1 背景1.1 題目描述1.2 輸入描述1.3 輸出描述1.4 輸入示例1.5 輸出示例 2 抽象工廠模式3 思考3.1 我的實現3.2 什么時候用抽象工廠模式?(怎么用才是合適的?)3.3 [更好的例子](https://refactoringguru.cn/design-patterns/ab…

【探索Linux】—— 強大的命令行工具 P.24(網絡基礎)

閱讀導航 引言一、計算機網絡背景1. 網絡發展歷史 二、認識 "協議"1. 網絡協議概念2. 網絡協議初識(1)協議分層(2)OSI參考模型(Open Systems Interconnection Reference Model)(3&…

NoSQL--1.虛擬機網絡配置

目錄 1.初識NoSQL 1.1 NoSQL之虛擬機網絡配置 1.1.1 首先,導入預先配置好的NoSQL版本到VMware Workstation中 1.1.2 開啟虛擬機操作: 1.1.2.1 點擊開啟虛擬機: 1.1.2.2 默認選擇回車CentOS Linux(3.10.0-1127.e17.x86_64) 7 …

cobalt strike釣魚lnk報錯:無法連接到遠程服務器

筆者在學習 cobalt strike 制作釣魚文件時發現多次失敗,在 win10 虛擬機的 powershell 的多次排查后發現這樣一個報錯: 使用“1”個參數調用“DownloadString”時發生異常:“無法連接到遠程服務器“ 經過多次排查后發現問題出在 cs 的 team server上&…

解決:Glide 在回調中再次加載圖片報錯

一、問題說明 Glide 加載圖片時監聽了回調&#xff0c;并在失敗時再次加載其它圖片后報錯。 代碼&#xff1a; Glide.with(mContext).load(imgTeacher).listener(new RequestListener<Drawable>() {Overridepublic boolean onLoadFailed(Nullable GlideException e, O…

MCU 串口接收環形緩沖區的實現

環形緩沖區 1. 環形緩沖區的特性 1.先進先出 2. 當緩沖區被使用完&#xff0c;且又有新的數據需要存儲時&#xff0c;丟掉歷史最久的數據&#xff0c;保存最新的數據 現實中的存儲介質都是線性的&#xff0c;因此我們需要做一下處理&#xff0c;才能在功能上實現環形緩沖區 …

[計算機網絡]--I/O多路轉接之poll和epoll

前言 作者&#xff1a;小蝸牛向前沖 名言&#xff1a;我可以接受失敗&#xff0c;但我不能接受放棄 如果覺的博主的文章還不錯的話&#xff0c;還請點贊&#xff0c;收藏&#xff0c;關注&#x1f440;支持博主。如果發現有問題的地方歡迎?大家在評論區指正 目錄 一、poll函…