2017年5月12日起,全球範圍內爆發的基於Windows網路共用協定進行攻擊傳播的蠕蟲惡意程式碼,不法分子通過改造之前洩露的NSA駭客武器庫中“永恆之藍”攻擊程式發起的網絡攻擊事件。研究人員“Sleepya”在github上發佈了一個Python版本的ETERNALBLUE,這使得在Windows Server 2012 R2能够成功利用的可能。ETERNALBLUE利用了Windows系統中的MS17-010漏洞,向Microsoft服務器消息塊1.0(SMBv1)服務器發送經特殊設計的消息,來獲得管理許可權。本文介紹了在windows server 2012 R2版本上的漏洞利用過程。
被攻擊系統為windowsserver 2012 R2(未安裝MS17-010補丁),安裝全新的作業系統後,無需對其進行任何更改。只需要知道目標IP地址,在進行攻擊的時候是主機是需要運行的。
攻擊系統為linux的kali系統:
需要的環境:
u Windows server 2012 R2 64-->IP:10.134.6.67 被攻擊主機
u Linux/kali --> IP:10.114.6.50 攻擊主機(metasploit埠8089)
需要的工具:
u NASM:是一款基於80x86和x86-64平臺的組合語言編譯程式,其設計初衷是為了實現編譯器程式跨平臺和模組化的特性。
u Metasploit:一個免費的、可下載的框架,通過它可以很容易地獲取、開發並對電腦軟體漏洞實施攻擊。
u Python工具。
從以下連結可以獲得Sleepya開發的內核shellcode:https://github.com/worawit/MS17-010/blob/master/shellcode/eternalblue_kshellcode_x64.asm
使用以下命令來下載asm程式碼:
使用NASM工具對asm程式碼編譯,利用以下命令:
再使用msfVENOM生成一個用戶的反彈shellcode攻擊載荷
首先我們嘗試一個基於TCP的反彈shell,LHOST和LPORT為本地ip和埠;
使用下列命令生成一個Linux下反彈shell木馬:
修改shellcode:
Shellcode前加上eternalblue內核,形成新的攻擊載荷。
利用以下命令,形成新的reverse_shell.bin:
下載Sleepya開發的漏洞利用的python程式(windows server 2012),程式碼連結為:
https://github.com/worawit/MS17-010/blob/master/eternalblue_exploit8.py
完成以上步驟後,eternalblue資料夾下包含以下檔案:
實施攻擊之前,設定監聽。在新的終端視窗中打開Metasploit,使用模塊handler,設定payload為reverse_tcp,設定監聽的Localhost的ip和埠,用來反彈shellcode。注意:這裡設定的payload要和我們生成載荷所使用的payload一樣。
在未知系統登入帳號的情况下,可以通過Guest帳號登入,但是需要windows主機設定啟用Guest帳號登入。修改eternalblue_exploit8.py中的以下程式碼,設定登入資訊:
在已知用戶名和密碼的情况下,可以通過設定來登入,無論帳號的許可權是什麼級別,得到的都是管理員許可權。
通過運行eternalblue_exploit8.py,執行以下程式碼,啟動攻擊:
在metaspoilt上得到反彈結果,得到Windows的控制:
控制的許可權為system:
通過以上過程,在未安裝MS17-010的情况下,可以通過IP地址獲得windowssever 2012的管理員許可權遠程控制電腦。但是需要目標啟用Guest帳戶,或者獲得系統的一個帳戶資訊。囙此,MS17-010是windows系統上一個較為嚴重的漏洞。