8.3 常用的漏洞利用代码mixins
Metasploit渗透测试手册
Mixins是Ruby语言中应用广泛的一种机制,其作用是将一些功能放置到模块中,并使得Ruby这种单继承语言具备多继承的能力。在漏洞利用代码模块中使用mixins,有助于调用该漏洞利用代码所需的不同函数。在本节中,我们将学习一些重要的Metasploit exploit mixins。
怎样实现
下面快速浏览一些常用的exploit mixins,然后在现有的漏洞利用代码模块中了解其实现机理。
Exploit::Remote::TCP:该mixin为模块提供了TCP相关功能,可用于建立TCP连接。connect()函数与disconnect()函数分别负责建立和终止连接,此外还需要一些不同的参数,例如RHOST、RPORT、SSL等。
Exploit::Remote::UDP:该mixin用于为模块提供UDP相关功能,UDP通常被视为比TCP更快的连接模式,因此也是一个方便的选项,该mixin还进一步地包含了Rex::Socket::UDP,从而不必担心无法与目标建立socket连接的问题。
Exploit::Remote::DCERPC:该mixin提供了与远程机器上的DCE/RPC服务进行交互的工具和方法,其中方法通常适用在攻击渗透的语境中。该mixin还扩展了TCP mixin。dcerpc_call()、dcerpc_bind()等函数是DCE/RPC mixin提供的。
Exploit::Remote::SMB:该mixin定义了有助于和远程目标主机SMB服务进行通信的函数,例如smb_login()、smb_create()等,都是该mixin提供的有用函数。
Exploit::BruteTargets:该mixin用于对目标机器进行暴力破解,使用exploit_target(target) 函数接受目标主机IP并执行暴力破解,该mixin可以很容易地在不同的暴力破解代码中进行扩展和使用。
Exploit::Remote::Ftp:该mixin用于攻击渗透远程目标上的FTP服务,其中包含了用于与远程目标主机建立连接的Remote::TCP,并使用connect()函数与远程系统上的FTP服务器建立连接,该函数可接受的参数值是RHOST与RPORT。
Exploit::Remote::MSSQL:该mixin有助于查询远程数据库,其中Mssql_ping()函数用于查询数据库的可用性并将ping命令的返回信息保存为hash形式,Mssql_xpcmdshell()函数则使用xp_cmdshell执行系统命令。在使用与MS SQL相关的漏洞利用代码时,该mixin是非常便利的。
Exploit::Capture:该mixin有助于截获网络中的数据包,其中open_pcap()函数用于建立网络设备并捕获流经该设备的数据包。该mixin需要安装pcap。inject(pkt="", pcap=self.capture) 和inject_reply()是其中两个重要的函数,前者用于向网络设备中注入数据包,后者用于根据注入的数据包报告注入后产生的数据包。
上面展示了一些漏洞利用代码mixins,在Metasploit框架内使用漏洞利用代码模块时,这些mixins会带来很大便利,使用mixins可避免重复使用相同模块。促进代码重用,也正是模块式结构灵活的原因。
怎样工作
如前面所说,mixins用于在Ruby这种单继承语言中提供多继承机制,这里的含义是,可以根据实际需要在任意模块中调用不同的功能。例如,如果需要在漏洞利用代码模块中建立TCP连接,并不需要专门为其定义一个完整的函数,而是可以简单地在模块中调用Exploit::Remote::TCP这一mixin,就可以使用其中提供的各种功能。
更多
更多的mixins
除了前面提及的mixins之外,框架中还有很多重要的mixins,包括fileformat、imap、java、smtp、she等,可以在lib/msf/core/exploit目录中找到。
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。