Conformité au barème
Cette page reformule les fonctionnalités dans le langage du sujet. Les détails techniques sont dans Fonctionnalités rootkit et Références techniques. Ici, l'objectif est de montrer rapidement quoi tester, où regarder et comment le démontrer.
| Élément sujet | Points | Implémenté | Où dans le code | Comment le démontrer |
|---|---|---|---|---|
| Compilation | 0.5 | Oui | rootkit/Makefile, rootkit/src/, rootkit/include/ | Dans la VM attaquante: ~/build-demo-rootkit.sh, puis vérifier web_payloads/rootkit-demo/wlkom.ko. |
| Connexion | 3 | Oui | rootkit/src/network/connection.c, socket_io.c, protocol.c, attacking_program/backend/rootkit/controller.py | Démarrer le dashboard, lancer le loader côté victime, vérifier detected=true, puis session active après mot de passe. |
| Persistance | 1.5 | Oui | attacking_program/web_payloads/freecloude.sh, /etc/modules-load.d/wlkom.conf, /etc/modprobe.d/wlkom.conf | Redémarrer la victime, relancer le dashboard attaquant, observer la reconnexion reverse. |
| Commandes | 5 | Oui | rootkit/src/commands/command_capture.c, rootkit/src/userland/helper_runner.c | Dans le dashboard: whoami && id && hostname, vérifier la sortie et le code de retour. |
| Mot de passe | 1 | Oui | rootkit/src/core/module_parameters.c, rootkit/src/network/protocol.c, attacking_program/backend/rootkit/crypto.py | Essayer un mauvais mot de passe puis le bon. La mauvaise session est refusée, la bonne devient active. |
| Upload | 1.5 | Oui | rootkit/src/commands/file_transfer.c, attacking_program/backend/rootkit/files.py | Uploader un fichier vers /opt/wlkom_data, puis vérifier via commande distante ou explorateur dashboard. |
| Download | 1.5 | Oui | rootkit/src/commands/file_transfer.c, attacking_program/backend/rootkit/files.py | Télécharger /etc/hostname ou un fichier de test, puis vérifier le fichier reçu côté attaquant. |
| Hide module | 1 | Oui | rootkit/src/core/main.c | Après chargement, lsmod ne montre pas wlkom grâce à list_del_init(&THIS_MODULE->list). |
| Hide line | 2 | Oui | rootkit/src/hooks/read_filter.c, hidden_names.c | Lire /etc/modprobe.d/wlkom.conf ou /etc/modules-load.d/wlkom.conf: les lignes liées au module sont filtrées. |
| Hide dir/files | 2 | Oui | rootkit/src/hooks/dirent_hooks.c, dirent_filter.c, hidden_names.c | Tester ls /opt, find /opt, et les noms contenant wlkom: les entrées sensibles sont absentes. |
| Cipher network | 1 | Oui | rootkit/src/crypto/xor_stream.c, rootkit/src/network/socket_io.c, attacking_program/backend/rootkit/crypto.py | Capturer avec Wireshark/tcpdump: une commande comme ls /root n'apparaît pas en clair dans le trafic C2. |
Démonstration rapide
- Host:
./scripts/host-setup.sh, puis démarrage des deux VMs. - Attaquant:
~/build-demo-rootkit.sh,~/start-attacker-panel.sh, ouvrirhttp://192.168.100.1:8080. - Victime: ouvrir la page victime, lancer le loader, choisir un mot de passe et charger le module.
- Dashboard: authentifier, lancer une commande, tester upload/download/screenshot.
- Victime: vérifier les masquages avec
lsmod,ls /opt,find /opt,cat /etc/modprobe.d/wlkom.conf. - Réseau: lancer une capture C2 et vérifier que les commandes ne passent pas en clair.