Host QEMU/KVM
Le host sert à préparer l'environnement des deux VMs. Il ne charge pas le module et ne lance pas le dashboard. Son rôle est limité à QEMU/KVM, au réseau privé, à l'ISO Ubuntu et au serveur de fichiers host.
Prérequis
Les scripts host utilisent QEMU/KVM et acceptent Linux avec apt ou pacman.
Ubuntu/Debian:
sudo apt update
sudo apt install -y qemu-system-x86 qemu-system-gui qemu-utils bridge-utils curl python3 iproute2
Arch Linux:
sudo pacman -S qemu-full qemu-img bridge-utils curl python iproute2
Vérifier KVM:
grep -Ec '(vmx|svm)' /proc/cpuinfo
ls -l /dev/kvm
groups
Si /dev/kvm existe mais n'est pas accessible:
sudo usermod -aG kvm "$USER"
Préparation automatique
Depuis la racine du dépôt:
chmod +x scripts/*.sh utils/*.sh served/*.sh
./scripts/host-setup.sh
Le script fait principalement:
- vérifie ou installe les dépendances host
- crée le bridge
br-wlkomen192.168.100.254/24 - crée
tap-attackerettap-victim - télécharge l'ISO Ubuntu 22.04 Desktop si elle manque
- génère
served/wlkom-src.tar.gz - démarre le serveur de fichiers host et les deux VMs (s'installeront automatiquement) si
--no-startn'est pas fourni.
Pourquoi un bridge au lieu d'un réseau QEMU user unique? Le bridge donne un vrai réseau privé stable entre les deux VMs. Les IPs 192.168.100.1 et 192.168.100.2 restent donc prévisibles pour le module et pour les captures réseau.
Réseau créé
| Élément | Valeur | Rôle |
|---|---|---|
br-wlkom | 192.168.100.254/24 | bridge privé host |
tap-attacker | relié à br-wlkom | interface projet attaquant |
tap-victim | relié à br-wlkom | interface projet victime |
| serveur fichiers host | http://10.0.2.2:8000 depuis les VMs | téléchargement des scripts |
ISO Ubuntu
Le script utilise:
https://old-releases.ubuntu.com/releases/22.04/ubuntu-22.04-desktop-amd64.iso
Elle est stockée dans:
iso/ubuntu-22.04-desktop-amd64.iso
Ubuntu Desktop 22.04 est retenu car l'installation graphique est stable, les paquets linux-image, linux-headers, gcc-12, python3-flask et network-manager sont disponibles simplement, et la famille de noyaux 5.15 correspond au noyau cible choisi. Pour plus de détails sur le choix du noyau, lisez Choix du noyau.
Serveur de fichiers host
Le script serve-host.sh régénère served/wlkom-src.tar.gz, puis expose le dossier served/ en HTTP. Il est lancé par:
./scripts/serve-host.sh
Depuis les VMs, l'adresse spéciale QEMU est:
http://10.0.2.2:8000
Cette adresse pointe vers le host vu depuis le réseau NAT QEMU. Elle évite de devoir connaître l'IP réelle du host.
Il y a donc deux réseaux en même temps:
- Le NAT QEMU sert à joindre le host et Internet pour les paquets.
- Le bridge
br-wlkomsert au scénario WLKOM entre attaquant et victime.
Archive servie aux VMs
utils/package-served.sh construit:
served/wlkom-src.tar.gz
Cette archive contient:
attacking_program/
rootkit/
La VM attaquante la télécharge pendant setup-attacker.sh, puis copie:
- les sources de l'attaquant vers
~/wlkom-attacker - les sources kernel vers
~/wlkom-attacker/rootkit-demo.
Démarrage et reset
Démarrer les deux VMs en mode normal:
./scripts/start-attacker.sh
./scripts/start-victim.sh
Démarrer ou relancer la phase installateur:
./scripts/run-vm-setup.sh
Supprimer uniquement les disques virtuels:
./scripts/reset-attacker.sh
./scripts/reset-victim.sh
./scripts/reset-vms.sh
Nettoyer le bridge et les TAP si le réseau est cassé:
./utils/clean-network.sh
./scripts/host-setup.sh --no-start
Vérifications host
ip addr show br-wlkom
ip link show tap-attacker
ip link show tap-victim
Le bridge doit être UP, les deux TAP doivent exister.
Si ces commandes affichent une erreur ou une interface absente, voir Troubleshooting. Pour le schéma réseau complet, voir Réseau.