Mirai Write-Up

Fecha de lanzamiento1 Sep 2017
EstadoRetirada
DificultadEasy
PlataformaLinux
IP10.10.10.48

Información de la máquina


RECONOCIMIENTO

Mediante el escaneo con la herramienta nmap podemos observar los puertos que tiene la máquina víctima expuestos.

Puerto 80 – http

Si visitamos la web en el navegador, no tenemos ningún contenido. Sin embargo, mirando las cabeceras de respuesta del servidor, vemos X-Pi-Hole.

Pi-hole es una aplicación para bloqueo de anuncios y rastreadores en Internet​​​​ a nivel de red en Linux que actúa como un sumidero de DNS​, destinado para su uso en una red privada. Si echamos un ojo a la documentación de su repositorio de Github, vemos que para acceder al DashBoard tenemos que irnos al directorio /admin/.

Existe un módulo de inicio de sesión, pero vamos a descartar de momento esta vía ya que no tenemos ningún tipo de credenciales.

Puerto 32400 – http

Se trata de un Servidor Media Plex. No tenía ni idea de que era esto, pero buscando en Internet parece que se trata de un servidor multimedia. Funciona como un cliente de archivos multimedia y los clientes pueden acceder a él para reproducir entre otras cosas.

Vemos que tenemos un panel de inicio de sesión. No tenemos ninguna credencial, pero podemos crear una cuenta de 0.

Lo único que tenemos interesante es la versión del servicio, que podemos observarla dentro de la página de configuración.

Sin embargo, no he sido capaz de encontrar exploit interesantes para esta versión de Plex, por lo que vamos a descartar esta vía también.

Puerto 1089 & 32469 – Platinum UPnP

Ni idea tampoco de que era esto. Al parecer es un servidor UPnP.

Universal Plug and Play (UPnP) es el sistema que automatiza el descubrimiento de dispositivos en una red local, lo que permite que diferentes dispositivos de la misma red se identifiquen y conecten automáticamente entre sí.

Al igual que lo anterior, no hay exploits interesantes ni vías de ataques para ello. Así que lo descartamos también de momento.

Puerto 22 – SSH

En cuanto empezamos el escaneo, el propio nombre de la máquina nos está dando una pista.

Mirai es una botnet cuyo objetivo son dispositivos del llamado Internet de la Cosas (en inglés, Internet of Things, abreviado IoT). Los principales objetivos de este malware han sido los routers, grabadoras digitales de vídeo y cámaras IP de vigilancia.

El principal método de infección deMirai es mediante el uso de credenciales por defecto que el malware incluye ya que muchas de las cuales son usadas en dispositivos IoT donde la seguridad en muchos casos en deficiente.

Sabiendo esto, y sabiendo por servicios como PiHole que estamos ante una Raspberry Pi, vemos que en Internet tenemos información de las credenciales por defecto de estos dispositivos.

Y efectivamente, estas credenciales no han sido cambiadas y podemos acceder a través de SSH.

La escalada de privilegios no tiene dificultad ninguna. Somos miembros del grupo Sudo, así que con un simple sudo su, ya tenemos máximos privilegios en la máquina y podemos obtener las dos flags.

Bonus – Root.txt

Si intentamos ver la flag del usuario ROOT, vemos el siguiente archivo de texto.

Vemos que el dispositivo usb se encuentra en /dev/sdb y que está montado en /media/usbstick. Si nos metemos, únicamente tenemos un archivo de texto y un directorio vacío.

Al parecer también se ha borrado del USB, pero en estos casos es posible que aunque el archivo no exista, el contenido pueda ser recuperable de diferentes maneras.

    Mediante el comando strings, es posible recuperar esta información.

    De forma adicional, existe una herramienta en Linux llamada extundelete que va a ayudarnos en la recuperación de archivos borrados. Para su uso, vamos a realizar una copia del USB para trabajar de forma local en nuestra máquina.

    sshpass -p raspberry ssh pi@10.10.10.48 "sudo dd if=/dev/sdb | gzip -1 -" | dd of=usb.gz
    • sshpass -p raspberry –> input de la contraseña a utilizar en siguiente comando
    • ssh pi@10.10.10.48 –> sesión SSH a la máquina
    • sudo dd if=/dev/sdb –> Lee todo del device y lo muestra por pantalla
    • gzip -1 - –> comprime el resultado del comando anterior y el output lo devuelve por pantalla.
    • dd of=usb.gz –> escribe el output de todo el comando realizado en la máquina víctima como archivo usb.gz, esto ultimo ya a nivel local.

    Si descomprimimos el archivo y usamos la herramienta, vemos que hemos podido recuperar el archivo:

    Jorge Escrito por: