Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
cowcloud — Бессерверное AWS-решение для распределения рабочих нагрузок по разведке и сканированию уязвимостей. Отправляйте задачи через веб-интерфейс; рабочие узлы EC2 выполняют пользовательские Python-скрипты с такими инструментами, как Nmap. | Kitploit
Инструменты/GitHubGitHub/nccgroup/cowcloud
Безопасность облачной инфраструктурыФреймворки для пентестаСканеры уязвимостейСкриптинг и автоматизацияСбор информацииБезопасность облачных средDevSecOpsУтилиты и фреймворки
GitHubnccgroup/cowcloud

cowcloud

Бессерверное AWS-решение для распределения рабочих нагрузок по разведке и сканированию уязвимостей. Отправляйте задачи через веб-интерфейс; рабочие узлы EC2 выполняют пользовательские Python-скрипты с такими инструментами, как Nmap.

6023 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Репозиторий

CowCloud

бессерверное решение для распределения рабочих нагрузок в AWS

CowCloud изначально был создан для распределённого запуска инструментов разведки и сканирования уязвимостей; например, одним из сценариев использования может быть работа охотников за багами (bug bounty). Это решение предназначено для того, чтобы абстрагировать конечных пользователей от работы, необходимой для распределения рабочих нагрузок в AWS. CowCloud предоставляет пользователям удобный веб-интерфейс для просмотра и создания новых задач, которые затем обрабатываются Python-кодом, выполняющимся на рабочих узлах (EC2-инстансах). Предполагается, что Python-код и AMI EC2 будут настраиваться под конкретные нужды. В качестве примера, предположим, вы хотите выполнять сканирование с помощью Nmap. В этом случае вы можете просто выбрать AMI из каталога AMI и обновить поле image_id в Terraform/ec2_module/ec2_module.tf. Затем потребуется обновить файл ec2py/template.py, чтобы настроить аргументы для сканирования Nmap (-Pn, -p 443 и т.д.). Наконец, потребуется обновить поле user_data в файле конфигурации Terraform/ec2_module/ec2_module.tf, чтобы установить Nmap и его зависимости.

Другой вариант — установить и запустить несколько коммерческих инструментов; в этом случае вы можете создать собственный EC2-инстанс или снапшот. В этом случае вы установите все зависимости и активируете лицензии, чтобы использовать этот AMI в качестве эталонного образа для своих рабочих узлов.

Скриншот

CowCloud можно разделить на три основных компонента:

  • конфигурация Terraform
  • front-end на React JS
  • Python-приложение, которое выполняется на рабочих узлах

Ниже перечислены ключевые возможности:

  • Решение использует Amazon Cognito (с пользовательским пулом), чтобы пользователи могли регистрироваться и входить в веб-приложение.
  • React JS-приложение в качестве front-end. Front-end отображает задачи и рабочие узлы и позволяет добавлять новые задачи.
  • API Gateway с интеграцией Lambda для обработки CORS и взаимодействия с некоторыми Lambda-функциями для создания и получения информации из DynamoDB.
  • CloudFront для управления SSL и кэшем.
  • WAF с правилами и условиями по IP-адресам для ограничения доступа к веб-приложению (необязательно).
  • S3-бакеты для хранения результатов выполнения и front-end приложения; отдельный S3-бакет используется в качестве репозитория кода для Python-приложения.
  • Python-приложение как ядро для выполнения задач на EC2-инстансах (рабочих узлах). Действия инструмента можно разбить на несколько этапов:
    • Python-приложение потребляет сообщения
    • запускает сканирование
    • сжимает вывод
    • и шифрует вывод с помощью AES256-CBC и пароля
    • затем загружает результат в S3-бакет
  • При каждом создании нового рабочего узла репозиторий Python загружается из S3-бакета, после чего выполняется включённый в него файл ec2py.
  • При каждом создании нового рабочего узла инстансу может автоматически назначаться EIP (необязательно).
  • Группы журналов CloudWatch для хранения журналов из различных источников, таких как ошибки Lambda, исключения в Python-инструменте ec2app, API Gateway, журналы Docker и многое другое.
  • Перехватчики жизненного цикла для изменения статуса рабочих узлов в DynamoDB и предотвращения завершения рабочих узлов, пока задача всё ещё выполняется.
  • Стратегия автомасштабирования на основе количества задач в очереди и заданной конфигурации (дополнительную информацию о работе алгоритма можно найти в autoscalingStrategy.py).
  • Сопоставление источника событий Lambda для таблицы задач в DynamoDB; это нужно для управления действиями автомасштабирования при увеличении или уменьшении количества элементов в базе данных.
  • SNS для отправки новых сообщений (задач) в SQS; эти сообщения позже читаются рабочими узлами.
  • Сервис Step Functions используется для создания обратного отсчёта и удаления групп журналов CloudWatch после истечения retention_time.
  • Если ec2py запускает инструменты (например, Nmap) внутри Docker-контейнеров, stdout может записываться в CloudWatch и просматриваться через интерфейс; обратите внимание на переменную в файле (это объясняется в разделе «Администратор/сопровождающий» ниже).

Схема:

Deprecated

В конфигурации Terraform доступны следующие параметры:

В результате выполнения Terraform создаётся новый файл (config.js), содержащий конфигурацию, необходимую React JS-приложению для аутентификации в каталоге пользовательского пула Cognito. После развёртывания инфраструктуры необходимо собрать React-приложение и загрузить папку build. Кроме того, нужно загрузить Python-код в S3-бакет, который выступает в роли репозитория кода. Этот процесс автоматизирован в двух скриптах setup.bat и setup.sh, так что вам не нужно об этом беспокоиться; здесь это указано лишь для описания данного этапа.


Шаги по установке:

Инфраструктура по умолчанию развёртывается в регионе us-east-1, хотя это можно изменить в файле locals.tf внутри папки Terraform.

Шаги:

  • Создайте пользователя с правами администратора в вашем аккаунте AWS.
  • (Необязательно) Создайте «эталонный» AMI-образ с нужными вам инструментами.
  • Перейдите в папку Terraform и обновите variables.tf; переменная ami должна указывать на существующий AMI EC2, который может быть вашим эталонным AMI или AMI из каталога EC2.
  • Скачайте и установите на свой компьютер aws-cli, NPM, Yarn и Terraform.
  • Настройте aws-cli для использования вашего аккаунта AWS с помощью aws configure. Проверьте, что настройка выполнена правильно, выполнив команду: aws sts get-caller-identity; при правильной настройке она не должна возвращать ошибку.
  • (Необязательно) Создайте пару ключей SSH для EC2-инстансов. Если вы не планируете подключаться к рабочим узлам по 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
  • Обратите внимание на значение (website), отображаемое в выводе Terraform, — это URL для доступа к интерфейсу.
  • После развёртывания инфраструктуры вам нужно лишь запустить setup.sh или setup.bat, чтобы собрать и загрузить код front-end и ec2py.

Теперь всё готово! Регистрируйтесь, входите и создавайте новую задачу!

Сценарий конечного пользователя

После того как всё развёрнуто и интерфейс доступен, выполните следующие действия:

  • Откройте сайт и нажмите кнопку входа. (для регистрации потребуется указать действующий адрес электронной почты, имя пользователя и пароль)
  • Подтвердите адрес электронной почты, перейдя по ссылке из письма.
  • Войдите, используя адрес электронной почты/имя пользователя и пароль.
  • Перейдите на вкладку «Добавить новую задачу», обновите JSON-документ, указав целевой домен, и отправьте форму; вы получите идентификатор задачи, ссылку и пароль, которые будут отображены ниже.
  • Вернитесь на панель управления и подождите: вы увидите, как запускается новый EC2-инстанс и задача выполняется рабочим узлом.
  • Если задача выполняется в Docker-контейнере, stdout можно просматривать через веб-интерфейс.
  • После завершения задачи она перемещается в архивную таблицу; теперь вы можете перейти по указанной ссылке, скачать результат, расшифровать его с помощью выданного пароля и распаковать вывод или результат инструмента CowCloud\ec2py> python .\decypt_file.py 2e8cf87c-5389-11ec-abec-d6d1f378b18d
  • Рабочий узел автоматически завершает работу после выполнения задачи.

Скриншот

Администратор/сопровождающий

  • Лицо, отвечающее за развёртывание и сопровождение инфраструктуры, должно надлежащим образом очищать и проверять входные данные конечных пользователей, передаваемые через веб-приложение. Иными словами, необходимо убедиться, что код в ec2py/template.py не уязвим для инъекций команд операционной системы. Этот момент особо подчёркивается, поскольку это самый критически важный аспект системы. Были приняты особые меры для ограничения разрешений и области доступности рабочих узлов, чтобы снизить соответствующие риски. Тем не менее, именно администратор несёт ответственность за этот аспект безопасности системы. Политики ролей, привязанные к профилю EC2-инстансов, перечислены в файле readme.md внутри папки Terraform

    • Кроме того, существует Lambda-функция workers_manager.py, которая вызывается инструментом ec2py для выполнения действий с более высокими привилегиями. Эти действия были перенесены в Lambda-функцию, чтобы ограничить риск в случае компрометации ключа доступа роли, привязанной к профилю EC2. Тем не менее, она работает с IMDSv2. Политики ролей, привязанные к Lambda-функции workers_manager.py, перечислены в файле readme.md внутри папки Terraform
  • Если вы хотите захватывать stdout и показывать его через веб-интерфейс во время выполнения задачи, перейдите в 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)
Скачать инструмент
extra_docker_params
template.py
  • Front-end предоставляет кнопку для прерывания задач во время их выполнения и ещё одну кнопку для просмотра журналов Docker-контейнера.
  • Если вы хотите изменить что-либо в коде front-end или в папках ec2py, вам нужно распространить эти изменения на S3-бакеты и инвалидировать кэш для front-end; всё это можно сделать, просто выполнив setup.bat/sh.
  • переменнаязначение по умолчаниюописание
    eipenablefalseЕсли true, решение выделяет пул эластичных IP-адресов, связанных с рабочими узлами по мере их запуска. Количество резервируемых EIP вычисляется по формуле sum([var.max_workers, var.maximum_number_of_terminating_machines])
    cidr_whitelist[]Белый список CIDR, разрешающий в брандмауэре только определённые IP-диапазоны. Например: ["195.95.131.0/24"]
    max_workers и 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Задаёт срок хранения (в днях) для журналов и срок действия элементов архивной таблицы (выполненных задач).