ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Infection Monkey 入门指南:用 Docker 搭建沙箱环境并完成首次用户注册(Tutorial 0)

Infection Monkey 入门指南:用 Docker 搭建沙箱环境并完成首次用户注册(Tutorial 0) 网络安全应用安全【免费下载链接】monkeyInfection Monkey - An open-source adversary emulation platform项目地址https://gitcode.com/gh_mirrors/mo/monkey点击查看免费下载本文是 Infection Monkey 系列教程的第 0 篇对应仓库文档 docs/content/tutorials/first-steps.md目标是带你在一台 Linux 主机上用 Docker 快速搭建一个隔离、可随意折腾的沙箱实验环境一个包含 Monkey Island 控制端C2、MongoDB 数据库和一台故意留有弱点的目标容器。读完本文你将掌握 Infection Monkey 服务器环境的启动/关闭方法、如何通过浏览器访问 Monkey Island Web 界面以及如何完成首次用户注册并进入 Getting Started 引导页——这些是继续完成后续Hello, Monkey漏洞利用实操教程的基础。说明本文基于仓库中提供的教程镜像与 docker-compose 编排文件 展开。教程环境为了便于学习与探索其配置可能经过特殊定制不适用于生产环境。若要在真实环境中部署官方正式版本请参考仓库的 Setup 安装章节如 Docker 部署文档。本教程的目标与适用场景在开始使用 Infection Monkey 之前你需要一个可以放心捣乱的实验环境。官方教程系列约定使用 Docker 搭建的沙箱它的价值在于完全隔离Monkey 在扫描和利用漏洞时不会波及你的真实网络一键复现所有组件控制端、数据库、靶机都以容器形式声明在同一个 docker-compose.yaml 中任何机器上都能得到一致的结果即用即弃实验结束后执行docker compose down即可整体拆除不会在宿主机上留下运行残留。后续的 Tutorial 1: Hello, Monkey配置并实际利用一个 SSH 弱口令漏洞将完全建立在本教程搭建的环境之上因此请务必先完成本教程的环境准备与注册步骤。前置条件Docker 与 Docker Compose本教程只要求宿主机安装两个工具dockerdocker-compose或新版 Docker 自带的docker compose子命令你可以用下面的命令确认版本是否可用docker --version docker compose version由于沙箱中的monkey-island容器只支持 Linux详见 Docker 部署文档本教程适用于 Linux 主机Windows/macOS 上的 Docker Desktop 不在此教程支持范围内。沙箱环境的组成三个容器各司其职运行docker compose up后你将得到 3 个容器。它们的角色如下容器名镜像作用monkey-islandinfectionmonkey/monkey-island:e7c59c79dInfection Monkey 的命令与控制服务器C2提供 Web 界面与 APImongomongo:6.0MongoDB 数据库Monkey Island 用它持久化配置、事件与凭证等数据helloinfectionmonkey/ssh1一台故意配置了弱口令 SSH 服务的漏洞容器供后续教程作为攻击目标这三个服务在 docker-compose.yaml 中的关键配置如下version: 3 services: mongo: container_name: mongo hostname: mongo image: mongo:6.0 ports: - 27017:27017 volumes: - monkey-tutorial-db:/data/db monkey-island: container_name: monkey-island hostname: monkey-island image: infectionmonkey/monkey-island:e7c59c79d environment: - MONKEY_MONGO_URLmongodb://mongo:27017/monkey_island_test ports: - 5000:5000 depends_on: - mongo hello: container_name: hello hostname: hello image: infectionmonkey/ssh1 command: /usr/sbin/sshd -D sh -c trap : TERM INT; tail -f /dev/null wait volumes: monkey-tutorial-db:几个值得注意的细节MONKEY_MONGO_URL环境变量决定了 Monkey Island 连接哪个 MongoDB。这里指向同网络的mongo容器mongodb://mongo:27017/monkey_island_test数据库名为monkey_island_test教程专用。从源码 monkey/monkey_island/cc/mongo_consts.py 可以看到Monkey Island 默认读取该环境变量未设置时才回退到mongodb://localhost:27017/monkey_island——这正是本教程用环境变量覆盖默认连接的原因。端口映射monkey-island把 HTTPS 端口 5000 暴露给宿主机https://localhost:5000mongo暴露 27017 便于调试。命名卷monkey-tutorial-dbMongoDB 的数据目录/data/db挂载到命名卷上即使执行docker compose down后再次启动数据仍会保留。depends_on: mongo保证 Monkey Island 在 MongoDB 就绪之后才启动避免连接失败。hello 容器是怎么变弱的hello容器对应的镜像由仓库中的 ssh1.dockerfile 构建。该 Dockerfile 揭示了它的漏洞来源基于ubuntu:jammy安装openssh-server通过sed显式开启密码认证PasswordAuthentication yes创建了用户名为user、密码为password的账户openssl passwd -1 password。也就是说它是一台运行着 SSH 服务、且带有公开弱凭据user/password的靶机。这个凭据会在 Tutorial 1: Hello, Monkey 中作为 Infection Monkey 的爆破凭证使用。启动沙箱环境1. 获取编排文件下载本教程配套的 docker-compose.yml 到本地目录wget 仓库中该文件的地址 -O docker-compose.yml # 或者直接从仓库页面复制该文件内容保存为 docker-compose.yml2. 启动全部容器进入存放docker-compose.yml的目录执行docker compose up首次运行时 Docker 会自动拉取mongo:6.0、infectionmonkey/monkey-island:e7c59c79d和infectionmonkey/ssh1三个镜像然后按依赖顺序启动容器。若想在后台运行不占用当前终端可改用docker compose up -d。3. 验证容器状态启动完成后确认 3 个容器都在运行docker container ls --format table {{.ID}}\t{{.Names}}\t{{.Status}}正常输出类似CONTAINER ID NAMES STATUS 737b67cc344c monkey-island Up 7 seconds fbd91aacc8ea mongo Up 7 seconds b1c9ac1d3b81 hello Up 7 seconds4. 关闭沙箱实验结束后回到docker-compose.yml所在目录执行以下命令即可整体关闭并移除容器网络命名卷中的数据会保留docker compose down访问 Monkey Island Web 界面环境运行起来后用浏览器打开https://localhost:5000。首次访问时浏览器通常会弹出自签名证书警告——因为 Monkey Island 默认使用自签名 SSL 证书关于正式环境如何替换为企业级证书可参考 Docker 部署文档 中Start Monkey Island with user-provided certificate一节。警告页看起来类似下图。对于本教程的沙箱环境可以放心忽略该警告点击Advanced然后点击Proceed to localhost (unsafe)继续访问。提示这是 Chrome 等浏览器的正常安全机制。Monkey Island 自带的默认证书未被系统信任所以浏览器会拦截在隔离的沙箱环境中可以安全地放行。注册你的第一个用户由于这是第一次访问这台 Monkey Island 实例系统会要求你注册一个用户。在注册界面中填写一个Username用户名填写一个Password密码点击黄色的Lets go!按钮提交。从源码看这个流程由认证服务中的Register资源实现见 monkey/monkey_island/cc/services/authentication_service/flask_resources/register.py后端先检查needs_registration()Monkey Island 只允许注册一个用户若已存在用户再次注册会返回 HTTP 409 Conflict然后对用户名与密码做格式校验非空、符合 flask-security 规则校验失败返回 400校验通过后调用 flask-security 的register()完成注册并在成功时把认证令牌含有效期token_ttl_sec写入响应实现注册即登录。所以注册完成后你会自动登录并直接进入Getting Started入门引导页面。Getting Started 页面是后续所有操作的起点主要提供三个入口Run Monkey使用当前配置运行 Monkey对应侧边栏1. Run MonkeyConfigure Monkey编辑攻击目标、添加凭证、选择漏洞利用模块Exploiter等对应侧边栏ConfigurationRead more了解更多项目信息。至此你的 Infection Monkey 沙箱环境已搭建完毕控制端在线、数据库就绪、靶机待命、账号已注册。回顾你学到了什么学会了用 Docker 编排文件一键创建 Infection Monkey 实验沙箱Monkey Island MongoDB 漏洞靶机hello学会了用docker container ls验证容器运行状态、用docker compose down关闭环境学会了访问 Monkey Island Web 界面https://localhost:5000并处理自签名证书警告完成了首次用户注册并了解了其背后的单用户约束与注册即登录机制源码依据register.py。下一步有了可用的沙箱环境后你可以继续进入Tutorial 1: Hello, Monkey学习如何配置 Infection Monkey 去利用hello容器上的 SSH 弱口令漏洞——这是系列教程的核心实操若要在其他平台Linux 原生、Windows、云主机等安装正式版 Infection Monkey请参考仓库的 Setup 安装章节查看 Getting Started 使用指南了解插件安装、运行方式与感染地图等基础用法。赞分享网络安全应用安全【免费下载链接】monkeyInfection Monkey - An open-source adversary emulation platform项目地址https://gitcode.com/gh_mirrors/mo/monkey点击查看免费下载相关推荐Infection Monkey 开发环境搭建指南Agent 与 Monkey Island 从零配置Infection Monkey 开发环境搭建指南Agent 与 Monkey Island 从零配置 Infection Monkey 是一个开源的 adv网络安全应用安全Cal.diy 如何用 yarn dx 搭建本地开发环境并完成首次登录Cal.diy 如何用 yarn dx 搭建本地开发环境并完成首次登录 如果你想在本地跑起一份 Cal.diyCal.com 的开源社区版MIT 许可、无企后端前端企业应用HIXL 昇腾单边通信库技术指南核心架构、零拷贝机制与端到端实战HIXL 昇腾单边通信库技术指南核心架构、零拷贝机制与端到端实战 HIXLHuawei Xfer Library是昇腾Ascend平台上一款面向集群场网络安全应用安全上一篇揭秘OpenArm如何用开源机械臂攻克AI物理研究三大难题下一篇5分钟掌握Flowframes用AI视频插帧技术让你的视频流畅度翻倍创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表