Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
cowcloud — 用于分发侦察和漏洞扫描工作负载的无服务器 AWS 解决方案。通过 Web UI 提交任务;EC2 worker 执行使用 Nmap 等工具的自定义 Python 脚本。 | Kitploit
工具/GitHubGitHub/nccgroup/cowcloud
云基础设施安全渗透测试框架漏洞扫描器脚本与自动化信息收集云安全DevSecOps实用工具与框架
GitHubnccgroup/cowcloud

cowcloud

用于分发侦察和漏洞扫描工作负载的无服务器 AWS 解决方案。通过 Web UI 提交任务;EC2 worker 执行使用 Nmap 等工具的自定义 Python 脚本。

查看仓库
6023年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CowCloud

一个用于在 AWS 中分发工作负载的无服务器解决方案

CowCloud 最初是为了以分布式方式运行侦察工具和漏洞扫描而创建的;例如,一个用例可能是由漏洞赏金猎人使用。该解决方案旨在让最终用户不必了解在 AWS 中分发工作负载所需的底层工作。CowCloud 为用户提供了一个友好的 Web 界面来查看和创建新任务,这些任务随后由运行在工作节点(EC2 实例)上的 Python 代码消费。预期 Python 代码以及 EC2 AMI 都将被定制。

例如,假设您想要运行 Nmap 扫描。在这种情况下,您只需从 AMI 目录中选择一个 AMI,并更新 Terraform/ec2_module/ec2_module.tf 中的 image_id 字段。然后,需要更新文件 ec2py/template.py 以自定义 Nmap 扫描的参数(-Pn、-p 443 等)。最后,需要更新 Terraform/ec2_module/ec2_module.tf 配置文件中的 user_data 字段,以安装 Nmap 及其依赖项。

另一种选择是安装并运行多个商业工具,在这种情况下,您可能需要创建自己的 EC2 实例或快照。在这种情况下,您将安装所有依赖项并激活许可证,以便可以将此 AMI 用作工作节点的黄金镜像。

截图

CowCloud 可以拆分为三个主要组件:

  • 一个 Terraform 配置
  • 一个 React JS 前端
  • 一个运行在工作节点上的 Python 应用

以下是关键特性:

  • 该解决方案使用 Amazon Cognito(带用户池),以便用户可以注册并登录 Web 应用
  • React JS 应用作为前端应用程序。前端显示任务和工作节点,并允许您添加新任务
  • API Gateway 与 Lambda 集成,用于处理 CORS,并与一些 Lambda 函数交互,以在 DynamoDB 中创建和获取信息
  • 用于管理 SSL 和缓存的 CloudFront
  • 带有规则和 IP 地址条件的 WAF,用于限制对 Web 应用的访问(这是可选的)
  • S3 存储桶用于存储执行结果和前端应用;一个单独的 S3 存储桶用作 Python 应用的代码仓库。
  • 作为在 EC2 实例(工作节点)上运行任务核心的 Python 应用,其操作可分解为以下步骤:
    • Python 应用消费消息
    • 运行扫描
    • 压缩输出
    • 并使用 AES256-CBC 和密码加密输出
    • 然后将结果上传到 S3 存储桶
  • 每次创建新工作节点时,都会从 S3 存储桶拉取 Python 仓库,然后执行其中包含的 ec2py 文件。
  • 每次创建新工作节点时,都可以自动为实例分配一个 EIP(这是可选的)
  • CloudWatch 日志组用于存储来自各种来源的日志,例如 Lambda 错误、ec2app Python 工具中发生的异常、API Gateway、Docker 日志等等
  • 生命周期挂钩用于更改 DynamoDB 中的工作节点状态,并防止在任务仍在运行时终止工作节点
  • 基于排队任务数量和配置集的自动扩缩容策略(关于算法工作原理的更多信息可以在 autoscalingStrategy.py 中找到)
  • 为 DynamoDB 中的任务表链接的 Lambda 事件源映射,用于在数据库中的条目增加或减少时管理自动扩缩容操作
  • SNS 用于将新消息(任务)发送到 SQS,这些消息稍后由工作节点读取
  • Step Functions 服务用于创建倒计时,并在 retention_time 过期后删除 CloudWatch 日志组
  • 如果 ec2py 在 Docker 容器内运行工具(例如 Nmap),则可以将 stdout 记录到 CloudWatch,并通过前端查看;请查看 template.py 文件中的 extra_docker_params 变量(这在下面的“管理员/维护者”部分中进行了说明)
  • 前端提供了一个按钮用于在任务执行期间中断任务,以及另一个按钮用于查看 Docker 容器日志
  • 如果您想更改前端代码或 ec2py 文件夹中的任何内容,则需要将这些更改同步到 S3 存储桶,并使前端的缓存失效;您只需执行 setup.bat/sh 即可完成所有这些操作

图表:

已弃用

以下选项可在 Terraform 配置中使用:

执行 Terraform 后,会创建一个新文件(config.js),其中包含 React JS 应用向 Cognito 用户池目录进行身份验证所需的配置。部署基础设施后,您必须构建 React 应用并上传 build 文件夹。此外,您必须将 Python 代码上传到充当代码仓库的 S3 存储桶。此过程已在 setup.bat 和 setup.sh 两个脚本中自动化,因此您无需为此担心;这里只是对该阶段进行总结。


安装步骤:

基础设施默认部署在 us-east-1 区域,尽管这可以在 Terraform 文件夹中的 locals.tf 文件中更改。

步骤:

  • 您应该在您的 AWS 账户中创建一个具有管理员权限的用户
  • (可选)使用您想要的工具创建一个“黄金”AMI
  • 进入 Terraform 文件夹并更新 variables.tf;ami 变量必须指向一个现有的 EC2 AMI,该 AMI 可以是您的黄金 AMI,也可以是 EC2 目录中的 AMI
  • 在您的计算机上下载并安装 aws-cli、NPM、Yarn 和 Terraform
  • 在 aws configure 中配置 aws-cli 以使用您的 AWS 账户。通过运行此命令检查您是否正确配置:aws sts get-caller-identity;正确配置后,它不应返回错误
  • (可选)为 EC2 实例生成 SSH 密钥对。如果您不打算 SSH 到工作节点,请相应地更新 ec2_module 模块 aws ec2 create-key-pair –key-name cowCloud –query “cowCloud” –output text > ec2_module/cowCloud.pem
root@kitploit:~
git clone [email protected]:nccgroup/cowcloud.git
# Deploy the infra
cd cowcloud
cd Terraform
terraform init
terraform plan
terraform apply --auto-approve
  • 记下 Terraform 输出中显示的值(网站),这是访问前端的 URL
  • 基础设施部署完成后,您只需运行 setup.sh 或 setup.bat 即可构建并上传前端和 ec2py 代码

现在您可以开始了!注册、登录并创建新任务!

最终用户流程

当一切部署完成且前端可访问时,您应按照以下步骤操作:

  • 访问网站并点击登录按钮 (注册时需要提交有效的电子邮件、用户名和密码)
  • 点击您收件箱中收到的链接来验证电子邮件
  • 使用电子邮件/用户名和密码登录
  • 点击名为“添加新任务”的选项卡,更新 JSON 文档以指定目标域并提交表单;您将收到一个任务 ID、一个链接和一个密码,这些将显示在下方。
  • 返回仪表板,等待查看新的 EC2 实例如何启动以及任务如何由工作节点执行
  • 如果任务在 Docker 容器中执行,可以通过 Web 界面查看 stdout
  • 任务完成后,任务将移至归档表;您现在可以访问给定链接,下载结果,使用给定密码解密,并解压工具输出或结果 CowCloud\ec2py> python .\decypt_file.py 2e8cf87c-5389-11ec-abec-d6d1f378b18d
  • 任务完成后,工作节点会自动终止

截图

管理员/维护者

  • 负责部署和维护基础设施的人员必须适当地清理和验证用户通过 Web 应用提供的输入。换句话说,确保 ec2py/template.py 中的代码不容易受到 OS 命令注入的影响。 这一点之所以被强调,是因为它是系统最关键的一个方面。已经特别小心地限制了工作节点的权限和暴露范围,以降低相关风险。尽管如此,管理员仍有责任处理系统安全的这一方面。 附加到 EC2 实例配置文件的角色策略在 Terraform 文件夹内的 readme.md 文件中列出

    • 此外,还有一个名为 workers_manager.py 的 Lambda 函数,由 ec2py 工具调用以执行更特权的操作。这些操作被移到 Lambda 函数中,以防有人破坏了附加到 EC2 配置文件的角色的访问密钥,从而限制风险。不过,它仍然使用 IMDSv2 工作。 附加到 Lambda 函数 workers_manager.py 的角色策略在 Terraform 文件夹内的 readme.md 文件中列出
  • 如果您想在任务执行期间捕获 stdout 并通过 Web 界面显示,请转到 ec2py/template.py 并按照以下步骤操作:

    • extra_docker_params 变量包含让您的 Docker 容器将 stdout 发送到 CloudWatch 日志组所需的信息。当您想通过前端查看 stdout 时,需要在命令行中包含此变量。
    root@kitploit:~
    cmd = f"docker run {extra_docker_params} --rm -v {tmp_folder}target.txt:/root/Tools/reconftw/target.txt -v {tmp_folder}reconftw.cfg:/root/Tools/reconftw/reconftw.cfg -v {tmp_folder}Recon/:/root/Tools/reconftw/Recon/ six2dez/reconftw:main -l target.txt -w".split(' ')
    

卸载

您可以通过运行以下简单命令来销毁基础设施:terraform destroy --auto-approve,这将删除所有现有资源。 注意: 不要中断此过程,因为这可能会在云中留下一些残留元素,您随后必须手动识别并删除它们。


最终用户流程

截图

核心流程

截图


开发说明

  • 如果您在 ec2py 应用中进行了更改,请记得将更改与 S3 仓库同步;然后您必须终止当前实例并重新启动一个新实例以拉取最新更改
  • 当 gateway 模块中的某个组件发生更改时,您可能需要重新部署 REST API,具体操作如下:
    • terraform destroy --auto-approve -target module.gateway_module.aws_api_gateway_deployment.lambda
    • terraform apply --auto-approve -target module.gateway_module

特别感谢:

  • Sabrina MM https://www.linkedin.com/in/sabrina-marisol-martinez-a4bb54181/
  • Ricardo Martinez Martin (NCC Group)
  • Conor McErlane (NCC Group)
  • Simon Harraghy (NCC Group)
下载工具
variabledefault valuedescription
eipenablefalse如果为 true,解决方案会在工作节点启动时为它们分配一组弹性 IP 地址。要保留的 EIP 数量通过以下公式计算:sum([var.max_workers, var.maximum_number_of_terminating_machines])
cidr_whitelist[]用于在防火墙中仅允许某些 IP 范围的 CIDR 白名单。例如 ["195.95.131.0/24"]
max_workers and max_queued_tasks_per_workermax_workers: 3, max_queued_tasks_per_worker: 10这两个设置决定何时扩缩容,例如 max_workers 3、max_queued_tasks_per_worker 10。这意味着如果任务数量超过十个,将创建一个新的 EC2 实例。如果任务超过二十个,最多将有三个 EC2 实例可用于分发工作负载(请查看此脚本 Terraform/dynamodb_module/autoscalingTool/autoscalingStrategy.py 中的算法)。
maximum_number_of_terminating_machines2这定义了那些已设置为终止、但会一直保持直到进程/扫描完成任务的实例数量。
heartbeat_timeout900这定义了这些工作节点保持等待的时间。此时间过后,工作节点将被强制终止。
instance_typet2.microhttps://aws.amazon.com/ec2/instance-types/
aminullhttps://aws.amazon.com/es/amazon-linux-ami/
retention_time7设置日志的保留时间(天)以及归档表条目(已完成任务)的过期时间。