AWS Pen-Testing-Labor
PenTesting-Labor, bereitgestellt als IaC mit Terraform auf AWS.
Es stellt eine Kali-Linux-Instanz bereit, die über SSH und WireGuard-VPN zugänglich ist.
Verwundbare Instanzen in einem privaten Subnetz.
HINWEIS:
- IDs nur für Region 'eu-west-1' definiert
- Für andere Regionen muss die Kali-AMI-ID angegeben werden und die Metasploitable3-ID (nach dem Erstellen).
Änderungsprotokoll
- [2022-01-30]
- sudoers so konfiguriert, dass sudo nmap für die Benutzergruppe erlaubt ist
- Sicherheitsgruppe erlaubt eingehende Verbindungen zu den Ports 8800-8899 (für Reverse-Shells)
- [2021-12-26]
- erste Availability Zone automatisch festgelegt
- neue Metasploitable-AMIs mit Packer erstellt
- erste Integration der log4jshell-Schwachstelle in die Metasploitable3-Maschine (aber nicht nutzbar)
- [2021-12-22]
- Packer zum Erstellen von Metasploitable-Images (siehe ./metasploitable3/)
- Korrekturen im Kali user_data-Skript
- Bereitstellung in us-east-1 validiert
- [2021-12-09]
- Nach der neuesten Kali-Linux-AMI-ID suchen anstatt IDs bereitzustellen
- terraform template_file ersetzt, da veraltet
- Windows-Server-AMI (TODO: eine verwundbare Software installieren)
- [2021-09-15]
- Korrekturen bei der WireGuard-Multi-Peer-Erstellung
- Infection-Monkey-App in Kali Linux integriert
- Upgrade auf neue Kali-Version 2021.3
- [2021-06-02] AMI-IDs geändert, um Kali 2021.2 zu verwenden
- [2021-03-10] Neue Kali-Version 2021.1 verwenden
Diagramm

Komponenten
- Kali-Instanz (privater Schlüssel wird in kali.pem gespeichert)
- WireGuard-VPN-Dienst: Client-Datei client_vpn.wg
- Zugänglich über SSH/SCP
- Öffentliches Subnetz 10.0.0.5/24
- Infection Monkey läuft auf Port 5000 (nur über VPN oder SSH zugänglich)
- Verwundbare Maschine 'Metasploitable' (AMI-Build ist öffentlich)
- Privates Subnetz 10.0.1.5/24
- Weitere verwundbare Labs/Maschinen/Docker (in Arbeit)
Hinzugefügte Funktionen
- Benutzerverwaltung
- Automatisches Erstellen nicht privilegierter Benutzer in der Kali-Instanz mit RSA
- WireGuard-VPN-Client-Datei pro Benutzer
- Befehlszeilen-Audit-Logging im Syslog
- auditd aktiviert mit sudo_log- und users_log-Schlüsseln zur Überwachung von Benutzeraktionen (siehe auch Befehl ausearch)
- TODO: Terminal-Audit an CloudWatch oder einen S3-Bucket mit Write-Once-Policy weiterleiten
Anleitung
- Voraussetzungen:
- Terraform CLI Installationsanleitung
- AWS CLI Installationsanleitung
- $PATH für AWS CLI und Terraform konfiguriert
- AWS-Konto und Anmeldeinformationen über AWS CLI konfigurieren:
aws configure
- Kali Linux-Abonnement im AWS Marketplace
- Zuvor erstelltes Metasploitable3-AMI-Image (öffentliches AMI für Region eu-west-1 verfügbar) siehe
Bereitstellen
- Aktivieren/Deaktivieren der bereitzustellenden verwundbaren Instanzen durch Setzen von
0 oder 1 in variables.tf:
variable "deploment-control" {
type = map
default = {
#"instance" = 0 or 1, to disable or enable
"metasploitable3" = 1
"dvca" = 0
}
description = "Control which EC2 instances are deployed, 0 for none or 1"
}
- Terraform zur Bereitstellung der Infrastruktur verwenden
terraform init
terraform plan
terraform apply -auto-approve
Ausgaben
Terraform-Ausgaben zeigen folgende Einträge:
- SSH-Verbindungsbefehl für Kali-Benutzer (root via sudo)
- WireGuard-Client-Datei für Kali-Benutzer wird automatisch vom Kali-Server abgerufen
- SCP-Befehl zum Abrufen der WireGuard-Client-Datei (für den Fall, dass der definierte Terraform local-exec-Befehl fehlschlägt)
- Für jeden der normalen Benutzer, die in der Kali-Instanz erstellt wurden
- Private-Key-Datei für SSH-Verbindung
- WireGuard-Client-Datei für VPN-Konnektivität
Verwendung
Verbinden Sie sich entweder über SSH oder WireGuard mit Kali:
- SSH: (Nur Befehlszeile) Verwenden Sie den automatisch generierten privaten Schlüssel (siehe Terraform-Ausgabe)
KALI_IP=<KALI_IP> # configure kali public ip
ssh -i kali.pem -o StrictHostKeyChecking=no -o IdentitiesOnly=yes kali@${KALI_IP}
- WireGuard: Verbinden Sie Ihre lokale Kali-Instanz über WireGuard (siehe generierte Datei client_vpn.wg)
KALI_IP=<KALI_IP> # configure kali public ip
scp -i kali.pem -o StrictHostKeyChecking=no IdentitiesOnly=yes kali@${KALI_IP}:/home/kali/client_vpn.wg .
####
(local_kali)$ sudo apt-get install –y wireguard
(local_kali)$ sudo gedit /etc/wireguard/wg0.conf # copy contents of client_vpn.wg
(local_kali)$ sudo chmod 700 /etc/wireguard/wg0.conf
(local_kali)$ sudo wg-quick up wg0
(local_kali)$ ping 10.0.0.5 # test connectivity with kali instance in AWS
Zerstören
terraform destroy -auto-approve
Referenzen