Aller au contenu

Analyse d'Artefact : Chasse aux Webshells et Fichiers Modifiés sur Ivanti

Les appliances Ivanti exposent de nombreux services web. Les acteurs de la menace recherchent constamment des répertoires inscriptibles et mappés à la racine web pour y déposer leurs scripts malveillants. En supposant que l’image forensique soit montée sur /mnt/analyse/, les analystes doivent cibler des chemins spécifiques selon le type d’appliance.

ICS utilise massivement Perl (.pl, .cgi) et Python.

  • /mnt/analyse/home/perl/hm/ : contient de nombreux scripts CGI légitimes. C’est une cachette classique pour les webshells basés sur Perl.
  • /mnt/analyse/data/var/www/ : la racine web pour certains services exposés.
  • /mnt/analyse/data/runtime/tmp/ : utilisé pour stocker des fichiers temporaires, mais occasionnellement exposé ou abusé pour la préparation (staging) de charges utiles.

L’architecture EPMM ressemble étroitement à une pile web traditionnelle (Apache/Tomcat).

  • /mnt/analyse/var/www/html/ : la racine web Apache standard.
  • /mnt/analyse/usr/local/mobileiron/ : le répertoire principal de l’application où les acteurs de la menace tentent de se fondre dans la masse.

2. L’art du “Trojanizing” (Modification de fichier)

Section intitulée « 2. L’art du “Trojanizing” (Modification de fichier) »

Au lieu de déposer un nouveau fichier très visible, les APT sophistiqués préfèrent modifier des fichiers système légitimes existants. C’est ce qu’on appelle le “Trojanizing”.

  • L’objectif : le vol d’identifiants (Credential Harvesting - intercepter les mots de passe en clair) ou le maintien d’une persistance furtive.
  • La cible : les gestionnaires d’authentification. Les attaquants ciblent les scripts Perl (.pl, .pm) ou Python (.py) responsables du flux de connexion.
  • Exemple classique : lors de l’exploitation de la CVE-2023-46805, il a été largement observé que les attaquants modifiaient le fichier compcheck.py pour contourner l’authentification et exécuter des commandes arbitraires.

Détecter des fichiers modifiés à l’œil nu est extrêmement difficile car le nom du fichier, ses permissions et son emplacement semblent tout à fait légitimes. Cela nécessite l’utilisation de comparaisons de lignes de base cryptographiques.

3. L’artefact ultime : les logs de l’Integrity Checker Tool (ICT)

Section intitulée « 3. L’artefact ultime : les logs de l’Integrity Checker Tool (ICT) »

Ivanti fournit un utilitaire interne appelé Integrity Checker Tool (ICT). Il scanne l’appliance et compare les hashs SHA256 de tous les fichiers système à une liste blanche cryptographique fournie par l’éditeur.

Si un snapshot du système ou une collecte de journaux a été réalisée, les analystes doivent immédiatement localiser les rapports ICT.

  • Emplacement de l’artefact : généralement trouvé dans /data/var/dlogs/ ou /var/log/ avec des noms de fichiers comme integrity_check.log, ICT_result, ou dans l’archive du snapshot.

Lors du parsing du journal ICT, les analystes doivent catégoriser les découvertes :

  • Matched : le fichier est sain et correspond au hash officiel.
  • New : le fichier existe sur le disque mais n’est pas dans la liste blanche officielle. Il y a une forte probabilité que ce soit un webshell.
  • Modified / Mismatch : le fichier existe dans la liste blanche, mais son hash a changé. Le fichier a été modifié (Trojanizé). C’est un indicateur de compromission confirmé.

4. Persistance au niveau de l’OS (Au-delà du Web)

Section intitulée « 4. Persistance au niveau de l’OS (Au-delà du Web) »

Si un attaquant obtient un accès root via un exploit web, il tentera invariablement d’établir une persistance au niveau du système d’exploitation pour survivre aux mises à niveau du firmware ou aux redémarrages du service web.

Les analystes doivent pivoter vers des techniques forensiques Linux standards sur l’image montée :

  • Tâches planifiées et Cron : auditez /var/spool/cron/ et /etc/cron*. Les attaquants ajoutent fréquemment des reverse shells en une seule ligne (ex: utilisant bash -i ou nc) pour s’exécuter périodiquement.
  • Artefacts SSH : vérifiez /root/.ssh/authorized_keys. L’ajout d’une clé publique SSH frauduleuse permet à l’attaquant de contourner totalement l’exploit web pour ses accès futurs.
  • Persistance héritée : auditez /etc/rc.local ou les répertoires systemd (/etc/systemd/system/) pour détecter des scripts de démarrage malveillants.

Au lieu de s’appuyer uniquement sur des signatures antivirus, les analystes DFIR utilisent des commandes Linux natives sur l’image montée pour chasser les anomalies comportementales.

hunt_ivanti_webshells.sh
#!/bin/bash
TARGET_DIR="/mnt/analyse"
INCIDENT_DATE="2026-01-01"
echo "[+] Chasse aux fichiers nouvellement créés ou modifiés (MAC Times)..."
find $TARGET_DIR/home/perl $TARGET_DIR/data/var/www -type f -newermt "$INCIDENT_DATE" -ls
echo "[+] Chasse aux fonctions suspectes dans les fichiers Perl/Python..."
# Recherche de fonctions d'exécution de commandes OS ou d'offuscation
grep -rE "system\(|shell_exec|eval\(|base64_decode|popen\(" $TARGET_DIR/home/perl/
echo "[+] Chasse aux extensions de fichiers anormales..."
# Un fichier .php ou .jsp caché dans un répertoire CGI Perl est hautement suspect
find $TARGET_DIR/home/perl/hm -type f \( -name "*.php" -o -name "*.jsp" \)