永恆之藍及WannaCry分析


以下部分是我的一次大作業,寫了大概有一周,拿出來湊篇博客,如果有錯誤的地方,還請指正。粘貼過程中可能圖片有錯誤。

1.環境搭建及簡介

1.1 實驗環境

  • Windows 7 (靶機)
  • Parrot(攻擊機)

 

1.2 環境簡介

1.2.1 Windows 7(靶機)

Windows 7 ,版本號為7601, 已開啟SMB服務,445端口開啟,防火牆關閉。 IP地址:192.168.116.137

 

 

 

 

1.2.2 Parrot(攻擊機)

Linux Parrot 4.19.0 ,Parrot 是一款專門用於滲透測試的Linux系統,其中集成了nmap, wireshark,Metasploit等600多種常用滲透測試工具,相比熱門的kali更加強大。IP地址為:192.168.116.141.

 

 

 

2.漏洞探查及滲透

2.1漏洞探查

使用nmap工具進行端口和操作系統掃描。掃描結果顯示靶機的135,139,445端口都開啟,而且服務信息也顯示出來。同時靶機操作系統最可能為windows 7。

 

 

 

 

對靶機檢查看其是否存在永恆之藍漏洞,設置目標IP為192.168.116.137,設置線程數為10,加速探查過程。

結果顯示靶機可以被利用。

 

 

 

 

2.2 漏洞利用

使用tcp反彈式meterpreter作為滲透操作模塊,默認本地4444端作為連接端口.

 

 

 

 

 

使用exploit/windows/smb/ms17010_eternalblue模塊進行滲透。通過meterpreter可以進行提權,記錄鍵盤,上傳下載文件,監視攝像頭等操作。

 

 

 

 

 

 

作為舉例,我將攝像頭連接到靶機上,然后通過parrot遠程連接主機攝像頭。

 

 

 

 

 

 列舉攝像頭,發現存在EasyCamera,連接該攝像頭,連接到該攝像頭並返回一個網頁視頻流。

 

 

 

3.病毒源碼分析

3.1病毒工作基本流程

WannaCry病毒感染后主要行為是將計算機上的多種文件類型文件加密,以此為籌碼勒索用戶,此外病毒通過隨機生成公網IP地址和遍歷內網IP地址,訪問其445端口,以此快速傳播。,病毒的基本工作流程如下:

 

 

 

 

3.2病毒源碼分析

3.2.1 源碼說明

源碼來源:https://github.com/topcss/WannaCry

注:該源碼通過原exe程序反編譯而來

代碼結構:

文件

作用

worm.c

蠕蟲行為,包括感染,傳播病毒

decryptor.c

文件加密,勒索

3.2.2worm.c

該病毒感染最初會嘗試連接http://www.iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com,連接狀態返回變量v8如果連接成功,則結束程序。如果連接失敗,則調用函數 function_408140進行感染。

 

 

 

函數function_408140中,建立mssecsvc2.0進程,同時將該進程連接到計算機的服務控制數據庫上。

 

 

 

 

mssecsvc2.0寫入注冊表中,使其每次開機都會自動啟動。

 

 

 

調用攻擊載荷模塊進行攻擊,這段代碼中有多個內存的釋放和調用函數,如GlobalFree,memcpy,同時還使用到了_OVERLAAPPED結構體變量,因此推斷是攻擊載荷調用部分。

 

 

 

隨機生成不同的公網IP地址,訪問其445端口。

 

 

 

 

 

 

 

內網通過掃描網卡信息,遍歷當前網段,從而進行傳播。

 

 

 

 

 

C:\\WINDOWS釋放勒索模塊tasksche.exe。

 

 

 

2.將一些特殊的字符串寫入內存,這些字符串長度相同,應該是Hash之后的字符串,猜測可能是用於解密部分文件,用於證明其有能力解密文件,誘使用戶支付。

 

 

 

 

 

3.2.3 decryptor.c

避開一些重要的系統文件,如系統文件目錄(WINDOWS),驅動文件目錄(Intel)等等,防止加密后影響系統的運行。

 

 

 

這一部分應該是加密是生成密鑰。

 

 

 

發送網絡請求,返回網絡回復信息,但從目前這些信息中無法判斷到底是什么行為。

 

 

 

 

c.wnry文件中主要包含配置文件,包括比特幣錢包地址,tor瀏覽器下載地址等,該部分講該文件寫入文件,應該是為后續的下載行為做准備。

 

 

 

 

該部分反復遍歷文件,並進行讀寫,同時還操作了.res文件,此外將.WNCRY文件后綴加到部分文件后面,推測應該是加密文件及修改文件后綴部分。

 

 

 

 

 

勒索用的比特幣錢包地址硬編碼在代碼中。

 

 

7.這一部分代碼存在明顯的下載行為,因此推斷是從互聯網上下載一些病毒需要的資源。

 

 

這一段代碼用於反復計算文件生成的時間和當前系統時間的時間差,應該是病毒行為中加密期限部分的實現,病毒通過通過設置期限和提高比特幣贖金的方式威脅用戶,迫使用戶盡快支付。

 

 

 

 

 

由於該代碼通過原來的exe文件反編譯而來,而且在加解密部分使用了大量的goto和函數調用,所以目前只能分析到這樣。

4. 靶機完全控制

通過前面兩個階段的漏洞初步利用,和代碼分析,基本了解了永恆之藍漏洞的利用和Wannacry病毒的基本工作原理,現在,我打算通過進一步深入利用該漏洞,通過利用攻擊載荷生成木馬,將木馬上傳到靶機,實現對靶機的完全控制。

4.1 使用模板生成木馬

1.首先使用一個小exe文件作為木馬的攜帶模板。我使用自己電腦上的11111111(某個敏感詞,自行體會)工具來生成一個小的可執行程序。選擇的載荷依然是windows/x64/meterpreter/reverse_tcp,為了一定程度上的避免殺毒軟件,我使用metasploit默認的msfencoder來對生成的exe文件進行編碼。

 

 

 

-p 參數表示使用的payloads,設置攻擊機的IP地址,-e表示使用的編碼模塊為x86/shikataganai,使用該模塊的原因是該模塊在msfencoder的各種編碼模塊中效果評價為excellent,-f 表示生成的文件格式為exe,最后是輸出文件,我命名為111111111111(某個敏感詞,自行體會)(下圖中分別是編碼模塊評分和模板及生成的文件)

 

 

 

 

 

 

2.將生成的木馬程序進行簡單的測試,將其上傳到VirSCAN上進行簡單測試。效果似乎還不錯,繞過了一半的殺軟。但鑒於平台使用的一些殺軟的版本較老,該木馬的真實效果可能會差很多。

 

 

 

 

 

 

 

 

然后嘗試用upx繼續加殼,但好像遇到了些問題,無法加殼。

 

 

 

 

目前生成的木馬是讓用戶打開木馬應用后返回給攻擊機一個tcp連接,然后控制該主機。除此之外,還可以使用該木馬進行社會工程學攻擊,但由於目前我沒有公網IP,所以只能在局域網內使用,以后可以通過購買域名進行內網穿透,實現公網下的連接。

4.2 木馬上傳

4.2.1 初次嘗試

1.使用最初的滲透方法獲取主機控制權。

 

 

 

 

2.給目標主機上傳木馬。

 

 

 

 

然后在win7的C盤下發現已經上傳的111111111111(某個敏感詞,自行體會)文件。

 

 

 

 

但好像出了點問題,無法運行,重新試試。

 

 

 

 

4.2.2 改換思路

這次換個思路,將靶機上的應用拖到攻擊機上,然后捆綁木馬,之后再上傳上去替換原來的文件。

首先我在靶機上下載了一個小計算器應用,然后攻擊機將該應用拖到本機,然后進行捆綁木馬。

 

 

 

 

 

2. 重新進行編碼,捆綁。

 

 

3. 評測,這次效果似乎更好,原因可能是我循環編碼了20次。

 

 

 

 

上傳木馬替換原有文件。

 

 

 

 

但上傳后依然不能執行,可能是編碼過程出了些問題。

4.2.3 veil免殺載荷

由於編碼后總是出問題,所以再次改換思路。這次我使用veil-Evasion生成免殺模塊,然后使用msfconsole監聽veil生成的監聽模塊,然后使用捆綁工具將監聽模塊和模板文件捆綁。

由於我的parrot虛擬機上沒有veil,另一台kali上裝過veil,所以之后的滲透過程在kali上完成。

 

 

 

 

1.生成可執行exe模塊和監聽模塊。列出所有的可用模塊。

 

 

 

 

選擇c/meterpreter/rev_tcp模塊,並設置,生成執行模塊hi.exe和監聽模塊hi.rc。

 

 

 

 

veil本身就是專門用於免殺的工具,但還是先測試一下,看看效果。

 結果有點尬了,只繞過了一半不到,最尬的是竟然繞過的大多是國內的殺軟。百度,金山,騰訊,360都沒反應... ...

 

 

 

 

 

 

 

上傳模塊,因為我用的exe捆綁機是在windows環境下,所以還得在windows下捆綁,真實環境下是絕對不會這樣做的。

 

 

 

 

這是生成的捆綁文件,完全可執行。

 

 

 

 

 

 

3.攻擊機上開啟監聽模塊,同時在靶機上開啟計算器。返回一個連接,建立一個session。

 

 

 

4.為了防止用戶關閉計算器導致進程關閉,所以將會話進程遷移。使之成為一個獨立進程。可以看出post/windows/manage/migrate將會話從原來的6744進程遷移到了7128進程。

 

 

 

 在靶機上關閉計算器,會話依然存在。

5.將控制持久化,確保系統重啟后meterpreter依然可以運行。這樣其實是修改靶機的注冊表,將meterpreter進程加入注冊表項/HKLM/Sosftware/Microsoft/Windows/CurrentVersion/Run下,以后除非用戶可以將這個鍵值手動刪除或修改,否則一直會運行。

 

 

 

5. 總結

至此,所有的流程全部完成,最終,靶機變成了一台開機就被完全控制的肉雞,后續可以通過這台機器進行各種操作,比如DDos,挖礦,等等。此外,還可以通過該主機掃描該內網內的其他主機,進行滲透,然后組成一個僵屍網絡,完成更復雜的操作。

不足:在代碼分析上,由於我還沒有學習怎么詳細分析匯編碼,反編譯工具也不了解,所以直接使用別人的反編譯的代碼分析,有很多都沒有分析出來,后期滲透過程中,由於對文件加殼操作還不熟,出現編碼后無法執行的問題也無法解決,雖然最后完成了對靶機的完全控制,但中間有些流程在真實環境下是完全不可操作的,所以后續還需要認真鑽研。

6.參考

[1] David Kennedy, Jim O'Gorman.Metasploit:The Penetration Tester's Guide[M].北京:電子工業出版社,2017.7

[2] 任曉暉.黑客免殺攻防[M].北京:機械工業出版社,2013.10

[3] Peter Kim.The Hacker Playbook2:Practical Guide To Penetration Testing[M].北京:人民郵電出版社,2017.2

[4] 諸葛建偉,陳立波,孫松柏.Metasploit滲透測試.魔鬼訓練營[M].北京:機械工業出版社,2013.8

  • https://www.freebuf.com/articles/terminal/153230.html
  • https://www.cnblogs.com/youcanch/articles/5671264.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM