Preparación del laboratorio

Contenido descargable del reto:

El archivo descargable del reto contiene el comprimido a12c739e-e111-41fc-8565-0f3a28fb82fa.zip.

Extrae el contenido en una carpeta para ver los siguientes archivos:

pass

Identificar el tipo de archivo

El primer paso consiste en identificar el tipo de archivo mediante el comando file.

$ file pass 
pass: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, 
interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=3008217772cc2426c643d69b80a96c715490dd91,
for GNU/Linux 4.4.0, not stripped

Podemos observar que se trata de un ejecutable Linux de 64 bits para arquitectura x86-64. Por tanto, las herramientas habituales de análisis serán strings, readelf, objdump, GDB o Ghidra.

Está enlazado dinámicamente (dynamically linked). Esto sugiere que utilizará funciones de bibliotecas externas como strcmp, fgets, puts o printf. Más adelante podría analizarse con ltrace, aunque todavía no es necesario.

Es un ejecutable PIE (pie executable), por lo que sus direcciones se cargan de forma aleatoria en memoria. Esto afecta principalmente al análisis dinámico y a los breakpoints por dirección, pero no impide extraer cadenas estáticas con strings.

El binario conserva símbolos y nombres de funcione (not stripped), este es el dato más interesante. Facilitaría localizar main y otras funciones mediante GDB o un descompilador.

Extracción de texto del binario

Antes de abrir el binario en un depurador o descompilador, conviene realizar una inspección estática básica con strings. Esta herramienta permite identificar rápidamente mensajes, rutas, nombres de funciones y posibles credenciales almacenadas en texto plano.

spookypass strings

Debo reconocer que me ha sorprendido: la disposición de las cadenas resulta bastante reveladora. Primero el binario solicita la contraseña y, justo debajo, aparece en texto plano. Se agradece la colaboración del binario.

Como se puede observar en la salida del comando, la contraseña está almacenada en texto plano dentro del binario (s3cr3t_p455_f0r_gh0st5_4nd_gh0ul5). Al no contar con ningún mecanismo de ofuscación o cifrado sobre los strings del programa, la fase de reconocimiento estático inicial ha sido suficiente para resolver el reto

Extracción del binario

Damos permisos al archivo pass para ejecución y probamos el hayazdo de la contraseña.

spookypass acceso al archivo

La flag ha sido obtenida con éxito y ha sido censurada para respetar las reglas de HTB.

Lecciones aprendidas

La verdad sea dicha, en este reto no hemos aprendido ninguna lección revolucionaria de reverse engineering. Sin embargo, nos deja un par de recordatorios útiles:

  • Haz siempre una recon previa básica (file, strings). Te ahorrará horas de trabajo innecesario.
  • Si dejas la contraseña en texto claro dentro del binario, no esperes que el sistema sea seguro.