Esta fue la última prueba de forense que se nos propuso durante el Hackit y que resolví junto a mi compañero de equipo @angu, las screenshoots finales son cortesía suya 🙂
Este era el enunciado:
Angry printer
foren200
Description: Our printer has just stopped working. Maybe there are some driver issues or so. Could you help us to fix them?
Attachment: (none)
Webpage: https://mega.nz/#!VUJBAKzI!ljRk-LOHM7W1JDPBlghOuKvAsCabgqeIJ0WMRaZaGLo
Hint: One of the drivers was replaced with a strange module, is it a keylogger? Hide
Nos descargamos el archivo initrd.img-4.9.1.0-1-amd64 y vemos que es un archivo comprimido, al descomprimir nos encontramos con un backup de un initrd, creamos una carpeta donde montarlo, entramos en ella y lo montamos con el siguiente comando:
cpio -id < ../initrd.img-4.9_1.0-1-amd64
Esto nos montara el filesystem en la carpeta en la que nos encontramos, como hay bastante archivos decidí probar suerte con un grep y buscar por hackit a ver si había suerte y efectivamente:
Solamente hay un resultado en uno de los módulos del kernel, la pista no hace sino darle más peso a este hallazgo. Como en esos momentos no tenía manera de hacerle el reversing al módulo se lo pase a mi compañero @angu y este lo cargo en IDA, luego de buscar encontró lo siguiente:
Esta función parece realizar un XOR sobre la variable PATTERN utilizando como key 0x41, este es el contenido de la variable PATTERN:
Con este sencillo script de python, también cortesía de @angu, hacemos el XOR (ya que XOR de un XOR con la misma clave nos devuelve la cadena original) a la vez que convertimos los valores hexadecimales:
import binascii pattern = binascii.unhexlify("2975222A70353A281E202C1E2E2F1E272833243C") print ''.join(chr(ord(i)^0x41) for i in pattern)
Lo ejecutamos y obtenemos la flag: h4ck1t{i_am_on_fire}
Espero os haya gustado, como siempre, un saludo y gracias por vuestra visita!