概括
Trend Micro 研究人员发现了一种新的攻击媒介,该媒介通过部署名为 Godzilla webshell 的内存无文件后门来利用 CVE-2023-22527。CVE-2023-22527 是一个影响 Atlassian Confluence 数据中心和服务器旧版本的漏洞,允许攻击者执行远程代码执行。
在这种攻击中,加载器被引入到受感染的 Atlassian 服务器中,随后激活 Godzilla webshell。
Godzilla 是一种复杂的中文后门,它使用 AES 加密进行通信并保留在内存中以避免基于磁盘的检测机制。
传统的反病毒解决方案很难检测无文件恶意软件,因此发现这种新型攻击凸显了定期修补服务器和使用更先进的安全解决方案的重要性。
我们观察到一种利用 Godzilla 后门针对漏洞 CVE-2023-22527 进行武器化的新攻击媒介。在初步利用后,加载程序被加载到 Atlassian 受害服务器中,该服务器加载了 Godzilla webshell。2024 年 1 月 16 日,Atlassian 发布了针对CVE-2023-22527的安全公告,该漏洞影响 Confluence Data Center 和 Confluence Server 产品。为此,趋势科技发布了自己对该漏洞的技术分析和报道,该漏洞也与加密挖矿活动有关。
该漏洞被标记为严重漏洞,通用漏洞评分系统 (CVSS) 评分为 10。通过利用此漏洞,未经身份验证的攻击者有可能利用旧版本 Confluence 数据中心和服务器中发现的模板注入漏洞,从而在受影响的实例上进行远程代码执行 (RCE)。
哥斯拉 Webshell
经分析,该后门为中文版Godzilla内存后门,由名为“BeichenDream”的用户开发,针对红队行动中安全产品频繁检测存在的Webshell,开发了该后门。作者声称Godzilla通过对网络流量进行AES加密来逃避检测,在各安全厂商产品中静态检测率极低。基于servlet的Tomcat等中间件内存shell项目构想最早由用户“ feihong-cs ”提出。
无文件恶意软件技术的主要问题是,如果客户依赖于使用基于签名的方法、沙盒、白名单甚至有时是机器学习保护方法的传统防病毒软件,则很难检测它们。
初始访问
攻击首先利用 CVE-2023-22527,使用velocity.struts2.context执行 OGNL 对象(图 1 和 2)。
图 1. 攻击链
图 3. 恶意负载的代码片段
深入研究恶意负载(图 3),我们发现:
-
攻击者使用 OGNL 对象读取名为x 的参数。在参数值中,攻击者通过 ScriptEngineManager 的帮助执行 JavaScript 代码。攻击者使用对象链接的原因可能是 OGNL 模板问题,如果其长度超过~200 个字符,则会根据struts.ognl.expressionMaxLength设置进行阻止。
-
根据 JavaScript 代码,攻击者添加标头x_evc_ecneulfnoc以确保对象已成功加载,这将显示在响应中(图 4)。
图 4. 对象加载成功时的响应包含标头
JavaScript 代码的第二部分有一个名为data 的对象,其中包含 Base64,它将被加载为内存中使用sun.misc.Unsafe的匿名类。
恶意软件
该匿名类的Base64值解码之后,其编译出来的java代码程序叫做MemGodValueShell。
图 5. MemGodValueShell 函数
如图 5 所示,MemGodValueShell类有四个属性:uri、serverName、standardContext和valveString。它们用于在类方法执行期间存储各种信息。
MemGodValueShell有三种方法:getField是一种使用反射从对象中检索私有字段值的方法(图 6)。它遍历类层次结构来查找字段。
图 6. getField 方法
该类中的第二个方法是getStandardContext(图 7)。此方法尝试通过遍历当前线程组中的所有线程来检索StandardContext对象。它检查属于Tomcat 的StandardEngine或Acceptor组件的线程。它使用反射来检索各种内部字段,以浏览服务器的内部结构。
图 7. getStandardContext 方法
最后一个也是主要的方法是类构造函数MemGodValueShell(图 8)。此构造函数方法执行以下几个操作:
-
从当前线程的上下文类加载器加载 Valve类。
-
使用 getStandardContext方法检索 StandardContext对象 。
-
迭代所有当前线程组中的线程。
-
对于每个线程,如果它没有被命名为“exec”,则方法:
-
检索线程的目标对象
-
检查目标对象是否是Runnable的实例
-
从目标对象中检索全局字段
-
遍历处理器并检索请求 (req) 对象
-
从请求对象中检索 serverPort、 serverNameMB和 codedUriMB字段
-
将valveString从 Base64解码 为字节数组
-
使用ClassLoader 的 defineClass方法定义一个新类
-
实例化新类并将其作为阀门添加到 StandardContext 的管道 中
图8. MemGodValueShell构造函数方法
为了方便排除故障,我们打印了一些数据,如图9和图10所示:
图 9. MemGodValueShell 构造函数方法的自定义调试
图 10. MemGodValueShell 构造函数方法的自定义调试
总而言之,MemGodValueShell执行以下操作:
-
反射使用——代码大量使用 Java 反射来访问类的私有字段和方法
-
线程检查——它检查线程以查找与 Tomcat 的 StandardEngine 和 Acceptor相关的特定线程
-
动态类加载——它从 Base64 编码的字符串动态加载并定义一个类
-
阀门注入——它将自定义阀门注入 Tomcat 管道,旨在提供后门或某种形式的未经授权的访问
在动态类加载中,MemGodValueShell构造函数在字符串变量valveString中包含一个较长的 Base64 编码字符串,该字符串也是编译后的 Java 类GodzillaValue(图11)。对其进行反编译后,我们得到了Java代码,如下所示。
图11.哥斯拉级
对于方法,我们有以下内容:
-
md5 – 计算 MD5 哈希值 -
base64Encode – Base64 编码 -
base64Decode – Base64 解码 -
x – AES 加密/解密方法 -
Invoke – 覆盖的 Valve 类方法,处理 HTTP 请求和响应(图 12)
图 12. Godzilla Invoke 方法
Invoke方法似乎在等待攻击有效载荷的下一部分,这将完成攻击的循环。但我们的蜜罐中从未收到过这部分,这将使这种 shell 处于闲置状态,直到它收到有效载荷类。基于此,威胁行为者可能正在构建自己的僵尸网络。
根据图12中的Godzilla源代码分析,我们很容易猜测类payload应该如下所示(图13):
图 13. 有效载荷类的自定义示例
根据我们的假设,如果我们发送一个带有Accept-Language标头“zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2”的 POST 请求,并且pass参数值具有使用参数xc加密的 payload 类的 Java 编译数据,则它应该初始化 payload 类。我们尝试了这一点,如图 14 所示,图 15 显示了我们如何成功加载 payload 对象。
图 14. 初始化有效载荷类的 HTTP 请求
图 15.显示成功加载有效载荷对象的日志
现在,我们可以尝试确定我们的 shell 是否有效:为了准备我们的命令,加密命令应该是“AES128(Base64encoded(command))”,AES 密钥应该是GodzillaValue类中的xc参数(图 16)。
图 16. 命令示例
这确实有效,但回到GodzillaValue类,我们注意到结果的前 16 个字符和后 16 个字符是“md5(pass+xc)”。此外,命令执行结果是使用xc密钥加密的“AES128(base64encode(result))”(图 17)。让我们恢复这些加密操作以获取结果(图 18)。
图 17. 命令执行示例
图18. 解密解码后的命令执行结果
Vision One 狩猎查询
追踪查询 Atlassian Java 是否执行了命令:
(eventSubId:2 AND processCmd:atlassian AND parentCmd:atlassian AND parentCmd:java AND (objectName:*\Windows\System32\* OR objectName:*bin/*))
结论
CVE-2023-22527 漏洞继续被各种威胁行为者广泛利用,他们滥用此漏洞进行恶意活动,使其成为全球组织面临的重大安全风险。建议 Atlassian Confluence 用户立即修补其服务器并降低与此攻击相关的风险。利用 Trend Vision One™️等安全解决方案 可以帮助组织保护其环境免受威胁行为者和攻击(如攻击初期描述的攻击)的侵害。
Trend Vision One™ – Endpoint Security通过以下深度包检测 (DPI) 规则针对可能针对此漏洞的任何威胁提供保护:
-
1011954 - Atlassian Confluence 数据中心和服务器模板注入漏洞 (CVE-2023-22527)
TippingPoint 已针对此漏洞发布了 Customer Shield Writer (CSW) 文件,可供客户在威胁管理中心 (TMC)上下载。适用规则如下:
-
43721 - HTTP:Atlassian Confluence 数据中心和服务器模板注入漏洞
Trend Micro Cloud One – Workload Security通过以下规则帮助防御虚拟、物理、云和容器等各种环境免受此威胁:
-
1011954 - Atlassian Confluence 数据中心和服务器模板注入漏洞 (CVE-2023-22527)
Trend Micro Deep Discovery Inspector客户受到以下规则的保护:
-
DDI 规则 4990 - CVE-2023-22527 - Atlassian OGNL 注入漏洞 - HTTP(请求)
攻击指标 (IOC)
哈希 | 检测 |
dfeccdc0c1d28f1afd64a7bb328754d07eead10c | 木马病毒 |
2cb94ce0b147303b7beb91f034d0dc7fa734dbcb | 后门.JS.WEBSHELL.VSNW08H24 |
MITRE ATT&CK 技术
策略 | 技术 | 技术编号 |
初始访问 | 利用面向公众的应用程序 | T1190 |
执行 | 命令和脚本解释器:Unix Shell | T1059.004 |
防御规避 | 模糊文件或信息:加密/编码文件 | T1027.013 |
反射代码加载 | T1620 | |
混淆的文件或信息:嵌入式有效负载 | T1027.009 | |
进程注入:线程执行劫持 | T1055.003 | |
反混淆/解码文件或信息 | T1140 | |
指挥与控制 | 加密通道:对称密码 | T1573.001 |
持久性 | 服务器软件组件:Web Shell | T1505.003 |
泄漏 | 通过替代协议进行渗透:通过对称加密非 C2 协议进行渗透 | T1048.001 |
原文始发于微信公众号(Ots安全):静默入侵:Godzilla 无文件后门攻击 Atlassian Confluence
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论