Metasploit Meterpreter 替代品

信息安全 渗透测试 杀毒软件 元数据
2021-08-10 05:04:26

这些天我正在测试各种类型的客户端黑客技术,但在所有场景中,我都使用 Meterpreter 变体作为有效负载。现在我可以轻松绕过防病毒和防火墙,但赛门铁克声纳和 IPS 始终检测 Meterpreter 有效负载并阻止攻击者 IP。

有没有比 Meterpreter 更好的有效载荷可以绕过 IPS?

网上有没有符合我需求的有效载荷编写教程?

3个回答

绕过 AV 和 IPS 可以通过 Meterpreter 或任何其他 RAT 完成。大多数时候,meterpreter 很方便,因为首先它是开源的,其次它是作为反射 DLL 实现的,它可以将自身插入被利用的进程而不接触磁盘。

AV 解决方案可以通过Veil Evasion项目轻松绕过,而 reverse_https Meterpreter 可以绕过 IPS,因为连接是加密的。您还可以选择Stage Encoding来对第二阶段 metsrv.dll 进行编码,这可以绕过许多 IPS 解决方案。此外,基于 HTTPS 的无阶段 Meterpreter 在绕过基于主机和网络的检测解决方案方面也非常方便。

但是,有时meterpreter 是一个同步有效负载,其中用户需要与会话交互变得难以管理,例如当客户端攻击或活动需要在很长一段时间内执行时。在这种情况下,您始终可以选择使用ThrowbackPupyCobalt Strike 的Beacon 有效负载。这些有效负载的优点是它们本质上是异步的,并且它们都被实现为反射 DLL,这意味着它们可以通过有效负载/windows/dllinject/有效负载类型与 Metasploit 一起使用。由于这些有效负载不像 Metasploit 源代码树中的普通 Meterpreter 那样经常使用,它们可以绕过许多开箱即用的 AV 和 IPS 解决方案。

最近,在纯 Powershell 中实现的有效载荷可以绕过 AV 以及 IDS/IPS。Powershell Empire就是在纯 Powershell 中实现的此类有效负载之一。

Meterpreter 缺少的一件事是在不联系处理程序的情况下在第一阶段编写动作脚本。这样的东西现在是 Python Meterpreter 的主要来源,并且在未来几天,该功能也将被移植到其他 Meterpreter 有效负载类型。请查看我在Anti Virus evasion 技术中的回答,以获取绕过 AV 的技术列表,以进一步解释该主题。

PowerShellEmpireSlingshot是进入 2016 年的植入程序的两个主要考虑因素。但是,如果您不了解这些技术,则可以通过入侵检测、高级防病毒引擎和威胁追踪实践轻松捕获这些植入程序。

Meterpreter 和 Cobalt Strike Beacon 也有它们的位置。前几天我遇到了一个有趣的后门,称为slarpd(来自zarp项目),它是一个仅限本地网络的远程 shell,因为它通过 ARP 工作Cobalt Strike 一直在建议在SMB 命名管道上添加额外的低速、近乎不可见的网络外壳

Meterpreter、Beacon、Slingshot 和 Empire 都建议,如果使用 HTTPS 隐蔽通道,首先使用Wininet而不是 WinHTTP。Meterpreter 还需要对网络隐蔽通道进行大量繁重的配置——但好消息是这个名为Paranoid Mode 的wiki 页面包含正确配置它所需的大部分信息——以避免被检测到。

信标的概念(今天所有这些植入物都非常响亮——这可能会在 2016 年发生变化)是一个需要克服的巨大问题,就像通过狩猎活动被抓住一样。Empire 在其Listener 设置和配置中实现了这一点。Empire 具有 DefaultDelay、DefaultLostLimit、KillDate、WorkingHours 设置和独特的反信标 DefaultJitter 设置(并不是说这些设置中的大多数都不是非常有效和独特的)。Metepreter 只有 SessionCommunicationTimeout 和 SessionExpirationTimeout——而且只能通过 HTTPS。

Empire 还将通过消息“模块不是操作安全,仍然运行?”来防止操作员犯严重错误。但是,根据最初交付 Empire 的方式,代理仍可能以多种方式被检测到。交付 Empire 的最佳方式是通过浏览器(例如,Win7/IE8/Java6 ms13_055_canchor)或 Flash 漏洞利用(例如,在秘密狼行动中发现的闪存漏洞被重新用作 adobe_flash_nellymoser_bof ——甚至是黑客团队在opaqueBackground 属性和 ByteArray 对象中的另一个重新用作 adobe_flash_hacking_team_uaf)。在上面@void_in 描述的方法中(以及我的评论中),powershell.exe(或 Empire 代理)永远不会作为进程启动,而只是注入到与浏览器相同的内存空间中(然后,psinject,到您想要的任何其他进程)。通过Microsoft Office(或 Adob​​e Reader PDF)漏洞利用或宏交付是第二好的选择。通过可执行文件交付,无论是通过 USB 闪存驱动器、SMBRelayX、Stuxnet 风格的 WebDAV、共享文件夹等,都是最容易被捕获的方法之一。如果目标知道 PowerShell 的攻击性功能(例如,正在运行 CrowdStrike 或类似功能),您可以打赌任何 powershell.exe——无论是浏览器提供的(例如,BeEF中的 hta_powershell)——或通过命令行欺骗,例如任何来自 Empire 的非 DLL stager、Cobalt Strike 的 PowerShell Web Delivery、metasploit-frameworkDryRunpexec_psh 和类似的东西在这些现代的、受保护的基础设施中不起作用。你会被抓住的。

通常,最好根据目标网络的特性构建自定义隐蔽通道和/或 C2。ARP 或 SMB 命名管道看起来很棒(即使有它们的限制),但它们会在错误的时间脱颖而出吗?米什或 cheetz/c2 可能分别是繁重的 SSH 和 HTTP 传输环境的理想选择,但它们也可能被捕获。低速和慢速技术被证明不太有效 - 如果您的渗出路径(如果这是目标或植入要求,即窃取数据)与防御的日志记录率不充分匹配,那么您可以已经输了。也许 IPv6 或其他网络混淆会有所帮助(例如,SniffJoke),但也可能没有。我个人很想找到一个可以通过 Tor(以保护出口节点分析)甚至是受控的 Tor 节点发送正确配置的 TLS 的滩头阵地,但我也喜欢 FASHIONCLEFT、Ncovert 和covert_tcp方法。也许是以上所有的组合?

您打算运行哪些模块?运行任何一个 Meterpreter 和 Mimikatz 例程,上传文件,timestamping 等等——这些都是明显的妥协指标。令人惊讶的是,清除事件日志并没有你想象的那么多,但在我看来,最好不要管它们。在大多数环境中,Meterpreter 例程很容易被捕获,尽管它确实有一些优势,我将在下一段中确定。Empire 拥有其中的大部分——您可以运行situational_awareness/host/winenumsituational_awareness/host/paranoia跟踪collection/netripper并非常有针对性地使用collection/ninjacopy. 我可能会建议您避免使用 privs,credentials/powerdump因为这可能比您想要的更嘈杂——即使 ninjacopy 在技术上访问磁盘(但它的做法不同)。collection/inveigh(即,在 PowerShell 中实现的 Responder.py)是一个很棒的模块——在 2016 年保持在网络中的持久性并不意味着您应该实际运行任何持久的操作系统挂钩(例如,自动运行、服务、计划任务),而是要知道很多关于网络上的每台机器和凭据。collection/minidump也应该谨慎使用——最好先对所有这些进行实验并应用所有防御技术(例如,AV、基于网络的 IPS 和 HIPS)和狩猎技术(例如,Powershell 日志记录、Sysmon 事件)与您的植入物一起生产。

有很多有趣的技术可以通过 Metepreter 提供,而 Empire 则无法做到——在CCDC和类似活动中很有用。例如,我不知道用 Empire 禁用鼠标和键盘的方法,但在 Metepreter 中它是一个简单的uictl disable keyboard|mouse. 可以复制我最喜欢的 Meterpreter 模块,run lockout_keylogger但 Empire 需要将Lock-Workstation和 PowerSploit 的Get-Keystrokes模块化或分阶段进行。Metepreter 具有run windows_autologin某些场景,PowerUp包含 Get-RegAutoLogon 功能。帝国确实有situational_awareness/host/getcomputerdetails,我认为肯定需要将其合并到 metasploit-framework 后模块中。许多 Metepreter 操作不适用于现代 Windows 操作系统,并且更改允许其使用的注册表项可能会受到非常严格的监控。例如,如果存在并设置为 0,许多 SMB 模块(尤其是隐身模块)将不会运行LocalAccountTokenFilterPolicyHKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System将其设置为 1 可能会敲响警钟。如果UseLogonCredentialinHKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest存在或设置为 1,那么您必须将 Mimikatz 作为内核驱动程序加载(注意,请查看本文底部标题为“密码”的最后一个标题部分,但如果您是以 Win10 或 Server 2012 为目标,那么您可能会遇到可怕的 RunAsPPL=1HKLM\SYSTEM\CurrentControlSet\Control\Lsa-- 这将防止在这些平台上进行大量凭证转储(以及较旧的平台,甚至是 8.1,但其他平台向后移植到 Vista/7)。大多数 Metasploit 后置模块不仅仅停留在内存中,而且可能会记录并执行对命令的炮击。查找仅保留在内存中的 Metepreter 模块,如果您发现需要或希望运行标准的 Windows 命令,请使用,例如,execute -H -m -d calc.exe -f c:\\Windows\\System32\\whoami.exe -a "/all"标志-m使其从当前进程内存运行并-d使其显示为新进程的位置在进程列表中使用假名(但也用 隐藏-H,在此处查看更多信息)。sysinfo, getuid, use -l, ps, steal_token, getpid, transport, run win_privs, wifi_list, run enum_logged_on_users -c(注意,没有运行-c触摸磁盘!),,window_enum -u并且clipboard_get_data是我最喜欢的一些内存中的 Meterpreter 命令。我确实喜欢一些触摸磁盘,例如run enum_sharesrun usb_history,但要谨慎使用它们(主要是因为这些会带来有趣的转轴机会)。您可能不想使用run scraper, run winenum, run enum_cred_store, run enum_unattend, 尤其是run checkvm, run getcountermeasure, run killav, run bypassuac_injection, getsystem, run hostsedit, 或run persistence- 因为我相信这些会击中磁盘并且 AV 会捕获它们。从 Meterpreter 接触域也被标记了很多(注意,几乎所有经典的Meterpreter 脚本您多年来所依赖的正在消失,转而使用 metasploit-framework 帖子模块!不要使用其中的大部分,支持替换它们的新模块)——当然跳转到 Empire 的situational_awareness/network 模块会更好(并且它们实现了更好的技术)。有选择是件好事,我相信 Empire 和 Meterpreter 植入物都可以根据您的需要进行混搭。在某些情况下,两者都运行是有意义的!

说到持久性,Empire 也提供了非常有趣的观点。这些技术不在 Metepreter 中。persistence/misc/disable_machine_acct_change很好,但持久性/powerbreach 模块是真正的挑战者。有许多有趣的 Metasploit 风格的竞赛模块以及随着时间的推移而建立的技术,其中一些在 Empire 的 trollsploit 层次结构中得到了复制。在比赛中阻止机器允许其管理员的任何访问是彻头彻尾的残酷,但在网络演习或红队期间会混淆蓝队(即,允许他们本地和网络登录,但让他们忙于排除为什么事情不工作的原因)团队参与可以真正压制他们的耐心,给他们很多经验教训。我掌握了各种技术,例如永久删除 gpupdate 和 secedit 并将不可变的DisableGPO注册表项设置为 1。如果目标网络支持它,红队可以继续通过鲜为人知的DSC功能来管理网络GPO 反正。Mimikatz 内核技术(注意,参见这段视频从 44:23 开始直到 prezo 结束,尤其是在幻灯片 54 和 56上)也很有趣,应该重新调整用途,以防止防守者瞄准单一的、强大的进攻工具。高层目标,如 Microsoft IIS 和 Azure(Get-Webconfig 和 Get-ApplicationHost浮现在脑海中),中间层组件,如 Empire 模块中的recon/find_fruit组件,以及较少理解的组件,如Mesos、Google Compute Engine、OpenStack、 OpenShift、Cloud Foundry、LXC、Xen、Docker、CoreOS 和 EC2/AWS 是未来的长期目标。

总之,Meterpreter 可能会被 AV/HIPS 检测到(例如提问者提到的那个),所以我建议避免在 metasploit 框架(例如,无级和/或编码器)甚至在 Veil-Evasion 中发现的罐头技术框架。坚持上面@void_in 提到的唯一已知良好的技术。它涉及依赖于内存损坏的漏洞利用。对于这些类型的漏洞利用(浏览器、Flash、MS Office、Adobe Reader、潜在的远程服务等),@void_in 的技术(涉及使用 metasploit-framework 漏洞利用和 Veil-Evasion 框架分段 Meterpreter 无侦听器有效负载 - 可能是首选成为一个设置了所有偏执模式配置的 reverse_https 有效负载——还需要一个 Empire 侦听器和Empire launcher.dll stager),它依赖于 ReflectiveDLLInjection 非常棒,不仅因为这个原因,还因为它利用了 UnmanagedPowerShell 的技术来使用 .NET 运行空间实例来构建 PowerShell 的管道对象流,但不需要单独的 powershell.exe要运行的实例(因此不会被标准的 PowerShell 检测行为记录或检测——甚至不必安装 PowerShell,尽管 .NET 可以)。这是一个 metasploit 框架作业(exploit 模块)、已删除的 PowerShellEmpire launcher.dll stager、组合的 Veil-Evasion 有效负载和 Empire stager(使用针对 reverse_https shell 的 Meterpreter Paranoid Mode 配置)和 Empire 监听器的大混合球。

您也可以在 dropper(即独立的可执行文件)中使用这种技术,但 AV/HIPS 将有机会首先对其进行扫描——寻找任何异常——其中一些甚至可能是那些 ReflectiveDLLInjection 或 .NET 运行空间技术。相反,对于 droppers,我目前最喜欢的是TheShellterProject隐身模式——特别是因为用一个或多个(Empire 加 Metepreter,有人吗?)有效载荷感染已知良好的 PE 文件正是我正在寻找的。当使用 MS Office 的宏时,我建议使用这种 dropper(因为它会被 AV/HIPS 扫描)。我还建议阅读 The AntiVirus Hacker's Handbook,了解有关特定 AV/HIPS 目标的大量详细信息,以及许多长期技术。作者似乎喜欢使用 Microsoft 友好的编程风格的最新版本 Visual Studio 构建的自定义 C/C++ 未打包、未混淆的有效负载(PE——或者更好的 DLL——或者更有趣的安装程序)——经典隐藏在平原的视线角度。如果您对使用 Meterpreter 而不是 Empire 感到满意,我仍然建议您尝试 PowerShellEmpire,

鉴于现有的答案已经很好了,我很害怕加入这个话题!但无论如何我都会尝试一下,并且从一个稍微不同的角度来看,那就是调整和修改 Meterpreter 本身以解决问题。我将首先将您的问题分开一点。

现在我可以轻松绕过防病毒和防火墙,但赛门铁克声纳和 IPS 始终检测 Meterpreter 有效负载并阻止攻击者 IP。

我很乐意在使用 SEP 的 SONAR(以及其他)的目标上通过 HTTPS 使用 Meterpreter 会话。这些保护是“猫捉老鼠”游戏的一部分,就像你一样。发现 SONAR 无法捕捉到的路径需要进行少量研究。在某些情况下,绕过 SONAR 之类的方法就像使用reverse_https并确保您的 Metasploit 侦听器具有有效的SSL 证书一样简单。我通常有一个基于云的攻击服务器,它有端口443打开 Nginx 监听它配置为使用有效的 SSL 证书。我在适当的地方代理来自 Nginx 的请求到 MSF。从那里开始,我的大多数与 SEP 相关的问题似乎都消失了。搏一搏!我很想知道结果如何。此外,不要害怕花一点时间来找出究竟是什么被抓住了。这导致我...

有没有比 Meterpreter 更好的有效载荷可以绕过 IPS?

我们可能应该清楚“有效载荷”在这里的实际含义。如果您正在运行 MSF 生成的分段 Meterpreter 可执行文件,则该可执行文件只包含一个 PE 存根和一个 stager。被许多 AV/etc 捕获。如前所述,对这些进行编码可以让您超越基础知识。但是,这里的问题的一部分是,当二进制文件运行时,首先发生的是与外部实体建立连接,并且 DLL(称为metsrv)通过线路发送。如果此处使用reverse_tcp则文件以明文形式发送,因此很容易在线路上进行指纹识别。这将导致 SEP 之类的人参与会议。有办法绕过这个,包括使用无阶段bind_tcpreverse_http有效负载,这会导致生成的二进制文件包含metsrv您认为需要的任何其他扩展。metsrv使用无阶段意味着不必执行下载的第一步。要记住的另一件事是 MSF 使用的默认 .exe 模板是众所周知的,因此您可以通过 .exe 中的-x参数指定您自己的模板msfvenom

随着 Powershell 的流行,您还可以选择msfvenom通过指定来创建 Powershell 有效负载-f psh,这些有效负载仍然可以以通常的方式将 Meterpreter 注入内存。AV/IPS 还没有很好地处理此类有效负载,因此如果您有能力让人们运行批处理文件,它们往往是一个不错的选择。psexec我发现在尝试避免 AV/IPS 时,将 PSH 方法与类似的方法一起使用非常好。

Meterpreter 使用的通信机制也是众所周知的,因此是防御工具可以利用的另一件事。无国界医生可能很快就会有一些东西可以帮助解决这个问题(观看这个空间)。

顺便说一句,迁移也是一个问题,因为迁移的“方法”很容易被发现。但是,某些 AV 产品允许在一段时间后发生这种情况,因此如果您发现自己被抓住,可能是因为迁移发生得太早了。

网上有没有符合我需求的有效载荷编写教程?

不是我所知道的,但黑客的本质是让他们走出去发现自己!不要害怕修改 Meterpreter 本身的源代码。它都是开源的,易于构建。

注意:我并不是说以这种方式绕过所有防御系统总是可能的,我只是提供一些可以帮助您克服一些想法的想法。

+1 为伟大的问题,以及其他都很好的答案。精彩的讨论。