Log4Shell 零日漏洞可能是过去十年中最重要的安全威胁之一,其影响或将持续到 2022 年甚至更以后。受 Imperva 云 Web 应用防火墙 (WAF) 保护的数千个站点上,我们观察到针对该漏洞有超过 1.02 亿次利用尝试。危机爆发至今,Imperva 的团队除了应对最初披露的零日漏洞,还响应了其后一系列 Log4j 相关的问题,以确保为客户提供尽可能好的保护。
网上已经有大量资料解释了每个 Log4j 漏洞各自原理是什么,以及如何利用这些漏洞[见备注1、2]。在本篇博客中,将集中展示我们在分析最近的 Log4j 相关漏洞时观察到的攻击模式、攻击负载 (payload)、绕过技术和统计分析结果。本博文中的数据均源自对 Imperva 的全球网络流量的分析,以及其他公开可用的外部资源,包括社交媒体。
备注1、2:https://www.lunasec.io/docs/blog/log4j-zero-day/
https://www.lunasec.io/docs/blog/log4j-zero-day-update-on-cve-2021-45046/
Imperva 对 Log4shell 攻击的响应
尽管 Imperva 的通用安全规则已经能提供漏洞利用的部分防护,但在 12 月 9 日发布漏洞PoC 几个小时后,Imperva 安全分析师还是另外发布了专门的缓解措施,并为 Imperva Web 应用防火墙 (WAF) 客户制定了手动缓解指南。
漏洞利用攻击尝试
自2021年12 月 9 日漏洞首次被披露以来,Imperva 已阻止超过1.02 亿次攻击尝试。下图说明了攻击的发展过程。
漏洞利用尝试的变迁
下图显示了自漏洞披露以来,受Imperva 云WAF 保护的站点上漏洞利用的尝试。在漏洞PoC公开后的前 10 天,Imperva观察到每小时近130 万次漏洞利用尝试。12 月 23 日,攻击尝试达到峰值,随后攻击量整体呈下降趋势。
受攻击网站的变迁
除了惊人的攻击尝试量外,目标站点的数量也非常可观,峰、≥¬时遭遇攻击的站点达到了每小时 2万5千个之多。各中原因,一是由于基于 Java 的 Web 应用程序的主导地位,二是因为这些应用程序中普遍存在 Log4j 包。攻击者似乎正在使用“机枪扫射”和模糊测试技术来寻找和识别易受攻击的应用。
遭受攻击的行业
下图显示了攻击会话按行业划分的情况。撰写本文时,统计显示最常见的目标行业是金融服务 (29.6%)、食品和饮料 (12.4%) 以及IT互联网(10.4%)。正如我们之前提到的,攻击者在利用此漏洞时并非定点攻击,主要还是“机枪扫射”。在每个类别中,我们都没有发现排名前列的受攻击站点与其技术栈之间存在很强的相关性;但若仅考虑攻击负载是更具针对性的恶意远程代码执行 (RCE) 情况时,与技术栈的相关性变得稍微明显一些。
用于攻击的网络客户端
Imperva 观察到,有 100 多种不同类型的 Web 客户端参与了攻击。这些客户端中最流行的是 Go HTTP 库,已经有超过 1,000 万次请求,并且还在不断增加。
攻击的数量和 Web 客户端的分布相结合表明,Log4Shell攻击很快实现了自动化,有诸多工具方便攻击尽可能多的目标。
遭受攻击的国家
Imperva 观察到针对 160 多个不同国家/地区网站的攻击,其中最常见的目标是美国,占所有攻击尝试的 46.5%。
发起攻击最多的IP地址
如前所述,我们观察到许多攻击者通过“机枪扫射”来寻找易受攻击的应用。下图显示了自漏洞披露以来,用于攻击大多数网站的 IP地址,列出的这些 IP 都已向数千个站点发送过恶意请求。
我们创建了一个包含 10,000 多个 IP 的动态情报源,追踪到的这些 IP 正在积极尝试利用 Log4j 漏洞。该情报源每天都会更新。
发起最多模糊测试(Fuzzing) 攻击的IP地址
我们分析发现,许多参与攻击的 IP 都在使用一种称为“模糊测试”的常见技术来寻找和识别易受攻击的 Java Web 应用。这类探测的实现原理很简单:攻击者构造许多有不同参数和不同标头的HTTP 请求,并将攻击负载插入其中,发送给目标。对端应用中若使用有缺陷的Log4j 版本,在把攻击负载记录到日志的同时会触发 DNS 查询,会将域名信息发给攻击者控制的服务器,暴露了自己易受攻击。下图显示了发起模糊测试最多的几个IP 地址,同时列出了每个 IP发送的探测HTTP请求中唯一标头和参数名的数量。
攻击负载分析
我们记录了利用 Log4Shell 漏洞时许多不同的攻击负载,分为以下几类:
探测
反射型Shell
部署恶意软件
数据泄露
打补丁
探测
通常,攻击者会在发送实际攻击负载前先对应用做探测。以下例举的服务可能会被用来检测应用,如果测试后收到了DNS 查询请求,则意味着该应用易受攻击。
interactsh.com
dnslog.cn
burpcollaborator.net
ns1.distryp.com
bipcyberdef.tk
1ma.xyz
service.exfil.site
[163].[172].[94].[82]:1234
[134].[209].[26].[39]:4000
[45].[66].[8].[12]:1378
[45].[66].[8].[12]:1366
漏洞探测示例:
反射型Shell
该类攻击负载会试图在易受攻击的应用和黑客之间打开通信通道。建立起连接后,黑客可以进一步探查目标系统,甚至远程运行任意shell命令。
部署恶意软件
恶意软件Kinsing
恶意软件Kinsing包含一个用于加密货币门罗币的挖矿程序Cryptominer,和一个用 Golang 编写的远程管理工具 (RAT)。
其SHA256散列如下:
6e25ad03103a1a972b78c642bac09060fa79c460011dc5748cbb433cc459938b
解码后的攻击负载:
恶意软件StealthLoader
这是一个多阶段恶意软件,会安装加密货币矿工XMRig,来挖掘门罗币。
其SHA256散列如下: 457b254439cdbbc167b45abc09d9531b59ac7b104e847e453e5abd016991a6e2
这段Powershell指示去哪里下载恶意挖矿软件
下载并执行恶意软件
Mettle – Metasploit 高级后门利用
Mettle是 Meterpreter 测试工具的原生实现,旨在实现可移植性、可嵌入性和低资源利用率。它可以在最小的嵌入式 Linux 目标上运行,也可以在 Android、iOS、macOS、Linux 和 Windows 上运行,可以移植到几乎任何符合 POSIX 的环境。
其SHA256散列如下:
378d892c616805fbddb3d39584035b303192ddbc2a7e43e966319bb41ce6861f
解码后的攻击负载:
Ganiw僵尸网络操纵的DDoS机器人
针对 Linux 操作系统的多功能 DDoS 木马程序。可以执行多种类型的 DDoS 攻击,包括 SYN Flood、DNS Amplification、UDP Flood 等。
其SHA256散列如下:
a4b278170b0cb798ec930938b5bd45bbf12370a1ccb31a2bee6b2c406d881df6
解码后的攻击负载(第一轮):
解码后的攻击负载(第二轮):
数据泄露
AWS密钥
下面示例说明了存储在环境变量中的 AWS 密钥泄露,并被发送到攻击者控制的 DNS 服务器。
攻击者还可以将受害者的网站加到域名字段中,将提取的密钥与受害域名匹配
Docker容器信息
泄露 Docker 容器和 Kubernetes 集群上下文信息
打补丁
另一个比较有趣的攻击负载,同时也是对易受攻击系统做修补的非标准方法,是一段Java 代码,可以用它直接更改应用配置并禁止lookup操作。换言之,攻击负载也可以被用来修补 Log4shell 漏洞。
绕过技术
一般来说,远程代码执行被认为是最严重的漏洞类型。由于 CVE-2021-44228 很容易被利用,其CVSS 分数为 10.0,严重性满分。如下所示,我么可以构造一个 JNDI 查询,简单地通过字符串攻击负载,在目标上实现远程执行:
攻击负载以“${jndi:”开头,紧跟着的是协议实现选择,以及统一资源标识符 (URI) ,指向攻击者控制的托管恶意代码的服务器。
为了逃避检测,攻击者开始使用嵌套查找(例如攻击负载中的“lower”、“upper”和“date”)来混淆攻击负载。如果缓解措施仅检测HTTP 请求中的$jndi: 字符串的话,该方法可以轻松绕过:
还可以在“JNDI”字符周围使用多组单引号,来实现这类绕过:
可用几种不同的方式,排列组合这些符号来混淆攻击负载,并绕过可能的检测
另一种绕过技术,与Java语言的模糊执行有关。例如,当“upper”关键字与无点 i (即字符ı)一起使用时,ı会被转换为常规 i,这样就能拼凑出jndi字符串,从而使攻击负载生效
攻击者还可以使用所谓的“默认值语法”(即在查找中由破折号表示使用默认值)来进一步混淆攻击负载。这意味着只要攻击负载中的嵌套查找包含冒号和破折号字符在其中:${:-},任何字符都可以在jndi查询中使用,这体现在很多方面:
攻击者甚至会使用特殊字符、引号、空格和制表符构造攻击负载:
还可以使用各种类型的多个嵌套查找来进一步混淆和逃避检测:
Imperva 还观察到了有些攻击负载会省略尾部的大括号,也是通过查询语法校验必需的一部分。但研究和实验表明,某些情况下,如果右大括号被记录在同一文件的其他位置,例如在附加的 HTTP 参数/标头中,查询会被正常执行,攻击仍然起效。
Log4Shell危机在社交媒体上的持续发酵
当您在社交媒体上发布零日漏洞相关消息时,它会像野火一样蔓延。与该漏洞相关的关键术语在Twitter 上猛增。在事件发生的第一周我们监测了几个 Log4j关键词——“Log4j”一词在 12 月 8 日仅被提及两次,随后在 12 月 9 日又被提及。然后突然,从 12 月 10 日开始,相关关键词提及的数量开始成千上万。在新的2022年来临之际,每天仍会有数千条关于 Log4j 的推文。
为了说明公众对于这个CVE 的关注程度,我们绘制了“CVE-2021-44228”在在其公布后 5 天在社交网络传播的图表,并将该主题话题数与这 5 天内其他漏洞的推文数量进行了比较。Log4shell 在其鼎盛时期产生的公众兴趣和影响力令其他话题黯然失色。
毫无疑问,CVE-2021-44228 是 2021 年发现的最严重的漏洞。
结论
这个漏洞对于未来意味着什么
与 Log4shell 相关的 CVE 是 2021 年最重要和影响最大的漏洞。Log4j 日志服务框架在 Java 应用程序中几乎无处不在,这意味着在 2022 年甚至更往后,几乎所有互联网用户都会感受到这种影响。目前大家正争先恐后地识别检测网络中所有易受攻击的 Java 应用程序,并将在可预见的未来仍会继续这样做。
我们预测此漏洞将在2022年带来泄漏和违规事件的一波浪潮,并将影响各种规模的组织。预测勒索软件攻击和加密货币的非法挖矿活动将急剧增加。僵尸网络将利用此漏洞进行扩展,因此应用和网络 DDoS 攻击的数量将增加。
由于漏洞利用复杂多变,我们强烈建议 Imperva 客户升级到 Log4j 2.3.2(用于 Java 6)、2.12.4(用于 Java 7)或 2.17.1(用于 Java 8 及更高版本)并继续使用寻找发现新漏洞的更多补丁。我们还建议客户评估 Imperva RASP 方案以防范零日漏洞。Imperva RASP 是 Imperva WAF 的补充:后者将不良流量拒之门外,RASP 减轻了第一方或第三方代码/依赖项中未知漏洞带来的风险。RASP嵌入到应用程序中,可以直接查看与 RCE 相关的攻击,这对于检测和阻止特定类别的攻击是一个优势。在此处了解有关 Imperva RASP 的更多信息。如果您正在寻找Log4j 相关 CVE 的保护,请联系我们。
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...