Aller au contenu principal

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.

QEMU/KVMUbuntu 22.04Kernel 5.15.0-171

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émentValeur
HyperviseurQEMU/KVM
DistributionUbuntu Desktop 22.04
Noyau cible5.15.0-171-generic
IP attaquant192.168.100.1
IP victime192.168.100.2
Dashboardhttp://192.168.100.1:8080
Listener C20.0.0.0:4444
Page victimehttp://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