Table of Contents 目录
Introduction 导言
—— Key findings 主要发现
—— Methodology 方法
所观察到的对云原生环境的攻击
—— 攻击者采用更复杂的策略、技术和程序
—— 注意力从Docker转向Kubernetes
—— 传统攻击策略正在攻击云环境
—— 软件供应链开发持续性激增
—— Log4j导致攻击者的圣诞节提前到来了
—— TeamTNT 一直保持活跃,引入新技术,然后突然解散了,事实果真如此吗?
Conclusions 结论
Introduction 导言
制定抵御云原生环境的 络威胁的防御措施,需要及时了解攻击向量以及攻击者使用的策略、技术和程序。 Aqua Security的Nautilus团队致力于发现针对云原生堆栈的新威胁和攻击。通过对云威胁进行研究,我们希望能够制定新的方法和工具来解决这些问题。
本 告基于在野遭遇的实际攻击,介绍了2021年全年的观察和发现,向云原生安全领域的从业者重点说明了最新趋势和要点。
Key findings 主要发现
1
攻击变得更加复杂,攻击者的策略、技术和程序在快速发展。 2021年,54%的攻击来自后门病毒的攻击,比 2020年上升9个百分点。蠕虫病毒的使用上升了10个百分点,占总攻击的51% ,而上一年为41%。 我们还观察到涉及 rootkit、无文件执行和加载内核模块的更为复杂的活动。
2
攻击者将注意力从Docker转向了Kubernetes和CI/CD流水线。 攻击者将目标扩大到了CI/CD环境和易受攻击的 Kubernetes 部署和应用。针对Kubernetes的攻击的比例和种类有所增加。根据我们观察到的攻击,攻击Kubernetes 环境的潜在恶意镜像数量增加了10个百分点,从 2020年的9%增加到2021年的19%。
3
供应链攻击占公共镜像库镜像样本的14.3%*。 供应链攻击仍然是攻击云原生环境的有效途径。 针对过去一年上传到全球最大镜像 区和库之一的1,100多个容器镜像的分析表明,13%的攻击与隐匿垃圾应用程序有关,例如加密货币挖矿软件,1.3%与恶意软件有关。
4
Log4j 零日安全漏洞被在野攻击恶意利用。
据估计,这个流行的日志库在全球有超过1亿个实例。在我们建立了一个蜜罐后,包括Muhstik和Mirai在内的一些最大的僵尸 络在几分钟内就开始瞄准它。我们检测到多种恶意技术,包括已知的恶意软件、无文件执行、从内存中下载和执行的文件,以及反向 shell 执行。
5
TeamTNT是破坏云原生环境最多产的攻击者,看上去解散了——但也许并没有。 TeamTNT于2021年12月宣布解散,却在一个月后仍积极攻击我们的蜜罐只不过没有用什么新的技术。 目前尚不清楚正在进行的攻击是否来自之前遗留的自动攻击基础架构,还是TeamTNT伪造了自己的解散,并继续展开积极的攻击。 目前看上去某些命令和控制服务器、第三方注册表和蠕虫病毒仍在运行并感染新的目标。
Methodology 方法
为了调查在野攻击,Nautilus团队广泛使用蜜罐来引诱攻击者并诱使他们在研究人员控制和监控的环境中进行活动。 这种方法使我们能够收集入侵指标,包括恶意文件、恶意 络通信、容器逃逸迹象、恶意软件、加密货币挖矿活动、代码注入和后门病毒。
为了调查对云原生应用程序的供应链攻击,我们检查了NPM和Python Package Index等来自公共仓库和代码库的镜像。来自联 设备搜索引擎Shodan的数据进一步补充了观察结果。 这些数据扩展了我们对攻击的可见性,使我们能发现除蜜罐和沙箱环境外的攻击。
为了分析攻击,我们使用Aqua的动态威胁分析(DTA)工具。Aqua DTA由我们的开源项目Tracee提供支持,它使用户能够在Linux环境下使用eBPF执行运行时安全和取证。
Aqua DTA是业界首个容器沙箱解决方案,可动态评估容器镜像的行为,以确定运行镜像是否会对组织构成任何威胁。 它在一个安全且隔离的沙箱环境中运行容器镜像,监控其行为和 络通信。 Aqua DTA使用eBPF技术来监控容器的行为,根据我们所确定的模式和指标来检测恶意和可疑活动。
所观察到的对云原生环境的攻击
攻击者采用更复杂的策略、技术和程序
与过去几年无异,我们所遇到的绝大多数攻击来自加密货币挖矿软件,其中最常见的是XMRig。
然而,虽然加密货币挖矿软件是我所观察到的最常见的恶意软件,但它并不是我们的惟一发现。我们还发现后门病毒、rootkits和凭证窃取程序被更频繁地使用,这些迹象表明,加密货币挖矿软件并非入侵者的惟一计划。
2021年,我们在大约54%的事件中遇到了后门病毒,比2020年的45%增加了9个百分点。后门病毒允许攻击者远程访问系统,并用在在入侵环境中造成持久破坏。
我们还观察到恶意容器镜像中使用蠕虫病毒的情况有所增加。2021年,在所有被分析的镜像中,有50%以上的镜像含有蠕虫病毒,比2020年的41%增加了10个百分点。蠕虫病毒会自动寻找 络中的薄弱系统并感染它们,而不需要攻击者的人工干预。蠕虫病毒使攻击者可以轻松扩大其攻击范围。
Rootkits1为攻击者提供对系统的特权访问,同时隐藏他们的存在。 rootkit有两种主要类型:用户空间rootkit和内核空间rootkit。 前者在用户空间中运行,它们拦截和修改二进制文件对库的调用。 后者的风险更大,因为它们提供最宽松宽松的用户权限,并且可以控制所有系统进程。
在云原生环境中,攻击者可以在主机上执行rootkit ,以隐藏恶意进程,并降低它们在逃离容器化环境后被发现的机会。 例如,rootkit允许攻击者隐藏高CPU使用率,从而降低它们在进行加密挖矿时被发现的机会。
将注意力从Docker转向Kubernetes
在过去几年里,配置不当的Docker API是攻击者最热衷的目标。 为了找到易受攻击的目标,攻击者使用了Shodan 或Censys等公共搜索引擎,或Masscan等扫描工具。 在实践中,这些技巧非常有效。 攻击者检测到暴露的配置不当Docker API所需的中位时间仅为56分钟2。
这些事实说明,即使是暂时的、最轻微的配置不当,也会使容器面临 络攻击的威胁。在2021年, 尽管被检测到的攻击活动略有减少,攻击者仍然持续对配置不当的Docker API发起攻击。取而代之的是,攻击者扩大了他们的目标,涵盖了CI/CD和Kubernetes环境。
特别是,我们发现了针对Kubernetes环境的攻击也一致增加。 2021 年,在我们对Kubernetes攻击的分析中,19%为恶意容器镜像,包括kubelet和API服务器,而前一年仅为9%。
考虑到攻击者总是在寻找容易得手的目标,而Kubernetes集群的攻击面很广,这种攻击行为十分有效。 相比较于单个容器,一旦攻击者获得了初始访问权限,那么横向移动和持久化的可能性就更大了。
武器化Kubernetes UI工具
在2020年9月,我们首次了解到,攻击者在使用UI工具来获取Docker和Kubernetes环境的访问权限3。 2021年,我们观测到这种方法的采用变得更广泛了。
许多应用程序都可以被视为Kubernetes UI工具。 有些工具,例如 cAdvisor 和 Kubernetes Operational View,仅提供对集群的可见性。 而其他工具,例如 Weave Scope、Kubernetes Dashboard 和 Octant,还支持访问和控制。一旦遭到攻击者的利用,后者可能会导致严重的后果。
就像配置不当的Docker API为攻击者创造了入口点一样,暴露Kubernetes UI工具的不当配置也是如此。攻击者只需应用技术以发现易受攻击的Docker实例的技术,就可以找到这些暴露的工具。
例如,我们会使用Shodan来发现配置不当的Kubernetes仪表板,它们不需要用户身份验证,这使得环境容易遭到利用。 连接到此类环境的攻击者实现了全面可见性(图 3)、巨大的控制权(图 4)和对机密的访问权限(图5)。
图 3 – 连接到暴露的Kubernetes仪表板的攻击者获得了对 Kubernetes 环境的全面可见性。
图 4 – 攻击者可以建立shell连接以打开运行中的pod,并可以启动容器和更改部署。
图 5 – 攻击者也能轻松访问机密。 此外,攻击者还可以通过其他方式造成破坏,例如更改设置并获得Kubernetes存储资源。
此外,攻击者还可以通过其他方式造成破坏,例如更改设置并获得Kubernetes存储资源。
对云服务进行强化和正确配置可以有效缩减潜在攻击,并防止配置不当的Kubernetes UI工具遭到攻击。 为了保护自己免受此类威胁,遵循Kubernetes安全最佳实践非常重要。
如果您已经在使用Kubernetes UI工具,我们建议确保它们无法被公开访问。
Aqua 的专家编写了几本关于Kubernetes安全和加固的指南,包括:
传统的攻击策略以云环境为目标
诸如破解密码和利用数据库、服务器、Nginx和Kibana等应用程序漏洞等攻击策略并不新奇。然而,在2021年,我们检测到一些旨在窃取云上元数据的攻击。该活动意味着,攻击者正在使用更多专门针对云环境中运行的应用程序的技术。
这表明Mirai、Muhstik和Kinsing等大型僵尸 络已经进化。虽然它们可能不会像TeamTNT那样明确地针对云原生环境,但它们可能知道如何调节并利用云原生的发展来表现自己。
软件供应链开发持续性激增
现代开发流水线是复杂的自动化环境,具有用于构建应用程序的各种各样的CI/CD工具。 除此之外,开发人员通常会重新利用开源代码,每个软件项目可能依赖于数十个甚至数百个开源依赖项。 因此,一旦攻击成功,攻击者就能够破坏许多环境,并广泛传播恶意代码。
这些因素使得软件供应链成为攻击的首要目标,2021年此类事件激增。我们估计,软件供应链攻击同比至少增长了300%4。
2021年,旨在破坏软件供应商并通过开发流水线进行成功攻击的攻击者将重点放在了以下方面:
? 利用开源组件漏洞
? 危害广泛使用的开源软件包
? 破坏CI/CD工具和代码完整性
? 操纵构建过程
在大多数情况下,软件供应链中的安全风险只在运行时表现出来,即在容器执行操作并实现 络通信时才表现出来。 由于恶意软件和其他供应链风险并非漏洞——但是通过供应链获取的artifacts很可能会包含漏洞。
热门公共库中的恶意镜像
我们检测了过去12个月内上传到全球最大镜像库之一的 1,100多个容器镜像。 分析显示,有13%的镜像与潜在有害应用程序有关,例如加密货币挖矿软件,有1.3%的镜像与恶意软件有关。
许多镜像与加密货币挖矿软件有关。虽然有些命名表明了其目的,但大多数被使用的名称并没有暗示镜像的性质——这表明其功能被故意隐藏了。
发现有属于不同帐户的44个容器镜像包含Java调试线路协议 (JDWP) 配置不当,可能会导致攻击者在生产环境中运行任意代码(例如,实现初始访问或升级权限)5。
发现有48个容器镜像包含攻击性安全工具,例如 Metasploit 和 Mimikatz6。这些容器可能被合法研究人员或攻击者所利用。
26个容器镜像包含恶意二进制文件,由于其中24个容器使用了良性名称,这些恶意软件很可能是故意的。
发现八个容器镜像包含执行DNS渗漏攻击的功能,其中DNS协议被用于在无直接连接的两台计算机之间交换数据。
有四个帐户的21个存储库与TeamTNT有关。这些帐户是 portaienr7(八个存储库)、fuhou(七个)、lifengyi1323(五个)和 700888880a0(一个)。 “Portaienr”是合法“portainer”镜像的误植域名,它是一个帮助可视化容器、镜像、存储资源和 络 的Docker UI。
我们的调查还发现了一些与开发环境相关的攻击,这些环境的安全控制相对较少。 在扫描的镜像中,有128个镜像包含加密货币挖矿功能8。 同样,容器名称并没有表明它们的真实性质。
Python包
2021年2月,研究人员Alex Birsan展示了一种新型的供应链攻击,在全球一些最有价值和技术最先进的公司的 络上执行伪造的代码9。这种方法被称为 “依赖混淆 “或 “命名空间混淆 “攻击,首先,它将恶意代码放置在官方公共存储库中,与主流的依赖项使用相同的包名。
在Birsan的演示中,他包含了执行DNS渗漏的代码。 他表示:“我知道大多数潜在目标都位于受到良好保护的公司 络的深处,我认为DNS渗漏是可采取的途径。”
通过提供比真正软件包更高的恶意软件包版本 ,Birsan骗过了构建过程,使其实现了自动下载和合并恶意依赖项。
在Birsan发表其研究结果后短短两天内,其他研究人员光在NPM中就放入了150个类似的软件包,这清楚地表明了攻击者对这种攻击向量非常感兴趣。 我们扫描了30,000 多个Python软件包,发现有170多个软件包都包含可疑或恶意的功能:
? 有1个软件包包含攻击性安全工具。
? 有2个软件包包含微软服务器信息块 (SMB) 漏洞
Win.Exploit.CVE_2015_0005-1。
? 有169个软件包包含执行DNS渗漏的功能,通往七个不同的目的地。 我们可以合理地得出以下结论:安全研究人员使用大多数这些软件包来探索和构建 Birsan的发现。
图6 – 此脚本在get_host函数中纳入了一个DNS调用。数据变量包含了一个收集IP、操作系统和路径相关数据的字典。
Log4j导致攻击者的圣诞节提前到来了
在2021年12月前,Log4j只是一个流行的Java日志框架,是在许多现代Web应用程序后台运行的众多组件之一。 但是,当零日漏洞 (CVE-2021-44228) 发布后,一切都发生了变化,攻击者开始展开攻击。
很快就出现了更多的漏洞(图7),风险进一步提高了。
漏洞系统极大的多样性加剧了这些风险。 Log4j通常被用作其他软件的一部分或与黑盒设备捆绑在一起,因此许多组织都想知道它们是否容易受到攻击,然而却没有简单的方法可以确定。
图7 – 在短短几周内,Log4j就从一个嵌入Web应用程序的工具变成了主要的攻击向量。
为了更好地了解攻击者的活动,我们创建了一个易受 CVE2021-44228 攻击的蜜罐。 在短短几个小时内,我们就检测到了数十次攻击(图 8)。有些攻击是独特的,对环境只进行了一两次攻击,而另一些攻击则每隔几分钟就发动一次,表明了这是大型僵尸 络的活动10。
图8 – Aqua的云原生监测及响应功能 (CNDR) 观察到 Muhstik 恶意软件是从内存中执行的。
在蜜罐中,我们观测到多种恶意技术利用我们的环境进行攻击,包括已知的恶意软件、无文件执行、从远程资源下载并直接从内存执行的文件,以及反向shell执行。
图9 – Aqua的研究人员对一系列攻击技术进行了直接观测。值得注意的是,我们观测到ELF pty3,即Muhstik恶意软件,被直接写入内存并执行(图8)。
TeamTNT 一直保持活跃,引入新技术,突然就解散了。果真如此吗?
由于 络犯罪生态系统的性质,今日的前沿攻击会成为明日的常见威胁。因此,研究最成功的攻击者是了解即将成为主流的策略、技术和程序的有效途径。
不幸的是,对 络安全进行归因的难度极高。而且,通过合作、市场和盗窃不同工具的传播,情况变得更加复杂。不过,当攻击者张扬自己的活动并在攻击上签名时,情况就变得相对简单了,TeamTNT的情况就是如此(图10)11。
图 10 – TeamTNT 向来张扬
“大坏蛋”
至少从2019年开始,TeamTNT就成为了主要的攻击方,尽管他们在更早的时候就有过短暂活跃时期——TeamTNT 在云和容器 络安全研究人员中广为认知12。 事实上,该组织如此活跃,以至于它在大多数针对云和容器化环境的攻击中都有参与。
它的相对成功归因于多种因素,包括对新攻击向量的持续试验以及愿意自己编写攻击并利用现有攻击性安全工具和第三方存储库。
在实践中,我们每月观测到5~10次新的攻击,我们能有把握地将其归因于TeamTNT(图 11)。 除了通过加密劫持等做法提供收入流之外,这些频繁的攻击还为组织创建了一个强大的反馈机制,以测试、评估和改进其策略、技术和程序。
图11 – 已知chaimera域与TeamTNT有关13
使用APT级攻击手法
在2021年8月,我们详细介绍了TeamTNT的一场密集性活动,该活动使用了通常由民族、国家间的攻击行为才会采用的高级持续攻击 (APT) 技术14。 该活动中的每次攻击都遵循四个步骤:
1、运行vanilla容器镜像:在本例中,攻击者运行了一个 Alpine 容器镜像。
2、逃逸到宿主机:攻击者通过挂载宿主机文件系统逃逸容器并获得对宿主机的访问权限。
3、下载恶意脚本:逃逸到宿主机后,攻击者在cron scheduler系统中编写命令,从远程源下载并执行恶意shell脚本(cronb.sh)。
4、加载和执行恶意软件:脚本cronb.sh是执行攻击的有效负载。
为隐藏其存在,该组织在这个脚本中采用了两种类型的rootkit。
一个内核空间rootkit,Diamorphine,用来掩盖攻击(图12)
一项修改二进制文件的技术,它被视为用户空间rootkit,可作为后备选项(图13)
Diamorphine是一个用于Linux内核的可加载内核模块(LKM)rootkit。它位于内核空间内,旨在获得进程的更高权限并隐藏恶意活动。
基于LKM的rootkit是非常强大的,它使攻击者在系统中几乎能为所欲为,例如可以修改一个进程,甚至能在一个进程启动前就终止它。
然而,rookit的使用充满了挑战,因为攻击者需要root权限或CAP_SYS_MODULE能力来加载它们。在这次活动中使用的Diamorphine呈现了一种全新的复杂情况。
图12 – 此installdia函数包含一个以base64加密tar文件,是Diamorphine的源代码。攻击者还测试系统,尝试覆盖尽可能多的 Linux 发行版(Ubuntu,Debian, Red Hat, Fedora or CentOS, etc.)
图13 – 在第一行中,攻击者试图验证用户是否为“root”(Diamorphine将仅与root用户一起运行)。 如果验证失败,攻击者将通过更改程序top、ps和pstree来部署用户空间 rootkit。
解散/未解散
12 月,TeamTNT宣布解散,带来了新的转折。
然而,一个月后,我们的蜜罐仍然受到来自TeamTNT的攻击。 但值得注意的是,我们并没有观测到任何新策略,因此持续的攻击有可能是自动攻击基础架构仍在运行的结果。
进一步的研究表明,TeamTNT的一些命令和控制服务器、第三方注册表和蠕虫病毒仍在运行并感染新目标。 TeamTNT是真的解散了还是只是暂时休息? 只有时间能证明一切。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!