viernes, febrero 22, 2008

Solucionario Reto Hacking VI por Dani Kachakil - Parte II

***************************************************************************************
- Solucionario Reto Hacking VI por Dani Kachakil - Parte I
- Solucionario Reto Hacking VI por Dani Kachakil - Parte II
***************************************************************************************
Parte 2: Subir nota

Como no queremos conformarnos con ese miserable cuarto de punto que obtenemos al superar la primera fase, vamos a intentar subir nota superando también la segunda y última fase del reto. Al acceder a esta parte, nos encontraremos con un ejercicio curioso para hacer en casa. Nos descargamos un fichero PNG y tenemos que responder a la pregunta de cómo se puede hacer mate en un solo movimiento si jugamos con las blancas.

Fichero PNG

Cualquiera que conozca las reglas del ajedrez sería capaz de determinar rápidamente que con esa disposición de piezas no hay forma de hacer mate en una sola jugada, sino que hacen falta dos: adelantar el peón a E8 (promocionando a dama) y moviendo la torre de F2 a F7.

Parece que la pregunta tiene truco, así que intentamos introducir diferentes movimientos (incluso aunque sean inválidos) y otras cadenas de texto buscando alguna vulnerabilidad sin éxito. La pista decía que teníamos que agudizar la vista, que la cosa va de partes otra vez y el enunciado de la propia fase nos indica que el ejercicio lo tenemos que trabajar en casa. ¿Será otra prueba de esteganografía?...

Hay un pequeño detalle que me llamó la atención y es que a pesar de que el formato PNG no tiene pérdida de calidad, la imagen del tablero no era del todo nítida, como si estuviera comprimida en JPEG. Parece que la elección del formato no ha sido casual, pero no vemos nada especial en la imagen y tampoco en la metainformación que podría contener.

Vamos a documentarnos un poco sobre el formato PNG, ya que conociendo su estructura interna tal vez encontremos algo útil. Es curioso que el formato defina una etiqueta específica para marcar el fin de la imagen (IEND) y es más extraño aún encontrar tanta información después de esa etiqueta. Este hecho podemos comprobarlo incluso con la funcionalidad de búsqueda del bloc de notas.

PNG en la herramienta más poderosa jamás creada

Si utilizamos un editor hexadecimal y eliminamos todo el contenido que aparece después de la etiqueta IEND, comprobamos que el nuevo fichero generado se visualiza exactamente como estaba, así que deducimos que esa parte realmente no pertenece a la imagen y que a su vez es ignorada por el código que está renderizando el PNG. Por otro lado, entre tanto texto ilegible también llama la atención encontrarnos con el texto "Rar!" justo después del final de la imagen. Caracteres que casualmente coinciden con los de la cabecera de cualquier fichero comprimido con RAR. En realidad esta técnica se puede considerar como aplicación de esteganografía, ya que logra el objetivo de esconder un mensaje (en forma de fichero) dentro de otro.

Ahora solamente nos queda extraer esa parte interesante (desde "Rar!" hasta el final del fichero), guardándola como nuevo fichero con la extensión ".rar", volcando el contenido con algún editor hexadecimal. También se podría haber renombrado el PNG directamente sin modificarlo, aunque no sé si esto dependerá de la implementación del descompresor que usemos (como mínimo parece funcionar bien con el WinRAR v3.50)

Sin embargo, al abrir el fichero comprimido nos encontramos con un último paso, ya que se encuentra protegido por contraseña, pero probando con "garrupito" conseguimos abrirlo (de no haber sido tan trivial, tendríamos que haberlo hecho con fuerza bruta). Dentro del RAR encontramos otro fichero PNG en el que está la solución que ya conocíamos: más o menos dice que es imposible resolverlo en un solo paso. El reto termina introduciendo la frase exacta (incluyendo algún error ortográfico que aparecía por ahí).

Agradecimientos y comentarios

En esta ocasión el reto se publicó a la hora prevista (20:00) con una puntualidad increíble, lo cual se agradece. También me ha gustado la idea de mostrar la tabla de concursantes, ya que contenía información interesante como la hora de registro de cada uno, la evolución por fases en tiempo real, el tiempo invertido en cada una de ellas, etc.

Esperemos que la próxima vez las pistas sean un poco menos rebuscadas y más útiles (tal vez la insistencia en profundizar en la pista de Alonso era innecesaria). Tampoco estaría de más que no se permita el acceso a los ensamblados de la aplicación ASP.NET ni a los ficheros de log, que siempre hay algún copión suelto por ahí, aunque reconozco que la técnica usada para ello es muy buena y no se me habría ocurrido… ;-)

Gracias a los que han hecho posible este reto (Chema, Rodol, Álex y Filemaster). Gracias a las ideas y puntualizaciones de RoMaNSoFt, Mandingo y Palako, que han enriquecido este documento. Gracias a SealTeam por hacernos pasar un rato divertido jugando un poco con alguna DLL de este reto y del anterior. En general, gracias a todos los que habéis participado en este reto y, como siempre, gracias a ti que estás leyendo esto, esperando que te haya sido de utilidad.

Saludos, Daniel Kachakil.
***************************************************************************************
- Solucionario Reto Hacking VI por Dani Kachakil - Parte I
- Solucionario Reto Hacking VI por Dani Kachakil - Parte II
***************************************************************************************

4 comentarios:

  1. gracias de nuevo Dani.
    Eso de fuerza bruta me suena...me pasé toda la noche con el pc puesto probando..a veces los árboles no dejan ver el bosque, cierto es :P!

    Por cierto, interesante lo de las DLL´s, es algo que nunca he tocado...SealTeam, nos pones un solucionario con ese método?

    Salu2

    ResponderEliminar
  2. Aunque quede un poco redundante, gracias a vosotros por vuestros agradecimientos, comentarios y aportaciones. Si alguien lo consiguió de otra forma, le animo a que nos cuente cómo lo hizo, ya que siempre se aprenden cosas nuevas.

    Por cierto, podéis conseguir el solucionario completo en PDF desde aquí:

    Soluciones de algunos retos de hacking

    Saludos!

    ResponderEliminar
  3. Se que me porte como un niño malo y pido disculpas por ello...de echo estoy pensando en cambiarme el nombre de SealTeam por el de "Mr. BEAN". Toma chiste malo XD.

    Siempre que veo una pagina que acaba en aspx pongo lo mismo en la barra de direcciones: SERVIDOR/bin/App_Code.dll y "cuando da premio" descompilas la dll (no me acuerdo del nombre del programa que uso yo...esto de postear desde el insti...) y pueden salir cosas muy interesantes. En este caso me salio una direccion que parecia de un log. Ponia fecha, hora, usuario... Que suerte la mia cuando entro en esa direccion y me encuentro con esto (si quereis tengo una copia con todo lo intentado hasta las 0:51:31 :P ):
    02/02/2008 0:42:06->1->kachakil->Examen->9DB7D157-CD68-42a3-A366-C32BE3******
    y la siguiente entrada de Kachakil ya hacia referencia a la fase dos. Asi que fue copiar y pegar.
    El caso es que me dio por avisar de este sistema:
    01/02/2008 21:28:55->1->sealteam->Practica->http://retohacking6.elladodelmal.com/LogPrivado*************to/general.txt <--No es por ser cabroncete pero podia usar esto para "copiar" ¿Lo tenias pensado o es un fallito?
    Y luego me dio por volver a entrar y me tope de golpe con la solucion, y me dio por guardar una copia del archivo (De recuerdo).
    Justo despues de conseguirlo y de una intensa comunicacion via mail con Chema para ver como coño lo habia conseguido, se solucionó el error, y ya no hay acceso ni a las dll's ni al log

    En la segunda parte me comporté...De echo como en la pista ponia "Vista" (la primera con mayuscula) llegue a instalar el Windows Vista en una maquina virtual, por que recordaba que tenia el ChessTitans y a lo mejor se podian poner jugadas especificas. Y cuando por fin di con la solucion (el cachito que ponia rar), simplemente di boton derecho sobre el archivo png (sin cortar ni renombrar) y elegi abrir con winrar y el solo se salto el cacho de codigo del png y me pregunto la contraseña.

    ResponderEliminar
  4. Un excelente programa para descompilar los ensamblados del reto es el .NET Reflector de Lutz Roeder, que además es gratuito.

    @SealTeam: Me dejó sorprendido que funcionara el método de bajarse la DLL directamente, más que nada porque se supone que ASP.NET protege ciertos archivos y directorios de forma automática, pero resulta que no estaba bien configurado para funcionar con el IIS.

    Por si le pasa a alguien y para evitar problemas como ese, cuando se instala el .NET Framework antes que el IIS es necesario ejecutar el siguiente comando:
    aspnet_regiis.exe /i

    Saludos

    ResponderEliminar