Passer au contenu principal
Blog Tanium

Ne vous faites pas prendre au piège ! Recherche d'attaques par ordre de chargement des DLL avec Tanium

Explication du détournement de DLL

Le « détournement de DLL », communément appelé « détournement de l'ordre de chargement » ou « détournement de l'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 de taille aux enquêteurs. Si vous ne connaissez pas cette technique, pas de panique ! Dans cet article, nous aborderons brièvement le contexte du détournement de l'ordre de chargement et présenterons une nouvelle fonctionnalité de Tanium permettant une détection à grande échelle.

Windows n'exige pas que les applications indiquent un chemin d'accès complet pour les bibliothèques de liens dynamiques (DLL) chargées lors de l'exécution. Lorsqu'aucun chemin d'accès complet n'est fourni, Windows tente de localiser la DLL en effectuant une recherche dans des emplacements prédéfinis, selon un ordre prévisible. Par conséquent, un attaquant peut modifier cet ordre en ajoutant une DLL malveillante, portant le même nom que la version légitime, à un emplacement situé avant la bibliothèque légitime ; ce qui conduit le système d'exploitation à charger par inadvertance la DLL malveillante. Si une application charge une DLL (par exemple, ntshrui.dll) en indiquant uniquement son nom, Windows suit un ordre défini publiquement pour identifier et charger la première bibliothèque trouvée portant le nom « ntshrui.dll ».

Si le « mode de recherche sécurisée des DLL » est activé (ce qui est le cas 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 cette 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 selon 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 courant
  6. Répertoires définis dans les variables PATH

Microsoft fournit ici davantage de détails sur l'ordre de chargement :

https://msdn.microsoft.com/en-us/library/windows/desktop/ms682586(v=vs.85).aspx (s'ouvre dans un nouvel onglet)

Bibliothèque « KnownDLLs »

Sur n'importe quel système Windows, la surface d'attaque, représentée par le nombre de points susceptibles d'être piratés, est bien plus importante qu'on ne pourrait le croire. En règle générale, les applications exécutées en dehors de « C:\Windows\System32” » qui chargent une bibliothèque sans indiquer le chemin d'accès complet constituent des cibles potentielles. Remarque : la bibliothèque en question ne doit pas non plus exister déjà en mémoire ni figurer dans la valeur de registre « KnownDLLs ». Il a été démontré que même les binaires du système central, notamment explorer.exe, présentaient des vulnérabilités (https://capec.mitre.org/data/definitions/471.html (s'ouvre dans un nouvel onglet)).

Une bibliothèque malveillante correctement conçue peut servir de « passerelle » pour la bibliothèque légitime, préservant ainsi la stabilité de l'application vulnérable qui la charge. Le simple fait de répertorier les applications en cours d'exécution ou les emplacements de stockage courants ne constitue pas un moyen efficace de détecter l'attaque. Au total, la diversité des applications susceptibles d'être exploitées et des DLL chargées a donné du fil à retordre à de nombreux enquêteurs qui tentaient de détecter cette technique.

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

La dernière version du module « Incident Response » de Tanium (version 2,3,1) comprend un nouveau capteur intitulé « Recherche de détournement de l'ordre de chargement des DLL ». Cette fonctionnalité a été conçue pour aider les organisations à détecter à grande échelle les détournements de l'ordre de chargement des DLL. Le capteur fonctionne en analysant les DLL chargées par les processus en cours d'exécution et applique plusieurs méthodes heuristiques et étapes de filtrage afin d'identifier les situations dans lesquelles un détournement aurait pu se produire. Lorsqu'un processus susceptible d'avoir été détourné est identifié, le capteur renvoie des informations sur ce processus et la DLL afin d'aider un analyste à déterminer la légitimité de la détection. Plus précisément, le capteur fournit les informations suivantes :

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

Tanium mène à bien l'ensemble de ce processus, de la recherche à la génération des résultats, en quelques secondes, quelle que soit la taille de l'environnement.

La capture d'écran ci-dessous présente un exemple de résultat du capteur « DLL Load Order Hijacking » dans le cadre d'un petit déploiement en laboratoire. Nous avons mis au point un scénario de détection dans lequel le fichier « Explorer.exe » chargeait le fichier « ntshrui.dll » à partir du répertoire « C:\WINDOWS », et non à partir de « C:\WINDOWS\system32” », sur un seul système « infecté ».

Dans les environnements de grandes entreprises, ce capteur peut générer un certain nombre de faux positifs. Les applications chargent souvent des copies de bibliothèques légitimes situées dans le même répertoire, en suivant l'ordre de recherche des DLL prévu, afin de garantir leur fonctionnement cohérent sur différentes installations et versions de Windows. Tanium fournit automatiquement et en temps réel des données sur la fréquence d'occurrence de chaque résultat, ce qui permet aux analystes d'écarter facilement les résultats courants en s'appuyant sur les données de hachage et de signature numérique fournies par le capteur. La capture d'écran ci-dessous illustre un exemple de faux positif qui aurait pu être écarté grâce à un filtrage basé sur la signature numérique ou les données de comptage de fréquence.

Afin de réduire encore davantage les faux positifs, le capteur permet également aux utilisateurs de définir une liste blanche de bibliothèques dont la fiabilité est avérée. En effet, des capteurs Tanium supplémentaires peuvent facilement analyser toutes les DLL chargées ou présentes sur le disque, ainsi que leurs hachages respectifs, sur des groupes de systèmes dont la propreté est avérée, afin d’aider les utilisateurs à créer et à maintenir des listes blanches parfaitement adaptées à leur environnement.

Le capteur « DLL Load Order Hijacking » illustre parfaitement les efforts déployés par notre équipe Endpoint Detection and Response pour simplifier les enquêtes sur les incidents et aider les organisations à rechercher de manière proactive les « éléments inconnus » présents dans leur environnement.

Au cours des prochains mois, nous publierons régulièrement sur notre blog des articles consacrés à de nouvelles fonctionnalités et à des études de cas.

Restez à l'écoute !

Vous souhaitez découvrir Tanium en action ? Prenez rendez-vous pour une démonstration individuelle ou participez à notre webinaire hebdomadaire. Venez échanger avec nos experts Tanium lors de nos prochains événements organisés dans le cadre de l' :.