早期发布。在 Twitter 上关注我,以了解 Redcloud 的最新动态。
💁☁️🐚🌱
Redcloud 是一个强大且用户友好的工具箱,用于通过 Docker 部署功能齐全的 红队基础设施。利用云端加速你的工具部署。几分钟即可完成部署。通过其精美的 Web 界面进行使用和管理。
非常适合渗透测试、射击场、红队演练和漏洞赏金!
轻松自托管你的攻击基础设施,在几分钟内部署你自己的实时、可扩展且弹性的攻击基础设施。
以下演示展示了通过 SSH 部署 Redcloud,然后部署 Metasploit。接着查看 Traefik 和附加到 Metasploit 的实时卷。最后,检查 Web 终端中 Metasploit 的数据库是否正常,删除容器,然后终止 Redcloud。
设置:```bash
cat ~/.ssh/id_rsa.pub | ssh root@your-deploy-target-ip 'cat >> .ssh/authorized_keys'
eval (docker-machine env default)
python --version
部署:```bash
> git clone https://github.com/khast3x/redcloud.git
> cd redcloud
> python redcloud.py
Redcloud 使用 PyYAML 来打印可用模板列表。它默认安装在大多数系统上。
如果没有,只需运行:```bash
pip install -r requirements.txt
Redcloud 有 3 种不同的部署方式:
1. **本地部署**
2. **远程部署,使用 ssh**。需要将你的公钥添加到目标的 `authorized_keys` 文件中。
3. **远程部署,使用 docker-machine**。运行 `eval (docker-machine env deploy_target)` 命令以预加载 docker-machine 的环境,然后运行 `redcloud.py`。Redcloud 会自动检测你的 docker-machine,并高亮与 docker-machine 部署相关的菜单项。
___
<h4 align="center">
<b>模板</b>
<br>
<br>
</h4>
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/345/e38f19fa9cc10216030f7856b99170a4ac7c35399c2dd9daf19156a6e9b75e46.png" width="540" title="Redcloud 模板">
</p>
___
**简要说明:**
`redcloud.py` 部署一个 [Portainer](https://www.portainer.io/) 堆栈,**预加载了许多供你攻击行动使用的工具模板**,基于 Docker 运行。部署完成后,通过 [Web 界面](#screenshots) 控制 Redcloud。使用 [Traefik](https://traefik.io/) 作为反向代理。可使用系统自带的 `ssh` 或 `docker-machine` 轻松远程部署到你的目标服务器。
* :rocket: 是否曾想过只需点击几下就能在云中启动一个 Kali?
* :package: 想在工具、技术和阶段之间建立清晰的隔离?
* :ambulance: 监控你的扫描和 C2 的健康状况?
* :fire: 跳过设置钓鱼活动的系统管理工作,更快地获取权限?
* :smiling_imp: 好奇如何构建*理想的攻击基础设施?
使用 Web UI 监控、管理并**与每个容器交互**。使用流畅的 Web 终端,就像使用自己的终端一样。通过 Portainer 简洁的 UI 创建卷、网络和端口转发。
借助数据中心级互联网的力量,部署并处理所有你喜爱的工具和技术 :rocket:
___
*在接下来的部分,我们将更深入地探讨 Redcloud 的设计理念。不过你也可以直接上手,无需深入了解。*
___
* :book: **目录**
- [简介](#introduction)
- [特性](#features)
- [快速开始](#quick-start)
- [细节](#details)
- [Redcloud 架构](#redcloud-architecture)
- [部署工作流](#deployment-workflow)
- [网络](#networks)
- [卷](#volumes)
- [从终端访问容器](#accessing-containers-from-the-terminal)
- [访问文件](#accessing-files)
- [SSL 证书](#ssl-certificates)
- [停止 Redcloud](#stopping-redcloud)
- [Portainer 应用模板](#portainer-app-templates)
- [Traefik 反向代理](#traefik-reverse-proxy)
- [Redcloud 安全注意事项](#redcloud-security-considerations)
- [经过测试的部署候选方案](#tested-deployment-candidates)
- [故障排除](#troubleshooting)
- [用例](#use-cases)
- [截图](#screenshots)
- [贡献指南](#contribution-guideline)
- [托管 Redcloud](#hosting-redcloud)
- [灵感与致谢](#inspirations--shout-outs)
___
## 细节
### Redcloud 架构
* `redcloud.py`:使用 Docker 和 Portainer 启动/停止 Web 界面和应用模板。
* `portainer`:Portainer Web 界面。
* `traefik`:Traefik 反向代理容器,用于 Web 界面、API 和文件容器。某些模板已预先配置路由以方便使用。参见 `templates.yml`。
* `templates`:提供应用模板的 python3 `http.server` 容器。位于“内部”网络中。
* `cert_gen`:生成 SSL 证书的 [omgwtfssl](https://github.com/paulczar/omgwtfssl) 容器,采用常见最佳实践。
* https://your-server-ip/portainer:部署后的 Redcloud Web 界面。
* https://your-server-ip/files:Redcloud 的 `redcloud_files` 卷。你还可以访问 `redcloud_log` 容器内容,受与 Traefik 相同的 `.htpasswd` 保护。默认凭据:`admin:Redcloud`
* https://your-server-ip/api:Traefik 反向代理健康监控页面。显示路由、后端、返回码的实时统计信息。如果通过 Traefik 配置了反向回调植入数据,也会显示这些信息。
### 部署工作流
**Redcloud 部署工作流如下:**
1. 克隆/下载 Redcloud 仓库。
2. 运行 `redcloud.py`。
3. 从菜单中选择部署候选方案(本地、ssh、docker-machine)。
4. `redcloud.py` 自动执行:
* 检查目标机器上是否存在 `docker` 和 `docker-compose`。
* 如果缺失,则安装 `docker` 和 `docker-compose`。
* 使用 `docker-compose` 在目标上部署 Web 堆栈。
5. 部署完成后,`redcloud.py` 会输出 URL。前往 https://your-deploy-machine-ip/portainer。
6. 从 Web 界面设置用户名/密码。
7. 选择端点(列表中唯一的一个)。
8. 点击左侧菜单中的“应用模板”以访问模板 :rocket:
**应用模板部署工作流如下:**
1. 选择模板。
2. 如果你希望添加额外选项,选择“+ 显示高级选项”。
3. 根据需要添加端口映射、网络选项和卷映射。
4. 选择“部署容器”。
5. Portainer 将启动容器。如果需要拉取镜像,可能需要几分钟。如果你的服务器位于数据中心,此步骤会非常快。
6. 容器应已运行 :rocket:
7. Portainer 将重定向到“容器”页面。在那里,你可以:
a. 查看容器实时日志。
b. 检查容器详细信息(`docker inspect`)。
c. 查看容器实时统计信息(内存/CPU/网络/进程)。
d. 使用 Web shell 与容器交互。
e. 根据应用模板选择使用 `bash` 或 `sh`。从下拉菜单中相应选择。
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/345/cf013b73e9bb7dc6f94dafbd31d9d158f7736fc676f94995c64de133ad9bebbe.png" width="540" title="Redcloud 菜单">
</p>
### 网络
Redcloud 让你轻松试验网络和容器。
你可以创建使用不同驱动程序的额外网络,并按需将容器附加到这些网络。Redcloud 自带两个网络:`redcloud_default` 和 `redcloud_inside`。
### 卷
你可以通过共享卷在容器之间共享数据。Redcloud 自带 3 个卷:
* `certs`:包含由 [omgwtfssl](https://github.com/paulczar/omgwtfssl) 生成的证书的容器。
* `files`:标准文件共享卷。目前,当你浏览 https://your-server-ip/files 时,文件可用,并由 Traefik 反向代理容器直接从 `files` 卷提供。典型用例是将该卷附加到 Metasploit 容器,直接将有效载荷生成到 `files` 卷中。现在你可以通过 Traefik 的文件服务器路由直接提供你新鲜的有效载荷。
* `logs`:用于日志,也通过文件服务器提供。访问需要基本身份验证。默认为 `admin:Redcloud`。
### 从终端访问容器
如果你希望留在终端中与已部署的容器交互,使用 Docker 非常容易。需注意以下几点:
* 大多数容器有 `bash`,但有些使用 `sh`
* 所有 Redcloud 应用模板的容器名称以 `red_` 开头,例如 `red_msf-postgresql`
* 使用 Docker,你可以使用 `docker exec` 或 `attach` 与容器交互
* 推荐使用 `exec`,因为它会创建一个新进程
* `attach` 会直接连接到正在运行的进程,可能导致容器终止
* 如果 Redcloud 运行在:
* 本地或使用 `docker-machine`,直接在本地 shell 中输入命令即可
* 使用 `ssh`,首先 SSH 进入你的部署目标,然后运行以下命令
要开始与所需的已部署容器交互:```bash
> docker exec -it red_container-name /bin/bash
root@70a819ef0e87:/#
如果你看到以下消息,说明bash未安装。在这种情况下,只需将/bin/bash替换为/bin/sh:```bash
docker exec -it red_container-name /bin/bash OCI runtime exec failed: exec failed: container_linux.go:344: starting container process caused "exec: "/bin/bash": stat /bin/bash: no such file or directory": unknown
docker exec -it red_container-name /bin/sh
使用 `docker attach`,只需运行:```bash
> docker attach red_container-name
如果使用 attach,容器需要以 交互模式 启动,才能进入交互式 shell。
将浏览器指向 https://你的-redcloud-ip/files。
更多信息请参考 files 卷。
Redcloud 在部署时会生成一个新的 未签名 SSL 证书。
证书由 omgwtfssl 生成,实现了大多数最佳实践。
生成后:
默认情况下,它会将生成的证书转储到 /certs 目录,并同时以标准 YAML 格式输出到标准输出,使其易于在 Ansible 或其他使用 YAML 的工具中使用。
证书存储在一个名为 certs 的共享 Docker 卷中。如果在部署时在“+ 高级设置”中指定,你的容器可以访问此卷。Traefik 反向代理容器直接从其配置文件中获取证书。如果你想用自己的证书替换这些证书,只需替换此卷中的证书即可。
这也意味着你可以将生成的证书共享到其他容器中,例如 Empire 或 Metasploit 用于反向回调,或用于钓鱼活动。
大多数与 SSL 相关的配置可以在 traefik/traefik.toml 或 docker-compose.yml 文件中找到。
你可以直接从菜单停止 Redcloud。
在停止 Redcloud 之前,需要手动停止已部署的应用模板。 你可以使用 Portainer 的 web 界面或 docker rm -f 容器名称 来停止它们。
如果你想强制停止运行 Redcloud 的 Portainer 容器,只需在 redcloud/ 文件夹内运行 docker-compose kill。
本地 和 docker-machine 停止选项相同,因此它们被合并到同一个选项中。