
Automatisierte Bereitstellung von Red-Team-Infrastruktur mit Docker
Frühe Veröffentlichung. Folge mir auf Twitter, um über die Entwicklung von Redcloud auf dem Laufenden zu bleiben.
💁☁️🐚🌱
Schnellstart - Architektur - Anwendungsfälle - Screenshots
Redcloud ist eine leistungsstarke und benutzerfreundliche Toolbox zur Bereitstellung einer voll ausgestatteten Red Team Infrastruktur mittels Docker. Nutze die Geschwindigkeit der Cloud für deine Werkzeuge. Bereitstellung in Minuten. Verwende und verwalte sie mit ihrer ansprechenden Weboberfläche.
Ideal für Penetrationstests, Schießstände, Red Teaming und Bug Bounties!
Hoste deine Angriffsinfrastruktur mühelos selbst und setze deine eigene live, skalierbare und resiliente offensive Infrastruktur in wenigen Minuten auf.
Die folgende Demo zeigt die Bereitstellung von Redcloud via SSH, gefolgt von Metasploit. Wir betrachten dann Traefik und ein live an Metasploit angehängtes Volume. Abschließend überprüfen wir, ob die Metasploit-Datenbank mit dem Webterminal funktioniert, löschen den Container und beenden Redcloud.
Einrichtung:```bash
cat ~/.ssh/id_rsa.pub | ssh root@your-deploy-target-ip 'cat >> .ssh/authorized_keys'
eval (docker-machine env default)
python --version
Bereitstellen:```bash
> git clone https://github.com/khast3x/redcloud.git
> cd redcloud
> python redcloud.py
Redcloud verwendet PyYAML, um die Liste der verfügbaren Vorlagen auszugeben. Es ist auf den meisten Systemen standardmäßig installiert.
Falls nicht, führen Sie einfach aus:```bash
pip install -r requirements.txt
Redcloud hat 3 verschiedene Bereitstellungsmethoden:
1. **Lokal**
2. **Remote per SSH**. Erfordert, dass sich Ihr öffentlicher Schlüssel in der `authorized_keys`-Datei Ihres Ziels befindet.
3. **Remote per docker-machine**. Führen Sie die Zeile `eval (docker-machine env deploy_target)` aus, um Ihre Umgebung mit Ihrer docker-machine vorzuladen, und führen Sie `redcloud.py` aus. Redcloud sollte Ihre docker-machine automatisch erkennen und Menüpunkte hervorheben, die für eine docker-machine-Bereitstellung relevant sind.
___
<h4 align="center">
<b>Vorlagen</b>
<br>
<br>
</h4>
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/345/e38f19fa9cc10216030f7856b99170a4ac7c35399c2dd9daf19156a6e9b75e46.png" width="540" title="Redcloud Vorlagen">
</p>
___
**Kurz gesagt,**
`redcloud.py` stellt einen [Portainer](https://www.portainer.io/) Stack bereit, **der mit vielen Tool-Vorlagen für Ihre Offensiv-Einsätze vorinstalliert ist**, basierend auf Docker. Nach der Bereitstellung steuern Sie Redcloud mit der [Weboberfläche](#screenshots). Verwendet [Traefik](https://traefik.io/) als Reverse-Proxy. Einfacher Remote-Einsatz auf Ihrem Zielserver mit systemeigenem `ssh` oder `docker-machine`.
* :rocket: Wollten Sie schon immer mit nur wenigen Klicks ein Kali in der Cloud starten?
* :package: Saubere Silos zwischen Ihren Tools, Techniken und Phasen haben?
* :ambulance: Überwachen Sie die Gesundheit Ihrer Scans und C2?
* :fire: Überspringen Sie die Sysadmin-Aufgaben für die Einrichtung einer Phishing-Kampagne und pwnen Sie schneller?
* :smiling_imp: Neugierig, wie Sie *die* ideale Angriffsinfrastruktur aufbauen würden?
Verwenden Sie die Weboberfläche, um jeden Container zu überwachen, zu verwalten und **mit ihm zu interagieren**. Nutzen Sie das flinke Web-Terminal genau wie Ihr eigenes. Erstellen Sie Volumes, Netzwerke und Portweiterleitungen mit Portainers einfacher Benutzeroberfläche.
Stellen Sie alle Ihre Lieblingswerkzeuge und -techniken mit der Leistung von Rechenzentrums-Internet bereit und verwalten Sie sie :rocket:
___
*Im folgenden Abschnitt gehen wir näher auf die Designkonzepte von Redcloud ein. Sie können jedoch auch loslegen, ohne sich eingehend damit befassen zu müssen.*
___
* :book: **Inhaltsverzeichnis**
- [Einleitung](#introduction)
- [Funktionen](#features)
- [Schnellstart](#quick-start)
- [Details](#details)
- [Redcloud-Architektur](#redcloud-architecture)
- [Bereitstellungsworkflow](#deployment-workflow)
- [Netzwerke](#networks)
- [Volumes](#volumes)
- [Zugriff auf Container vom Terminal aus](#accessing-containers-from-the-terminal)
- [Zugriff auf Dateien](#accessing-files)
- [SSL-Zertifikate](#ssl-certificates)
- [Redcloud stoppen](#stopping-redcloud)
- [Portainer-App-Vorlagen](#portainer-app-templates)
- [Traefik Reverse-Proxy](#traefik-reverse-proxy)
- [Sicherheitsaspekte von Redcloud](#redcloud-security-considerations)
- [Getestete Bereitstellungskandidaten](#tested-deployment-candidates)
- [Fehlerbehebung](#troubleshooting)
- [Anwendungsfälle](#use-cases)
- [Screenshots](#screenshots)
- [Beitragsrichtlinie](#contribution-guideline)
- [Redcloud hosten](#hosting-redcloud)
- [Inspirationen & Danksagungen](#inspirations--shout-outs)
___
## Details
### Redcloud-Architektur
* `redcloud.py`: Startet/Stoppt die Weboberfläche und die App-Vorlagen mithilfe von Docker und Portainer.
* `portainer`: Weboberfläche von Portainer.
* `traefik`: Traefik Reverse-Proxy-Container für die Weboberfläche, API und Datei-Container. Einige Vorlagen haben vorkonfigurierte Routen zur Vereinfachung. Siehe `templates.yml`.
* `templates`: python3 `http.server` Container, der die App-Vorlagen bereitstellt. Befindet sich in einem "inside"-Netzwerk.
* `cert_gen`: Der [omgwtfssl](https://github.com/paulczar/omgwtfssl) Container, der die SSL-Zertifikate nach gängigen Best Practices generiert.
* https://your-server-ip/portainer: Weboberfläche von Redcloud nach der Bereitstellung.
* https://your-server-ip/files: Redcloud `redcloud_files` Volume. Sie können auch auf den Inhalt des `redcloud_log` Containers zugreifen, der durch dasselbe `.htpasswd` wie Traefik geschützt ist. Standard-Anmeldedaten: `admin:Redcloud`
* https://your-server-ip/api: Traefik Reverse-Proxy Health-Monitoring-Seite. Zeigt Live-Statistiken zu Routen, Backends, Rückgabecodes. Zeigt auch Reverse-Callback-Implantat-Daten an, falls über Traefik konfiguriert.
### Bereitstellungsworkflow
**Der Redcloud-Bereitstellungsworkflow ist wie folgt:**
1. Redcloud-Repository klonen/herunterladen.
2. `redcloud.py` starten.
3. Bereitstellungskandidaten aus dem Menü auswählen (local, ssh, docker-machine).
4. `redcloud.py` automatisch:
* prüft, ob `docker` und `docker-compose` auf dem Zielrechner vorhanden sind.
* installiert `docker` und `docker-compose`, falls nicht vorhanden.
* stellt den Web-Stack auf dem Ziel mit `docker-compose` bereit.
5. Sobald die Bereitstellung abgeschlossen ist, gibt `redcloud.py` die URL aus. Gehen Sie zu https://your-deploy-machine-ip/portainer.
6. Benutzernamen/Passwort über die Weboberfläche festlegen.
7. Wählen Sie den Endpunkt (den einzigen auf der Liste).
8. Greifen Sie über den Menüpunkt "App-Vorlagen" auf der linken Seite auf die Vorlagen zu :rocket:
**Die Bereitstellung von App-Vorlagen erfolgt wie folgt:**
1. Vorlage auswählen.
2. Wenn Sie zusätzliche Optionen hinzufügen möchten, wählen Sie "+ Erweiterte Optionen anzeigen".
3. Fügen Sie Portzuordnung, Netzwerkoptionen und Volumezuordnung nach Bedarf hinzu.
4. Wählen Sie "Container bereitstellen".
5. Portainer startet den Container. Es kann einige Minuten dauern, wenn das Image abgerufen werden muss. Wenn Ihr Server in einem Rechenzentrum steht, ist dieser Schritt sehr schnell.
6. Der Container sollte laufen :rocket:
7. Portainer leitet Sie auf die Seite "Container" weiter. Von dort aus können Sie:
a. Live-Containerprotokolle anzeigen.
b. Containerdetails anzeigen (`docker inspect`).
c. Live-Containerstatistiken anzeigen (Speicher/CPU/Netzwerk/Prozesse).
d. Eine Webshell verwenden, um mit Ihrem Container zu interagieren.
e. Je nach App-Vorlage entweder `bash` oder `sh` verwenden. Wählen Sie entsprechend aus dem Dropdown-Menü.
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/345/cf013b73e9bb7dc6f94dafbd31d9d158f7736fc676f94995c64de133ad9bebbe.png" width="540" title="Redcloud-Menü">
</p>
### Netzwerke
Redcloud erleichtert das Experimentieren mit Netzwerken und Containern.
Sie können zusätzliche Netzwerke mit verschiedenen Treibern erstellen und Ihre Container nach Belieben anbinden. Redcloud wird mit zwei Netzwerken ausgeliefert: `redcloud_default` und `redcloud_inside`.
### Volumes
Sie können Daten zwischen Containern durch gemeinsame Volumes austauschen. Redcloud wird mit 3 Volumes ausgeliefert:
* `certs`: Container mit den von [omgwtfssl](https://github.com/paulczar/omgwtfssl) generierten Zertifikaten.
* `files`: Standard-Volumen für Dateifreigabe. Derzeit sind die Dateien beim Aufruf von https://your-server-ip/files verfügbar und werden vom Traefik Reverse-Proxy-Container direkt aus dem `files`-Volumen bereitgestellt. Ein typischer Anwendungsfall ist das Anhängen des Volumens an einen Metasploit-Container, um Ihren Payload direkt in das `files`-Volumen zu generieren. Sie können Ihren frischen Payload dann direkt über die Traefik-File-Server-Route bereitstellen.
* `logs`: Für Protokolle verfügbar, ebenfalls vom Datei-Server bereitgestellt. Zugriff erfordert Basic-Auth. Standard ist `admin:Redcloud`.
### Zugriff auf Container vom Terminal aus
Wenn Sie im Terminal bleiben möchten, um mit den bereitgestellten Containern zu arbeiten, ist das mit Docker sehr einfach. Beachten Sie Folgendes:
* Die meisten Container haben `bash`, aber einige verwenden stattdessen `sh`
* Alle Redcloud-App-Vorlagen-Containernamen beginnen mit `red_`, z. B. `red_msf-postgresql`
* Mit Docker können Sie entweder `docker exec` oder `attach` verwenden, um mit einem Container zu interagieren
* `exec` wird bevorzugt, da es einen neuen Prozess erstellt
* `attach` bringt Sie direkt zum laufenden Prozess und kann Ihren laufenden Container möglicherweise töten
* Wenn Sie Redcloud ausführen:
* Lokal oder mit `docker-machine` geben Sie diese einfach in Ihrer lokalen Shell ein
* Bei Verwendung von `ssh` verbinden Sie sich zuerst per ssh mit Ihrem Bereitstellungsziel, um die folgenden Befehle auszuführen
Um mit dem gewünschten bereitgestellten Container zu interagieren:```bash
> docker exec -it red_container-name /bin/bash
root@70a819ef0e87:/#
Wenn Sie die folgende Nachricht sehen, bedeutet dies, dass bash nicht installiert ist. Ersetzen Sie in diesem Fall einfach /bin/bash durch /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
Um `docker attach` zu verwenden, führen Sie einfach aus:```bash
> docker attach red_container-name
Bei Verwendung von attach muss der Container im interaktiven Modus gestartet werden, um in einer interaktiven Shell zu landen.
Rufen Sie in Ihrem Browser https://ihre-redcloud-ip/files auf.
Weitere Informationen finden Sie im Volume files.
Redcloud generiert beim Bereitstellen ein neues unsigniertes SSL-Zertifikat.
Das Zertifikat wird von omgwtfssl generiert, das die meisten Best Practices umsetzt.
Nach der Generierung:
Es legt die generierten Zertifikate standardmäßig in /certs ab und gibt sie zusätzlich in einer standardmäßigen YAML-Form auf stdout aus, sodass sie leicht in Ansible oder anderen YAML-basierten Tools verwendet werden können.
Die Zertifikate werden in einem gemeinsamen Docker-Volume namens certs gespeichert. Ihre Container können auf dieses Volume zugreifen, wenn Sie es bei der Bereitstellung unter "+ Erweiterte Einstellungen" angeben. Der Traefik-Reverse-Proxy-Container ruft die Zertifikate direkt aus seiner Konfigurationsdatei ab. Wenn Sie diese Zertifikate durch eigene ersetzen möchten, ersetzen Sie sie einfach in diesem Volume.
Das bedeutet auch, dass Sie die generierten Zertifikate in andere Container teilen können, z. B. Empire oder Metasploit für Ihre Reverse-Callbacks oder für eine Phishing-Kampagne.
Die meisten SSL-bezogenen Konfigurationen finden Sie in traefik/traefik.toml oder der docker-compose.yml-Datei.
Sie können Redcloud direkt über das Menü stoppen.
Bereitgestellte App-Vorlagen müssen manuell gestoppt werden, bevor Redcloud gestoppt wird. Sie können sie über die Portainer-Weboberfläche oder mit docker rm -f container-name stoppen.
Wenn Sie die Portainer-Container, die Redcloud ausführen, zum Stoppen zwingen möchten, führen Sie einfach docker-compose kill im redcloud/-Ordner aus.
Die Option zum Stoppen von lokal und docker-machine ist identisch, daher sind sie in derselben Option zusammengefasst.
Redcloud verwendet Portainer, um den Docker-Engine zu orchestrieren und eine Schnittstelle bereitzustellen. Portainer selbst ist ein fantastisches Projekt, um Docker-Bereitstellungen remote zu verwalten. Portainer enthält außerdem ein sehr praktisches Vorlagensystem, das eine wesentliche Komponente für unsere Redcloud-Bereitstellung darstellt.
Vorlagen finden Sie in ./templates/templates.yml. Portainer ruft die Vorlagendatei von einem dedizierten Container (templates) ab.
Traefik ist ein wunderbarer "Cloud-native Edge Router". Es hat das frühere NGINX-Reverse-Proxy-Setup ersetzt.
Während der Bereitstellung wird ein Traefik-Image erstellt, das sich auf das Dockerfile in traefik/Dockerfile stützt. Es fügt eine .htpasswd mit den Anmeldedaten admin:Redcloud hinzu.
Standardmäßig erstellt die Bereitstellung die folgenden Routen:
https://ihre-server-ip/portainerhttps://ihre-server-ip/fileshttps://ihre-server-ip/apiDie Authentifizierungen basieren auf den .htaccess-Daten.
Über die Traefik-API-Weboberfläche können Sie Ihre bereitgestellten Routen anzeigen, den Zustand überwachen sowie Echtzeitmetriken abrufen. Das ist sehr praktisch.
Sie können zusätzliche Labels hinzufügen, die Traefik mitteilen, wohin der Datenverkehr geleitet werden soll, indem Sie eine der folgenden Methoden verwenden:
traefik/traefik.toml-Dateidocker-compose.yml-Dateitemplates.yml-DateiWeitere Informationen finden Sie in der offiziellen Dokumentation.

Redcloud wird mit einem selbstsignierten HTTPS-Zertifikat bereitgestellt und leitet alle Interaktionen mit der Webkonsole darüber.
Das Standardnetzwerk legt jedoch die Ports Ihrer Container für die Außenwelt offen.
Sie können:
labels hinzufügen, um Routen mit Traefik zu erstellen. Siehe die docker-compose.yml-Datei zur Inspiration..htaccess-Konfigurationen hinzufügenZusätzlich:
docker- und docker-machine-Installationen erfordern Root-Rechte. Sie können die Rechteanforderungen gemäß der offiziellen Dokumentation herabsetzen.redcloud.py ruft die öffentliche IP-Adresse von Redcloud mithilfe von icanhazip.com ab.| Bereitstellungsziel | Status |
|---|---|
| Ubuntu Bionic | ✔️ |
| Ubuntu Xenial | ✔️ |
| Debian Stretch | ✔️ |
python --version. Redcloud benötigt Python 3+.python3 anstelle von python, wenn Sie ein älteres System verwenden.redcloud.py erfordert, dass der Bereitstellungskandidat den öffentlichen Schlüssel in seiner .ssh/authorized_keys hat, und ermöglicht die passwortlose Authentifizierung mit dem öffentlichen Schlüssel des Benutzers. Dies ist die Standardkonfiguration der meisten VPS-Workflows.eval-Befehl wie oben beschrieben aus.docker- und docker-machine-Installationen erfordern Root-Rechte. Sie können die Rechteanforderungen gemäß der offiziellen Dokumentation herabsetzen.rm -rf /opt/portainer/data/files/-URI bereitgestellt wird./files/-URI ab.
msfconsole über die Weboberfläche
Jede Hilfe ist willkommen. Dies ist ein Nebenprojekt, daher fehlen wahrscheinlich einige Schrauben und Muttern. Vor allem:
Sie können Redcloud auf jedem Unix-Server hosten, der Docker ausführt.
Redcloud ist für den Einsatz in einer Cloud-Umgebung gedacht, z. B. auf einem einfachen VPS mit SSH oder sogar auf AWS EC2, GCP usw.
Eine Vielzahl von Cloud-Anbietern bietet kostenlose Guthaben an, um sich mit ihren Diensten vertraut zu machen. Viele Listen und Tutorials behandeln, wie man kostenlose Hosting-Guthaben von großen Anbietern erhält. Diese Liste ist ein guter Ausgangspunkt.
Was die Bereitstellungsmethode betrifft, bevorzuge ich persönlich die Arbeit mit docker-machine, da es extrem einfach wird, neue Maschinen zu erstellen und zu verwalten, sobald Sie den Treiber-Setup Ihres Cloud-Anbieters eingerichtet haben. Wenn Sie ssh bevorzugen, werfen Sie einen Blick auf evilsockets shellz-Projekt, um Ihre Schlüssel und Profile zu verwalten.
Red Team Infrastructure Wiki - bluscreenofjeff
Automated Red Team Infrastructure Guide - rastamouse
Safe Red Team Infrastructure - Tim MalcomVetter
Red Baron - Coalfire Research
Rapid Attack Infrastructure - Obscurity Labs
Decker - Steven Aldinger
hideNsneak - Mike Hodges
@Ullaakut für das Logo – Schauen Sie sich unbedingt sein Repo an!
Wenn Sie schließlich wünschen, Ihr Tool integriert zu sehen, kontaktieren Sie mich auf Twitter. Dieses Projekt wird in meiner Freizeit gepflegt. Behalten Sie den dev-Zweig für kommende Funktionen im Auge.
Redcloud wurde ursprünglich entwickelt, um die Bereitstellung von Trainingsumgebungen für Informationssicherheitsstudenten zu erleichtern.
Wenn Sie über dieses Projekt auf dem Laufenden bleiben möchten:
python3-distutils mit apt-get install python3-distutils auf Debian/Ubuntu-Basis installieren./opt/ nicht verwenden. Öffnen Sie zur Lösung die docker-compose.yml-Datei, ersetzen Sie /opt/portainer/data:/data durch einen Ordner mit Schreibzugriff, z. B.: /tmp/portainer/:/data und erstellen Sie das Verzeichnis /tmp/portainer, bevor Sie Redcloud ausführen.