Comment le PatchGuard de Windows 64 bits peut être mis en échec

Par:
fredericmazue

ven, 21/09/2012 - 11:27

McAfee vient de publier un document très intéressant et en français consacré à « PatchGuard », la fonction de protection contre les correctifs du noyau des systèmes d’exploitation fonctionnant sous Windows 64 bits.

Selon McAfee, si Microsoft  ne ménage pas ses efforts pour créer des correctifs et autres contre-mesures, la plupart de ces mesures bloquent les vecteurs d'attaques et sont inefficaces une fois que le système a été compromis.

McAfee explique que l'une des méthodes les plus courantes pour compromettre un système consiste à corriger la mémoire du noyau, notamment par l'accrochage (hooking) des fonctions ou la manipulation des objets du noyau. Le manque de documentation ou de support fourni par Microsoft a même contraint des développeurs de logiciels légitimes à utiliser ces techniques sur les systèmes Windows 32 bits. Microsoft n'est jamais parvenu à mettre un terme à ce type de compromissions sur ses plates-formes 32 bits car il est très difficile de distinguer les logiciels légitimes du code malveillant dans les correctifs appliqués au noyau.

Avec le développement de Windows 64 bits, Microsoft a décidé de protéger le noyau et certaines zones critiques de la mémoire du noyau contre l'application de correctifs. Toutes les versions de Windows 64 bits possèdent désormais un composant de protection contre les correctifs du noyau : PatchGuard. PatchGuard est exécuté de façon aléatoire et vérifie l'intégrité de plusieurs composants du noyau en mémoire. S'il détecte une incohérence dans l'un de ceux-ci, il exécute un contrôle de bogues (le célèbre écran bleu) avec le code de contrôle de bogues 0x109 pour signaler que l'intégrité du système a été compromise.

Le code de PatchGuard s'exécute aussi dans le noyau de Windows avec le niveau de privilèges processeur 0, au même titre que les autres pilotes du noyau. Il est donc possible pour un module de noyau tiers de désactiver PatchGuard ou de le tromper. Pour protéger PatchGuard contre de telles attaques, Microsoft a eu recours à de multiples pièges antipiratage, dont du code automodifié, la dissimulation de code, la vérification de l'auto-intégrité et l'exécution aléatoire afin de rendre PatchGuard difficile à localiser et à analyser. En dépit de ces mesures, certains articles ont déjà expliqué comment les premières versions de PatchGuard fonctionnaient et pouvaient être désactivées.

Le document se penche brièvement sur les principales attaques publiées et les contre-mesures développées par Microsoft. Toutes ces attaques sont difficiles à implémenter et perdent généralement de leur efficacité une fois que des HotFix et des Service Packs destinés à les contrer ont été distribués.

McAfee présente une attaque capable de désactiver PatchGuard sur différentes versions, dont Windows 7 et ses Service Packs et HotFix actuels ainsi que la version préliminaire de Windows 8 qu'il leur a été donné d'observer. Cette attaque aura pour objectif de désactiver PatchGuard et de dissimuler un processus par l'accrochage en ligne (inline hooking) du service système NtQuerySystemInformation du noyau. Le but premier de cet exercice est de démontrer qu'il est impossible de protéger complètement un système contre les compromissions en opérant uniquement à partir du système. Pour être efficaces, les solutions de sécurisation doivent détecter les modifications du système au moment précis où elles ont lieu, à la différence de PatchGuard qui identifie les modifications système après coup et court le risque d'être désactivé dans l'intervalle.

Pour consulter et télécharger ce document :

http://www.mcafee.com/fr/resources/reports/rp-defeating-patchguard.pdf