Writeups CTF ForoCiber2018

Este martes con motivo del II Forociber, la Universidad de Extremadura junto con la empresa Viewnext abría un pequeño CTF de 72 horas de duración que planteaba 5 4 retos. Además de ser breve incluía premios como material tecnológico para los tres primeros clasificados, así que decidí dedicarle tiempo y jugar.

La verdad es que resultó entretenido y como el nivel era bastante asequible pude completarlo en tan sólo unas horas, resultando ganador. Sin embargo (zote de mí) no leí en las bases de participación que para optar a los premios la edad máxima era 35 años y mi premio se quedó en un simple reconocimiento (gracias a ToTe de la organización) y, eso sí, la diversión y el entretenimiento de cuándo estuve realizándolo.

Ya comenté que 35 años me parecía un corte absurdo, incluso discriminatorio.  Si se buscan promesas, la bajaría si acaso a 25 que es más o menos cuando un estudiante comienza su andadura profesional. ¿Pero 35? a los 30 ya era senior y tenía más tiempo para hacer CTFs... pero en fín, las reglas son las reglas y por lo menos voy a poder dejaros el siguiente post con las soluciones.

RETO 1 - Un Sysadmin perezoso

Retador

Alberto Ledo (@0x13d0): Administrador de Sistemas de la Universidad de Extremadura.

Descripción

Miguel es un sysadmin que forma parte de un proceso de selección para la empresa S2A. La empresa, en la primeras fases del proceso necesita medir los conocimientos generales de administración y seguridad en sistemas de los candidatos, así como los conocimientos que poseen sobre malos hábitos del administrador de sistemas.

Para ello S2A prepara una prueba con la que poder realizar una primera selección de candidatos. Se trata de esta misma prueba. Proporcionan a Miguel la dirección IP de un servidor que llegó a producción cuando aún debía estar en fase de test.

Para superar la prueba Miguel debe encontrar unas palabras escondidas en el algún lugar en el servidor, ¿Ayudas a Miguel?

Materiales

La IP del servidor en el que debe buscar Miguel es: 34.217.203.163

Writeup (10 puntos)

Empezamos como casi siempre con un escaneo de puertos:

# nmap -A -Pn 34.217.203.163
 

3306/tcp open mysql MySQL 5.5.5-10.1.26-MariaDB-0+deb9u1
55555/tcp open ssh
OpenSSH 7.4p1 Debian 10+deb9u2 (protocol 2.0)


Vale, tenemos abierto dos puertos. Empezaremos con mysql... Si es un administrador de sistemas perezoso... seguro que las credenciales deben ser totalmente predecibles:

# mysql -u admin -p -h 34.217.203.163
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 437232
Server version: 5.5.5-10.1.26-MariaDB-0+deb9u1 Debian 9.1

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 


Bingo! El usuario es admin y la contraseña admin.


Como veis tenemos una base de datos 'forociber2018' con una tabla 'forociber' que tiene un campo 'flag'...


Y ya tenemos la primera flag: "Y CIBERDERECHO". Continuamos al siguiente...

RETO DOBLE - Ataca a mi web server...

Retador

Fran Moraga (@BTshell): Analista de Inteligencia y Pentester Informático.

Descripción

Hola Hacker, tenemos una nueva misión para ti, nos han encargado obtener una información que está contenida en un servidor esta información son dos palabras con las que poder acceder a unso archivos secretos.

Para poder acceder a dicha información necesitamos el nombre de usuario y contraseña para poder acceder al servidor desde el terminal. Dicho terminal se encuentra en l URL: http://www.pentestlab.es/sh.php

Un confidente anonimo nos ha dicho que los datos de acceso los podemos encontrar en la base de datos de la URL: http://testphp.vulnweb.com/artists.php?artist=1  por lo que en esta primera fase habría que extraer la base de datos de esta URL.

Contamos contigo para obtener dicha información...

Writeup (15 + 20 puntos)

Primero visitamos la url http://www.pentestlab.es/sh.php:

El texto "yn cnffjbeq rf ry ahzreb qr gryrsbab" está ofuscado con Rot13, en claro sería "la password es el numero de telefono".

Sin duda una gran pista... así que vamos a visitar la segunda web http://testphp.vulnweb.com/artists.php?artist=1:

Esta web es muy conocida, pues es el sitio de prueba del famoso escáner de vulnerabilidades web Acunetix. De sobra sabemos que el vulnerable a SQLi, así que para mayor rapidez usamos sqlmap:

# sqlmap -u http://testphp.vulnweb.com/artists.php?artist=1 --dbs

La base de datos objetivo es 'acuart' así que sacamos sus tablas:

sqlmap -u http://testphp.vulnweb.com/artists.php?artist=1 -D acuart --tables


Ni que decir tiene que la tabla usuarios contiene lo que buscamos:

# sqlmap -u http://testphp.vulnweb.com/artists.php?artist=1 -D acuart -T users --dump

Tenemos el username 'test' y la contraseña. como nos indicaba la pista anterior, es el número de teléfono. Así que sólo queda probar:


Y oulá! Accedemos y obtenemos una frase reveladora:

jefe_le_dejo_las_2_palabras_clave_con_las_que_acceder_a_los_
archivos_secretos___VAIRFGVTNPVBA______SBERAFR_____estan_
cifradas_por_seguridad_estamos_en_contacto

E igual que antes, sólo tenemos que desofuscar con ROT13 las flags finales:

VAIRFGVTNPVBA: INVESTIGACION

SBERAFR: FORENSE

RETO 4 - Un día cualquier como analista forense

Retador

Manuel López Guerra (@CiberPoliES): Analista Forense de la Sección Técnica de la Unidad Central de Investigación Tecnológica de la Policía Nacional.

Descripción

En este apartado como retador, la organización me pide que escriba una historia ficticia para poner en situación a cada uno de los competidores sobre el reto al que se van a enfrentar. No lo voy a hacer, ya que este, no es un reto ficticio. Este es un reto real (las evidencias no), está basado completamente en un caso real que he tenido que resolver como analista forense.

¿Serás capaz de resolver el crimen?


Materiales
 Prueba del crimen

Writeup (25 puntos)

El material entregado es un fichero .tar.gz IMAGEN_DIFU_ForoCIBER_m4nu_GLIDER_Forense_MD5 _e1b316594ff7bf55c8f8488f5aff4a7b.tar.gz”que al desempaquetar/decomprimir arroja, nada más y nada menos, que miles de archivos:

Un archivo sin embargo tiene extensión .info "IMAGEN_ForoCIBER_m4nu_GLIDER_Forense.info", si le echamos un vistazo veremos que lo que tenemos entre manos es un imagen en raw de una adquisición de un S.O. Linux (.dd):

Así que vamos a juntar todos los ficheros, lanzamos el siguiente loop y aprovechamos para tomar un café (tarda unos 30 min.):

# for i in $(ls); do cat $i >> imagen.raw; done

Una vez que tenemos la imagen la montamos para ver su contenido:

# mount imagen.raw /mnt/borrar/
# ls
drivers pc Asus manu 2012.zip index.jpeg rock.jpeg Slider-Web-Ciber_.jpg yeah.zip

Hay varios archivos comprimidos con contraseña y una imagen "rock.jpg" es más que suficiente pista para saber que tenemos que realizar un ataque de diccionario con el famoso rockyou.txt:

# fcrackzip -v -D -u -p /home/vmotos/diccios/rockyou.txt drivers\ pc\ Asus\ manu\ 2012.zip
found file 'drivers pc manu 2012.doc', (size cp/uc 986146/986349, flags 9, chk a390) 

PASSWORD FOUND!!!!: pw == chocolate

Vale, hemos encontrado la password del archivo "drivers pc Asus manu 2012.zip", veamos su contenido:

# unzip drivers\ pc\ Asus\ manu\ 2012.zip
Archive: drivers pc Asus manu 2012.zip
[drivers pc Asus manu 2012.zip] drivers pc manu 2012.doc password:
inflating: drivers pc manu 2012.doc 

Tenemos un archivo doc... que realmente es un rar:

# file drivers\ pc\ manu\ 2012.doc
drivers pc manu 2012.doc: RAR archive data, v4, os: Win32

Lo descomprimimos:

# unrar "drivers pc manu 2012.doc"

unrar 0.0.1 Copyright (C) 2004 Ben Asselstine, Jeroen Dekkers

Extracting from /home/vmotos/Escritorio/extremaydura/4.forense/extraido/drivers pc manu 2012.doc

Extracting drivers pc manu 2012/ara.jpg OK
Extracting drivers pc manu 2012/ciberpoli.jpg OK
Extracting drivers pc manu 2012/felicitacionnavidad2018.gif OK
Extracting drivers pc manu 2012/glider_retro.jpg OK
Extracting drivers pc manu 2012/reto.jpg OK
Extracting drivers pc manu 2012/secret.png OK
All OK

Y en una de esas imágenes tenemos en sus metadatos la flag final del reto:

# file ara.jpg
ara.jpg: JPEG image data, JFIF standard 1.01, resolution (DPI), density 300x300, segment
length 16, Exif Standard: [TIFF image data, big-endian, direntries=4, manufacturer=fl4g->
INFORMATICA
, model=X-T10], baseline, precision 8, 511x340, frames 3

RETO 5 - Lo que ves puede no ser lo que hay...

Retador 

José Aurelio García (@JagmTwit): Auditor y Perito Informático.

Descripción

Alguien ha enviado un archivo con una palabra, oculto en alguna parte de un fichero IMG, mediante técnicas esteganográficas. Debes encontrar "la palabra mágica".

Recuerda: los límites de la esteganografía están allí donde estén los límites de tu imaginación.

Materiales:

 ForoCTF

Writeup (30 puntos):

En el último reto nos facilitan otra imagen: 

# file ForoCTF.img
ForoCTF.img: DOS/MBR boot sector, code offset 0x52+2, OEM-ID "NTFS ",
sectors/cluster 8, Media descriptor 0xf8, sectors/track 63, heads 255, hidden sectors 2048,
dos < 4.0 BootSector (0x0), FAT (1Y bit by descriptor); NTFS, sectors/track 63, physical
drive 0x80, sectors 40959, $MFT start cluster 1706, $MFTMirror start cluster 2,
bytes/RecordSegment 2^(-1*246), clusters/index block 1, serial number
0d0247d9c247d866e

Vemos que el sistemas de ficheros es NTFS así que procedemos a montarlo:

# ntfs-3g ForoCTF.img /mnt/borrar

# ls -al /mnt/borrar
total 5528
drwxrwxrwx 1 root root 4096 feb 24 23:12 .
drwxr-xr-x 3 root root 4096 feb 27 15:26 ..
drwxrwxrwx 1 root root 0 feb 24 22:22 HxDSetupES
drwxrwxrwx 1 root root 0 feb 24 23:12 Imagenes
drwxrwxrwx 1 root root 0 feb 24 22:22 jphs05
-rwxrwxrwx 1 root root 83456 sep 10 2015 MD5_and_SHA_Checksum_Utility.exe
-rwxrwxrwx 1 root root 5562976 feb 17 06:32 RecuvaSetup153.exe
drwxrwxrwx 1 root root 0 feb 24 22:21 System Volume Information

Las herramientas son más que reveladoras... Si aparece Recuva está claro que hay que recuperar algunos archivos borrados, pero para tal cometido utilizaré simplemente ntfsundelete:

# ntfsundelete ForoCTF.img
Inode Flags %age Date Time Size Filename
-----------------------------------------------------------------------
16 F..! 0% 1970-01-01 01:00 0
17 F..! 0% 1970-01-01 01:00 0
18 F..! 0% 1970-01-01 01:00 0
19 F..! 0% 1970-01-01 01:00 0
20 F..! 0% 1970-01-01 01:00 0
21 F..! 0% 1970-01-01 01:00 0
22 F..! 0% 1970-01-01 01:00 0
23 F..! 0% 1970-01-01 01:00 0
49 FN.. 100% 2018-02-24 19:53 438684 ForoCiber.jpg
52 FR.. 100% 2018-02-24 20:03 178 Leeme.txt

53 F..! 0% 1970-01-01 01:00 0
54 F..! 0% 1970-01-01 01:00 0
55 F..! 0% 1970-01-01 01:00 0
56 F..! 0% 1970-01-01 01:00 0
57 F..! 0% 1970-01-01 01:00 0
58 F..! 0% 1970-01-01 01:00 0
59 F..! 0% 1970-01-01 01:00 0
... 

# ntfsundelete -u ForoCTF.img -m ForoCiber.jpg
Inode Flags %age Date Time Size Filename
-----------------------------------------------------------------------
49 FN.. 100% 2018-02-24 19:53 438684 ForoCiber.jpg
Undeleted 'ForoCiber.jpg' successfully.

# ntfsundelete -u ForoCTF.img -m Leeme.txt
Inode Flags %age Date Time Size Filename
-----------------------------------------------------------------------
52 FR.. 100% 2018-02-24 20:03 178 Leeme.txt
Undeleted 'Leeme.txt' successfully.
Undeleted 'Leeme.txt:adicional.txt' successfully.
Files with potentially recoverable content: 1

Vaya, vaya... al recuperar Leeme.txt hemos recuperado también otro regalo adicional:

# cat Leeme.txt
En este Volumen hay una imagen en la que se encuentra la soluci � n de este ciberreto.
Tienes Todo lo que necesitas aqu � .
��� nimo!!

# cat  Leeme.txt:adicional.txt
Esta imagen es en verdad un EstegoContenedor. La clave de Descifrado la tienes en esta r�plica, en Mega:

https://mega.nz/#!AS5CwbrK!2A2VkdMXZGJVEpbhom3R7ffITKCTN9lDzOuDx_U733o

Tenemos otra imagen que según nos anuncian contiene la clave de descifrado, y su nombre está en hexadecimal.. pero ni si quiera nos hace falta usar un editor hexadecimal, basta un simple strings:

$ strings 000745B0x48.jpg | grep Clave
---La Clave de Descifrado de JpHide es "CTFConseguido", sin las comillas.i

Así que con la password usamos la herramienta de esteganografía jseek y:

$ wine jpseek.exe /home/vmotos/extremaydura/000745B0x48.jpg test
Welcome to jpseek Rev 0.51
(c) 1998 Allan Latham
This program is freeware.
No charge is made for its use.
Use at your own risk. No liability accepted whatever happens.
Contains cryptogaphy which may be subject to local laws.
Passphrase:

 $ cat test
Has Superado Tu reto!!!!
La palabra que debías adivinar es
CIBERMOOC
¡¡felicidades!!!

Con esto completé los 4-5 retos, mandé el correspondiente informe de evidencias y...

LMAO! Espero que os haya gustado. Me retiro al asilo, nos vemos en el siguiente!

12 comentarios :

  1. el ctf gerontofobico ����

    ResponderEliminar
  2. Seguro que para hacer un grado o un master y pasar por caja no tienen máximo de edad

    ResponderEliminar
  3. tampoco es eso hombre, lo de la edad es sólo un pero y mi intención al comentarlo era sólo en tono jocoso o humorístico. Yo aplaudo este tipo de competiciones y es un gustazo que cada vez más las universidades y empresas organicen estos CTFs.
    Keep laughing!

    ResponderEliminar
    Respuestas
    1. Está bien que se enfoque a la chavalada con estas cosas. Si un chaval de 16 o 18 años resuelve el mismo CTF que alguien que casi lo doble en edad creo que el mérito no es el mismo. La experiencia es un grado, y en los CTFs sobre todo.
      Que un veterano salga vencedor de una batalla es de esperar. Que lo haga un soldado es posible. Que lo haga un civil es impresionante.

      Eliminar
    2. Totalmente de acuerdo, pero si se habla de edad el corte para ser veterano lo bajaría a 25. Y otro apunte... La edad no es totalmente determinante para la veteranía puesto que un chaval de 21 años puede estar jugando a CTFs desde los 16 y tener mucha más experiencia (y por ende veteranía) que uno de 30... ¿Y como mides eso?

      Eliminar
    3. Bueno, es que ahí ya lo traslado a que el de 21, que acumuló la misma o más experiencia que uno de 30, cuando tenga 30 probablemente sea un fiera. Es por eso que me decline por ellos: Me parecen cracks en potencia y creo que deberían dársele algo de alas.

      Eliminar
    4. o a lo mejor a partir de los veintitantos tiene que trabajar y no tiene tiempo para hacer CTFs y ya no es tan fiera.. todo es tan relativo...

      Eliminar
    5. Ésa es otra: Los mayores de 30 ya pueden estar acumulando experiencia trabajando profesionalmente en el sector. Es muy poco probable que esa gente vaya a terminar matriculándose en la Universidad.

      Eliminar
    6. Vicente
      pásame los archivos por favor hackingknow@gmail.com

      Eliminar
  4. Buenas!

    Es posible obtener los ficheros de los dos últimos retos de alguna forma?
    Desde esos enlaces no deja descargarlos...

    ResponderEliminar
    Respuestas
    1. yo los tengo.. si los quieres dime donde te los envío por tg (@vis0r)

      Eliminar
    2. Hola.
      PUes estaría bien tenerlos disponibles, sí. Soy profe de GS y me gustaría ofrecerlos a mis alumnos.
      Gracias

      Eliminar