
Vollautomatische Bereitstellung einer kleinen, absichtlich unsicheren, angreifbaren Windows-Domäne für einen RDP-Honeypot.
Stelle eine kleine, absichtlich unsichere, verwundbare Windows-Domäne für RDP-Honeypot vollautomatisch bereit.
Läuft auf selbstgehosteter Virtualisierung mit libvirt mit QEMU/KVM (kann aber leicht für Cloud-basierte Lösungen angepasst werden).
Wird verwendet, um mühelos eine kleine Windows-Domäne von Grund auf automatisch (ohne Benutzereingriff) für RDP-Honeypot-Tests einzurichten.
Enthält einen Domänencontroller, einen Desktop-Computer und einen konfigurierten Graylog-Server zur Protokollierung der Aktionen der Bösewichte.
Packer: Lade die erforderlichen Installationsmedien herunter und richte die automatisierten Basis-VM-Images unbeaufsichtigt ein.
Terraform: Stelle die libvirt-Virtualisierungsinfrastruktur (Netzwerk + virtuelle Maschinen) mit den von Packer vorbereiteten VM-Images bereit.
Ansible: Konfiguriere die Infrastruktur (DC, Desktop, Graylog) automatisch, ohne Benutzereingriff.
Nach Durchlaufen der Packer+Terraform+Ansible-Pipeline, sollte die konfigurierte Windows-Domäne betriebsbereit sein. Du kannst den RDP-Dienst des Desktops mit dem öffentlichen Internet verbinden und die Ereignisse über Graylog überwachen.
Funktionen des laufenden Systems sind:
Virtualisierung benötigt etwas Leistung von Ihrem Hostsystem:
Getestet auf Ubuntu 18.04 LTS-Host.
Zuerst das Repository klonen:
git clone https://github.com/tothi/ad-honeypot-autodeploy
cd ad-honeypot-autodeploy
Vor dem Start mit Packer die anfänglichen Passwörter einrichten (auf Komplexitätsanforderungen achten):
./init_passwords.sh
Jetzt die anfänglichen Images erstellen.
cd packer
Windows Server 2016 und Ubuntu-Installationsmedien sollten vom Packer-Skript heruntergeladen werden. VirtIO muss mit dem beigefügten get-virtio.sh-Skript heruntergeladen werden:
./get-virtio.sh
Windows 10 sollte manuell heruntergeladen werden, indem ein temporärer Download-Link abgerufen und im ISO-Ordner gespeichert wird. Der Download-Link kann von hier bezogen werden. Wählen Sie die englische (internationale) 64-Bit-Version und speichern Sie die ISO unter ISO/Win10_21H2_EnglishInternational_x64.iso.
Für die Zuordnung von IP-Standorten auf einer Weltkarte in Graylog wird die MaxMind-GeoIP-Datenbank benötigt. Leider kann sie aufgrund von Lizenzbestimmungen nicht weitergegeben werden, daher muss sie manuell (nach Registrierung) von der MaxMind-Seite heruntergeladen werden. Die kostenlose GeoLite2-Version sollte funktionieren. Laden Sie die „GeoLite2 City“-Datenbank im MMDB-Format herunter (GZIP herunterladen und entpacken) und legen Sie sie unter resources/GeoLite2-City.mmdb ab.
Wenn Sie Packer nicht haben, holen Sie die neueste Version von der packer.io-Website (herunterladen der vorkompilierten Binärdatei) oder versuchen Sie, das Hashicorp-Repository zu Ihrem Paketsystem hinzuzufügen (auch für Terraform nützlich).
Wenn Sie die Images neu erstellen, vergessen Sie nicht, vorherige Builds zu bereinigen:
rm -fr output_*
Wenn Sie die Images erneut herunterladen möchten, entfernen Sie packer_cache:
rm -fr packer_cache
Nach diesen vorbereitenden Schritten führen Sie die Packer-Builds parallel aus:
./packer-build-all.sh

Die Images sollten in angemessener Zeit (~20-30 Minuten, abhängig von der Leistung Ihres Host-Hardware) bereit sein.
Jetzt kann die Infrastruktur mit Terraform bereitgestellt werden.
Holen Sie sich Terraform (>=0.13), falls Sie es nicht haben (siehe Installationsmethoden bei Packer oben).
Terraform-Provider für libvirt sollte während der Apply-Phase automatisch aus der Terraform Registry heruntergeladen werden.
Terraform-Ordner betreten:
cd ../terraform
Arbeitsverzeichnis initialisieren (nur bei erster Verwendung erforderlich):
terraform init
Infrastruktur erstellen und starten („apply the changes“):
terraform apply
Beachten Sie, dass der Benutzer, der terraform apply ausführt, wenn er nicht root ist, sudo-Berechtigungen zum Ausführen von /usr/sbin/iptables benötigt (ohne Passwort).

Nach kurzer Zeit (~2-3 Minuten) sind das Netzwerk und die virtuellen Maschinen betriebsbereit. Bei Fehlern reicht terraform destroy möglicherweise nicht aus, ein manuelles Aufheben der Ressourcendefinitionen kann erforderlich sein.
WARNUNG: Sie sollten darauf achten, Ihr privates Netzwerk zu schützen. Die hier bereitgestellte Terraform-Konfiguration (main.tf) enthält nur eine benutzerdefinierte Firewall-Regel für meine eigene Testumgebung (Blockierung des Zielverkehrs von 192.168.0.0/16 aus dem Honeypot-Netz 192.168.3.0/24).
Als nächstes folgt die Konfigurationsphase.
In den Ansible-Ordner wechseln:
cd ../ansible
Die empfohlene Installationsmethode ist die Installation der neuesten Ansible-Version mit einigen erforderlichen zusätzlichen Abhängigkeiten in einer Python-Venv-virtualisierten Umgebung:
python3 -m venv venv
. ./venv/bin/activate
pip3 install -r requirements.txt
Für die spätere Verwendung aktivieren Sie einfach die venv mit
. ./venv/bin/activate
Und einfach deactivate, wenn es in Ihrer aktuellen Sitzung nicht mehr benötigt wird.
Sie sollten einen SSH-öffentlichen Schlüssel mit dem Dateinamen id.pub (mit ssh-keygen erstellen) in den Ansible-Ordner legen, um auf die Ubuntu-Graylog-Maschine mit dem Benutzer ubuntu zuzugreifen (Ansible wird ihn zu ~ubuntu/.ssh/authorized_keys hinzufügen).
Die Datei wordlist.txt enthält einige (absichtlich schwache) Passwörter für die befüllten Domänenbenutzer, die angepasst werden können.
Konfigurationsphase ausführen: