什么是Meterpreter?
Meterpreter是一种先进的,可动态扩展的有效负载,它使用内存中的 DLL注入阶段,并在运行时通过网络扩展。它通过stager套接字进行通信并提供全面的客户端Ruby API。它包含命令历史记录,制表符完成,频道等。
Metepreter最初由Metasploit 2.x的skape编写,常见的扩展名合并为3.x,目前正在对Metasploit 3.3进行大修。服务器部分以纯C实现,现在使用MSVC进行编译,使其具有一定的便携性。客户端可以用任何语言编写,但Metasploit具有全功能的Ruby客户端API。
内容:
1、Meterpreter如何工作
2、Meterpreter设计目标
2.1 、隐身
2.2 、强大
2.3 、可扩展
3、添加运行时功能
一、Meterpreter如何工作?
- 目标执行初始stager。这通常是bind,reverse,findtag,passivex等之一。
- stager加载以Reflective为前缀的DLL。反射存根处理DLL的加载/注入。
- Metepreter内核初始化,通过套接字建立TLS / 1.0链接并发送GET。Metasploit接收这个GET并配置客户端。
- 最后,Meterpreter加载扩展。它将始终加载stdapi,并在模块提供管理权限时加载priv。所有这些扩展都使用TLV协议通过TLS / 1.0加载。
二、Meterpreter设计目标
隐身
- Meterpreter完全驻留在内存中,并且不向磁盘写任何内容。
- 由于Meterpreter将自身注入受损的进程并且可以轻松迁移到其他正在运行的进程,因此不会创建新进程。
- 默认情况下,Meterpreter使用加密通信。
- 所有这些提供有限的法医证据和对受害者机器的影响。
强大
- Meterpreter采用通道化通信系统。
- TLV协议有一些限制。
扩展
- 功能可以在运行时扩充并通过网络加载。
- 可以将新功能添加到Meterpreter,而无需重新构建它。
三、添加运行时功能
通过加载扩展将新功能添加到Meterpreter。
- 客户端通过套接字上载DLL。
- 在受害者上运行的服务器加载内存中的DLL并对其进行初始化。
- 新的扩展将自己注册到服务器。
- 攻击者机器上的客户端加载本地扩展API,现在可以调用扩展功能。
整个过程是无缝的,大约需要1秒钟才能完成。
在下一节Metasploit教程中,我们将讨论 在这个新环境中可用的各种Meterpreter命令。