文章目录
之前,青藤云安全已经对ATT&CK进行了一系列的介绍,相信大家都已了解,Mitre ATT&CK通过详细分析公开可获得的威胁情报报告,形成了一个巨大的ATT&CK技术矩阵。诚然,这对于提高防御者的防御能力、增加攻击者的攻击成本都有巨大作用。但或许是出于猎奇心理,很多威胁情报报告更多地是在报道攻击者使用的比较新颖有趣的技术方法,而却忽视了攻击者反复使用的普通技术。这也是Mitre公司在2019年10月份的ATT&CKcon2.0大会上,推出了ATT&CK Sightings项目,以期借助社区力量收集更多直接观察数据的原因所在。
对此,一些安全公司通过在真实环境中所收集的直接观察数据来检测攻击技术,这种方法直观性更强,也更具说服力。Red Canary是美国一家从事信息安全的网络安全公司,负责对客户环境中的终端数据进行大规模检索,来寻找攻击者。Red Canary分析了过去五年里,其客户环境中发生的一万多起恶意事件,并将恶意事件中使用的技术与ATT&CK框架进行了映射。
本文将通过对比Mitre ATT&CK的Top 20攻击技术及Red Canary基于ATT&CK的Top 20攻击技术,确定了攻击者最常用的七项ATT&CK技术,并对其进行了详细分析。
Mitre ATT&CK 通过整合、分析400多份公开的威胁情报报告,将技术报告中的内容与ATT&CK技术进行了映射,MITRE ATT&CK整理得出的Top 20攻击技术为:
Red Canary通过对过去五年里,其客户环境中发生的一万多起恶意事件进行分析,得出了威胁事件利用每种ATT&CK技术的频率,如下图所示:
从图中我们看到,Red Canary 分析得出的Top 20攻击技术为:
对Mitre ATT&CK和Red Canary分别整理得出的Top 20技术进行对比分析,我们可以发现有7项技术是重合的,分别为PowerShell、脚本执行、命令行界面、注册表Run Key/ 启动文件夹、伪装、混淆文件或信息、凭据转储。或许,这应该是防御者建立防御方案的着手点。
下表展示了这七项技术在Red Canary 和Mitre ATT&CK Top 20攻击技术中的排名次序和出现次数。
希望读者能够通过上表中的数据,进一步了解攻击者对这七种技术的使用频率和在攻击者中的流行程度。下面,我们详细分析这七种技术。
PowerShell是Windows操作系统中包含的功能强大的交互式命令行界面和脚本环境。攻击者可以使用PowerShell执行许多操作,包括发现信息和执行代码,例如,用于运行可执行文件的Start-Process cmdlet和在本地或在远程计算机上运行命令的Invoke-Command cmdlet。
默认情况下,PowerShell基本上已包含在每个Windows操作系统中,提供了对Windows API的完全访问权限,包括数百个供开发人员和系统管理员使用的功能,但同样也遭到攻击者的大肆利用。像许多核心平台实用程序一样,PowerShell库很容易获得,因此也很容易实现,能够暴露任意进程中的完整PowerShell功能。
那么该如何进行检测呢?进程监控是最普遍有效的技术。进程监控可以让防御者确定在其环境中使用PowerShell的基准。进程命令行监控则更有效,可以洞悉哪些PowerShell实例试图通过编码命令传递有效负载并以其他方式混淆其最初意图。除了PowerShell脚本的默认主机之外,脚本还可以在加载PowerShell框架库的其他进程中执行。要查看该行为,观察模块负载以及进行分析以提供其他上下文,从而为检测提供支持。
攻击者可能会使用脚本来帮助进行操作并执行其他本来应该是手动进行的多项操作。脚本执行对于加快操作任务,减少访问关键资源所需的时间很有用。通过直接在API级别与操作系统交互,而无需调用其他程序,某些脚本语言可以用于绕过过程监视机制。Windows的常用脚本语言包括VBScript和PowerShell,但也可以采用命令行批处理脚本的形式。
安全工具和人工分析的快速发展让攻击者很难使用公开的攻击载荷或者直接从磁盘获取相关载荷。因此,攻击者需要找到替代方法来执行有效载荷并执行其他恶意活动,这是脚本相关技术日益流行的主要原因。此外,该技术利用的运行时环境、库和可执行文件是每个现代计算平台的核心组件,不能轻易禁用,并且没有始终对其进行密切监视。
在Windows上,Windows脚本宿主(WSH)最简单的检测用例是基于process ancestry的。这包括监视从shells命令(cmd.exe、powershell.exe)、Office应用程序、Web浏览器和Web服务处理程序中生成的wscript.exe或cscript.exe。还建议监视从非标准位置执行的脚本,例如用户可写路径,包括appdata\local\*、其他类似路径以及临时目录。
此外,监视进程元数据、进程命令行和文件修改都是非常重要的策略。检测与托管脚本相关的二进制文件的可疑模块加载(例如vbscript.dll)的检测系统也是值得采取的策略。
当然最彻底的办法就是禁用Windows脚本宿主,也可以强制对脚本进行签名,以确保仅执行批准的脚本。诸如AppLocker之类的工具还提供了与脚本执行相关的其他约束。这些是预防策略,但也可用于检测之用,因为尝试执行未经授权的脚本应产生更高质量的报警信号。
命令行界面提供了一种与计算机系统进行交互的方式,并且是许多类型的操作系统平台的共同功能。Windows系统上的令行界面是cmd,可用于执行许多任务,包括执行其他软件。命令行界面可以通过远程桌面应用程序、反弹Shell会话等在本地或远程进行交互。执行的命令以命令行界面进程的当前权限级别运行,除非该命令进行进程调用,更改执行权限(例如计划任务)。
命令行界面发展至今,已经有大量的成熟工具可以使用。此外,命令行界面是一个非常轻便的应用程序,打开时不会给硬件带来负担,因此打开起来更快。而且在基于GUI的应用程序上完成的所有任务,能够通过命令行界面更快地打开。
针对这类攻击,可以通过使用命令行参数正确记录进行执行情况来捕获命令行界面活动。通过深入了解攻击者时如何使用本地进程或自定义工具的,可以进一步了解攻击者的行为。这就需要做到以下两方面:(1)了解组织机构中应用程序的常见来源;(2)收集命令行和相关的检测数据.
在注册表的“run keys”或启动文件夹中添加一个条目,将会导致用户登录时,该程序会运行该条目。这些程序将在用户的上下文中执行,并具有与账户相同的权限级别。
注册表run key和启动文件夹历来都是各类攻击者实现持久化的重要目标。根据Microsoft文档,对注册表run key的支持至少可以追溯到Windows95。有可靠记录表明,作为一种持久化机制,加之易于实施,该技术在一定程度上解释了其为何在攻击者中使用非常普遍。攻击者仅需要用户级别的权限,并具有写入注册表或将有效负载拖放到启动文件夹的功能。
虽然实现起来相对简单,但非常有效。随着时间的推移,该技术已经从引用可执行有效负载发展为加载动态库,并利用了其他技术(例如regsv***和脚本执行)。针对该攻击技术,可以在持久化机制生命周期的三个不同点上有效地实现检测:安装时、休眠时以及触发时。
在安装时检测run key和启动文件夹项目需要监视特定注册表和文件系统路径的变更情况。可以通过平台文档或通过引用一些实用程序来报告是否存在这些配置来列举这些路径。此外,可能会成功检查任何已知与这些路径结合使用的文件类型,例如LNK。要检测已安装且处于休眠状态的持久化,可以检查同一注册表和文件系统路径的内容中是否存在可疑条目。创建一个基准并定期监视是否有偏移基准的情况,以此来减少调查工作量。
当然,持久化永远不会单独发生,它始终是达到目的的手段。因此,监视预期某些变更会涉及哪些进程以及尚未观察到的进程之间的关系也是非常有效的。
伪装是指为了逃避防御和观察而操纵或滥用合法或恶意的可执行文件的名称或位置的情况。攻击者利用伪装作为绕过防御技术的手段或欺骗手段。攻击者使用该技术通过使恶意可执行文件和软件看起来合法或预期来破坏机器和人工分析。伪装的实现范围很广,从简单地重命名可执行文件(从而让这些文件看起来更像是正常系统进程)到更复杂的方法(例如命令行欺骗)。伪装在攻击者中使用很普遍,因为它满足了绕过防御技术和人为分析的简单需求,并且相对容易实施。
检测伪装技术的一种策略是利用二进制元数据,例如在文件创建或签名时的原始文件名。例如,如果要查找wscript.exe,则应查找具有该名称的二进制文件,也应查找具有原始文件名WScript的任何二进制文件。
虽然,可以检测名称或元数据为wscript.exe的任何二进制文件,但基于文件的签名、哈希或其他标识符并不可信。因此可对文件位置建立一个基准,对上述方法进行补充。如果我们了解给定二进制文件通过哪个路径执行,则可以在其他任何地方看到该标志时,就可以触发报警。
攻击者可能会试图通过加密、编码或其他方式混淆系统上或传输中的可执行文件或文件内容,从而使其难以发现或分析。这是一种可以跨不同的平台和网络使用,以绕过防御的常见行为。
许多网络安全检测产品(防病毒软件、IDS等)设计为基于恶意软件的签名运行。一旦发现了在野使用的特定恶意软件变体,便会提取出该恶意软件的独特功能,并用于在未来感染中对其进行检测和识别。将通过网络边界或下载到主机的每条数据与这些签名进行比较。如果找到匹配项,则将采取措施(删除、隔离、警报等)。
混淆的目的是绕过这些基于签名的检测系统,并增加对恶意软件样本进行取证分析的难度。如果以某种方式混淆了签名所基于的数据或代码,则检测引擎在寻找纯文本签名时就无法找到匹配项。
存在许多混淆算法,例如压缩、编码、加密、隐写等等。恶意软件使用者可以隐藏各种不同类型的文件和数据。例如,恶意软件可能被设计为使用混淆来隐藏其恶意代码。或者,恶意软件变体可能会对其配置文件进行加密,从而使恶意软件分析师更难于理解其功能。
想要检测混淆文件或者信息,除非在混淆过程留下了可以检测到的独特伪像,否则很难检测文件混淆。如果无法检测,则可以去检测执行混淆文件的恶意活动(例如,用于在文件系统上写入、读取或修改文件的方法)。标记并分析包含混淆指示符和已知可疑语法(例如未解释的转义字符,如”’^”’ 和”’””’)的命令。反混淆工具可以用来检测文件/有效载荷中的这些指标。
此外,可以在网络上检测到用于初始访问的有效载荷中使用了哪些混淆方法。还可以使用网络入侵检测系统和电子邮件网关筛选来识别压缩和加密的附件和脚本。某些电子邮件附件展示系统可以打开压缩和加密的附件。通过网站从加密连接传递的有效载荷需要进行加密的网络流量检查。
凭据转储是从操作系统和软件获取帐户登录名和密码信息的过程,通常是哈希或明文密码形式的信息。进行凭据转储后,攻击者就可以使用凭据进行横向移动及访问受限信息。
凭据转储是攻击者访问目标组织中的用户帐户和其他资源的共同需求。攻击者还利用转储的凭据来实现权限提升和横向移动。凭据对于攻击者而言是如此重要,以致在许多情况下,获取用户名和密码不仅是达到目的的手段,而且是攻击的整个目标。因此,在各种犯罪论坛上,凭据都是可出售的商品,并且有些网站可以追踪公开的凭据转储情况。除了将转储凭据用于出售和初始访问外,凭据是漏洞利用后的一个重要部分。一旦攻击者获得对环境的初始访问权限,通常需要某种级别的特权访问权限才能实现攻击活动中的进一步目标。虽然有很多方法可以提高特权级别,但是最有效和可靠的方法之一是使用具有特定级别权限的人员的合法凭据。
凭据可以从内存中以纯文本格式提取。监视对特定进程的访问可以为防御者提供一种检测凭据转储的方式。这种检测方法很容易产生大量误报事件,因为操作系统的内置功能也可以访问这些过程。防御者要重点关注潜在问题进程之间的交互来减少这种噪声。
检测是否存在凭据转储的另一种方法是分析常用工具,并使用其他数据源作为相关点,基于留下的指纹来制定检测策略。注册表项和文件修改就是一个很好的切入点。
青藤云安全之前已经针对ATT&CK框架进行了一系列的介绍,有兴趣的读者可以阅读一下之前的相关文章。但是,ATT&CK框架包含了300多种技术,而且每种技术又包含多种变体。面对一个体型如此庞大的框架,可能会让人有些望而却步,一脸茫然,不知该从何处入手。本文通过对比分析MITRE ATT&CK和Red Canary总结分析的Top20攻击技术,发现其中有七项技术是重合的,突出说明了这七项攻击技术在攻击者中的普遍性,是需要防御者重点关注或是建立防御方案时的着手点。本文对这七项技术进行了简单的介绍,说明了这些技术能够得到攻击者青睐的原因所在,并给出了检测策略,希望能够为读者使用ATT&CK框架带来一些帮助。
*本文作者:青藤云安全,转载请注明来自FreeBuf.COM