取材于动画片《从前有只狗》
因此,仅标准的监视工具还不够。有几个因素导致了这一点:
- 危害指标(哈希,IP地址和域名)通常是一次性使用的,因为更改它们对于攻击者来说很容易,尤其是在APT的情况下;
- 攻击者使用合法的可执行文件,标准OS工具等;
- 在大多数情况下,不是用来浏览网络的漏洞利用,而是被窃取的合法凭证;
- 实际上,经常会遇到防病毒或网络签名无法检测到的恶意软件;
- 随着基础架构的发展,及时更新签名和许可证变得很成问题。
即使成功检测到攻击,您也将没有足够的信息明确地回答问题:当前事件已用尽,或者需要采取其他措施。毕竟,根本无法跟踪许多事件:使用注册表,创建文件,将模块加载到内存中,创建的进程的命令行等等。
端点监视极大地扩展了检测和预防攻击的能力:它使您可以从检测哈希,IP和域到检测主机工件,工具和TTP(是的,“痛苦的金字塔”)。
一些实际中经常遇到的技术示例,如果没有主机监视,则无法检测到这些技术:
- DLL劫持
- 在陆地上生活
- 使用Mimikatz
可以使用内置OS工具(高级审核),免费实用程序(例如Sysmon)和商业解决方案(EDR类产品)来完成其他端点监视。让我们使用检测上述技术的各种变化的示例来考虑这些方法的优缺点。
高级审核。Windows事件记录
每个人都知道内置审计。正如实践所示,通过仅将过程创建事件的一个集合与命令行一起包括在内,您将极大地促进监视和调查事件的过程(实际的帕累托定律)。
通过适当的配置,我们弥补了标准方法中的一些空白,并看到:
- 与命令行一起启动进程的事实;
- 解码的PowerShell脚本(脚本块记录)
- 部分地-处理文件和注册表;
- 与帐户相关的活动(创建/删除用户,等等)。
我们有机会发现新技术:
- 一些DLL劫持选项,用于创建具有特定路径的文件;
- 通过命令行中的模式使用LOLBin和Mimikatz。
但是,攻击者仍有逃避检测的能力。对于LOLBin,这可以将文件复制到另一个名称不同的文件夹中,并混淆命令行。而且Mimikatz可以使用更改后的命令和命令行重新编译,这将不允许在命令行上检测到它的使用。同样,当将经过DLL劫持的合法二进制文件放置在计算机上时,选项将不可见。
带修改行的Mimikatz代码
您可以在任何系统上配置Windows审核,而无需预安装第三方软件,但是它也有很多缺点:
1.配置不便且可伸缩性差。
示例:要监视特定的注册表分支,您需要为其单独配置ACL。实际上,实际上您需要采取一些措施,这会导致问题和时间延迟,尤其是在大型基础架构的情况下。如果这样做是为了扩大监视范围(例如,检测UAC旁路的某种方式),那么时间就不是关键。但是,如果在事件发生期间出现这种需求,则会使响应过程变得复杂。
2.缺乏控制。
如果事件停止注册或进入所使用的监视系统,则由于没有集中化的功能,因此很可能无法及时了解。
3.易于反对。
即使是低技能的攻击者也知道如何躲避标准审核。唯一的问题是他们将如何有效和隐形地做到这一点。
技术示例:
- 定期清洁原木。成功恢复事件的可能性取决于自清理以来已经过去了多少时间。
- 挂起审核服务线程,然后执行恶意操作或删除事件(例如,使用工具github.com/QAX-A-Team/EventCleaner)。
- 通过破坏相应的.evtx文件的结构来隐藏事件。
- 临时将事件重定向到单独的文件。我们在上一篇文章中介绍了这种技术。
4.就其本身而言,进行审核不会提供组织监控的机会。首先,您将必须建立集中的事件集合,然后使用其他工具(例如SIEM)来分析事件。
5.事件的信息含量低。无法获取启动进程的哈希值,无法跟踪将库加载到进程内存中,等等。
Sysmon和EDR之间的相似之处
Sysmon不是完整的EDR解决方案,因为它不提供在系统上执行主动操作的能力。但是,收集事件的机制与商业EDR中的机制完全相同:它适用于两种技术-内核回调和ETW。我们不会详细描述它们-我们只会考虑事件的显示方式以及事件创建者。
•内核回调。例如,PcreateProcessNotifyRoutine,PcreateThreadNotifyRoutine。
在相应的内核函数中可以看到在何处以及如何调用这些以及其他回调。创建进程时调用回调的示例如下所示:
CreateProcessW→NtCreateUserProcess→PspInsertThread中的回调循环。也就是说,由称为CreateProcess的父进程线程调用这些回调。
•事件跟踪窗口(ETW)。
ETW以类似的方式处理事件的发生。让我们再次看一下流程创建示例。调用CreateProcessW时,父进程线程将执行以下操作(简化图):
CreateProcessW(kernel32.dll)
NtCreateUserProcess(ntdll.dll,切换到内核模式)
NtCreateUserProcess(ntoskrnl.exe,然后在内核模式下工作)
PspInsertThread(在这里也称为回调' i)
EtwTraceProcess
EtwpPsProvTraceProcess
EtwWrite
因此,父进程线程是ETW事件的直接发起者。其他事件(例如,网络事件)的记录工作原理大致相同。以下是创建与网络活动有关的事件的示例:
EtwpNetProvTraceNetwork核心功能
综上所述,有两个结论:
- Sysmon和EDR都仅使用本机Windows功能来收集事件以确保可靠的操作。
- 攻击者可能会使用适用于Sysmon和EDR的混淆技术。可以使用签名驱动程序将内核回调放入内核内存中。通过了解所描述的事件日志记录机制,您可以了解Sysmon和某些EDR为什么无法检测到该过程中的某些注入技术(例如,使用APC)或PPID欺骗。
西蒙
使用Sysmon可让您扩展标准审核的功能。在这种情况下,事件将记录在单独的日志中。Windows审核中找不到但在Sysmon中可用的一些信息示例:
- 有关正在启动的可执行文件的更多详细信息(哈希,原始名称,数字签名等);
- 加载驱动程序和库;
- 更改Sysmon服务的状态;
- 在另一个进程中创建线程;
- 进入流程;
- 在备用数据流中创建的文件的哈希值;
- 创建管道。
监视上述过程的优点是显而易见的(关于在公共领域检测各种技术的主题有很多规则和文章)。此外,还可以检测到已知技术的新变化:
- 通过流程创建事件中的OriginalFileName,Image和Hashes字段的对应关系,可以检测到以其他名称复制LOLBin的情况;
- 您可以检测未签名库的加载,在某些情况下,这使您可以检测DLL劫持;
- 有可能使用上述方法或通过lsass.exe进程的ProcessAccess事件来检测Mimikatz。
审核是使用配置文件配置的,在文件创建和注册表事件的情况下,配置文件比ACL配置方便得多。
在这种情况下,必须考虑以下几点:
- 需要其他工具。与高级Windows审核一样,由于已记录事件,因此Sysmon必须与其他工具(例如SIEM)一起使用。
- . , Sysmon . .
, . - -. , . , Sysmon . : , , .
您可以在此处,此处和此处阅读有关绕过某些Sysmon功能的方法。
端点检测与响应
随着基础架构规模和重要性的增长,Sysmon的缺陷变得越来越重要。高质量的EDR具有几个优点(我们将不描述特定于产品的功能):
1)扩展的日志事件集,
这完全取决于特定的产品。例如,在命令行中记录了所有交互式输入,从而可以检测Windows审核或Sysmon不可见的技术。
值得描述的是我们在一项调查中看到的Mimikatz用例。有一个可执行文件,其中包含加密的Mimikatz资源。在命令行上传递正确的密码和初始化向量后,Mimikatz成功解密并在交互式命令行上接受命令。同时,在流程创建事件中没有命令出现。
如果不重新编译Mimikatz,则记录交互式输入将有助于检测到这种情况(在我们的情况下,这些行保持不变)。
2)集中管理和配置
在大型基础架构中,集中检查运行状况和更改代理设置的能力至关重要。没有它,响应可能会延迟数小时甚至数天。
3)自给自足
在大多数情况下,EDR是具有自己接口的独立产品,不仅可以与其他工具结合使用,也可以单独使用。
可以编写自己的检测规则。由于数据集大于Advanced Auditing或Sysmon的数据集,因此分析人员有更多机会检测不同的攻击模式。
4)积极回应的可能性
在事件响应期间,几乎总是需要在多个系统上采取行动。
EDR允许您以方便的交互形式执行许多操作:
- 使用文件和注册表
- 阻止网络连接
- 终止进程
- 使用yara规则扫描
- 收集工件以进行进一步分析(例如,内存映像)
- 将以上所有内容自动化到一个或另一个程度
- 以及更多。
由于EDR产品类别最初是为了提供主机监视和响应而创建的,因此此类解决方案在此领域的缺点大大减少。这完全取决于特定产品的功能。还有盲点,例如,没有对网络活动进行深入分析(NTA / NDR产品已成功解决此问题)。
实践表明,EDR在基础架构中的存在大大扩展了识别威胁的能力,并加快了响应速度并促进了事件调查,从而可以更准确地重建事件的时间顺序。Sysmon只是一个半量的方法,在只有一个易于绕过的标准审核的情况下,您必须对信息量少的工件感到满意,包括我们在上一篇文章中所写的异常工件。
JSOC CERT事件调查部高级技术调查工程师Asker Jamirze发布