MSF是Metasploit项目的子项目。Metasploit项目可以提供有关漏洞利用的信息,帮助我们进行渗透测试。
MSF是一个开源框架,允许我们编写、测试和执行漏洞利用代码。也可以将其视为渗透测试和漏洞利用工具的集合。
MSF术语
- 漏洞利用(exploit):Metasploit启动时,会显示框架中已经公开可用的漏洞利用模块的数量。漏洞利用是一段利用漏洞为我们提供所需输出的代码。
- 载荷(payload):载荷是一段代码,通过漏洞利用把这段代码传递到目标系统或应用程序以执行我们想要的操作。载荷实际上可以分为三种主要类型:Single、Stager和Stage
- Single:这类载荷是独立的,通常用于执行简单的任务,例如执行notepad.exe文件和添加用户。
- Stager:这类载荷用来在两个系统之间建立连接。然后,将Stage载荷下载到受害者的机器上。
- Stage:Stage可以视为载荷的组件。它们提供了不同的功能,例如对命令shell的访问、运行可执行文件的能力以及上传和下载文件的功能,并且不受大小限制。Meterpreter就是一个Stage的例子。
其他类型的载荷如下所示:
- Inline(non-staged):包含用来执行特定任务的完整shellcode的利用代码
- Staged:Staged用来与Stage载荷一起执行特定任务。Stager在攻击者和受害者之间建立通信通道,并发送一个将在远程主机上执行的Staged载荷。
- Meterpreter:这是Meta Interpreter的缩写,通过DLL注入进行工作。它会加载到内存中,并且在磁盘上不会留下任何痕迹。Meterpreter在官方网站上的定义如下。
一种高级的、动态可扩展的载荷,它使用内存中的DLL注入Stager,并在运行时通过网络进行扩展。它通过Stager套接字进行通信并提供全面的客户端Ruby API。 - PassiveX:使用ActiveX控件创建IE浏览器的隐藏实例。通过HTTP请求和响应与攻击者进行通信。
- NoNX:用于绕过DEP保护。
- Ord:可以在所有Windows版本上使用的极小的载荷,但是不太稳定,并且在利用过程中依赖ws2_32.dll进行加载。
- IPv6:专门为在IPv6主机上使用而构建。
- 反射式DLL注入:这是一种由Stephen Fewer创新的技术。利用这种技术,不用接触被攻破主机的硬盘驱动器,就可以将Staged载荷注入运行于内存中的进程。
- 辅助(auxiliary):MSF拥有数百个辅助模块,可用于执行不同的任务。可以将这些模块视为不进行任何漏洞利用操作的小工具。在漏洞利用过程中辅助模块能起到很大的帮助作用。
- 编码器(encoder):编码器将信息(这里是指汇编指令)转换为另一种形式,该信息在执行后将给我们相同的结果。编码器用于将载荷传送到目标系统/应用程序时绕过检测。由于组织网络中的大多数IDS/IPS都是基于签名的,因此在对载荷进行编码时,它将更改整个签名并轻松绕过安全机制。最著名的编码器是x86/shikata_ga_nai。这是一个多态XOR累积反馈编码器(polymorphic XOR additive feedback encoder),这意味着它每次都会产生不同的输出,从而加大被检测到的难度。即便与多次迭代一起使用,它也仍然非常方便。但是,必须谨慎使用迭代,并且始终必须在使用前首先对其进行测试。它们可能无法按预期工作,并且随着每次迭代,载荷的大小都会增加。
- NOP生成器:NOP生成器用于生成一系列随机字节,这些字节与传统的NOP sled(是指一系列不会有实际动作的NOP指令)等价,只是它们没有任何可预测的模式。NOP sled还可用于绕过标准IDS和IPS NOP sled签名(NOP Sled-\x90\x90\x90)。
- 项目(project):这是一个容器,用于在渗透测试活动期间存储数据和凭证。它在Metasploit Pro版本中更常用。
- 工作区(workspace):工作区与项目相同,但仅在MSF中使用。
- 任务(task):是我们在Metasploit中执行的任何操作。