防病毒、反恶意软件和EDR是预防攻击的常用工具。但它们可以被绕过,本文探讨了在加载程序中实现的各种绕过技术。加载程序是一种通过绕过保护措施执行恶意负载的程序。文章将展示这些技术如何帮助渗透测试团队,并介绍各种可能的安全措施及其绕过技术

在我们的审计过程中,特别是在进行基础设施和网络渗透测试时,我们的安全专家可能需要在安装了防病毒软件的环境中运行特定的评估工具。这些工具,如用于评估Active Directory安全性的Rubeus和SharpHound等,由于其功能与实际网络攻击中可能使用的工具相似,通常会被现有的安全解决方案逻辑性地阻止运行。然而,为了确保能够准确地进行入侵测试并发现潜在的安全漏洞,这些工具的使用是不可或缺的。因此,找到一种方法来绕过现有的保护措施,以便在这些受保护的环境中运行这些关键工具,就显得尤为重要。此时,加载程序(Loader)的应用就显得尤为关键。加载程序能够获取到防病毒软件所检测到的计算机程序,并通过某种方式将其转换为未被防病毒软件检测到的形式。这样,我们就可以在不触发安全警报的情况下,顺利地在这些环境中运行所需的评估工具,从而确保我们的渗透测试工作能够顺利进行。
1防病毒/EDR 如何工作
在创建加载器之前,必须明确计算机程序被安全解决方案分类为恶意或非恶意的原因。防病毒/EDR软件提供了多种工具用于对计算机程序进行分类。
签名数据库
任何计算机程序都可以通过哈希函数(例如SHA-256)生成唯一的签名。基于签名的分析涉及存储已知属于恶意程序的所有签名的列表,并将每个新签名与该列表进行比较。尽管这种方法很有趣,但它并不足以保证防病毒软件的有效性。实际上,这种方法相对容易被绕过。程序中的任何细微变化(无论多小)都会完全改变其签名。此外,这种安全方法无法防御尚未列出的新威胁。
例如,Github 上 Mimikatz 2.2.0 版本对应的 SHA256 哈希为:

静态分析
静态分析包括在程序中搜索已知属于恶意程序的一个或多个字符串。例如,Matt Hand 的DefenderCheck工具可用于确定 Windows Defender 检测到给定可执行文件中的哪些字符串。下面是使用 Mimikatz 程序的示例:

使用 Windows Defender静态分析检测 Mimikatz。我们可以看到,Defender 根据包含“mimikatz”一词的字符串将该程序认定为恶意软件。我们也可以使用 YARA 规则来观察这种现象。例如,我们使用 YARA 规则来检测“Portable Executable”可执行文件中是否存在以下字符串:
## / \ ## /*** Benjamin DELPY gentilkiwi ( benjamin@gentilkiwi.com )
我们可以看到,当我们对“mimikatz.exe”使用 YARA 规则时会触发“Windows_Hacktool_Mimikatz_1388212a”警报,而“notepad.exe”不会触发警报(因为后者不包含有问题的字符串):

如果我们运行“mimikatz.exe”程序,我们会看到该字符串确实存在:

Yara 规则已正确检测到字符串。因此很明显,可以通过对程序的静态分析来将其描述为威胁。
启发式和行为检测
启发式检测的目的是了解程序的工作原理并确定它将在系统上执行什么操作。这可以通过使用沙盒来实现:一个隔离的虚拟机,潜在危险的程序可以在其中运行。然后,防病毒软件可以检查程序在执行过程中采取的操作并寻找恶意操作的迹象。类似地,行为检测包括观察程序在执行期间执行的操作,以发现任何可疑活动。例如,按特定顺序对 Windows API 进行的某些调用被认为是典型的恶意软件模式。
导入地址表 (IAT) 检查
在编写计算机程序时,开发人员可以调用库。在 Windows 系统上,这是通过 DLL(动态链接库)实现的。DLL 是一个导出现成函数的程序。然后,开发人员可以选择将某些 DLL 加载到他们的程序中,以利用它们导出的函数。一定数量的 DLL(例如“user32.dll”或“kernel32.dll”)是所有 Windows 系统的标准配置,它们导出对开发人员有用的函数。这些函数由 Microsoft 记录并构成通常所熟知的 Windows API。例如,开发人员可以使用“user32.dll”DLL导出的“MessageBoxA”函数来显示对话框:

导入地址表是与每个可移植可执行文件(包含在 PE 的可选头的导入目录中)相关的表,其中包含程序使用的已加载 DLL 及其导出函数的列表。下面的示例显示了“notepad.exe”程序的导入地址表的启动:

Notepad.exe IAT 内容的开始。大多数防病毒软件都会观察该表,某些功能的存在会触发警报。例如,如果“OpenProcess”、“VirtualAllocEx”、“WriteProcessMemory”和“CreateRemoteThreadEx”(均由“kernel32.dll”导出)函数同时存在于同一个程序中,则会引起高度怀疑。这 4 个函数一起使用可启用恶意程序经常使用的进程注入技术。
反恶意软件扫描接口 (AMSI)
AMSI(Microsoft Antimalware Scan Interface)是 Windows 操作系统提供的一个接口,它允许开发人员将防病毒保护集成到他们的程序中。具体来说,开发人员可以选择将“AMSI.dll”动态链接库加载到他们的程序中,并使用该 DLL 导出的函数。例如,“AmsiScanString”函数接受一

最低0.47元/天 解锁文章
1572

被折叠的 条评论
为什么被折叠?



