简介
Metasploit Framework 简称MSF,是一款开源的安全漏洞检测工具。可以收集信息、探测系统漏洞、执行漏洞利用测试等,为渗透测试、攻击编码和漏洞研究提供了一个可靠平台,集成数千个漏洞利用、辅助测试模块
核心组件
- msfconsole:Metasploit的主要接口,提供了命令行界面来访问和使用框架的所有功能。
- msfvenom:用于生成各种格式的漏洞利用载荷(payloads),包括但不限于apk、exe、php等。
- Meterpreter:一个高级的payload,允许深入控制和操作目标系统。
常用模块介绍
1. Exploit Modules
漏洞利用模块是Metasploit最著名的模块类型之一,用于利用远程或本地系统上的漏洞。这些模块尝试对目标系统执行代码,通常用于获取对系统的控制。每个漏洞利用模块都针对特定的漏洞,并且需要根据目标系统的具体环境进行配置。
2. Payload Modules
载荷模块包含在成功利用漏洞后应该执行的代码。载荷可以是简单的命令,也可以是如Meterpreter这样的复杂脚本,它提供了一个功能丰富的命令行界面,用于与受害者机器交互。载荷分为两大类:反向(连接回攻击者)和正向(连接到远程服务器)。
3. Auxiliary Modules
辅助模块提供了除了漏洞利用外的其他功能,例如扫描、嗅探、指纹识别等。这些模块不会返回shell,但对于信息收集和目标识别等渗透测试的准备阶段非常有用。辅助模块是理解目标系统和网络的重要工具。
4. Post-Exploitation Modules
后渗透模块用于在成功渗透一个系统后执行操作。这些操作包括收集系统信息、提权、维持访问、清理痕迹等。通过这些模块,攻击者可以更深入地控制系统、收集敏感信息或进一步扩大攻击范围。
5. Encoder Modules
编码器模块用于对载荷进行编码,以绕过非执行策略、杀毒软件检测或其他安全防护措施。编码器可以帮助载荷在不被目标系统防御机制识别的情况下成功执行。
6. Nops Modules
Nops模块生成无操作指令序列,通常用于保持载荷大小的一致性或用于缓冲区溢出攻击中的填充。虽然这些模块在渗透测试中的使用不如其他模块频繁,但它们在某些特定情况下非常有用。
7. Evasion Modules
规避模块旨在帮助载荷或漏洞利用代码绕过目标机器的安全检测机制,如入侵检测系统(IDS)和防病毒软件(AV)。通过使用这些模块,攻击者可以增加渗透测试的成功率。
基础命令
1. 启动Metasploit
普通\静默模式进入msf控制台
msfconsole [-q:静默]
2. 数据库管理
msfdb init:初始化Metasploit的数据库。
db_status`:查看数据库连接状态。
3. 查找和使用模块
search [关键字]:搜索与关键字相关的模块,如漏洞(exploit)、载荷(payload)、辅助功能(auxiliary)等。
例如,search type:exploit platform:windows smb
可搜索针对Windows SMB服务的漏洞
use [模块路径]:选择一个模块来使用。
例如,use exploit/windows/smb/ms08_067_netapi。
4. 配置模块
show options:显示当前模块的配置选项。
set [选项] [值]:设置一个选项的值,如`set RHOSTS 192.168.1.1。
setg [选项] [值]:全局设置一个选项的值,对后续的模块也有效。
unset [选项]:清除一个选项的值。
unsetg [选项]:清除全局设置的选项的值。
5. 执行模块
exploit或 run:执行当前模块。`exploit`通常用于漏洞利用模块,而`run`用于辅助功能模块。
exploit -j:在后台作业中执行模块,允许同时执行多个模块。
6. 会话管理
sessions:列出所有活跃的会话。
sessions -i [会话号]:与一个特定的会话交互。
background:将当前的Meterpreter会话放到后台。
7. 辅助命令
help 或 ?:显示可用命令的帮助文档。
info [模块路径]`:显示一个模块的详细信息。
? show //查看show指令的帮助
back:退出当前模块的上下文。
8. 系统命令
exit 或 quit:退出msfconsole。
banner:显示一个新的Metasploit标语。
MSF初始配置
工作区,MSF将所有数据都存储在PostgreSQL,为了方便开展工作,MSF针对不同的渗透项目执行渗透时,所产生的工作数据,都可以存储在不同的工作区内,方便以后我们写报告时调用数据
1.初始化数据库
[root@kail ~]# msfdb init //初始化数据库
[root@kail ~]# systemctl enable postgresql --now //开机自启动数据库
[root@kail ~]# msfconsole //进入msf控制台
2.创建/切换/删除工作区
msf6 > workspace //查看当前工作区
msf6 > workspace -a tedu //创建工作区tedu,自动切换到新工作区
msf6 > workspace default //切换到default工作区
msf6 > workspace -d tedu //删除工作区tedu
3.扫描数据
msf6 > db_nmap -A 192.168.10.143 //调用nmap扫描目标
4.查看扫描结果
msf6 > workspace -v //显示工作区详细信息
msf6 > hosts //查看扫描结果中的主机
msf6 > services -p 80 //查看扫描结果中80端口信息