从MITRE ATT&CK框架角度回顾2021年发生的网络入侵事件(译文)

koukou 2022-03-11 11:38:00

目前,时间已经来到2022年第一季度末,我们不妨花一些时间来回顾一下2021年出现的安全案例,并总结去年观察到的一些顶级战术、技术及流程(tactics, techniques and procedures,TTP)。总的来说,我们在2021年报告了20起安全事件,其中绝大多数与初始访问代理恶意软件(Trickbot、IcedID、BazarLoader等)相关,这些恶意软件通常用于入侵全域和投放勒索软件。

虽然本报告涵盖了我们在2021年所有公开报告的攻击案例,但是无法保证全面覆盖所有的攻击类型,因为总是存在内部采样和收集偏见。然而,审查这些常见的攻击活动可以帮助防御者合理安排他们的时间和预算,以优先防御最常见的攻击行为。

向整理这份报告的分析师们致敬!

领衔作者:@kostastsale

作者成员:@ICSNick, @yatinwad, @_pete_0 ,以及一位未透露姓名的撰稿人

相关服务

我们提供了多种服务,其中包括跟踪Cobalt Strike、Metasploit、Empire、PoshC2等C2框架的威胁反馈服务。关于这项服务以及其他服务的更多信息,读者可以在这里找到。

通过我们的Security Researcher and Organization服务,还可以借助于Sysmon、Kape软件包等工具获得入侵案例的相关线索,如pcaps、内存捕获、文件、事件日志。

基于MITRE ATT&CK框架的入侵统计数据

初始访问

在过去的一年里,我们目睹了许多入侵事件,其中Trickbot、Hancitor、Bazar和IcedID等恶意软件变种经常被用作勒索软件攻击的入口。在大多数入侵事件中,恶意软件是以非针对性的网络钓鱼的形式传播的,如大规模恶意软件垃圾邮件攻击。

2021年初始访问权限的来源

1.png

我们的报告倾向于以网络钓鱼为切入点的攻击案例,具体来说,在20份报告中有16份属于这类情况。当然,我们也遇到了一些以易受攻击的Web应用程序为入侵切入点的案例,但这些情况下,一般不会演变成大规模的入侵。所有报告中,“Exchange Exploit Leads to Domain Wide Ransomware”是唯一一个入侵者利用易受攻击的应用程序获取访问权限后积极寻求部署勒索软件的案例。另外的两个案例(“All that for a Coinminer? ”和“ WebLogic RCE Leads to XMRig”)则是影响较小的恶意入侵活动的典型代表:入侵者安装了加密货币挖矿软件。然而,我们认为,这些入侵可能是需要立即修复安全漏洞的信号,如若不然,则可能演变为大规模的入侵活动。

网络钓鱼是2021年入侵案例中实现初始访问的主要手段。我们在2021年看到的恶意软件类型为:

TrickBot
Bazar
IcedID
Hancitor

下图显示了入侵在通过上面列出恶意软件获得初始访问权限后,为了维持权限而使用的工具/方法。

1.png

权限维持

在执行初始访问恶意软件后,许多入侵者会设法维持已经获取的访问权限,如创建计划任务、部署web shell、远程访问软件和注册表“Run”键。

计划任务示例(详见https://thedfirreport.com/2021/10/18/icedid-to-xinglocker-ransomware-in-24-hours/)

1.png

添加新用户示例(详见https://thedfirreport.com/2021/10/04/bazarloader-and-the-conti-leaks/)

1.png

注册表Run键示例(详见https://thedfirreport.com/2021/06/03/weblogic-rce-leads-to-xmrig/)

1.png

在所有20个案例中,其中有14个实现了权限维持机制。其中,计划任务是这些案例中最为常见的权限维持方法。在大多数案例(就算不是所有案例)中,计划任务、BITS作业和注册表Run键等权限维持任务都是由获得初始访问权限的恶意软件所完成的。当我们观察攻击的后期活动时,就会发现入侵者倾向于添加新用户和第三方远程访问软件作为主要的权限维护手段。

1.png

在某些情况下,我们在整个入侵过程中并没有观察到任何典型的权限维持手段。然而,我们发现这些入侵者,似乎更喜欢通过启动几个Cobalt Strike Beacon会话来扩大他们在整个网络中的访问范围。这样的话,即使一个或多个沦陷的工作站变得无法访问,它们仍然能够维持其访问权限。在部署Beacon时,攻击者喜欢选择服务器,因为与典型的工作站相比,服务器通常会保持在线状态。

另一种常见的维护访问权限的方法,就是安装第三方远程访问软件,如AnyDesk、TeamViewer、Splashtop和Atera。一个有趣的观察结果是,大多数此类活动都发生在沦陷的域控制器上。

以下是Conti泄露案例中的一个示例,展示了入侵者是如何安装AnyDesk的:

1.png
1.png
1.png

在我们的Diavol勒索软件案例中也观察到上述活动:

1.png

权限提升/获取凭据

为了访问登陆凭据,入侵者会尝试各种技术。其中,一些值得注意的是:使用Task Manager和Procdump转储LSASS,使用ntdsutil.exe创建ntds.dit的副本,以及提取SAM、安全和系统配置单元。

根据访问级别的不同,有时候入侵者会希望提升自己在滩头主机上的特权,以利用高完整性Beacon会话。获得高完整性访问权限后,攻击者就可以使用各种方法通过该主机访问各种凭据。下面,我们展示在2021年报告中观察到的特权提升和凭据访问方法。

1.png
1.png

访问LSASS流程,是在大多数案例中攻击者所采用的方法。利用Cobalt Strike,攻击者可以使用Mimikatz或通过访问安全配置单元从LSASS进程中提取凭据。这方面,请参考我们的报告:“Cobalt Strike, a Defender’s Guide”。

在可能进行远程交互访问的情况下,入侵者还可以使用第三方工具,如ProcDump甚至Task Manager。这些方法允许它们将LSASS进程转储到磁盘,以便脱机提取凭据。

ProcDump示例(详见https://thedfirreport.com/2021/08/16/trickbot-leads-up-to-fake-1password-installation/)

1.png

Task Manager示例 (详见https://thedfirreport.com/2021/11/15/exchange-exploit-leads-to-domain-wide-ransomware/)

1.png

防御规避

在绕过防御措施的时候,我们发现进程注入技术是入侵者最常采用的一种技术。这使他们能够在已经沦陷的主机上建立额外的Beacons,以避免被发现。

在5个独立的案例中,我们发现攻击者会想方设法禁用安全工具。其中最引人注目的案例,就是“IcedID to XingLocker Ransomware in 24 hours”。在该案例中,攻击者使用多个批处理文件来禁用主机上的知名AV和EDR代理。这些批处理脚本是来自https://gist.github.com/anadr/7465a9fde63d41341136949f14c21105/revisions的第一个修订版,勒索软件的控制者没有做任何修改,就直接使用了这个批处理脚本。

1.png

伪装示例(参见https://thedfirreport.com/2021/11/15/exchange-exploit-leads-to-domain-wide-ransomware/)

1.png

混淆示例(参见https://thedfirreport.com/2021/08/01/bazarcall-to-conti-ransomware-via-trickbot-and-cobalt-strike/)

1.png

侦查

一旦建立了访问权限,入侵者就会对受害者的环境进行全面的侦查。常见的初始侦查工具包括Windows内置实用工具(net.exe、nltest.exe、systeminfo、ipconfig、whoami等)和AdFind工具。在少数情况下,入侵者会试图通过Advanced IP Scanner和KportScan3.0等工具执行端口扫描,以获取远程主机上开放端口/正在运行的服务的列表。

根据我们的观察,对于以手动方式通过键盘发动攻击的入侵者来说,他们所做的第一件事通常就是进行相应的侦查活动,特别是搜索域控制器和一般环境信息。

下面的统计数据说明了用于枚举环境时最常用的Windows工具。我们将每种工具与调查案件的总百分比进行了相应的比较。

1.png

我们看到枚举命令通常会在短时间内执行完毕,一般在1-5秒之间。并且,这些命令通常是通过post-exploitation框架(大多数情况下为Cobalt Strike)执行的。

1.png

示例截图摘自案例:“ From Zero to Domain Admin”

C:\Windows\system32\cmd.exe /C net time 
C:\Windows\system32\cmd.exe /C ping [Domain Controller] 
C:\Windows\system32\cmd.exe /C nltest /dclist:[Domain Name] 
C:\Windows\system32\cmd.exe /C Net group "Domain Admins" /domain \
C:\Windows\system32\cmd.exe /C nslookup 
C:\Windows\system32\cmd.exe /C ping 190.114.254.116 
C:\Windows\system32\cmd.exe /C net group /domain

横向移动

横向移动是入侵者TTP的一个重要组成部分。一旦他们通过我们上面概述的侦查方法熟悉了目标环境,接下来要做的事情通常就是通过网络进行横向移动。通常情况下,域控制器、文件共享和类似的高价值服务器是横向移动的主要目标。

举例来说,首选的post-exploitation框架Cobalt Strike允许攻击者利用不同的技术来实现横向移动的目的。

攻击者的其他常见选择包括:远程桌面连接、远程WMI执行所传输的二进制文件,以及Sysinternals工具PsExec。

1.png

WMIC横向移动示例(参见https://thedfirreport.com/2021/11/29/continuing-the-bazar-ransomware-story/)

1.png

Psexec示例(参见https://thedfirreport.com/2021/05/12/conti-ransomware/)

1.png

指挥与控制

在大多数入侵事件中,一个共同的主题是依赖Cobalt Strike完成各种post-exploitation活动。在几乎所有情况下,Trickbot和Bazar等初始访问代理都会在受害者环境中植入多个Cobalt Strike Beacon。

有关Cobalt Strike的网络操作方面的深入分析,请参阅我们最近关于该主题的相关报告(https://thedfirreport.com/2022/01/24/cobalt-strike-a-defenders-guide-part-2/)。

数据泄露

虽然在我们的数据集中,数据泄露的情形并不常见,但我们观察到的20个案例中,其中有6例发生了数据泄露。在观察到数据泄漏的案例中,入侵者使用RClone、FileZilla或WinSCP等工具将数据传输到他们控制的服务器。在其他案例中,入侵者则通过Cobalt Strike Beacon来下载敏感数据。

今年一个值得注意的案例是Diavol勒索软件:攻击者使用ufile.io上传了从域控制器中提取的LSASS转储文件。

1.png

作为本章的总结,我们想对今年案例中攻击者所用的工具做一个概述。在这里,我们将根据工作工具的作用,将其划归为不同的攻击阶段,并以MITRE ATT&CK框架为参考,来展示这些工具在攻击的各个阶段是如何工作的。

1.png

以人为重点的攻击/行为信息指标

在我们的案例中,我们经常观察到攻击者在入侵过程中会采用手工键入方式来执行某些任务。这提供了对攻击中人为因素的独特洞察力——他们如何进行操作、应对挑战,以及他们如何使用工具来达到其目的。同时,在IoC(Indicators of Compromise,IoC)和IoA(Indicators of Activity,IoA)之外,这还为攻击检测提供了额外的线索。

令人印象深刻的是,在某些情况下,威胁者会调整自己的工具、技术和程序(TTPs)以逃避检测。在其他情况下,我们已经观察到操作者的错误、判断错误和操作安全(OPSEC)的失败。我们还目睹了他们在入侵过程中遇到的一些挑战。

在研究入侵初期的Cyber Kill Chain步骤时,我们发现某些任务是自动化的。然而,一旦攻击者进入了目标的操作环境,许多活动往往需要攻击者亲自动手进行键盘干预,以进一步达到自己的目标。在这期间,攻击者的所有手工键盘活动都会带来被发现的风险,或者使他们离目标更近一步。一些典型的手工键盘活动包括:

发现安全审计工具
通过将安全工具全部禁用来绕过它们
遇到横向移动障碍并寻求替代方法,等等。

我们研究了与攻击者活动有关的最流行和最罕见的活动,接下来,我们将从攻击者的工具配置到使用,以及入侵期间的行为等方面入手,来讨论这些活动。

Cobalt Strike

在我们的案例中观察到的一个共同趋势是使用Cobalt Strike,通常配置有标准的柔性C2配置文件。柔性C2配置文件通常会指定许多参数,如用户代理字符串、进程生成、jitter等。大多数默认配置文件都是众所周知的,可以通过主机和网络监控规则来进行检测。

Cobalt Strike仍然是最受攻击者青睐的后渗透工具,今年最受欢迎的柔性C2配置文件是“jquery-3.3.1.min.js”,相关Beacon是通过rundll32.exe生成的。下面的图表展示了用于生成Beacon进程的各种可执行文件(如calc.exe),其中,有些比较常见,而另一些则比较罕见:

1.png

有关Cobalt Strike的柔性C2配置文件及其检测方法,请参阅“Cobalt Strike, a Defender’s Guide – Part 2”。

按playbooks行事

按照字面意义上来说,如果按照playbooks行事的话,复制和粘贴命令将会非常的常见。根据我们的观察来看,入侵者经常会输入从文档中获取的、带有拼写错误的命令。在一个案例中,我们发现攻击者从脚本中复制和粘贴命令时,竟然忘了提供实际IPv4地址作为必需参数:

1.png

在“BazarLoader and the Conti Leaks”案例中,入侵者不小心通过Windows命令行输入了下面的Cobalt Strike命令:

1.png

对此,我们只能假设入侵者试图调用Cobalt Strike的AggressorScripts脚本来枚举和查找已安装的AV软件。后来,在2021年,Conti playbooks被泄露,使我们能够将该行为与入侵者的手工键盘相关任务联系起来。然后,我们能够参考之前案例中观察到的许多行为,并通过我们的Twitter帐户提供线索:

1.png
1.png
1.png

BYOT(Bring Your Own Tools,自带工具)

我们对入侵活动中发现的工具的数量感到非常惊讶。除了第三方工具之外,还经常观察到living-off-the-land技术——尤其是在侦查阶段。从检测的角度来看,将工具带入环境会增加入侵者的风险,提高防御者检测入侵活动的机会。其中一些风险包括AV的检测和拦截、软件不兼容性、软件限制策略等。如上文所见,今年观察到的最流行的工具是AdFind:去年我们报告的所有入侵案例中,几乎到能找到AdFind的影子。实际上,在2020年,我们还专门发表过一篇文章来介绍这个工具。

在过去的一年中,我们在许多已发布的案例中发现的其他工具和脚本如下所示:

1.png

偶尔,我们会观察到入侵者在受感染的主机内更改其工具的配置。下面是一个示例,在成功执行勒索软件之前,入侵者进行了必要的修改:

1.png

案例:“CONTInuing the Bazar Ransomware Story”,详见https://thedfirreport.com/2021/11/29/continuing-the-bazar-ransomware-story/。

每次接触都会留下痕迹

每个案例中,入侵者都会在主机上留下一系列的线索,无论是有意的(入侵者带来自己的工具),还是副产品(通过预取执行命令)。这些线索包括脚本、工具、Beacons、暂存文件等。

我们观察到的一个共同趋势是,在入侵期间和入侵之后,入侵者都很少设法清除痕迹。我们案例中的一些例子包括:

1.png

运行Beacon失败,导致进程发出持续的DNS回调请求。这时如果考察域流量,会发现轮询请求具有趋向一致的特征。在这个例子中,一个Beacon正在向一个无法到达的C2服务器发送心跳,注意每小时和每一天的请求是一致的。

各种工具/脚本的运行结果与工具本身一起被留下,例如从侦查过程中收集的主机数据的文本文件,用户文件夹中的Beacons可执行文件等。

植入磁盘的BloodHound文件

1.png

写入磁盘的AdFind运行结果

1.png

转储Lsass的Task Manager

1.png

攻击者的基础设施

我们观察到到的几个案例中,发现了在入侵期间入侵者的基础设施被暴露的情况,例如攻击者在远程桌面会话期间的源机器被暴露了出来,详见报告“CONTInuing the Bazar Ransomware”。

1.png

另一个案例是:一个托管的Beacon竟然以远程带外方式进行通信,而不是通过已经建立的标准C2进行通信——我们认为这很可能是技术故障所致,详见“BazarCall to Conti Ransomware via Trickbot and Cobalt Strike”一文。

1.png

当然,并非所有的入侵都是成功的;有时,攻击者会遇到技术问题,例如工具的功能不符合预期,以及其他特定环境的挑战,这将都会延缓他们在内网横向渗透的进度。

指纹识别

在考察入侵痕迹时,对入侵者的“特点”进行指纹识别能够得出更吸引人的结论。在“CONTinuing the Bazar Ransomware Story”案例中,我们就在HTA文件中发现了嵌入的脏话:

1.png

这些本身就是有用的IoC。在其他案例中,有的入侵者会花费大量精力来开发定制的软件,这时也会留下特有的标志,如团伙称号和版本号。

1.png

给防御者的建议

从防御者的角度来看,上述每一点都提供了不同的检测机会。这些可能包括识别异常行为,如从非标准位置执行的二进制文件,或检测异常活动,如在短时间内频繁发生的崩溃。

另外,减少攻击面和定期打补丁也可以带来非常好的防御效果,从而有效防御2021年内发生一些常见入侵活动,如通过Log4j和ProxyShell/ProxyLogon漏洞获得初始访问权限。同时,禁用宏并强制通过记事本打开可编写脚本的文件,也能带来不错的防御效果。

我们推荐读者阅读CISA发布的一些指南,它们可以帮助防御者有效控制其攻击面。

巧用搜索平台https://www.cisa.gov/publication/stuff-off-search

通过使用各种在线搜索平台,能够帮助我们了解哪些服务、资产和设备暴露在互联网上。减少这些暴露面,也能够降低遭受入侵的可能性。

2021年已知被利用的漏洞和最常被利用的漏洞https://www.cisa.gov/known-exploited-vulnerabilities与https://www.cisa.gov/uscert/ncas/alerts/aa21-209a

利用这些资源和“S.O.S”机制,防御者就可以确定与其暴露的资产相关的漏洞。通过优先考虑那些有已知漏洞与最可能遭到入侵的资产,我们就可以及时地亡羊补牢,并专注于提供高投资回报的事情。

实际上,CISA、ASD/ACSC、Mandiant、微软和英国NCSC等机构提供了大量关于防范勒索软件的信息和指南,以及关于日志记录、网络架构和日常用户提示的一般最佳做法。

CISA:勒索软件防御指南
    预防勒索软件的最佳做法
    勒索软件响应清单
英国NCSC:缓解恶意软件和勒索软件攻击
    如何保护组织免受恶意软件或勒索软件的攻击
ASD/ACSC:保护自己免受勒索软件攻击
    人们应如何保护自己免受勒索软件的攻击
微软:防范勒索软件和勒索行为的简明手册
    如何保护您的组织免受勒索软件的侵害
Mandiant:勒索软件的防御与遏制策略
    端点保护、安全加固与遏制勒索软件的实用指南

许多勒索软件的TTP并不复杂或隐蔽。这背后的一个主要原因是,他们不需要偷偷摸摸地实现其目标。根据我们的观察,攻击者更喜欢使用Cobalt Strike,因为它易于使用,而且是一个真正强大的后渗透框架。

我们发布了一份关于Cobalt Strike的指南(由上下两篇组成),以帮助防御者全面深入地了解该框架,并希望他们能够更好地检测这个框架。该指南可以在这里找到。

https://thedfirreport.com/2021/08/29/cobalt-strike-a-defenders-guide/
https://thedfirreport.com/2022/01/24/cobalt-strike-a-defenders-guide-part-2/

未来展望

没有什么银弹可以让勒索软件彻底消失,我们预计只要诱因尚存,基于勒索软件的攻击就会继续存在。在全球范围内,美国、澳大利亚和荷兰等多个国家已宣布成立工作组,以关注勒索软件的威胁。

澳大利亚还宣布了他们的“勒索软件行动计划”,并计划利用进攻性网络能力来实现其中的一部分计划[1]。荷兰也宣布了类似的计划[2]。勒索软件的幕后主使可能会设法规避某些风险,更谨慎地选择目标,以避免受到此类反击。我们希望在接下来的一年里,由于这些行动,会有更多的勒索软件团伙被端掉。

相关资源

https://www.cisa.gov/stopransomware
https://www.ncsc.gov.uk/ransomware/home
https://www.cyber.gov.au/ransomware

参考资料

OpSec for Russianshttps://grugq.github.io/presentations/Keynote_The_Grugq_-_OPSEC_for_Russians.pdf
A Deep Dive into Cobalt Strike Malleable C2https://posts.specterops.io/a-deep-dive-into-cobalt-strike-malleable-c2-6660e33b0e0b

原文地址:https://thedfirreport.com/2022/03/07/2021-year-in-review/

评论

K

koukou

这个人很懒,没有留下任何介绍

随机分类

CTF 文章:62 篇
Android 文章:89 篇
浏览器安全 文章:36 篇
安全管理 文章:7 篇
Exploit 文章:40 篇

扫码关注公众号

WeChat Offical Account QRCode

最新评论

Yukong

🐮皮

H

HHHeey

好的,谢谢师傅的解答

Article_kelp

a类中的变量secret_class_var = "secret"是在merge

H

HHHeey

secret_var = 1 def test(): pass

H

hgsmonkey

tql!!!

目录