☰
Infection Monkey 功能全景:从凭据窃取、漏洞利用到勒索与挖矿载荷模拟
2026/9/29 2:48:13 网站建设 项目流程
  • 网络安全
  • 应用安全

【免费下载链接】monkey

Infection Monkey - An open-source adversary emulation platform

项目地址:https://gitcode.com/gh_mirrors/mo/monkey
点击查看免费下载

Infection Monkey 是一款开源的对手模拟(adversary emulation)平台,通过一个可配置的蠕虫型 Agent 在受控网络中自我传播,并由名为 Monkey Island 的 C2 服务器统一指挥与可视化,帮助你用经验数据检验安全防御的有效性。本文以项目 features 文档为核心骨架,系统梳理 Exploiter、Credentials Collector、Payload(勒索/挖矿模拟)、Malware Masquerade、Polymorphism、插件体系与报告等核心功能,并辅以仓库源码与参考文档佐证,读者读完后既能理解每个功能的攻击原理,也能掌握在 Monkey Island 上的配置要点与安全边界。

组件架构:Agent 与 Monkey Island

Infection Monkey 由两个核心组件构成(见 README):

  • Agent(感染猴子代理):一个可配置的网络蠕虫,能够感染机器、窃取数据并投递载荷。它在网络中自我复制传播,并把活动情况上报给指挥中心。
  • Monkey Island(猴岛指挥中心):用于控制并可视化感染进程的命令与控制(C2)服务器。Agent 传播、凭据窃取、漏洞利用、载荷投递的全部状态都在这里汇聚,用户可以在此配置策略、查看感染地图与安全报告。

整个工作流可以类比为“恶意软件疫苗”:先收集并分析真实恶意软件的行为,再修改 Agent 配置去逼真模仿这些行为(但不对目标系统造成破坏),随后把 Agent 注入网络,实证检验安全控制能否检测、阻止或缓解感染;若未能遏制感染,则据此改进安全工具、策略与流程。

Exploiters:模拟真实攻击路径的传播利用器

利用器(Exploiters)是 Infection Monkey 的插件,负责把 Agent 副本传播到网络中的其他机器上(见 exploiters/_index.md)。

在真实攻击中,攻击者会利用侦察阶段识别出的漏洞来破坏联网系统、获取未授权访问、提权或执行恶意操作。Infection Monkey 的 Agent 完成侦察阶段后进入传播阶段:使用启用的利用器对易受攻击的系统实现远程代码执行(RCE,即“exploitation”),随后把自身复制到被攻陷的系统并启动新的 Agent 进程,如此循环扩散。

当前项目支持多种利用器(详见 exploiters 参考文档),既有基于已知漏洞的(如 Log4Shell、Zerologon),也有基于口令爆破的(如 SSH、SMB、RDP、WMI、SNMP、Hadoop 等):

利用器类型说明
Log4Shell漏洞利用模拟 Log4j RCE 漏洞(CVE-2021-44228)
Zerologon漏洞利用模拟 Netlogon 提权漏洞(CVE-2020-1472)
SSH / SMB / RDP / WMI / SNMP凭据/口令爆破使用预置口令或窃取到的凭据尝试认证并执行 Agent
Hadoop服务利用针对 Hadoop 集群开放端口实施利用

安全性上,多数利用器对目标系统的性能与可用性几乎不构成风险;已知会冲击生产负载的利用器会在 Monkey Island 界面上被明确标记为“unsafe”,配置时需特别注意。

Credentials Collectors:窃取凭据供横向移动复用

凭据收集器(Credentials Collectors)试图从被 Agent 感染的系统中窃取凭据(见 credentials_collectors/_index.md)。

真实网络攻击中,攻击者常从被攻陷系统提取凭据,用于横向移动、提权、数据窃取与持久化。Infection Monkey 模拟这一行为:Agent 启动后进入侦察阶段,第一步就是用所有启用的凭据收集器窃取凭据,并将窃取结果发回 Monkey Island,任何 Agent 都可以立即使用这些凭据。

随后进入传播阶段,利用器会先向 Monkey Island 查询两类凭据——用户预配置的凭据与被窃取的凭据——再尝试用它们对目标系统认证;认证成功后就在目标上执行 Agent,把感染扩散到全网。

支持的凭据收集器包括:

  • Mimikatz 凭据收集器:基于纯 Python 实现的 pypykatz,从 Windows 内存与凭据管理器中提取明文口令、哈希、PIN 与 Kerberos 票据,用于提权或横向移动;
  • Chrome 凭据收集器:从 Chrome 浏览器提取保存的凭据(见 chrome.md);
  • SSH 凭据收集器:收集主机上的 SSH 密钥与口令(见 ssh.md)。

Payload 载荷模拟:勒索软件与挖矿劫持

除传播与窃取外,Infection Monkey 还能投递两类高保真载荷模拟,用于检验端点防护与检测规则。

勒索软件模拟(Ransomware Simulation)

勒索软件通过加密受害者文件或锁定系统来勒索赎金,可造成停机、数据丢失与财务损失。Infection Monkey 的勒索软件载荷用完全可逆的方式模拟这一行为(见 ransomware-simulation.md):

  • 加密方式:对文件就地执行一次简单的位翻转(bit flip),再把文件名追加扩展名(默认.m0nk3y)。由于数据已被篡改(文件暂时不可用),足以触发安全解决方案告警;要“解密”只需再次位翻转并去掉扩展名。你甚至可以配置空扩展名,但将无法仅凭文件名判断文件是否已被加密。
  • 目标文件限定:只加密指定目录下的常规文件且扩展名命中目标清单(该清单基于对 GoldenEye 勒索软件的分析,涵盖.doc、.xlsx、.pdf、.zip、.kdbx、.pyc、.vmdk等约 70 种扩展名,详见 reference/payloads/ransomware.md);不递归子目录、不跟随符号链接/快捷方式;未指定目录则不加密任何文件。
  • 可配置项(对应 config-schema):
属性类型默认值说明
file_extensionstring.m0nk3y加密后追加的扩展名,须匹配^(\.[A-Za-z0-9_]+)?$
linux_target_dirstringnullLinux 目标目录,须以/、$、~开头或为空
windows_target_dirstringnullWindows 目标目录,须为盘符路径、环境变量或 UNC 路径
leave_readmebooleantrue是否在目标目录留下勒索说明 README.txt
change_wallpaperboolean默认关闭是否更换 Windows 桌面壁纸(仅对 Windows 受害者有效)

为充分利用勒索模拟,建议用 Ansible、PsExec 或 Windows GPO 等配置管理工具,在每台机器上预先准备一个“勒索目标目录”(内含可安全加密的文件)。

挖矿劫持模拟(Cryptojacker Simulation)

挖矿劫持者(Cryptojacker)是窃取他人算力与电力来挖矿的恶意软件。Infection Monkey 的 cryptojacker 插件通过快速计算加密哈希来占用 CPU,与野外挖矿木马利用相同系统组件(见 cryptojacker-simulation.md):

  • CPU 占用:可配置消耗单核 CPU 的 0%–100%,用于模拟从隐蔽到高调的变体;
  • 内存占用:可配置消耗一定比例的 RAM;
  • 挖矿网络流量模拟:通过 HTTP 向 Island 发送getblocktemplate请求以模仿比特币矿工的网络流量——许多 NIDS 正是靠检测这类消息识别挖矿活动,启用后可用于验证 NIDS 是否正常工作。

生产安全边界:该组件不适合生产环境,CPU 利用被限制在单核;内存方面内置保护,最多消耗可用 RAM 的 90%——因为一旦内存耗尽,OS 会强制杀死进程回收内存,插件为避免自身被杀而设置了这一上限。相关安全阀与配置细节可参考 reference/payloads/cryptojacker.md。

规避与伪装:Polymorphism 与 Malware Masquerade

Polymorphism(多态性)

多态/变体恶意软件在复制过程中自我修改,使任何两份副本都不完全相同,从而规避基于签名的检测。Infection Monkey 通过向每个 Agent 二进制注入随机数据来模拟这一性质——每份副本哈希不同,对依赖哈希匹配的检测技术呈现“多态”外观(见 polymorphism.md)。

其实现位于 monkey/infection_monkey/exploit/polymorphic_agent_binary_repository_decorator.py:PolymorphicAgentBinaryRepositoryDecorator在分发 Agent 二进制时追加16 个 null 字节 + 8 个随机字节。源码注释明确指出,null 字节用于把后续“伪装数据(masque)”与可执行代码隔离开,防止被 OS 当作指令执行,从而在保持功能不受影响的同时改变文件哈希:

# 默认参数 DEFAULT_NULL_BYTES_LENGTH = 16 DEFAULT_RANDOM_BYTES_LENGTH = 8 # 每次 get_agent_binary() 时注入随机字节 append_bytes(agent_binary, self._null_bytes + randbytes(self._random_bytes_length))

Malware Masquerade(恶意软件伪装)

“伪装(Masquerade)”指让一个东西呈现出它本不是的样子。许多恶意软件检测规则(如 YARA 规则)通过匹配文件中的字符串或唯一字节序列来识别恶意程序。Malware Masquerade 功能允许用户向 Agent 二进制中注入指定的字符串或任意数据(字节),让 Agent 伪装成特定类型的恶意软件(见 malware-masquerade.md),非常适合自写检测规则的安全人员用来测试规则质量、提升模拟保真度。

在Configuration屏幕的Masquerade标签页中:

  • 配置字符串:把任意数量的字符串加入 Linux 或 Windows Agent 的字符串列表并点击Submit;可用 Linuxstrings命令验证注入是否成功:
curl https://<SERVER_IP>:5000/api/agent-binaries/linux -k -o monkey-linux-64 \ && strings monkey-linux-64 | grep <MY_STRING>
  • 配置二进制数据:对无法用 ASCII/Unicode 表示的任意字节,先做Base64 编码,再粘贴到 Masquerade 标签页的Base64字段中,即可让这类基于字节序列的检测规则也能被测试。

Plugins:可扩展的插件体系

Infection Monkey 是可扩展的,可在 Monkey Island 的 Plugins 页面安装插件来增强功能(见 plugins/_index.md)。该页面包含三个标签页:

  • Available Plugins:可下载安装的插件列表;
  • Installed Plugins:已安装插件列表,可在此卸载或更新;
  • Upload New Plugin:上传新插件的表单,适合安装尚未正式发布的插件。

如果插件安装失败,首先确认运行 Monkey Island 的机器可访问互联网;仍无法解决时,可检查 Island 日志 定位原因。

Reports:可视化安全报告

Infection Monkey 提供多种报告来汇总模拟结果,包括安全报告与勒索软件相关报告(见 reports/_index.md):

  • Security Report(安全报告):汇总感染过程中发现的安全问题与可利用的攻击路径(见 security.md);
  • Ransomware Report(勒索软件报告):呈现勒索模拟中加密的文件、勒索说明等细节(见 ransomware.md)。

报告中展示的感染地图可直观呈现 Agent 在网络中的传播路径,帮助你快速判断安全控制是否拦截了关键传播链路。

AWS Agent Launcher:免登录在 EC2 上运行 Agent

Infection Monkey 支持在不登录、不修改任何 EC2 实例的前提下,在整个 AWS 基础设施中启动 Agent(见 aws-agent-launcher.md)。该能力依托AWS Systems Manager(SSM)Agent:每个 EC2 实例都装有 SSM Agent 来执行来自 Systems Manager 的请求,并通过 Amazon Message Delivery Service 向 Monkey Island 回报状态与执行详情。

使用前提:

  1. 发起启动的 EC2 实例上必须安装SSM Agent;
  2. 该实例需具备允许 SSM Agent 执行命令的IAM 角色。

当 Monkey Island 部署在任意 EC2 实例上时(例如使用 Infection Monkey AMI),它会自动检测到自身运行在 AWS 环境中,随后“在 EC2 实例上启动 Agent”的选项就会变为可用。

总结:如何基于功能清单规划你的模拟演练

Infection Monkey 的功能设计遵循“侦察 → 窃取 → 传播 → 载荷 → 报告”的完整攻击链:先用 Credentials Collectors 窃取凭据、用 Exploiters 在侦察阶段识别的薄弱点上实现 RCE,随后用窃取到的凭据横向移动;期间可通过 Polymorphism 与 Malware Masquerade 提高模拟保真度、检验基于哈希与字符串/字节特征的检测规则;再按需投递勒索或挖矿载荷验证终端防护与 NIDS;最后用 Reports 汇总证据、改进防御。所有行为都可在 Monkey Island 的 Configuration 页面精细控制,且每类组件都内置了生产安全边界(unsafe 标记、单核 CPU 限制、90% RAM 上限、可逆加密与非递归文件处理)。如需进一步了解部署方式,可参考 设置指南 与 快速上手。

  • 网络安全
  • 应用安全

【免费下载链接】monkey

Infection Monkey - An open-source adversary emulation platform

项目地址:https://gitcode.com/gh_mirrors/mo/monkey
点击查看免费下载
上一篇:SciPy `optimize.elementwise` 的 Array API 标准支持表:从自动生成的 CPU/GPU/JIT 能力矩阵到源码实现
下一篇:TinyZero终极指南:10个常见安装与训练问题快速解决

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询