[Bonus] Kali-Linux - Metasploit – L’outil de test d’intrusion
Outil pour tester l’intrusion des systèmes par excellence où tout est automatiser et modulable à l’instar de la communauté qui l’a fait progresser via l’open source et Rapid 7 qui a bien voulu laisser un modèle free, sachant qu’il n’avait pas le choix s’il voulait encore tirer parti du projet open source de Metasploit et de sa bibliothèque principale de codes malveillants.
Metasploit tire donc sa force de la communauté, la loi du plus grand nombre mais aussi de son système innovant en matière de centralisation de toutes les données récoltées qui en fait un produit unique. Possédant tous les outils intégrés pour faire de l’énumération, recherche de vulnérabilités, exploitation,… il en fait un outil redoutable et facile d’utilisation lorsque l’on sait l’utiliser à sa juste valeur.
Pour cette première approche tactile, je pensais voir avec vous quelques commandes de base suivit d’une énumération et exploitation classique avec Metasploit. A savoir que la plupart du temps vous serez amené à effectuer la même technique et les mêmes commandes.
Pour ce tutoriel je supposerais que vous avez installé Metasploit sur vos machines si ce n’est pas le cas, il est aisé sur le site Rapid 7 de trouver divers tutoriels en français sur la manière de l’installer qui est d’une extrême facilité.
https://www.rapid7.com/fr/
Je ne m’attarderais pas non plus sur Armitage qui est juste une évolution encore plus automatisé de Metasploit mais je vais me centrer surtout sur la console MSF.
Introduction à MSFconsole
Une fois que vous arriverez à comprendre le concept et la structure claire des commandes, il sera très facile d’utiliser MSFconsole.
Le Framework Metasploit est constitué d’un noyau et de sa base (comme un OS classique), à l’intérieur il y a des exploits, des charges utiles, des modules (classes Ruby), le plugin de scripts, et des interfaces utilisateurs multiples.
Pa exemple, Si Metasploit ne fournit pas le module de collecte d'informations dont vous avez besoin, par défaut, vous pouvez simplement l’écrire vous-même (connaissance en codage Ruby obligatoire).
Pourquoi MSFconsole ? Simplement pour sa stabilité d’utilisation mais également pour sa possibilité d’utiliser des commandes externes comme PING. En effet, Metasploit ne permet pas uniquement d’utiliser ses propres outils internes et cela apporte une dimension globale pour le pentester qui n’est pas contenu dans une seule optique d’approche de sa cible.
Commande Metasploit
On va partir du fait que vous êtes sur Kali Linux 2016 2.0 (la plupart des utilisateurs sont dessus) et ainsi notre étude des commandes partira de ce postulat.
La première chose à faire comme tous bons Linuxien qui se respecte est de faire la mise à jour du produit ou outil dans notre cas.
Ouvrez une session, un terminal en mode administrateur et tapez dedans :
Code:
msfupdate
La mise à jour dit que nous devrions attendre les mises à jour hebdomadaires
Parfois des erreurs comme:
Une erreur est survenue lors de l'installation pg (0.18.3), et Bundler ne peut pas continuer.
Assurez- vous que
Code:
gem install pg
Code:
gem install pg -v 'la dernière version'
Cette erreur avait quelque chose à voir avec PostgreSQL et pour résoudre ce problème d'abord essayer d'exécuter les commandes suivantes:
Code:
apt-get update apt-get upgrade apt-get dist-upgrade
Maintenant, tapez :
Code:
msfconsole
Pour se connecter directement à la base de données de Metasploit à partir de Kali 2.0 :
Code:
db_connect -y /etc/dradis/database.yml db_status
Code:
msfdb service postgresql start msfdb init
Si vous avez un souci du genre :
“a database appears to be already configured skipping initialization”
Suite à avoir essayé de lancer une connection sur votre database alors il suffit de tapez directement sur un terminal :
Code:
msfdb delete msfdb init
Code:
cat /usr/share/metasploit-framework/config/database.yml
Code:
msf> db_status
Il n’est pas évident de connaître toutes les commandes et fonctions que Metasploit possèdent c’est pourquoi vous serez amener à utiliser souvent help.
Pour en savoir un peu plus, tapez help :
Code:
msf> help
Code:
msf> help set
Récapitulatif
Chaque module est composé de deux parties. La première contient des éléments d'information (description, références, etc.) ainsi que des éléments de configuration (architecture processeur ciblée, taille maximale de la charge utile, port, etc.). Ils sont affichés dans msfconsole lorsque l'on tape info. Les éléments qui sont à la main de l'utilisateur sont affichés lorsque l'on tape show options. La seconde partie du module contient la partie exécutable qui est généralement découpée en fonctions.
Entrons dans le vif du sujet
On va aborder dans ce chapitre, les commandes usuelles, celles que vous utiliserez le plus souvent avec Metasploit, cela permettra de vous rendre opérationnel rapidement.
Nous allons voir :
•Les commandes de base: la recherche, l'utilisation, retour, aide, information et sortie (search, use, back, help, info and exit).
•Exploit commandes: set pour définir des variables et montrer les options disponibles avec l’exploit, les cibles, les charges utiles (payloads), les encodeurs, NOPS et les options avancées d'évasion.
•Exploit commandes d'exécution: l'exécution et l'exploitation des exploits contre une cible.
Sur MSFconsole vous allez tapez le terme use suivit de l’exploit identifié. Cet exploit aura pu être identifié par rapport à l’énumération effectué en aval de l’exploitation. Nous verrons dans un second tutoriel comment utilisez Metasploit pour faire ce travail. En attendant, j’ai largement mis l’accent dans divers articles et tutoriels sur comment faire une recherche complète sur cible qui est la meilleur façon de procéder afin d’avoir le maximum d’informations collectés et disponibles pour une exploitation avantageuse.
Si vous désirez utiliser un exploit, il faudra tapez sur msf :
Code:
use [Nom de l’exploit]
Exemple:
Code:
msf> use exploit/windows/fileformat/ms14_017_rtf msf exploit(ms14_017_rtf)> help
Idem
Code:
msf exploit(ms14_017_rtf)> info
Code:
msf> search flash
Vous aurez alors tous les exploits recensées par le Framework traitant des failles sur le logiciel Flash Player. Cela va des plus anciens au plus récent. Ne vous attendez pas à avoir des Zero-Day payants qui ne seront pas partagé sur la plateforme.
Si vous voulez recherchez des exploits à l’aide de mots clés (plus judicieux et permettant d’affiner les recherche dans cet amas d’exploits), vous pouvez également utiliser la commande de recherche avec un mot-clé pour rechercher un auteur spécifique, un ID OSVDB ou une plate-forme. La commande recherche d'aide affiche les mots-clés disponibles dans la MSFconsole comme suit:
Code:
msf> help search Exemple: msf> search cve :2015
Cela nous renvoie tous les exploits avec un ID de CVE à partir de 2015.
Quelques notions essentielles avant de continuer
Exploit
Un exploit est le moyen par lequel un hacker ou un testeur de pénétration prend avantage sur une faille dans un système, une application ou un service. Un attaquant utilise un exploit pour attaquer un système et le résultat de cette attaque entraîne exécution des codes de cet exploit comme son auteur (le développeur de cet exploit) l’avait programmé. La majorité des Exploits exploite les failles du type : Buffer overflows (dépassement de mémoire), les vulnérabilités des applications Web (telles que l'injection SQL), et les erreurs de la configuration dans les applications.
Payload
Un Payload (charge utile) est le morceau du code que nous voulons que le système exécute, les payloads sont livrées par le Framework, vous serez là juste pour le sélectionné..
Par exemple, reverse Shell c’est un payload qui crée une connexion entre la machine cible à celle de l'attaquant a renvoya à celle-ci une invite de commande DOS (on appellera plus dans le chapitre 5), tandis que bind Shell est un payload qui «Lie» une invite de commande à un port d'écoute sur la machine cible, elle reste là à l’écoute pour attendre patiemment que le pirate se connecter dessus.
Un Payload peut aussi être quelque chose aussi simple que quelques commandes à exécuter sur le système d'exploitation cible.
Shellcode
Le Shellcode est constitué un ensemble des instructions utilisées par Payload lors de l'exploitation. Shellcode est généralement écrit en assembleur dans la plupart des cas, si le Shellcode est bien exécuté, une invite de commande Shell ou une Meterpreter sera fourni à l’attaquant.
Module
Les modules sont des parties d’application qu’on importe et on peut utiliser dans le Framework Metasploit. Dans certains cas on est obligé soit d’utiliser un exploit module: il s’agit un composant logiciel pour effectuer l'attaque et par fois on utilise le module auxiliaire pour augmenter la performance des actions comme le scannage, énumération de système. Avec ce système des modules interchangeables MSF est très dynamique.
Listener
Un listener est un composant de Metasploit qui attend une connexion entrante sur la machine de l’attaquant. Par exemple, après que la machine cible a été exploitée, elle peut appeler la machine attaquante par le baie de l’Internet. C’est le Listerner qui gère ces genres d’affaire, le Listener entend sur la machine d'attaquant pour être contacté automatiquement sur le système exploité quand celle-ci se met en ligne.
Commandes pour exploiter
Nous allons maintenant entrer dans le vif du sujet c'est-à-dire l’exploitation de la vulnérabilité.
Pour qu’il y est faille et surtout connaissance de cette dernière, il faut bien évidement que l’on est chercher à la trouver sur la cible.
Dans le chapitre précédent, nous avons appris les commandes Metasploit pour activer un exploit sur la MSFconsole et modifier le contexte de ligne de commande pour l'exploit avec la commande use. Nous allons examiner comment montrer les paramètres de l'exploit et comment les modifier avec la commande set. Nous chercherons aussi à la façon de montrer les charges utiles, des cibles, des options avancées et d'évasion. La commande help show affiche les paramètres disponibles:
Code:
msf> help show
Code:
msf> Use exploit/multi/browser/ adobe_flash_shader_drawing_fill
Code:
msf > show options
Nous allons prendre un exploit récent et analyser à l’aide de screen pas à pas les commandes ensemble.
Je rappelle que tout ceci constitue une introduction dans le monde de Metasploit et que nous verrons par la suite comment faire de l’énumération avec Metasploit puis comment utiliser le fameux scanner Nexpose et surtout comment utiliser la database afin de faire coïncider les résultats.
Le but étant de vous fournir des bases sérieuses et concrètes afin de pouvoir par la suite utiliser avec rapidité et efficacité l’arsenal du Framework pour vos futurs Pentest.
Personnellement, je ne l’ai utilisé qu’en dernier recours ou par dépit, je travaille généralement à la main ou avec des Tools sélectionner en rapport avec ce que j’ai trouvé comme failles. Les meilleurs que je connais créé leurs propres exploits ou en adapte à Mano afin de contourner certaines failles assez difficile à exploiter ce qui constitue la plupart du temps à des exploits en ligne sur DB-exploit ou autre gratuit ou payant suivant la difficulté du payload codé.
Lançons notre Metasploit :
Code:
/etc/init.d/postgresql start msfdb init msfconsole msf > search cve:2015
Code:
msf> use exploit/windows/smb/ms15_020_shorcut_icon_dllloader msf exploit(ms15_020_shorcut_icon_dllloader) >
https://technet.microsoft.com/fr-fr/.../ms15-020.aspx
On comprend qu’il s’agit d’une vulnérabilité de 2015 qui met en place un fichier dll compromis qui va permettre l’exécution de code à distance (Remote Execution File).
https://www.rapid7.com/db/modules/ex...icon_dllloader
Ce module exploite une vulnérabilité dans le patch MS10-046 à abuser (encore une fois) la manipulation des fichiers de Windows raccourci (.LNK) qui contiennent une ressource icône pointant vers une DLL malveillante. Cela crée une ressource SMB pour fournir la charge utile et la détente, et génère un fichier LNK qui doit être envoyée à la cible. Ce module a été testé avec succès sur Windows 2003 SP2 avec MS10-046 installé et Windows 2008 SP2 (32 bits) avec MS14-027 installés.
On a donc la description, la source, l’auteur et surtout on a grâce à show options les informations que l’on doit fournir au module pour qu’il soit activer.
On va choisir un autre exploit et on va avancer dans son développement.
Tapez back pour revenir à msf>.
Code:
msf > Use exploit/multi/browser/ adobe_flash_shader_drawing_fill
Code:
msf > show options
• Retries
• SRVHOST (obligatoire)
• SRVPORT (obligatoire)
• SSL
• sslcert
• URIPath
On va réglez les deux principaux afin que le module soit prêt ainsi :
set SRVHOST 192.168.0.100 pour changer la valeur de SRVHOST à 192.168.0.100
set SRVPORT 80 pour changer le port de 8080 vers 80
On vérifie que tout s’est bien passé avec show options.
Ensuite, on va tapez :
Code:
show payloads
Cette commande va nous montrer tous les payloads (charges utiles) disponibles et compatibles avec l’exploit activé.
Choisir et configurer un payload (code qui s'exécutera après s'être introduit dans la machine cible, par exemple pour avoir accès à un Shell distant ou un serveur VNC).
Pour utiliser une certaine charge utile, vous devez utiliser la commande set suivie du nom de la charge utile.
Exemple :
Code:
msf > use windows/smb/ms08_067_netapi msf exploit(ms08_067_netapi) > set payload windows/meterpreter/reverse_tcp payload => windows/meterpreter/reverse_tcp
Le pare-feu de la victime bloque / filtre tous les ports, il est donc impossible d'établir une connexion tcp à cet ordinateur particulier. Cependant ledit ordinateur est autorisé à établir des connexions à des hôtes distants (pas de filtrage sortant).
On peut donc exploiter d'une manière telle que la victime lance la connexion tcp elle-même à l'attaquant. L'attaquant à son tour exécute un auditeur, en attendant l'appel entrant.
C’est un Shell qui exécute cela dans ce cas « reverse tcp », il est codé pour accomplir cette tâche ci-dessus, cependant il faudra alors l’encoder de manière à l’obfusquer des différents AV et AM que pourrait avoir le système cible.
Montrer les cibles
La commande show targets (montrer les cibles) retourne une liste des systèmes d'exploitation qui sont vulnérables à la sélection exploit. Quand nous utilisons la commande, nous obtenons la sortie suivante pour adobe_flash_shader_drawing_fill :
Code:
show targets
Code:
Set target 0
Afficher les paramètres avancés
En utilisant la commande show advanced, nous pouvons avoir un regard sur les options avancées pour l'exploit.
Code:
show advanced
Code:
set displayablepayloadhandler true
Afficher les encodeurs
La commande show encoders renvoi les codeurs compatibles. Encoders est utilisé pour échapper à de simples signatures IDS/IPS qui sont à la recherche de certains octets connu du payload.
Voici un lien où le principe est détaillé afin d’avoir une bonne compréhension du principe.
http://igm.univ-mlv.fr/~dr/XPOSE2009...S_IPS/IDS.html
Pour utiliser un encodeur utiliser la commande set suivie du nom du codeur.
Afficher les générateurs disponibles NOPS
La commande show nops retourne une liste des générateurs NOP. Un NOP est utilisé pour changer le modèle d'un sled NOP afin de contourner IDS simples / signatures IPS des sled NOP communs. Les générateurs NOP commencent avec l'architecture du CPU.
En sécurité informatique, un, NOP slide est une séquence de NOP (non-opération) des instructions destinées à "glisser" le flux d'exécution d'instructions du processeur à son final souhaitée, la destination à chaque fois que le programme des branches à une adresse mémoire partout sur le sled.
Pour utiliser un générateur de NOP utiliser la commande set suivie du nom du générateur de NOP. Lorsque l'exploit est lancé les sled NOP seront pris à partir du générateur de NOP.
Code:
msf > use nop/php/generic msf nop(generic) > show options ...show and set options... msf nop(generic) > run
Afficher les différents types d’évasion
La commande show evasion retourne une liste de techniques d'évasion disponibles pour le payload sélectionner.
Code:
show evasion
Commandes Metasploit pour exploiter l'exécution
Lorsque toutes les options nécessaires ont été fixées pour l'exploit, y compris le payload et les paramètres avancés comme un générateur de NOP, les options d'évasion et l'encodage, l'exploit est prêt à être exécuté. L'exploit peut être exécuté à l'aide de deux commandes:
Code:
run et exploit
Ainsi se termine ce premier chapitre concernant les commandes de Metasploit, voici les chapitres suivants qui seront érigé en temps et en heures suivant mes prérogatives : sport, travail, famille,…
- Kali Bonus I - Metasploit Commande et usage
- Kali Bonus II - Metasploit Énumération Date : 30/09/2016
- Kali Bonus III - Metaspoit Scanner de Vulnérabilités "A suivre"
- Kali Bonus IV - Metasploit utilisation et ajout Exploit "A suivre"
- Kali Bonus V - Metasploit utilisation de la base de données "A suivre"
- Metasploit VI - Récapitulatif et commande avancée (écrire un module) "A suivre"
- Metasploit VII - Armitage la facette GUI de Metasploit "A suivre"
PS : Prenez bien en compte ses bases car dans les prochains chapitres vous allez mangez abondamment des commandes supplémentaires, ceci tenant comme acquis. Le but étant de pouvoir comprendre et surtout d'utiliser intelligemment de manière autonome Metasploit.
Merci à tous pour avoir pris le temps de lire ce tutoriel et à bientôt.
Commentaire