Reseña Libro: PoC||GTFO

Sí, he vuelto a bloguear y con una reseña de libro, que hacía bastante tiempo que no comentaba ninguno aunque he leído muchos. Supongo que más vale tarde que nunca :)

En esta ocasión he leído el libro sagrado de los hackers: International Journal of Proof-of-Concept or Get The Fuck Out (PoC||GTFO, ISBN-13: 978-1-59327-880-9). El libro es una recopilación de los mejores artículos de la revista hacker PoC||GTFO. Realmente puedes leerlo gratis si vas a la revista pero te recomiendo que compres una copia del libro sagrado. La editorial No Starch Press permite copiar artículos de libro para distribuirlos digitalmente.

pocpic

Vamos al grano: s te gusta desarrollar exploits, la ingeniería inversa, hackear radios, las puertas traseras en software o el hacking de hardware, este es tu libro. De verdad que todo profesional de la ciberseguridad debería leerlo.

El libro, con un aspecto igual al de la Biblia, está dividido en 8 capítulos, y cada capítulo tiene varios versículos muy técnicos en diversos temas. Dependiendo del interés de cada uno, preferirás unos versículos que otros pero recomiendo leer todo el libro, las 772 páginas.

Mis versículos preferidos están relacionados con ficheros políglotas, explotación de SO, radio hacking, puerta traseras en software y hacking Linux.

Algunos de mis versículos favoritos:

  • 1:4 Making a Multi-Windows PE
  • 1:5 This ZIP is also a PDF
  • 2:8 This OS is also a PDF
  • 3:10 Tales of Python’s Encoding
  • 4:3 This OS is a Boot Sector
  • 5:5 A Flash PDF Polyglot
  • 8:3 Compiler Bug Backdoors
  • 8:7 Stegosploit
  • 8:11 Naughty Signals
  • Así que adelante, cómprate una copia ahora, léelo y difunde la palabra del Señor ;)

    Felicitaciones a los autores de PoC||GTFO, los editores y todos los involucrados con la revista y libro. ¡Que sigan viniendo los versículos, vecino!

    ¿Cuáles son tus versículos preferidos del libro sagrado?

    Puntuación (1 rosa, muy malo / 5 rosas, muy bueno): 5 Rosas (Lectura Obligatoria)

    — Simon Roses Femerling / @simonroses

    Publicado en Hacking, Hacking Etico, Libro, Malware, Privacidad, Seguridad | Etiquetado , , , , | Deja un comentario

    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