Laboratoire de Test d'Intrusion AWS
Laboratoire de test d'intrusion déployé en tant qu'IaC avec Terraform sur AWS.
Il déploie une instance Kali Linux accessible via SSH & VPN WireGuard.
Des instances vulnérables dans un sous-réseau privé.
NOTE :
- Les ID sont uniquement définis pour la région "eu-west-1"
- Pour les autres régions, l'ID AMI Kali doit être spécifié et l'ID metasploitable3 (après sa construction)
Journal des modifications
- [2022-01-30]
- configuration de sudoers pour autoriser sudo nmap pour le groupe d'utilisateurs
- le groupe de sécurité autorise les connexions entrantes aux ports 8800-8899 (pour les reverse-shells)
- [2021-12-26]
- définition automatique de la première zone de disponibilité
- nouvelles AMI metasploitable créées avec Packer
- intégration initiale de la vulnérabilité log4jshell sur la machine metasploitable3 (mais non utilisable)
- [2021-12-22]
- Packer pour construire les images metasploitable (voir ./metasploitable3/)
- corrections dans le script user_data de Kali
- déploiement sur us-east-1 validé
- [2021-12-09]
- recherche du dernier ID AMI Kali-linux au lieu de fournir des ID
- remplacement de terraform template_file car il est déprécié
- AMI Windows Server (à faire : installer un logiciel vulnérable)
- [2021-09-15]
- corrections dans la création multi-peer WireGuard
- application Infection Monkey intégrée sur Kali Linux
- mise à niveau vers la nouvelle version Kali 2021.3
- [2021-06-02] ID AMI modifiés pour utiliser Kali 2021.2
- [2021-03-10] Utilisation de la nouvelle version Kali 2021.1
Diagramme

Composants
- Instance Kali (la clé privée est enregistrée dans kali.pem)
- Service VPN WireGuard : fichier client client_vpn.wg
- Accessible via SSH/SCP
- Sous-réseau Public 10.0.0.5/24
- Infection Monkey s'exécutant sur le port 5000 (accessible uniquement via VPN ou SSH)
- Machine vulnérable « Metasploitable » (la construction de l'AMI est publique)
- Sous-réseau Privé 10.0.1.5/24
- Autres laboratoires/machines/docker vulnérables (à venir)
Fonctionnalités ajoutées
- Gestion des utilisateurs
- Création automatique d'utilisateurs non privilégiés dans l'instance Kali avec RSA
- Fichier client VPN WireGuard par utilisateur
- Journalisation des audits de commandes dans syslog
- auditd activé avec les clés sudo_log et users_log pour auditer les actions des utilisateurs (voir aussi la commande ausearch)
- À faire : Transférer les audits du terminal vers CloudWatch ou un compartiment S3 avec une politique d'écriture unique
- Prérequis :
- CLI Terraform guide d'installation
- AWS CLI guide d'installation
- $PATH configuré pour AWS CLI et Terraform
- Compte AWS et configuration des identifiants via AWS CLI :
aws configure
- Abonnement Kali Linux sur AWS Marketplace
- Image AMI Metasploitable3 préalablement construite (AMI publique disponible pour la région eu-west-1) voir
Déploiement
- Activer/désactiver les instances vulnérables à déployer en définissant
0 ou 1 dans variables.tf :
variable "deploment-control" {
type = map
default = {
#"instance" = 0 ou 1, pour désactiver ou activer
"metasploitable3" = 1
"dvca" = 0
}
description = "Contrôle les instances EC2 déployées, 0 pour aucune ou 1"
}
- Utiliser Terraform pour déployer l'infrastructure
terraform init
terraform plan
terraform apply -auto-approve
Sorties
Les sorties Terraform afficheront les entrées suivantes :
- commande de connexion SSH pour l'utilisateur kali (root via sudo)
- fichier client WireGuard pour l'utilisateur kali sera automatiquement récupéré depuis le serveur Kali
- commande SCP pour récupérer le fichier client WireGuard (au cas où la commande terraform local-exec échoue)
- Pour chaque utilisateur normal créé dans l'instance Kali
- Fichier de clé privée pour la connexion SSH
- Fichier client WireGuard pour la connectivité VPN
Utilisation
Connectez-vous à Kali via SSH ou WireGuard :
- SSH : (ligne de commande uniquement) Utilisez la clé privée générée automatiquement (voir la sortie Terraform)
KALI_IP=<KALI_IP> # configurer l'IP publique Kali
ssh -i kali.pem -o StrictHostKeyChecking=no -o IdentitiesOnly=yes kali@${KALI_IP}
- WireGuard : Connectez votre instance Kali locale via WireGuard (voir le fichier client_vpn.wg généré)
KALI_IP=<KALI_IP> # configurer l'IP publique Kali
scp -i kali.pem -o StrictHostKeyChecking=no IdentitiesOnly=yes kali@${KALI_IP}:/home/kali/client_vpn.wg .
####
(kali_local)$ sudo apt-get install –y wireguard
(kali_local)$ sudo gedit /etc/wireguard/wg0.conf # copier le contenu de client_vpn.wg
(kali_local)$ sudo chmod 700 /etc/wireguard/wg0.conf
(kali_local)$ sudo wg-quick up wg0
(kali_local)$ ping 10.0.0.5 # tester la connectivité avec l'instance Kali dans AWS
Destruction
terraform destroy -auto-approve
Références