Tutoriel - 📑 Exploiter le noyau NT dans 24H2 : Nouvelles failles dans un vieux code et canaux auxiliaires contre KASLR Tutoriel - 📑 Exploiter le noyau NT dans 24H2 : Nouvelles failles dans un vieux code et canaux auxiliaires contre KASLR
  • 📝Note

    Notre forum se distingue de la concurrence autant par son accueil chaleureux que par l'abondance et la qualité de son contenu. Si vous envisagez de vous inscrire et de rejoindre notre communauté dynamique, veuillez noter que l'accès au contenu complet du forum est réservé aux membres qui se sont présentés (ayant au moins un message posté) ou qui ont été approuvés. De plus, si votre intention est de vous inscrire uniquement pour extraire des informations sans participer activement, nous vous conseillons de ne pas procéder à l'inscription, car vous ne pourrez accéder qu'à la section de présentation.


    ⚠️Avertissement

    L'utilisation d'un VPN ou d'un Proxy est interdite lors de votre inscription. Cette mesure vise à protéger notre communauté contre les individus malveillants ou indésirables. Toute tentative d'inscription via un Proxy ou un VPN sera considérée et traitée comme du SPAM et sera systématiquement rejetée.

Tutoriel 📑 Exploiter le noyau NT dans 24H2 : Nouvelles failles dans un vieux code et canaux auxiliaires contre KASLR

Sylvain

Membre du Staff
Administrateur
Membre VIP
Membre
🚀 Introduction

Cet article couvre le processus de découverte de multiples vulnérabilités du noyau introduites dans 24H2 et d'écriture d'un exploit, y compris la contournement des nouvelles mesures de renforcement de l'ASLR du noyau (KASLR).



🏷️ Prérequis

• Connaissance de l'ingénierie inverse

• Connaissance des failles de double-fetch

• Accès au code source et compilateur de Microsoft



📝 Procédure


⚙️ Nouvelles failles dans l'ancien code

• En analysant diverses parties du noyau NT dans 24H2, j'ai découvert deux vulnérabilités de type double-fetch de la mémoire en mode utilisateur.

• Ces bugs étaient particulièrement intéressants car ils apparaissaient dans du code présent depuis longtemps qui était auparavant sûr.




⚙️ Changements concernant la volatilité de la mémoire en mode utilisateur

• Il semble y avoir eu des modifications larges pour traiter la mémoire en mode utilisateur comme volatile dans le noyau.

• Un élément de preuve est l'ajout d'une nouvelle fonction de copie de mémoire nommée RtlCopyVolatileMemory.

Code:
RtlCopyVolatileMemory

• Cette fonction se comporte exactement comme RtlCopyMemory mais explicitement pour accéder à la mémoire volatile.

• Voici quelques exemples :

• Cas 1 : une lecture de 4 octets de la mémoire en mode utilisateur dans NtCreateTimer2

Fz8aHtT.png


• Cas 2 : une lecture de 16 octets de la mémoire en mode utilisateur dans ObpCaptureBoundaryDescriptor

8Ee3VaS.png





⚙️ CVE-2024-26218 : Double-Fetch dans PspBuildCreateProcessContext conduit à un débordement de tampon sur la pile

• Le NtCreateUserProcess syscall traite la liste d'attributs PS_ATTRIBUTE_LIST en mémoire utilisateur.

• La fonction PspBuildCreateProcessContext contient un double-fetch du champ Size dans PS_ATTRIBUTE, déclenchant un débordement de tampon sur la pile.

• Code source et désassemblage pour 23H2 (non vulnérable) et 24H2 (vulnérable) :

23H2

x8HzBbE.png


24H2

lUsEOaY.png





⚙️ CVE-2024-21345 : Double-Fetch dans NtQueryInformationThread conduit à une écriture arbitraire

• Ce bug permet de contourner la sonde d'une adresse fournie par l'utilisateur.

• Le NtQueryInformationThread syscall contient une grande instruction switch pour différents types d'informations.

• La vulnérabilité se trouve dans la classe ThreadTebInformation, permettant de lire des parties du TEB du thread.

23H2

t6fTnQZ.png


24H2

vJ7NkZt.png





⚙️ KASLR dans 24H2

• Dans les versions précédentes de Windows, la défaite de KASLR était triviale grâce à des syscall incluant des pointeurs du noyau.

• En 24H2, ces fuites d'adresses de noyau ne sont plus disponibles pour les appelants non privilégiés.

• Une nouvelle technique est nécessaire pour déterminer la disposition du noyau.




⚙️ EntryBleed & Introduction au préchargement

EntryBleed utilise un canal latéral de synchronisation pour déterminer l'adresse du noyau.

• La fonction prefetch charge une adresse dans le cache du CPU, sans se soucier si l'adresse est en mode noyau.




⚙️ Préchargement sur Windows

• J'ai découvert que le KVA shadowing est désactivé sur les machines modernes sous Windows 11.

• Cela signifie que l'espace d'adressage du noyau est présent dans les tables de pages en mode utilisateur.

• Une attaque de préchargement contre Windows est décrite dans un article de Daniel Gruss, Clémentine Maurice et Anders Fogh (2016).

• Un outil fiable pour déterminer l'adresse de base du noyau est disponible sur GitHub.

vSfVj4l.png





⚙️ Exploitation

• Nous avons contourné le KASLR et localisé l'adresse de base du noyau en mémoire.

• Nous avons une vulnérabilité permettant d'écrire des données arbitraires dans le noyau.




⚙️ Construction d'une lecture du noyau

• Nous devons créer un primitive de lecture en modifiant un global dans le noyau.

• La classe SystemManufacturingInformation dans le syscall NtQuerySystemInformation copie une structure globale UNICODE_STRING en mémoire utilisateur.

• En écrasant les valeurs dans la structure globale, il est possible de lire depuis une adresse arbitraire et de retourner les données en mémoire utilisateur.




⚙️ Liste de contrôle avant l'élévation

✅Contournement de l'ASLR du noyau

✅Écriture arbitraire dans le noyau

✅Lecture arbitraire dans le noyau




⚙️ Exploitation réelle : Échange de jetons

• La technique utilisée consiste à échanger le jeton de processus avec celui d'un processus privilégié.

• Après l'échange de jetons, nous pouvons créer un processus avec des privilèges élevés.

YwNsyj6.png





💡 Conseil

• Consulter le code source et le compilateur pour éviter des modifications incongrues.




🔗 Référence

Recherche Support Microsoft

Recherche Learn Microsoft

Recherche Google

Recherche Bing




🏁 Conclusion

En conclusion, les vulnérabilités découvertes dans 24H2 montrent les risques associés aux modifications des anciens codes. La contournement de KASLR reste un défi, mais des techniques comme le préchargement peuvent encore être exploitées pour des attaques réussies.
 

Un don pour TE

Campagne 2024

Aidez-nous à financer l'hébergement
Objectif
325.00 €
Reçu
193.97 €
Cette collecte de dons se termine dans

Record d'assistance en ligne

Membres: 6 le 9 Apr 2024
Invités: 344 le 29 Mar 2024
Record d'assistance : 344 , le 29 Mar 2024

Visiteurs en ligne

Membres
0
Invités
77
Total
77

Statistiques du forum

Discussions
14 200
Messages
24 207
Membres
439
Dernier inscrit
Djodjo_1988
General chit-chat
Aides Utilisateurs
  • Personne ne discute en ce moment.
      Marcel_By_mtr Marcel_By_mtr: @demain
      Retour
      Haut Bas