SMB遠程代碼執行漏洞(CVE-2020-0796)分析、驗證及加固

摘要: SMB遠程代碼執行漏洞(CVE-2020-0796)分析、驗證及加固

漏洞描述

Windows是微軟公司開發的流行操作系統。

Microsoft Windows SMB客戶端在實現上存在遠程代碼執行漏洞,遠程攻擊者可利用此漏洞以完全用戶權限在應用程序中執行任意代碼,完全控制受影響系統,造成拒絕服務。

Microsoft SMB客戶端驗證特製的SMB響應時存在未驗證遠程代碼執行漏洞,無需驗證即可利用此漏洞。攻擊者通過發送客戶端SMB請求的特製SMB響應即可利用此漏洞。成功利用可執行任意代碼和完全控制受影響系統。然後攻擊者即可安裝程序;查看、更改或刪除數據;或以完全用戶權限創建新帳戶。

二、漏洞危害等級

三、影響版本

Windows 10 Version 1903 for 32-bit Systems
Windows 10 Version 1903 for x64-based Systems
Windows 10 Version 1903 for ARM64-based Systems
Windows Server, Version 1903 (Server Core installation)
Windows 10 Version 1909 for 32-bit Systems
Windows 10 Version 1909 for x64-based Systems
Windows 10 Version 1909 for ARM64-based Systems
Windows Server, Version 1909 (Server Core installation)

四、漏洞原理

漏洞發生在srv2.sys中,由於SMB沒有正確處理壓縮的數據包,在解壓數據包的時候使用客戶端傳過來的長度進行解壓時,並沒有檢查長度是否合法.最終導致整數溢出。

SMB v3中支持數據壓縮,如果SMB Header中的ProtocolId為0x424D53FC也就是0xFC, 'S', 'M', 'B'.那麼就說明數據是壓縮的,這時smb會調用壓縮解壓處理的函數.

首先SMB會調用srv2!Srv2ReceiveHandler函數接收smb數據包,並根據ProtocoIId設置對應的處理函數。

SMB遠程代碼執行漏洞(CVE-2020-0796)分析、驗證及加固


產生整數溢出漏洞的代碼如下:


SMB遠程代碼執行漏洞(CVE-2020-0796)分析、驗證及加固

五、漏洞檢測

已經很多的驗證腳本,整體的思路都是驗證回包中的特定位置是否包含十六進制的\\\\x11\\\\x03或\\\\x02\\\\x00這兩個關鍵字。


在存在漏洞的SMB版本的通信回包如下:


SMB遠程代碼執行漏洞(CVE-2020-0796)分析、驗證及加固

python3版POC


SMB遠程代碼執行漏洞(CVE-2020-0796)分析、驗證及加固


也可以使用nmap的腳本進行驗證,依託nmap的強大框架,更方便。


SMB遠程代碼執行漏洞(CVE-2020-0796)分析、驗證及加固

六、漏洞加固

1. 更新,完成補丁的安裝。

操作步驟:設置->更新和安全->Windows更新,點擊“檢查更新”。
2.微軟給出了臨時的應對辦法:
運行regedit.exe,打開註冊表編輯器,在HKLM\\SYSTEM\\CurrentControlSet\\Services\\LanmanServer\\Parameters建立一個名為DisableCompression的DWORD,值為1,禁止SMB的壓縮功能。

3.對SMB通信445端口進行封禁。


上述內容不知道大家學習到了嗎?網絡世界的安全漏洞每天都會出現,安全知識和安全意識每個公民都應該瞭解和學習,有想學習網絡安全技能的小夥伴可以隨時私信我哦!


分享到:


相關文章: