Laboratorio di Pen-Testing AWS
Laboratorio di Pen-Testing distribuito come IaC con Terraform su AWS.
Distribuisce un'istanza Kali Linux accessibile via ssh e VPN WireGuard.
Istanze vulnerabili in una subnet privata.
NOTA:
- Ids definiti solo per la regione "eu-west-1"
- Per altre regioni, l'ami id di kali deve essere specificato e l'id di metasploitable3 (dopo averlo costruito)
Registro delle modifiche
- [2022-01-30]
- impostato sudoers per consentire sudo nmap per il gruppo users
- il gruppo di sicurezza consente connessioni in entrata sulle porte 8800-8899 (per reverse-shell)
- [2021-12-26]
- impostata automaticamente la prima zona di disponibilità
- nuove AMI metasploitable create con Packer
- integrazione iniziale della vulnerabilità log4jshell nella macchina metasploitable3 (ma non è utilizzabile)
- [2021-12-22]
- Packer per creare immagini metasploitable (vedi ./metasploitable3/)
- correzioni nello script user_data di kali
- Distribuzione su us-east-1 validata
- [2021-12-09]
- Ricerca dell'ultimo ami id di Kali-linux invece di fornire ids
- terraform template_file sostituito perché deprecato
- windows server ami (da fare: installare un software vulnerabile)
- [2021-09-15]
- Correzioni nella creazione multi-peer di WireGuard
- App Infection Monkey integrata su Kali Linux
- Aggiornamento alla nuova versione di Kali 2021.3
- [2021-06-02] ID AMI modificati per utilizzare Kali 2021.2
- [2021-03-10] Utilizzo della nuova versione di Kali 2021.1
Diagramma

Componenti
- Istanza Kali (la chiave privata è salvata in kali.pem)
- Servizio VPN WireGuard: file client client_vpn.wg
- Accessibile via ssh/scp
- Subnet Pubblica 10.0.0.5/24
- Infection Monkey in esecuzione sulla porta 5000 (accessibile solo tramite vpn o ssh)
- Macchina vulnerabile "Metasploitable" (l'ami build è pubblica)
- Subnet Privata 10.0.1.5/24
- Altri laboratori/macchine/docker vulnerabili (da fare)
Funzionalità aggiunte
- Gestione utenti
- Creare automaticamente utenti non privilegiati nell'istanza Kali con rsa
- File client VPN WireGuard per utente
- Registrazione di audit della riga di comando in syslog
- auditd abilitato con chiavi sudo_log e users_log per l'audit delle azioni degli utenti (vedere anche il comando ausearch)
- Da fare: Inoltrare l'audit del terminale a CloudWatch o a un bucket S3 con politica di scrittura singola
Come fare
- Requisiti:
- CLI di Terraform guida all'installazione
- CLI di AWS guida all'installazione
- $PATH configurato per AWS CLI e Terraform
- Account AWS e configurare le credenziali tramite aws cli:
aws configure
- Sottoscrizione a Kali Linux su AWS Marketplace
- Immagine AMI di Metasploitable3 precedentemente costruita (AMI pubblica disponibile per la regione eu-west-1) vedi
Distribuzione
- Abilitare/disabilitare le istanze vulnerabili da distribuire impostando
0 o 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"
}
- Utilizzare terraform per distribuire l'infrastruttura
terraform init
terraform plan
terraform apply -auto-approve
Output
Gli output di Terraform mostreranno le seguenti voci:
- comando di connessione ssh per l'utente kali (root tramite sudo)
- il file client wireguard per l'utente kali verrà automaticamente recuperato dal server kali
- comando scp per recuperare il file client wireguard (nel caso in cui il comando terraform local-exec definito fallisca)
- Per ogni utente normale creato nell'istanza Kali
- File con chiave privata per connessione ssh
- File client Wireguard per connettività VPN
Utilizzo
Connettersi a Kali tramite ssh o wireguard:
- SSH: (Solo riga di comando) Usa la chiave privata autogenerata (vedi output di terraform)
KALI_IP=<KALI_IP> # configure kali public ip
ssh -i kali.pem -o StrictHostKeyChecking=no -o IdentitiesOnly=yes kali@${KALI_IP}
- Wireguard: Connetti la tua istanza Kali locale tramite wireguard (vedi file client_vpn.wg generato)
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
Distruzione
terraform destroy -auto-approve
Riferimenti