前言
Metasploit是用ruby语言开发的,所以你打开软件目录,会发现很多.rb
结尾的文件。kali下默认位于/usr/share/metasploit-framework
一、Meatsplooit的架构
Offensive Security的一张图
项目模块化为几个主要的组件:
Rex库
ruby extension library
的缩写- 设计为不依赖其他依赖项
- 提供的组件:
- 封装的套接字子系统
- 协议的客户端/服务端
- 日志记录子系统
- 漏洞利用的工具类和大量有用的类
Core 库:
- 负责实现模块、会话、插件等的交互接口
Base库:
- 扩展Core库,提供使用的类处理框架的问题
二、目录结构
在Kali的目录 /usr/share/metasploit-framework
data
目录包含 Metasploit 用来存储某些漏洞利用、单词列表、图像等所需的二进制文件的可编辑文件。
documentation
顾名思义,该目录包含框架的可用文档。
lib
这个目录包含框架代码库的“肉”(重要的东西)。
modules
该目录中可以找到MSF 的模块,包括漏洞利用、辅助和后渗透模块、有效负载、编码器和 NOP 生成器。
plugins
插件目录
三、Measploit模块
我们对metasploit的操作,都是围绕着模块进行。可以在2个位置寻找模块
/usr/share/metasploit-framework/modules/
,框架自带(大佬给你写好的)~/.msf4/modules
,自定义的模块
在MSF里,所有的模块都是Ruby类
- 模块继承于特定类型的类
- 这些特定的类都继承于
Msf::Moudle
类 - 类之间有共享通用的API
就是说,每一个模块都是一个.rb
文件,这些.rb
文件里的类都继承一些特定类型的类。如果看过Metasploit框架基础(一),那么这里应该蛮好理解。就是按照规定的接口,实现想要的功能文件。MSF框架会帮我们注册、调用这个文件(构造数据包->设置参数(如果有)->发包并按照我们些的逻辑输出信息)
Metasploit是基于模块的概念。最常用的模块类型有:
- Auxiliary——辅助模块,不利用目标,但可以执行数据收集或管理任务
- Exploit——利用模块,以允许框架在目标主机上执行任意代码的方式利用漏洞
- Payloads——可以在远程目标上执行的任意代码,以执行任务,例如创建用户、打开shell等
- Post ——Post模块是在机器被入侵后使用的。它们执行有用的任务,例如从会话中收集、收集或枚举数据。
四、Metasploit的使用
我们说过,远程漏洞不管怎样,都是通过TCP/IP协议族发送一些预定义格式的数据,即协议通信,就是交换数据包。我们将这个过程封装成代码,就有了POC/EXP
。Metasploit是一个漏洞利用框架,就说明它帮我们实现并提供了这些。在Metasploit,我们要做的事,
- find relevant exploits ----> 寻找相关的
EXP
, - set parameters ----> 设置参数(payloads、目标参数等)
- exploit vulnerable services ----> 攻击/利用 存在漏洞的服务
Msf不单单是一个漏洞利用框架,而是一个渗透而是框架,渗透测试的每一步,Msf都提供了支持。一次,Msf的使用方法就是
- 搜索可用模块
- 设置模块需要的参数
- 执行模块
参考
[1] https://docs.metasploit.com/docs/using-metasploit/
[2] https://www.offsec.com/metasploit-unleashed/introduction/
[3] https://tryhackme.com/r/path/outline/jrpenetrationtester