Passer au contenu principal
Tanium Blog

Ne vous faites pas pirater ! Recherche d’attaques par ordre de chargement DLL avec Tanium

Expliquer le détournement de DLL

Le détournement DLL, communément appelé détournement d’ordre de chargement ou d’ordre de recherche, est une technique de persistance des logiciels malveillants bien documentée qui continue d’échapper à la détection et de poser un défi significatif aux enquêteurs. Pour tous ceux qui ne connaissent pas cette technique, n’ayez pas peur ! Dans cette publication, nous discuterons d’un bref contexte de détournement d’ordre de chargement et présenterons une nouvelle capacité Tanium pour la détection à grande échelle.

Windows n’exige pas que les applications spécifient un chemin complet pour les bibliothèques de liens dynamiques (DLL) chargées au moment de l’exécution. Lorsqu’un chemin complet n’est pas fourni, Windows tente de localiser la DLL en recherchant des emplacements prédéterminés dans un ordre prévisible. Par conséquent, il est possible qu’un pirate informatique supplante cette commande en ajoutant une DLL malveillante, avec le même nom que la version légitime, à un emplacement en amont de la bibliothèque légitime, ce qui entraîne le chargement accidentel de la DLL malveillante par le système d’exploitation. Si une application charge une DLL (p. ex. ntshrui.dll) par un seul nom, Windows suit un ordre défini publiquement pour identifier et charger la première bibliothèque trouvée avec le nom « ntshrui.dll ».

En supposant que le « mode de recherche DLL sécurisé » est activé (ce qui est par défaut), le système d’exploitation vérifiera d’abord si une DLL portant le même nom est déjà chargée en mémoire ou si la DLL est définie dans la clé de registre « KnownDLLs » (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs). Si aucune de ces conditions n’est remplie, Windows chargera les bibliothèques en utilisant l’ordre suivant :

  1. Le répertoire à partir duquel l’application a été lancée
  2. Le répertoire système (C :\Windows\System32)
  3. Le répertoire système 16 bits (C :\Windows\System)
  4. Le répertoire Windows
  5. Le répertoire actuel
  6. Répertoires définis dans les variables PATH

L’ordre de chargement est détaillé par Microsoft ici :

https://msdn.microsoft.com/en-us/library/windows/desktop/ms682586(v=vs.85).aspx

Bibliothèque KnownDLLs

Sur n’importe quel système Windows, la surface d’attaque, représentée par le nombre d’emplacements potentiellement piratables, est beaucoup plus élevée que ce que l’on pourrait soupçonner. En règle générale, les applications exécutées en dehors de « C :\Windows\System32” qui chargent une bibliothèque sans fournir le chemin complet sont des cibles potentielles. Remarque : la bibliothèque en question ne doit pas non plus exister déjà en mémoire ou être située dans la valeur de registre KnownDLLs. Même les binaires du système principal, notamment explorer.exe, se sont avérés vulnérables (https://capec.mitre.org/data/definitions/471.html).

Une bibliothèque malveillante correctement conçue peut servir de « passage » pour la bibliothèque légitime, préservant la stabilité de l’application vulnérable qui la charge. La simple énumération des applications en cours d’exécution ou des emplacements de persistance courants ne constitue pas un moyen efficace de détecter l’attaque. Au total, l’étendue des applications potentiellement exploitées et des DLL chargées a dépassé de nombreux enquêteurs tentant de détecter cette technique.

Module de réponse aux incidents de Tanium (version 2,3,1)

La dernière version de Tanium du module de réponse aux incidents (version 2,3,1) inclut un nouveau sensor intitulé « DLL Load Order Hijacking Search ». Cette fonctionnalité a été conçue pour aider les organisations à détecter le détournement d’ordre de chargement DLL à grande échelle. Le sensor fonctionne en examinant les DLL chargées par des processus en cours d’exécution et applique plusieurs étapes heuristiques et de filtrage pour identifier les situations où un détournement peut avoir eu lieu. Lorsqu’un processus potentiellement détourné est identifié, le sensor renvoie des informations sur le processus et la DLL pour aider un analyste à déterminer la légitimité du hit. Plus précisément, le sensor renvoie les informations suivantes :

  • Nom et chemin du processus
  • Chemin DLL
  • Hachage DLL MD5
  • Si la DLL est signée numériquement
  • Raison pour laquelle DLL est soupçonnée d’être malveillante

Tanium termine l’ensemble de ce processus, de la recherche à la production de résultats, en quelques secondes, quelle que soit l’échelle de l’environnement.

La capture d’écran ci-dessous montre un exemple de sortie du sensor de détournement d’ordre de chargement DLL dans un petit déploiement de laboratoire. Nous avons créé une détection par étapes où « Explorer.exe » a chargé « ntshrui.dll » à partir du répertoire « C :\WINDOWS », plutôt que « C :\WINDOWS\system32” sur un seul système « infecté ».

Dans les environnements de grandes entreprises, ce sensor peut produire un certain nombre de résultats faux positifs. Les applications chargent souvent des copies de bibliothèques légitimes dans le même répertoire via l’ordre de recherche DLL attendu, afin de s’assurer qu’elles peuvent s’exécuter de manière cohérente sur différentes installations et versions de Windows. Tanium fournit automatiquement des données de fréquence d’occurrence pour chaque résultat en temps réel, ce qui permet aux analystes de rejeter facilement les résultats courants en conjonction avec les données de hachage et de signature numérique fournies par le sensor. La capture d’écran ci-dessous fournit un exemple de faux positif qui aurait pu être exclu en filtrant sur les données de signature numérique ou de comptage de fréquence.

Pour aider à réduire davantage les faux positifs, le sensor permet également aux utilisateurs de définir une liste blanche de bonnes bibliothèques connues. En fait, des sensors Tanium supplémentaires peuvent facilement interroger toutes les DLL chargées ou sur disque et leurs hachages respectifs dans des groupes de systèmes connus pour aider les utilisateurs à créer et à maintenir des listes blanches personnalisées à leur environnement.

Le capteur de détournement d’ordre de chargement DLL est un exemple des efforts de notre équipe de détection et de réponse aux endpoints pour simplifier les enquêtes sur les incidents et aider les organisations à rechercher de manière proactive les « inconnus » dans un environnement.

Dans les mois à venir, nous publierons régulièrement des blogs sur de nouvelles capacités et études de cas supplémentaires.

Restez à l’écoute !

Vous souhaitez voir Tanium en action ? Planifiez une démo individuelle ou participez à notre webinaire hebdomadaire. Discutez avec nos experts Tanium lors de nos prochains événements.