Accueil
Kozaci / WLKOM
Documentation du projet WLKOM
Setup QEMU/KVM, réseau privé, module kernel, hooks ftrace, masquage, persistance, canal C2 chiffré, dashboard attaquant et dépannage.
Cette documentation décrit l'architecture actuelle du projet WLKOM. Le projet doit rester dans un environnement isolé et autorisé. Les pages expliquent des mécanismes sensibles comme le masquage, la persistance et l'exécution de commandes pour que le fonctionnement soit compréhensible, démontrable et critiquable.
La page à garder ouverte quand un terme kernel bloque est Références techniques.
Vue globale
Le schéma se lit de gauche à droite:
- Le host prépare les VMs et sert les scripts de setup par
10.0.2.2:8000. - La VM attaquante compile
wlkom.ko, sert la page victime et écoute le canal C2. - La VM victime télécharge le loader, charge le module, puis c'est le module qui revient vers l'attaquant.
- Le dashboard ne parle jamais directement au noyau. Il parle au backend Flask, qui parle à la socket TCP du module.
Parcours de lecture
Pour lancer le projet rapidement, commencez par Quick Start. Cette page donne les commandes host, attaquant et victime dans l'ordre.
Pour relire les mots importants sans entrer tout de suite dans les détails noyau, commencez par le Glossaire débutant. Pour vérifier les fonctionnalités attendues par le sujet, utilisez Conformité au barème.
Pour comprendre l'infrastructure, lisez Setup, puis Réseau. Ces pages expliquent le bridge privé, le NAT QEMU, les IP fixes et les ports.
Pour comprendre le déroulé complet, lisez Cycle de vie: préparation host, setup des VMs, page victime, chargement du module, authentification, commandes, persistance et reboot.
Pour la partie noyau, lisez d'abord Vue d'ensemble du rootkit, puis Fonctionnalités rootkit. Les grosses briques ont aussi leurs pages dédiées: Canal reverse et commandes, Hooks et masquage, puis Actions userland.
Pour les notions bas niveau, utilisez Références techniques: syscalls, pt_regs, ftrace, kprobes, uaccess, VFS, kthreads, credentials, sockets kernel, protocole C2, transferts chunkés, call_usermodehelper, FNV-1a et XOR.
Pour le dashboard, lisez Backend attaquant et Frontend attaquant. Le backend est aussi important que l'interface, il garde la socket pending, dérive la clé seulement au moment de l'authentification et maintient les offsets de chiffrement.
Versions et chemins importants
| Élément | Valeur |
|---|---|
| Hyperviseur | QEMU/KVM |
| Distribution | Ubuntu Desktop 22.04 |
| Noyau cible | 5.15.0-171-generic |
| IP attaquant | 192.168.100.1 |
| IP victime | 192.168.100.2 |
| Dashboard | http://192.168.100.1:8080 |
| Listener C2 | 0.0.0.0:4444 |
| Page victime | http://192.168.100.1:8080/freecloude |
| Dossier caché | /opt/wlkom_data |
| Module persistant | /lib/modules/$(uname -r)/kernel/drivers/wlkom.ko |
| Options persistantes | /etc/modprobe.d/wlkom.conf |
| Chargement au boot | /etc/modules-load.d/wlkom.conf |
Commandes utiles
Host:
./scripts/host-setup.sh
./scripts/start-attacker.sh
./scripts/start-victim.sh
./scripts/serve-host.sh
Attaquant:
~/build-demo-rootkit.sh
~/start-attacker-panel.sh
~/open-attacker-dashboard.sh
~/start-wireshark-c2.sh
Victime:
uname -r
~/open-page.sh
python3 ~/Downloads/freecloude.py
Nettoyage:
bash ~/uninstall.sh
~/kill-attacker-panel.sh
Auteurs
alexis.thierry-bellefond vadim.tertilov youri.ivanyshyn sullivan.lefevre