Aller au contenu principal

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:

  1. vérifie ou installe les dépendances host
  2. crée le bridge br-wlkom en 192.168.100.254/24
  3. crée tap-attacker et tap-victim
  4. télécharge l'ISO Ubuntu 22.04 Desktop si elle manque
  5. génère served/wlkom-src.tar.gz
  6. démarre le serveur de fichiers host et les deux VMs (s'installeront automatiquement) si --no-start n'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émentValeurRôle
br-wlkom192.168.100.254/24bridge privé host
tap-attackerrelié à br-wlkominterface projet attaquant
tap-victimrelié à br-wlkominterface projet victime
serveur fichiers hosthttp://10.0.2.2:8000 depuis les VMsté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-wlkom sert 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.