Logo du Site

Le Max De Culture

Logo du Site

Le Max De Culture

Exploitation d’une faille de chemin sur Windows

Par BIGMAC le 16/06/2019

Tout d’abord, je dois vous parler de ce soir où, posé sur mon ordinateur, je regardais une conférence OVH sur YouTube, vous vous demandez sûrement pourquoi je vous parle de cela ? Dans cette conférence, ils parlaient justement de la faille que nous allons présenter aujourd’hui.

Effectivement, nous pouvons observer que, par défaut, votre session windows contient un planificateur de tâches qui permet de planifier des programmes/services pour des tâches sur votre session, et souvent ces tâches sont planifiées pour être lancées dès que votre ordinateur s’allume.

Tout d’abord, qu’est-ce que la fonction system() ?

La fonction system est une fonction en c/c++ permettant d’exécuter des commandes systèmes sur l’OS sur lequel vous exécutez votre programme ! Jusque-là rien d’exceptionnel, elle peut par exemple exécuter ce genre de commande avec ce type de programme basique :

Alors bien sûr, comme tout type de fichiers, les programmes (ou tâches) sont stockés à un certain endroit et possèdent un certain chemin, parfois ces chemins possèdent des guillemets pour indiquer que ce sont bien des chemins ex : « C:\Programmes oto.exe », sauf que, malheureusement, tous les chemins d’accès ne possèdent pas des guillemets alors évidemment si un chemin comme celui-ci par exemple :

ne possède pas de guillemet cela ne sera pas problématique car il pourra être lu en une fois, mais si le chemin possède des espaces, c’est là que ça devient faillible.

Pour comprendre ce qui va suivre il va falloir comprendre la logique de Windows, vous vous demandez sûrement de quoi je parle? Ne paniquez pas, je vais vous expliquer.

Prenons en exemple ce chemin d’accès C:\Program files(x86)\ dossier faille \dropbox

Nous pouvons voir qu’il y a un espace entre « Program » et « files » et que cela ne pourra pas être lu par l’ordinateur comme un répertoire, Windows a donc mis en place une technique pour différencier les noms de répertoire avec des espaces et les tâches à exécuter, on va regarder si la chaîne de caractères qu’on analyse contient un espace ou un « / » après, si il contient un espace, on va se dire que c’est possiblement un exécutable, donc on va regarder si l’exécutable existe et si il n’existe pas on met la chaine de caractères comme répertoire, puis on tente de regarder dans chaque répertoire si il y avait le programme jusqu’à tomber sur le programme. Petit exemple pour illustrer tout ça :

Donc nous avons le chemin C:\Program files(x86)\dossier faille\dropbox

Windows a donc détecté un espace, il va donc regarder si il existe un Program.exe, et après il fera de même en regardant si il existe un dossier.exe.

Jusqu’à tomber sur le programme dropbox.exe.

Et c’est à ce moment-là que la faille rentre en compte, imaginons qu'un attaquant décide de mettre un Program.exe dans le répertoire « c:\ »en analysant ce chemin et en regardant si un Program.exe existe, il va donc en trouver un? que va-t-il faire ? il va l’exécuter alors qu’il ne devrait même pas être exécutable (et en plus de ça il n’exécutera pas dropbox.exe)

Pour vous démontrer cet exemple je vais faire un petit test

J’ai ici un petit programme en C (très basique)

On va donc compiler ce programme, le renommer Program.exe et le mettre dans le répertoire C:\

On redémarre l’ordinateur et on peut voir qu'au démarrage le programme a été exécuté.

Comme vous pouvez le voir, Windows a quand même essayé de mettre quelque chose pour que ce soit possible d’arrêter le programme (malgré qu’il soit déjà lancé). Malgré tout, ce n’est pas forcément une sécurité suffisante (il suffit que la victime de l’attaque ne remarque pas ou s'en moque et le programme continuera à être exécuter et n’exécutera pas certaines tâches) en plus de ça, un attaquant pourra faire une attaque beaucoup plus intelligente (en exemple sur c:\Program Files(x86)\dossier faille\dropbox il pourra mettre un dossier.exe dans Program Files(x86))

Alors que nous avons vu la faille on va pouvoir voir à quoi peut servir cette faille et comment s’en protéger.

A quoi peut servir cette faille ?

Comment s’en protéger ?

Source