HackIt Nivel 10: reverse engineering

Tras seguir las pistas dadas en los anteriores posts sobre el HackIt Nivel 9 (léanse también los comentarios), llegamos al fatídico nivel 10. Aquí nos quedamos cuando sonó el ¡gong! del GAME OVER 😉 A primera vista la cosa no pinta muy bien, dado que tras descargar el zip y descomprimirlo, vemos que efectivamente se trata del juego Breakout, por lo que dice el «enunciado» de la pista y por las librerías gráficas que carga:


[juanan@localhost game]$ ldd go
linux-gate.so.1 => (0x00110000)
libXpm.so.4 => /usr/lib/libXpm.so.4 (0x02216000)
libX11.so.6 => /usr/lib/libX11.so.6 (0x00a6e000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x061ea000)
libm.so.6 => /lib/libm.so.6 (0x004bb000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x002aa000)
libc.so.6 => /lib/libc.so.6 (0x00360000)
libxcb-xlib.so.0 => /usr/lib/libxcb-xlib.so.0 (0x00bcc000)
libxcb.so.1 => /usr/lib/libxcb.so.1 (0x00bae000)
libdl.so.2 => /lib/libdl.so.2 (0x004e6000)
/lib/ld-linux.so.2 (0x00341000)
libXau.so.6 => /usr/lib/libXau.so.6 (0x00639000)
libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x0063e000)

pero, si analizamos el tipo de fichero:

[juanan@localhost game]$ file go
go: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.8, dynamically linked (uses shared libs), corrupted section header size

vemos que es un fichero ejecutable ELF para Linux, y ¡ojo al parche!, las cabeceras están manipuladas (corrupted section header size) :-O Me temo que a GDB no le gustará nada de nada…


[juanan@localhost game]$ gdb go
GNU gdb Red Hat Linux (6.6-45.fc8rh)
(no debugging symbols found)


Pues vaya… no hay tabla de símbolos, así que ¿cómo indicar los puntos de ruptura? ¿cómo depurar el programa? Os dejo con el reto, y os animo a proponer vías de solución en los comentarios. Yo voy a por un café y cumplimentar papeleos de la universidad…

Linux+ 05/2008 (número 43)

El tema central de este número de Linux+ es multimedia.

En el DVD adjunto encontraréis:

# Momonga 4.1: una distribución japonesa desarrollada con un módelo estilo Bazaar

También podréis leer los siguientes artículos:

SQLITE
La mejor herramienta para el tratamiento de los datos

GeeXboX
Distribución para equipos Media Center

Sistemas de monitorización
Escoje el mejor sistema para tu equipo

Miro
Administra tu Videopodcast en Linux

MySQL
Instalación y configuración con phpMyAdmin

Podcast
Tu podcast usando herramientas libres

HackIt! Nivel 9: ¿dónde está el zip?

Tras oír la conversación, apuntamos los detalles. En algún lugar hay un fichero .zip con password. Dicho password empieza por f, contiene los caracteres r,v,k,n,1,3 (no tiene por qué ser en ese orden), y es de longitud 9.

La primera pregunta: ¿de qué fichero .zip estamos hablando? No puede ser el que contiene el archivo tampering.pcap, porque ese lo hemos descomprimido sin necesidad de password. Otra opción es que se encuentre en el mismo volcado tampering.pcap. Analizando tramas:

Vemos tramas HTTP, y el nombre hackit.zip . No tiene mala pinta… En concreto, se ve que una de las líneas pone: HTTP/1.1 200 OK (application/zip). Al desplegarla, en el campo Media Type, vemos que en la captura tenemos los bytes de un fichero de 1452 bytes que se transmitió por protocolo HTTP. Botón derecho sobre esa línea (Media Type) y elegimos «Export selected packet bytes».

Elegimos la ruta del fichero a exportar y le damos un nombre. Por ejemplo: /tmp/payload.zip

Si ahora intentamos descomprimir:

sh-3.2$ unzip payload.zip
Archive: payload.zip
[payload.zip] hackit.rtf password:

¡Premio! ¿Algún buen crackeador de passwords zip en la sala?

OpenOffice 3.0 BETA

Lo habréis oído: ya está en la calle OpenOffice 3.0 Beta. La lista de mejoras es bastante larga y está bastante bien documentada en la propia web de OOo. Como profesor, una de las características que más me han gustado es el soporte de dos monitores en Impress, permitiendo que el «conferenciante» vea por ejemplo en una pantalla el tiempo que le queda, el que lleva consumido, la siguiente diapositiva y el texto de ayuda de la diapositiva actual, mientras que en el otro (lo que se proyecta en pantalla para todos los asistentes) se vea sólo la diapositiva actual. Lo que indico se lleva a cabo con la ayuda de la extensión «Presenter Console Extension» y aún tengo que probarla para ver si funciona tan bien como parece. Aunque… pensándolo bien, me gusta acercarme al público cuando hablo, y no me gusta quedarme sentado ni quieto delante del portátil, así que, no sé si finalmente le sacaré demasiado provecho…  Ya veremos 😉

Hackit! 2007: Nivel 9, espiando conversaciones VoIP

Lo primero que vemos al entrar en el nivel 9 es la posibilidad de descargarnos un fichero .zip que incluye un único fichero tampering.cap . El propio Linux nos indica de qué se trata:

sh-3.2$ file tampering.pcap
tampering.pcap: tcpdump capture file (little-endian) - version 2.4 (Ethernet, capture length 65535)

Una captura de tráfico hecha con tcpdump. Vamos a darle un poco de trabajo a Wireshark (ex-Ethereal), mediante el comando

$ wireshark tampering.cap

Vemos en la columna Protocol que aparte de ARP, aparece el acrónimo SIP (Session Initiation Protocol), o sea, «protocolo de iniciación, modificación y finalización de sesiones interactivas de usuario donde intervienen elementos multimedia como el video, voz…» (Wikipedia dixit) ¿Han capturado tramas de voz? Menos mal que me he traído los auriculares 🙂 También veo tramas RTP (Real-time Transport Protocol, que define un formato para el transporte de audio y video sobre Internet)… veamos qué tenemos en Wireshark al respecto…

Varias opciones del menú se relacionan con SIP, RTP y llamadas de voz. Por medio de la vieja táctica de «prueba y error» 😉 llegamos a la opción «VoIP Calls». Nos sale esta pantalla:

Pulsamos en Player y obtenemos:

Esto parece una matrioska 🙂 Veamos… si pulsamos en «Decode».

Esto tiene muy buena pinta. Pónte los cascos, pulsa «Play» y escucha la conversación… mañana seguiremos con la resolución del misterio (inténtalo por tu cuenta, ¡hombre!)