Mirai DDoS Botnet: Análisis de Código Fuente y Binarios

Mirai es una botnet de DDoS que ha saltado a los medios de comunicación recientemente debido a varios ataques de alto impacto: uno al periodista Brian Krebs y el segundo uno de los mayores ataques en Internet hasta la fecha realizado el pasado viernes 21 de octubre 2016 contra el ISP Dyn, que desconectó una gran parte de Internet.

Aparte de la cobertura mediática, Mirai es muy interesante porque por un lado tenemos binarios reales capturados de sistemas comprometidos y, por otro, el código fuente fue liberado recientemente, por lo que seguramente podemos esperar muchas variantes de Mirai próximamente. El tener binarios y código fuente nos permite estudiar este malware con más detalle.

Lo que es realmente sorprendente es que estando en el 2016 todavía hablemos de gusanos, contraseñas débiles / por defecto y ataques DDoS: hola gusano de Morris (1988) y proyecto Rivolta (2000), por mencionar algunos.

Análisis de código fuente

Hemos compilado el código fuente de Mirai con Tintorera, una herramienta de análisis estático desarrollada por VULNEX que genera inteligencia mientras se compila código C/C++, proporcionando una rápida panorámica del código.

Con Tintorera obtenemos un resumen en detalle de la aplicación que muestra archivos compilados, numero de líneas de código, comentarios, líneas en blanco y otras métricas de interés. Tintorera también calcula el tiempo necesario para auditar el código. Mirai es un proyecto pequeño y no demasiado complicado de auditar. (Figura 1)

srf_mirai_sc1
Figura 1

Mirai utiliza diferentes funciones del API de Linux, principalmente relaciones con operaciones de red. (Figura 2)

srf_mirai_sc2
Figura 2

En el informe de inteligencia generado por Tintorera tenemos un listado de archivos, nombres de funciones, bloques básicos, Complejidad Ciclomática, llamadas al API y ensamblador en línea utilizado por Mirai. Al examinar esta lista nos hacemos una idea del código. (Figura 3)

srf_mirai_sc3
Figura 3

En el archivo killer.c existe una función llamada killer_init que mata diversos servicios: telnet (puerto 23), ssh (puerto 22) y http (puerto 80) para impedir acceso al sistema comprometido por otros. (Figura 4)

srf_mirai_sc4
Figura 4

En el mismo archivo, killer.c, otra función llamada memory_scan_match busca en memoria indicadores de otros malware. (Figura 5)

srf_mirai_sc5
Figura 5

La función get_random_ip del archivo scanner.c genera IPs aleatorias que atacar, exceptuando direcciones de la siguiente lista blanca de General Electric, Hewlett-Packard, el servicio de correo y el departamento de defensa americanos. (Figura 6)

srf_mirai_sc6
Figura 6

Mirai contiene una lista de 62 contraseñas por defecto / débiles para realizar ataques a dispositivos IoT. Esta lista esta declarada en la función scanner_init del archivo scanner.c. (Figura 7)

srf_mirai_sc7
Figura 7

En el archivo main.c tenemos la función principal que impide que el dispositivo comprometido pueda reiniciar, para ello Mirai mata el servicio watchdog, y también lanza el scanner buscando nuevas víctimas, otros dispositivos IoT. En la Figura 8 vemos el callgraph de este archivo.

srf_mirai_main_callgraph
Figura 8

Mirai tiene capacidades ofensivas que consiste en lanzar ataques DDoS utilizando diferentes protocolos: UDP, TCP y HTTP.

Análisis de binarios

Ahora es el turno del análisis de binarios. Hasta el momento hemos analizado 19 binarios, obtenidos de distintas fuentes, para las siguientes arquitecturas: x86, ARM, MIPS, SPARC, Motorola 68020 y Renesas SH (SuperH).

Para el análisis de binarios hemos utilizado la plataforma BinSecSweeper de VULNEX, que permite analizar binarios y otros tipos de ficheros en gran detalle combinando SAST y Big Data.

En la Figura 9 tenemos gráfico del tipo de ficheros y arquitectura de los binarios. Todas las muestras son 32 bits.

srf_mirai_bin2
Figura 9

Mediante el uso de BinSecSweeper hemos obtenido mucha información de cada muestra, similitudes entre ellos y diversas vulnerabilidades. Actualmente no muchos Antivirus identifican todas las muestras, así que cuidado con el Antivirus que utilices! En la Figura 10 tenemos una visualización del tamaño de los ficheros en bytes.

srf_mirai_bin1
Figura 10

También hemos analizado todas las secciones de la cabecera ELF de las muestras. (Figura 11)

srf_mirai_bin3
Figura 11

Como se mencionó anteriormente, las muestras son para diferentes arquitecturas, por lo que en este post no mostraremos el análisis de código.

Hemos actualizado el motor de análisis de BinSecSweeper para identificar el malware Mirai. Un informe al completo del análisis de binarios esta disponible para los clientes de los servicios de Ciber Inteligencia de VULNEX, por favor visiten nuestra web o póngase en contacto con nosotros para mas información.

Conclusiones

A pesar de ser un código bastante simple, Mirai tiene interesantes capacidades ofensivas y defensivas y se ha hecho un nombre. Ahora que el código fuente ha sido liberado es solo cuestión de tiempo que veamos variantes de Mirai.

Mirai botnet es una llamada a los fabricantes de dispositivos IoT para que mejoren la seguridad. Por desgracia, ya existen millones de dispositivos IoT inseguros en internet, por lo que habrá muchos más ataques IoT en un futuro cercano.

¿Qué opinas sobre la seguridad de Internet de las cosas (IoT)?

— Simon Roses Femerling / Twitter @simonroses

Publicado en Hacking, Malware, Seguridad, Tecnologia | Etiquetado , , , , , , | 1 comentario

Solución CTF: Fristileaks 1.3

Esta VM vulnerable es un divertido y simple CTF que puede descargarse desde el estupendo portal VulnHub.

Nota: Para vmware puede ser necesario configurar la dirección MAC 08:00:27:A5:A6:76 para conseguir que funcione (obtenga DHCP). Yo lo hice, ver Fig 1.

srf_fristileaks_1

¡Que comience el juego!

En este caso ya sé la dirección IP, por lo que empezamos lanzando un escaneo nmap. Del resultado podemos ver solo 1 puerto abierto (HTTP) y el archivo robots.txt con algunos directorios.

srf_fristileaks_2

Abrimos el sitio Web.

srf_fristileaks_3

Nada interesante por el momento. Ahora vamos a probar abrir el robots.txt

srf_fristileaks_4

En estos directorios solo encontramos una imagen del Jedi Obi-Wan Kenobi y nada más.

srf_fristileaks_5

Pensando un poco en próximos pasos y teniendo en cuenta que este es el juego fristi, llegamos a la siguiente URL; un portal admin con inicio de sesión y contraseña.

srf_fristileaks_6

Revisando el código HTML encontramos que la imagen se codifica en Base64 y también un posible nombre de usuario: eezeepz

srf_fristileaks_7

Mirando más de cerca el código fuente HTML nos encontramos con otro texto posiblemente codificado en base64.

srf_fristileaks_8

Vamos a poner el texto codificado en base64 en el decodificador de Burp Proxy. Vemos una cabecera PNG. ¡Suena a una imagen!

srf_fristileaks_9

Escribamos un script en Python para obtener la imagen.

srf_fristileaks_10

Abrimos la imagen y ¡tiene pinta de ser una contraseña!

srf_fristileaks_11

Ahora tenemos un nombre de usuario y una contraseña. ¡Continuemos!

srf_fristileaks_12

Genial, tenemos acceso al portal.

srf_fristileaks_13

Podemos subir una imagen.

srf_fristileaks_14

¿Por qué no una webshell? :) Modificamos una de las que trae Kali para añadir mi dirección IP.

srf_fristileaks_15

Subimos la webshell pero ocurre un error. ¡Algún tipo de filtro!

srf_fristileaks_16

Abrimos Burp Proxy para intentar saltar el filtro, cambiando el nombre del archivo para agregar una extensión “.png”.

srf_fristileaks_17

Perfecto! filtro saltado y tenemos una webshell subida.

srf_fristileaks_18

Llamemos a nuestro webshell

srf_fristileaks_19

Recuerda que antes de llamar a la webshell debemos poner Netcat a la escucha. Caballeros, tenemos shell :)

srf_fristileaks_20

Un buen lugar para empezar es analizar el código de la aplicación web, escrita en PHP. En el directorio /var/ podemos ver un directorio llamado /fristigod/ del usuario fristigod, interesante.

srf_fristileaks_21

Hurgando en el directorio /var/www/ encontramos un archivo llamado notes.txt.

srf_fristileaks_22

En el directorio /home/ podemos ver varios usuarios.

srf_fristileaks_23

Dentro del directorio /eezeepz/ encontramos otro archivo notes.txt con un mensaje interesante. Podemos ejecutar comandos, ¡genial!

srf_fristileaks_24

Vamos a ejecutar un comando para poder acceder al directorio /admin/ utilizando el truco del archivo /tmp/runthis.

srf_fristileaks_25

Dentro del directorio /admin/ vemos un montón de archivos interesantes.

srf_fristileaks_26

Tenemos algunos archivos cifrados y un script de Python utilizado para cifrar los archivos.

srf_fristileaks_27

Es hora de un poco más de Python, vamos a modificar el script de cifrar para descifrar los archivos.

srf_fristileaks_28

Ahora que tenemos algunas contraseñas vamos a cambiar nuestro actual usuario al usuario fristigod. Recuerda que uno de los archivos cifrados se llamaba «whoisyourgodnow.txt». Necesitamos una terminal real por lo que vamos a conseguir una, una buena chuleta aquí.

srf_fristileaks_29

El contenido del directorio /fristigod/ no revela nada.

srf_fristileaks_30

Recordamos que en el directorio /var/ teníamos un directorio llamado /fristigod/. En este directorio podemos encontrar algunos archivos interesantes, ¡incluso ejecutar un binario con permisos root!

srf_fristileaks_31

Al examinar el archivo. bash_history aprendemos cómo ejecutar el anterior binario root.

srf_fristileaks_32

Es momento de examinar el contenido del directorio /root/ utilizando el binario root.

srf_fristileaks_33

Premio! Tenemos shell de root y la bandera :)

srf_fristileaks_34

¡Felicitaciones al autor por crear este divertido CTF!

¿Has conseguido root y la bandera utilizando otras tácticas?

— Simon Roses Femerling / Twitter @simonroses

Publicado en Hacking, Hacking Etico, Seguridad, Tecnologia | Etiquetado , , | Deja un comentario

Análisis del APT Equation mediante la plataforma de Security Data Science: BinSecSweeper

Como muchos lectores sabrán, en VULNEX llevamos tiempo trabajando en nuestro proyecto BinSecSweeper, cuyo desarrollo comenzó en el 2013 gracias a una beca de I+D ofrecida por el DARPA dentro de su programa piloto Cyber Fast Track (CFT), y además fuimos la única startup española en ganar una de estas becas. En mayo del año pasado fui invitado al Pentágono por el DARPA para presentar mi proyecto junto a los otros participantes del CFT. ¡Toda una experiencia!

Desde entonces BinSecSweeper ha cambiado en todos los sentidos gracias a una fuerte apuesta en ingeniería durante este último año. Con la aparición de tantos APT últimamente, he pensado que sería interesante analizar un APT reciente que ha dado mucho que hablar utilizando técnicas de Data Science: Equation APT Group.

Para este análisis he conseguido 419 ejecutables Windows que vamos a proceder a examinar con BinSecSweeper, ¡veamos los resultados del análisis!

En la Fig. 1 tenemos el panel del proyecto y podemos ver de forma rápida un sumario del análisis. BinSecSweeper, al identificar malware y vulnerabilidades de carácter elevado, ha establecido el nivel de alerta en severo (basado en el sistema de seguridad de EE.UU. Homeland). También nos llaman la atención diferentes características como Packers, Información Identificable y similitudes entre binarios.

binsecsweeper_Online1
Fig. 1.

En Métricas (Fig. 2) vemos más detalle sobre el análisis. La métrica que más nos interesa, por lo menos a mi, son los riegos identificados y el número de ficheros afectados. BinSecSweeper ha identificado riesgos muy interesantes en este APT.

binsecsweeper_Online2
Fig. 2.

En BinSecSweeper podemos profundizar en el análisis de uno, varios o todos los ficheros, pero para este análisis rápido, nuestro objetivo es obtener la panorámica completa. Para ello observemos la analítica de datos, una poderosa herramienta (ver Fig. 3)

binsecsweeper_Online3
Fig. 3.

BinSecSweeper ofrece impresionantes gráficas que nos ayudan a entender los datos de forma rápida y visual. En la Fig. 4 vemos una visualización de la entropía de los binarios, “medida del desorden”. La mayoría de binarios están alrededor de 0.80 con algunos binarios en los extremos 0.65 y 1.00.

binsecsweeper_Online4
Fig. 4.

En la Fig. 5 vemos los diferentes tipos de binarios y llama la atención que la mayoría son DLL y luego tenemos un Driver, sin duda un fichero para analizar más en detalle.

binsecsweeper_Online5
Fig. 5.

En la Fig. 6 vemos una métrica muy interesante, el nombre de las secciones de un ejecutable. Nos ayuda a identificar packers y secciones sospechosas.

binsecsweeper_Online6
Fig. 6.

La Fig. 7 se relaciona con la métrica anterior, en este caso tenemos el número de secciones de los ejecutables. Destaca un fichero con diez secciones.

binsecsweeper_Online7
Fig. 7.

La siguiente métrica (Fig. 8) tenemos el número de librerías importadas por los ejecutables.

binsecsweeper_Online8
Fig. 8.

Las funciones que importan los ejecutables son interesantes para entender la funcionalidad. En la Fig. 9 tenemos esta métrica, específicamente las funciones Top 15.

binsecsweeper_Online9
Fig. 9.

También podemos ver las funciones que exportan las ejecutables (Fig. 10).

binsecsweeper_Online10
Fig. 10

En la Fig. 11 vemos los diferentes compiladores identificados. Interesante para entender las herramientas que utilizan los autores del APT.

binsecsweeper_Online211
Fig. 11.

La última métrica que vamos a ver es la fecha de compilación de los ejecutables organizada por años. Claramente en el 2008 los autores estuvieron muy ocupados.

binsecsweeper_Online212
Fig. 12.

De forma sencilla y rápida hemos obtenido una buena panorámica de este APT sin entrar en complejos/costosos análisis o ingeniería inversa, que sería nuestro siguiente paso. Para que luego digan que en España no se hace nada interesante ;)

Hoy en día dados los millones de malware que circulan y la complejidad de cualquier software es necesario contar en nuestro arsenal con poderosas herramientas de análisis como BinSecSweeper, que utiliza técnicas avanzadas de Data Science para analizar la seguridad y privacidad del software.

Quizá sería interesante pasar todos los antivirus por BinSecSweeper ;)

Sayonara baby, pronto volveré con más análisis 

Para mas información sobre BinSecSweeper puedes contactarnos en BinSecSweeper@vulnex.com

¿Tu organización utiliza Security Data Science? ¿Qué te gustaría analizar?

— Simon Roses Femerling / @simonroses

Publicado en Malware, Privacidad, Seguridad, Tecnologia | Etiquetado , , , , , , | Deja un comentario