Exploitation du privilège SeLoadDriverPrivilege

Le privilège SeLoadDriverPrivilege, comme son nom l'indique, va nous permettre de charger un module au sein du kernel Windows. Du point de vue d'un attaquant, l'obtention d'un compte disposant de ce privilège est une véritable aubaine puisqu'il va tout simplement nous permettre d’élever nos privilèges et ainsi devenir administrateur local de la machine.


En examinant les privilèges de l'utilisateur on se rend compte que nous disposons du privilège SeLoadDriverPrivilege:

Nous disposons donc des droits suffisants pour charger des drivers au sein du kernel Windows. Quel intérêt cela pourrait présenter ? Eh bien chaque module windows tourne au niveau kernel, ce qui veut dire que si par malheur nous pouvions charger un driver vulnérable, nous pourrions ensuite l'exploiter de manière à obtenir les droits NT System sur le serveur.

Donc la première chose dont nous allons avoir besoin, c'est un driver vulnérable. Le driver le plus connu est probablement le driver capcom. En effet ce driver est vulnérable à une exécution de commande ce qui fait qu'à partir du moment où le driver sera chargé, nous pourrons exécuter n'importe quelle commande sous les droits NT System.

Ensuite nous allons avoir besoin du binaire EoPLoadDriver. Ce binaire va en fait nous permettre d'activer le privilège SeLoadDriverPrivilege (même s'il est déjà activé dans notre cas), de créer la clé de registre relative à notre driver et d'exécuter l'appel à la fonction NTLoadDrive qui chargera le driver vulnérable.

Nous allons donc devoir uploader ces deux binaires sur le serveur cible. Comme nous disposons d'un shell Evil-WinRM nous pourrons le faire assez simplement avec la commande upload:

upload Capcom.sys
upload EOPLOADDRIVER.exe

Pour que l'exploit final fonctionne il faudra uploader tous les fichiers mentionnés dans le répertoire c:\temp. Si ce dernier n'existe pas il faudra le créer.

Ensuite il faudra exécuter le binaire EOPLOADDRIVER.exe en lui spécifiant l'emplacement de la clé de registre à créer ainsi que le chemin du driver:

.\EOPLOADDRIVER.exe System\CurrentControlSet\Pwned C:\Temp\Capcom.sys

Ce qui donnera l'output suivant:

Etant donné que le privilège SeLoadDriverPrivilege est déjà activé nous aurions aussi pu simplement charger notre driver à la main via l'utilitaire sc:

sc.exe create Pwned type=kernel binPath=C:\Temp\Capcom.sys
sc.exe start Pwned

Notre driver est bien chargé, Il ne nous reste plus qu'à l'exploiter.

L'exploit le plus courant a été écrit par Tandasat et est disponible sur sa page Github: https://github.com/tandasat/ExploitCapcom. Comme vous pouvez le voir, son exploit lance un second shell avec les droits NT System. Le souci c'est que nous n'avons pas d'interface graphique. Autrement dit il va falloir customiser un peu l'exploit pour que ce dernier nous renvoie un reverse shell!.

Ou du moins c'est ce que je pensais faire avant de tomber sur un répo pour le moins suspicieux qui contenait une version moddée de l'exploit:

Tout ce que nous avons à faire ici c'est d'uploader le binaire ExploitCapcom_modded.exe, le script netcat.bat (qu'il faudra bien évidemment modifier au préalable) ainsi que le binaire nc dans le répertoire c:\temp\ (si nécessaire il faudra le créer):

Il ne nous restera plus qu'à mettre un listener en écoute sur notre machine et lancer l'exploit ExploitCapcom_modded.exe pour obtenir un shell root:

GGWP :)!


Revision #2
Created Fri, Sep 4, 2020 11:54 AM by Defte
Updated Fri, Sep 11, 2020 12:02 PM by Defte