
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.
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.

CowCloud lässt sich in drei Hauptkomponenten unterteilen:
Dies sind die wichtigsten Funktionen:
autoscalingStrategy.py)retention_time zu löschenextra_docker_params in der Datei template.py (dies wird im Abschnitt Administrator/Wartung weiter unten erläutert)
| variable | Standardwert | Beschreibung |
|---|---|---|
eipenable | false | Wenn 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_worker | max_workers: 3, max_queued_tasks_per_worker: 10 | Diese 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_machines | 2 | Dies definiert die Anzahl der Instanzen, die zum Beenden vorgesehen sind, aber angehalten werden, bis der Prozess/Scan die Aufgabe abgeschlossen hat. |
heartbeat_timeout | 900 | Dies definiert die Zeit, die diese Worker in der Warteschleife gehalten werden. Nach Ablauf dieser Zeit wird der Worker zwangsweise beendet. |
instance_type | t2.micro | https://aws.amazon.com/ec2/instance-types/ |
ami | null | https://aws.amazon.com/es/amazon-linux-ami/ |
retention_time | 7 | Legt 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.
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.