Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
cowcloud — Serverlose AWS-Lösung zur Verteilung von Recon- und Schwachstellenscan-Workloads. Übermitteln Sie Aufgaben über das Web-UI; EC2-Worker führen benutzerdefinierte Python-Skripte mit Tools wie Nmap aus. | Kitploit
Tools/GitHubGitHub/nccgroup/cowcloud
Cloud-Infrastruktur-SicherheitPenetrationstest-FrameworksSchwachstellenscannerScripting & AutomatisierungInformationsbeschaffungCloud-SicherheitDevSecOpsDienstprogramme & Frameworks
GitHubnccgroup/cowcloud

cowcloud

Serverlose AWS-Lösung zur Verteilung von Recon- und Schwachstellenscan-Workloads. Übermitteln Sie Aufgaben über das Web-UI; EC2-Worker führen benutzerdefinierte Python-Skripte mit Tools wie Nmap aus.

6027vor 3 JahrenVon Kitploit geprüft
Repository anzeigen

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CowCloud

eine serverless Lösung zur Verteilung von Arbeitslasten in AWS

CowCloud wurde ursprünglich entwickelt, um Recon-Tools und Schwachstellenscans verteilt auszuführen; ein Anwendungsfall könnten beispielsweise Bug-Bounty-Jäger sein. Diese Lösung soll Endbenutzer von der zugrunde liegenden Arbeit abstrahieren, die zur Verteilung von Workloads in AWS erforderlich ist. CowCloud bietet Benutzern eine benutzerfreundliche Weboberfläche zum Anzeigen und Erstellen neuer Aufgaben, die später von Python-Code verarbeitet werden, der auf Workerknoten (EC2-Instanzen) läuft. Es ist vorgesehen, dass sowohl der Python-Code als auch die EC2-AMIs angepasst werden.

Als Beispiel: Angenommen, Sie möchten Nmap-Scans ausführen. In diesem Fall können Sie einfach ein AMI aus dem AMI-Katalog auswählen und das Feld image_id in Terraform/ec2_module/ec2_module.tf aktualisieren. Anschließend müsste die Datei ec2py/template.py angepasst werden, um die Argumente für den Nmap-Scan zu konfigurieren (-Pn, -p 443, usw.). Zuletzt müsste das Feld user_data in der Konfigurationsdatei Terraform/ec2_module/ec2_module.tf aktualisiert werden, um Nmap und seine Abhängigkeiten zu installieren.

Eine weitere Möglichkeit besteht darin, mehrere kommerzielle Tools zu installieren und auszuführen; in diesem Fall möchten Sie möglicherweise Ihre eigene EC2-Instanz oder einen eigenen Snapshot erstellen. Dabei würden Sie alle Abhängigkeiten installieren und die Lizenzen aktivieren, um dieses AMI als Gold-Image für Ihre Worker zu verwenden.

Screenshot

CowCloud lässt sich in drei Hauptkomponenten unterteilen:

  • eine Terraform-Konfiguration
  • ein React-JS-Frontend
  • eine Python-App, die auf Workerknoten läuft

Dies sind die wichtigsten Funktionen:

  • Die Lösung verwendet Amazon Cognito (mit einem User Pool), damit sich Benutzer in der Web-App registrieren und anmelden können
  • React-JS-App als Frontend-Anwendung. Das Frontend zeigt die Aufgaben und Worker an und ermöglicht es Ihnen, neue Aufgaben hinzuzufügen
  • API-Gateway mit Lambda-Integration zur Verarbeitung von CORS und zur Interaktion mit einigen der Lambda-Funktionen, um Informationen aus DynamoDB zu erstellen und abzurufen
  • CloudFront zur Verwaltung von SSL und Cache
  • WAF mit Regeln und IP-Adressbedingungen, um den Zugriff auf die Web-App einzuschränken (optional)
  • S3-Buckets zur Speicherung der Ausführungsergebnisse und der Frontend-App; ein separater S3-Bucket wird als Code-Repository für die Python-App verwendet.
  • Eine Python-App als Kern für die Ausführung von Aufgaben auf den EC2-Instanzen (Workern). Die Tool-Aktionen lassen sich in mehrere Schritte unterteilen:
    • Die Python-App konsumiert Nachrichten
    • führt Scans aus
    • komprimiert die Ausgabe
    • und verschlüsselt die Ausgabe mit AES256-CBC und einem Passwort
    • und lädt das Ergebnis dann in einen S3-Bucket hoch
  • Jedes Mal, wenn ein neuer Worker erstellt wird, wird das Python-Repository aus einem S3-Bucket gezogen und anschließend die darin enthaltene ec2py-Datei ausgeführt.
  • Jedes Mal, wenn ein neuer Worker erstellt wird, kann der Instanz automatisch eine EIP zugewiesen werden (optional)
  • CloudWatch-Loggruppen zur Speicherung der Logs aus verschiedenen Quellen wie Lambda-Fehlern, Ausnahmen in der Python-Anwendung ec2app, API Gateway, Docker-Logs und vielem mehr
  • Lifecycle-Hooks, um den Status der Worker in DynamoDB zu ändern und zu verhindern, dass Worker beendet werden, während eine Aufgabe noch läuft
  • Autoscaling-Strategie basierend auf der Anzahl der in der Warteschlange befindlichen Aufgaben und der Konfiguration (weitere Informationen zur Funktionsweise des Algorithmus finden Sie in autoscalingStrategy.py)
  • Lambda-Event-Source-Mapping, das mit der Aufgabentabelle in DynamoDB verknüpft ist, um die Autoscaling-Aktionen zu verwalten, wenn die Elemente in der Datenbank zunehmen oder abnehmen
  • SNS zum Senden neuer Nachrichten (Aufgaben) an eine SQS; diese Nachrichten werden später von den Workerknoten gelesen
  • Der Step-Functions-Dienst wird verwendet, um einen Countdown zu erstellen und die CloudWatch-Loggruppen nach Ablauf von retention_time zu löschen
  • Wenn ec2py Tools (z. B. Nmap) in Docker-Containern ausführt, kann die Standardausgabe (stdout) in CloudWatch protokolliert und über das Frontend angezeigt werden; siehe die Variable extra_docker_params in der Datei template.py (dies wird im Abschnitt Administrator/Wartung weiter unten erläutert)
  • Das Frontend bietet eine Schaltfläche zum Unterbrechen von Aufgaben während ihrer Ausführung und eine weitere Schaltfläche zum Anzeigen der Docker-Container-Logs
  • Wenn Sie etwas am Frontend-Code oder an den ec2py-Ordnern ändern möchten, müssen Sie diese Änderungen an die S3-Buckets weitergeben und den Cache für das Frontend ungültig machen; das können Sie einfach durch Ausführen von setup.bat/sh erledigen

Diagramm:

Deprecated

Die folgenden Optionen sind in der Terraform-Konfiguration verfügbar:

variableStandardwertBeschreibung
eipenablefalseWenn true, weist die Lösung einen Pool elastischer IP-Adressen zu, die den Workerknoten beim Hochfahren zugeordnet werden. Die Anzahl der zu reservierenden EIPs wird anhand dieser Formelsum([var.max_workers, var.maximum_number_of_terminating_machines]) berechnet.
cidr_whitelist[]Die CIDR-Whitelist, um in der Firewall nur bestimmte IP-Bereiche zuzulassen. Z. B. ["195.95.131.0/24"]
max_workers und max_queued_tasks_per_workermax_workers: 3, max_queued_tasks_per_worker: 10Diese beiden Einstellungen bestimmen, wann horizontal skaliert (Scale-in/Scale-out) wird, z. B. max_workers 3, max_queued_tasks_per_worker 10. Das bedeutet, wenn die Anzahl der Aufgaben zehn überschreitet, wird eine neue EC2-Instanz erstellt. Wenn mehr als zwanzig Aufgaben vorhanden sind, stehen maximal drei EC2-Instanzen zur Verteilung der Arbeitslasten zur Verfügung (siehe Algorithmus in diesem Skript Terraform/dynamodb_module/autoscalingTool/autoscalingStrategy.py).
maximum_number_of_terminating_machines2Dies definiert die Anzahl der Instanzen, die zum Beenden vorgesehen sind, aber angehalten werden, bis der Prozess/Scan die Aufgabe abgeschlossen hat.
heartbeat_timeout900Dies definiert die Zeit, die diese Worker in der Warteschleife gehalten werden. Nach Ablauf dieser Zeit wird der Worker zwangsweise beendet.
instance_typet2.microhttps://aws.amazon.com/ec2/instance-types/
aminullhttps://aws.amazon.com/es/amazon-linux-ami/
retention_time7Legt die Aufbewahrungszeit (in Tagen) für Logs und den Ablauf der Elemente der Archivtabelle (abgeschlossene Aufgaben) fest.

Durch die Ausführung von Terraform wird eine neue Datei erstellt (config.js); diese enthält die Konfiguration, die die React-JS-App benötigt, um sich gegen das Cognito-User-Pool-Verzeichnis zu authentifizieren. Nachdem die Infrastruktur bereitgestellt wurde, müssen Sie die React-App erstellen und den Ordner build hochladen. Außerdem müssen Sie den Python-Code in einen S3-Bucket hochladen, der als Code-Repository dient. Dieser Prozess wurde in zwei Skripten, setup.bat und setup.sh, automatisiert, sodass Sie sich darum nicht kümmern müssen; dies dient nur der Zusammenfassung dieser Phase.


Installationsschritte:

Die Infrastruktur wird standardmäßig in der Region us-east-1 bereitgestellt; dies kann jedoch in der Datei locals.tf im Terraform-Ordner geändert werden.

Schritte:

  • Sie sollten in Ihrem AWS-Konto einen Benutzer mit Administratorrechten erstellen
  • (Optional) Erstellen Sie ein ‚goldenes‘ AMI mit den gewünschten Tools
  • Gehen Sie in den Terraform-Ordner und aktualisieren Sie die variables.tf; die Variable ami muss auf eine vorhandene EC2-AMI verweisen, die entweder Ihre goldene AMI oder eine aus dem EC2-Katalog sein kann
  • Laden Sie aws-cli, NPM, Yarn und Terraform herunter und installieren Sie sie auf Ihrem Computer
  • Konfigurieren Sie aws-cli mit aws configure, um Ihr AWS-Konto zu verwenden. Überprüfen Sie, ob die Konfiguration korrekt ist, indem Sie diesen Befehl ausführen: aws sts get-caller-identity; bei korrekter Konfiguration sollte kein Fehler zurückgegeben werden
  • (Optional) Generieren Sie ein SSH-Schlüsselpaar für die EC2-Instanzen. Wenn Sie nicht vorhaben, per SSH auf die Worker zuzugreifen, passen Sie das Modul ec2_module entsprechend an 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
  • Notieren Sie sich den in der Terraform-Ausgabe angezeigten Wert (website); dies ist die URL, über die Sie auf das Frontend zugreifen
  • Sobald die Infrastruktur bereitgestellt ist, müssen Sie nur noch setup.sh oder setup.bat ausführen, um das Frontend und den ec2py-Code zu erstellen und hochzuladen

Jetzt kann es losgehen! Registrieren Sie sich, melden Sie sich an und erstellen Sie eine neue Aufgabe!

Ablauf für Endbenutzer

Sobald alles bereitgestellt ist und das Frontend erreichbar ist, sollten Sie die folgenden Schritte ausführen:

  • Besuchen Sie die Website und klicken Sie auf die Schaltfläche „Anmelden“ (Für die Registrierung müssen Sie eine gültige E-Mail-Adresse, einen Benutzernamen und ein Passwort angeben)
  • Bestätigen Sie die E-Mail, indem Sie auf den Link klicken, den Sie in Ihrem E-Mail-Posteingang erhalten
  • Melden Sie sich mit E-Mail/Benutzername und Passwort an
  • Klicken Sie auf den Tab „add a new task“ und aktualisieren Sie das JSON-Dokument, um die Zieldomäne anzugeben, und senden Sie das Formular ab; Sie erhalten nun eine Aufgaben-ID, einen Link und ein Passwort, die unten angezeigt werden.
  • Gehen Sie zurück zum Dashboard und warten Sie, bis eine neue EC2-Instanz gestartet wird und der Workerknoten die Aufgabe ausführt
  • Wenn die Aufgabe in einem Docker-Container ausgeführt wird, kann die Standardausgabe (stdout) über die Weboberfläche angezeigt werden
  • Nach Abschluss der Aufgabe wird die Aufgabe in die Archivtabelle verschoben; Sie können jetzt den angegebenen Link aufrufen, das Ergebnis herunterladen, es mit dem angegebenen Passwort entschlüsseln und die Tool-Ausgabe oder das Ergebnis dekomprimieren CowCloud\ec2py> python .\decypt_file.py 2e8cf87c-5389-11ec-abec-d6d1f378b18d
  • Der Worker wird automatisch beendet, sobald die Aufgabe abgeschlossen ist

Screenshot

Administrator/Wartung

  • Die Person, die für die Bereitstellung und Wartung der Infrastruktur verantwortlich ist, muss die über die Web-App bereitgestellten Endbenutzereingaben ordnungsgemäß bereinigen und validieren. Mit anderen Worten: Stellen Sie sicher, dass der Code in ec2py/template.py nicht anfällig für OS-Command-Injection ist. Dieser Punkt wird hervorgehoben, da er der kritischste Aspekt des Systems ist. Es wurde besondere Sorgfalt darauf verwendet, den Umfang der Berechtigungen und der Gefährdung der Worker zu begrenzen und so die damit verbundenen Risiken zu reduzieren. Dennoch liegt es in der Verantwortung des Administrators, sich um diesen Aspekt der Systemsicherheit zu kümmern. Die Rollenrichtlinien, die dem Profil der EC2-Instanzen zugeordnet sind, sind in der Datei readme.md im Terraform-Ordner aufgeführt

    • Darüber hinaus gibt es eine Lambda-Funktion namens workers_manager.py, die vom ec2py-Tool aufgerufen wird, um privilegiertere Aktionen auszuführen. Diese Aktionen wurden in eine Lambda-Funktion verlagert, um das Risiko zu begrenzen, falls jemand den Zugriffsschlüssel der dem EC2-Profil zugeordneten Rolle kompromittiert. Sie funktioniert dennoch mit IMDSv2. Die Rollenrichtlinien, die der Lambda-Funktion workers_manager.py zugeordnet sind, sind in der Datei readme.md im Terraform-Ordner aufgeführt
  • Wenn Sie die Standardausgabe erfassen und während der Ausführung der Aufgabe über die Weboberfläche anzeigen möchten, gehen Sie zu ec2py/template.py und gehen Sie wie folgt vor:

    • Die Variable extra_docker_params enthält die Informationen, die Ihre Docker-Container benötigen, um die Standardausgabe an CloudWatch-Loggruppen zu senden. Sie müssen diese Variable in die Befehlszeile aufnehmen, wenn Sie die Standardausgabe über das Frontend anzeigen möchten.
    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(' ')
    

Deinstallation

Sie können die Infrastruktur zerstören, indem Sie diesen einfachen Befehl ausführen: terraform destroy --auto-approve. Dieser entfernt alle vorhandenen Ressourcen. Hinweis: Unterbrechen Sie diesen Vorgang nicht, da andernfalls einige Elemente in der Cloud zurückbleiben könnten, die Sie dann manuell identifizieren und entfernen müssten.


Ablauf für Endbenutzer

Screenshot

Kernablauf

Screenshot


Entwicklerhinweise

  • Wenn Sie eine Änderung an der ec2py-App vornehmen, denken Sie daran, die Änderungen mit dem S3-Repository zu synchronisieren. Sie müssen dann die aktuellen Instanzen beenden und eine neue starten, um die neuesten Änderungen zu übernehmen.
  • Wenn eine Komponente des Gateway-Moduls geändert wird, müssen Sie möglicherweise die REST-API erneut bereitstellen. Gehen Sie dazu wie folgt vor:
    • terraform destroy --auto-approve -target module.gateway_module.aws_api_gateway_deployment.lambda
    • terraform apply --auto-approve -target module.gateway_module

Besonderer Dank an:

  • Sabrina MM https://www.linkedin.com/in/sabrina-marisol-martinez-a4bb54181/
  • Ricardo Martinez Martin (NCC Group)
  • Conor McErlane (NCC Group)
  • Simon Harraghy (NCC Group)
Tool herunterladen