本周,Metasploit团队为Framework增加了一项新的功能,这个功能提高了安全性,为MSF提供了另一种新型的免杀和规避的技术途径。
我们很高兴为您介绍Pingback Payloads:一种新型的非交互式的payload(载荷)类型,一般情况下Metasploit上的会话是有互动性的,用户可以发送命令,接收信息,或者对目标进行其他操作。与此不同的是Pingback载荷能够不使用shell来验证目标是否能被渗透利用,绝对不包含其他的内容。Pingback Payloads提供有限的“Pingcack”功能,可以在不加载shell的情况下验证目标是否可以被攻入。
以下是它的工作原理:Metasploit在创建Payload时,会为Pingback Payloads写入一个通用的唯一标识符(UUID)。
完成以上任务之后,payload将会自动退出,不会和目标有任何信息交互,也不会有进一步指令和控制。在整个过程中不会读取数据,只写入UUID。
Pingback可以通过多种方式提高安全性和隐秘性:在测试过程中,如果目标服务器上有敏感的数据,渗透测试人员将无法看见它们。如果有人拦截或者嗅探数据包,只会抓到一个16字节的“随机”值。如果payload在渗透测试结束后意外运行并且被其他攻击者连接到,这种情况下无论攻击者采用什么方式都只会得到最开始Pingback写入的UUID编号。
我们一直思考在不影响Metasploit用户的实用性和创造性的情况下如何使Metasploit的会话更加安全。在这种情况下,我们遵循最小权限原则,而不是给Payload添加一系列规则限制,避免遗留的Payload被攻击者连接并利用。
这种情况下,我们先创建一个带有UUID的Payload(它已经被添加到metasploit的数据库里面了),并将其发送到目标主机。然后在Framework上进行监听,当Payload被执行时,其中的UUID将会传递回Framework上并显示,然后payload将会退出。
第二个示例是使用"PingbackRetries"选项和"PingbackSleep"选项:
“PingbackRetries”表示载荷回调次数;“PingbackSleep”表示回调时间长度
Metasploit传统的基于TCP的payload,连接通常一直保持打开,直到用户将payload关闭,连接才会断开。而Pingback payload在和控制台交互UUID之后连接就会关闭,等待Pingback payload下一次和控制台交互UUID,连接才会被打开。所以,源端口每次都会更改,请注意。如果“PingbackSleep”值为86,400(24小时),渗透测试人员甚至可以关闭他们的计算机直到第二天,重新在控制台上打开监听器,同样可以正常和Pingback payloads进行下一次交互,彷佛什么也没有发生一样。
目前,我们已经在Metasploit中添加了11个PingbackPayloads。下面列表中的payload覆盖范围只是暂时的,我们会把这个覆盖范围扩大,欢迎大家!
不过有待解决的一个问题是这种载荷并不支持后渗透的清理操作,因此,这种载荷并不能和上传文件到目标机的漏洞利用模块一起使用。
如:hp_autopass_license_traversal是使用FileDropper去上传文件到远程机上然后再对其进行计划清理的。如果用户想和pingback载荷一起使用,它会报错:
与往常一样,Pingback有许多功能可以让Metasploit Framework用户社区变得更好,我们欢迎贡献者!让我们非常兴奋的一件事是,只需要一个16字节的异步响应,Pingback的命令和控制部分就可以扩展到以前我们无法想象到的地步。ICMP、ARP、或者藏在数据包里面的空余部分,甚至email都有可能成为这种载荷的传输方式。