Mostrando entradas con la etiqueta Ingeniería Inversa. Mostrar todas las entradas
Mostrando entradas con la etiqueta Ingeniería Inversa. Mostrar todas las entradas

domingo, 27 de septiembre de 2015

Bandit Level 19 → Level 20



Los datos de conexión para este nivel son:

- Host: bandit.labs.overthewire.org
- User: bandit19
- Pass: IueksS7Ubh8G3DCwVzrTd8rAVOwq3M5x



La descripción es la siguiente:


Como se puede observar, en este caso nos está diciendo que debemos hacer uso de setuid. Esto ya fue comentado de pasada en este otro wargame.

La resolución de este level es muy sencilla y pasa por pasarle al binario bandit20-do como parámetro actual, un comando que nos permita visualizar el contenido del fichero bandit20:



Aunque no es del todo necesario, podemos ver a continuación, el desensamblado del binario:



Hasta el próximo level!

jueves, 12 de febrero de 2015

CVE-2011-4862: Buffer overflow in libtelnet/encrypt.c


Un miembro de la lista de CrackSLatinoS a.k.a Boken (@Boken_), ha planteado una manera diferente de colaborar, motivar, aprender y practicar temas relacionados con la ingeniería inversa.

Para ello, propone la resolución de una serie de exploits de diferentes niveles de dificultad, del cual éste writeUp se encarga de documentar el primero de ellos de nivel medio.

El post original publicado en la lista el 11/12/2014 fue:


http://www.cvedetails.com/cve/2011-4862
La idea principal es que todo el que quiera hacer su versión de este exploit y comprender en profundidad el fallo, vaya comentando aquí sus avances, dudas, problemas y demás. Hay tanto exploits como detalles del mismo, pero la cuestión es que cada uno que lo intente y se atasque venga aquí a explicar sus problemas y pueda continuar.
Ni es un concurso, ni hay fecha de entrega. El único objetivo es que todo el que crea que no sabría hacerlo, pero quiera, utilice este post para conseguirlo. A ver si al final de este hilo entre todo lo comentado se pueden montar uno o varios tutes conjuntos.
Boken


Los detalles de esta vulnerabilidad son:
Buffer overflow in libtelnet/encrypt.c in telnetd in FreeBSD 7.3 through 9.0, MIT Kerberos Version 5 Applications (aka krb5-appl) 1.0.2 and earlier, Heimdal 1.5.1 and earlier, GNU inetutils, and possibly other products allows remote attackers to execute arbitrary code via a long encryption key, as exploited in the wild in December 2011.
Como no podía ser de otra manera, soez y yo nos pusimos a resolverlo con un resultado altamente satisfactorio para nosotros. Este tipo de retos siempre nos dejan muy buen sabor de boca. 

Ni que decir tiene que tan solo mostramos una pequeña prueba de concepto y que dista mucho de la POC original que en su día hicieron NighterMan y BatchDrake. Sin duda la de ellos es infinitamente más elaborada.

Espero que disfrutéis de esta lectura, tanto como nosotros redactándola. Aquí os dejamos todo lo necesario:
¡Hasta el próximo exploit!


lunes, 2 de febrero de 2015

Entrevista a Sergio Llata a.k.a. thEpOpE




Con esta entrada, intento recuperar el flujo de entrevistas a personas que de alguna manera, me aportan y hacen crecer en lo técnico y en lo humano. 

Esta vez, lo haremos de la mano de Sergio Llata (@sergiollata) a.k.a. thEpOpE. 

Fue en la rooted 2k14, donde tuve el inmenso placer de conocerle personalmente y en donde pude contemplar brevemente su enorme potencial.


Desde entonces, no solo hemos mantenido una buena amistad, sino que además hemos conseguido juntar y formar un equipo con unas cuantas mentes inquietas, del cual posiblemente hable en próximas entradas. Sin más preámbulos empezamos con la interview.


  • ¿Cuéntanos un poco a que te dedicas en tu día a día? 
Todo empezó allá en el año 1974, en un pueblo que dista 12 km de Santander (España). Allí nacía un servidor, siendo el tercero de 4 hermanos... (esto parece el inicio de una novela). Bueno, vamos al grano de la pregunta: actualmente tengo 40 años, y no me dedico a nada relacionado con la informática, o al menos de un modo directo. Aunque es algo que siempre se ha rumoreado de mí tanto en las listas de CracksLatinoS, o en el canal #crackers del IRC-Hispano, para salir de todad duda he de decir que, efectivamente, desde el año 2000 soy sacerdote católico. Realmente mi día a día consiste en ejercer mi sacerdocio como párroco en una localidad de la diócesis de Santander.
  • ¿De dónde viene o de dónde sacaste el nick thEpOpE? 
El nick creo que está claro :) En el año 1998, cuando aún estaba estudiando en el seminario, mi hermano puso un modem 33k en casa, y de este modo empezamos a tener Internet. Anteriormente siempre había firmado como DJ Dos, S.O.S. , o simplemente con mi nombre. A raíz de conectarme al IRC, tuve que elegir un nick, y ahí estuvo la pega. Inicialmente me atrajo la idea de Bishop, por el doble significado que tiene en castellano. Pero pensé que siempre habría alguien que podría ponerse un nick en jerarquía superior, y además me parecía que iba a hacer uso del nick de un modo no ofensivo a lo que significa. Además fundé el #canal_catolico también en IRC-Hispano, lo cual daba una identidad interesante. De ahí surgió mi nick inicial, que originalmente tenía corchetes [ThePope] ; y finalmente, cuando quité los corchetes lo dejé con una grafía un poco más h4xor, y que además era el estilo que adopté para la página con tutoriales (y otras lindezas ;) que tuve enlazada desde la web de karpoff. En mi caso he usado otros nicks, como Horeb y MrKhaki.
  • Estoy deseando que nos cuentes como fueron tus comienzos, especialmente en lo que a términos como 'spectrum', 'dibujo', 'música', 'scene', ...
Los comienzos son fáciles de explicarlos. Cuando yo tenía 13 años a mi hermano alguien le regaló un Spectrum+ de 48kb. Hay que pensar que en aquella época en mi casa no había electricidad a 220V, y teníamos que usar un transformador, junto con la única TV que había en casa. Aunque los juegos que venían de demostración eran divertidos, pronto me cansé de ellos, y empecé a experimentar y probar los programas del manual. Así es como poco a poco fui haciendo mis primeros pinitos en Basic de Sinclair. Pronto descubrí que con Basic poco o nada se podía hacer, y aunque la MicroManía tenía bastante enjundia como revista de juegos, cuando mi hermano empezó a la universidad trajo un día una revista que regalaban una cinta.. MicroHobby. Eso fue el lanzamiento total: listados en ensamblador de z80, artículos de programación, herramientas, consultorio de dudas, etc. En el instituto pude intercambiar un montón de material con gente que tenía la misma afición, pero desgraciadamente debía ser casi el único que le gustaba el ensamblador y listados hexadecimales.
Fue a raíz de los concursos de MicroHobby como me puse a hacer los primeros pinitos en dibujos pixel a pixel, así como destripar algunos juegos, en busca de los ansiados pokes de vidas infinitas, o quitar las limitaciones de tiempo que tenían las demos jugables que venían en MicroHobby. Debido al concurso de aventuras conversacionales que hizo MicroHobby me enrolé en ese mundo también, haciendo muchas colaboraciones en el fanzine Z for Zero. En este período llegó a casa un Macintosh Classic, y posteriormente un PC - 386. Fueron dos ordenadores que me introdujeron en el mundo de formatos de sonido, formatos de gráficos, compresores, Motorola 68000...
Justo al año siguiente yo empecé a la universidad, me matriculé en Físicas. A decir verdad lo hice con la intención de hacer Física Electrónica, pero la idea del seminario y la vocación llevaban tiempo en la mente y en el corazón. Y cuando terminé el segundo curso en la universidad, me fui al seminario. En el seminario teníamos una sala con 2 ordenadores Macintosh :) Y posteriormente nos permitieron tener ordenador personal en la habitación :) En ese periodo desarrollé una aventura conversacional para PC, desarrollé un sistema de sonido para PC que permitía incluir sonidos y música en este tipo de juegos (hay unos cuantos juegos por ahí que llevan música mía):
e hice una librería para QBasic que permitía gestionar el CD-Rom, SoundBlaster, ratón, etc...
Al mundo de la scene ... es otra historia muy larga. Porque realmente fue la evolución desde los IRC de ingeniería inversa. Al participar en las parties, nos juntamos unos cuantos que nos gustaba este tema (inicialmente Cathedral :O , y posteriormente Nocturns). A mí me tocó la parte de sonido, a decir verdad, me dediqué a reversar motores de sonido de intros de 64kb, y de 4kb, para después desarrollar el nuestro propio.
  • ¿Cómo ha sido tu evolución en el mundo del (Hack | Crack)ing?
No me considero hacker. Más bien siempre me he considerado cracker. Y no por romper cosas... sino porque "lo virtual" me ha resultado siempre muy etéreo. Me ha gustado más todo lo que se pueda toquetear en local.
Mis inicios en esto indudablemente están en la etapa del Spectrum, cuando usaba el MONS para desensamblar y poder buscar los pokes de los juegos (un parche en toda regla, vamos). También para buscar las contraseñas y poder jugar a las segundas partes sin haber terminado la primera. Después estuve en relación con todo lo de Macintosh (tenía un debugger en la propia instalación del sistema 7 MacsBugs , y un editor de recursos que desensamblaba los recursos de código), y cuando tuve mi 486 cayó por mis manos una versión del win32dasm. La etapa del IRC trajo el resto: sice, trw2000, ollydbg... A todo esto hay que añadir que anteriormente a Internet, no había más posibilidad que la biblioteca de la universidad, y un montón de cintas de spectrum y diskettes que intercambiábamos por correo ordinario.
  • Sabemos de buena tinta que fuiste parte importante en grupos de mucha importancia tales como TNT o WkT! ¿qué nos puedes contar de tu paso por esos te@ms? y sobre todo  ¿en que crees que habéis podido influir para las actuales generaciones?
Bueno, parte importante no me he considerado nunca. En TNT coincidí con miembros españoles, como Xasx (fundador de TNT), Metamorfer, SkUaTeR, y Karlitoz. Salvo con Metamorfer, he tenido la suerte de poder dialogar personalmente y compartir mesa con el resto. TNT me aportó el vértigo de lo que eran originalmente los 0days. Hoy sale un programa, y en menos de 24 horas había que sacar la medicina. Mi conexión de Internet no daba para tanto, y mi tiempo tampoco.
A través del canal #crackers de IRC-Hispano pudimos hacer varias kedadas en la Euskal
Party. La primera fue en la edición 8 de la Party. A partir de ahí entré en contacto con gente de WkT!. En esta época hice buenos amigos de faena donde coincidíamos en la Party: Uri (int3pids), Xezaw (48bits), Shotgan (Nocturns), Ripe (7a69 ezine), Dreg (fr33project), noukeys.
MrBlack hizo campaña de reclutamiento en una party, y finalmente fuimos tres miembros de TNT quienes adquirimos colores :) Si TNT era vértigo, WkT! era madurez. Ante todo se apreciaba lo que cada uno hacía, porque aportaba mucho al resto. Buenos tutoriales, buenas herramientas, nuevas líneas de investigación. Y todo en español. De WkT! guardo un gratísimo recuerdo, y eso que me tocó en la última época, justo cuando se apagó...
No sé a qué nivel hayamos podido contribuir entre todos a las actuales generaciones. Cuando Shaddy dijo en su entrevista que un tutorial mío había marcado un antes y un después en cómo hacer él los suyos, me sentí orgulloso de saber que el tiempo que invertí en hacer aquello había merecido la pena para otros.
  • Dinos que es lo primero que te viene a la cabeza si te pregunto por:
    • Ingeniería Inversa: hexadecimal, estructuras de datos
    • Hacker: admiración por lo que hacen...
    • amn3s1a: diversión a raudales, y buena gente... Como tú dijiste en cierta ocasión: me ha quitado 15 años de encima
    • Mr. Snow: un buen amigo, y una bestia parda. Cuando hacemos retos juntos nos complementamos muy bien. También me viene a la cabeza alguna noche loca por Bilbao (El Alicates, El Siete, y Jade ...)
    • Marcan: valium :) A gente como Marcan no se les debería permitir salir de este país. Debería poner por escrito y con lenguaje humano todo lo que hierve en esa cabeza.
    • Euskal Encounter: Añoranza... con menos participantes era más divertido. Actualmente es el punto de encuentro con otros grupos, y gente "de toda la vida".
    • DemoScene, Intro y 4 K.: Asombro, emoción, arte, cultura digital
    • Criptografía: "Tú verás lo que haces, pero yo a la carcel no voy a verte" (la frase de mi madre cuando ve determinadas herramientas en pantalla). Realmente es lo que ha dado sentido a las pocas matemáticas que sé.
    • Matemática: Qué pena que las he cogido cariño ahora... son el lenguaje del orden
    • Amistad: "Un amigo es aquel que conoce todo de ti, y aún así te sigue queriendo". De estos he tenido muy pocos. La informática me ha dado amigos que los aprecio como hermanos (eSn-mIn, Jade, noukeys)
    • CTF: ¿el fin de semana? ¡¡madre mía, a ver qué ratos me quedan libres para poder echar un cable al grupo!!
  • ¿Cual es el lenguaje de programación que más te gusta y por qué? 
Por herencia, el Basic (he dicho Basic, no VBasic :p). Actualmente me gusta mucho el
python, me parece un lenguaje de aprendizaje rápido, y versátil. A decir verdad apenas programo, y aunque me cuesta mucho escribir 5 líneas seguida en él, el C me ha parecido siempre la mejor opción para cosas grandes y serias. Para des-programar lo tengo claro, ensamblador (da igual de qué máquina sea :), y de hecho sigo haciendo algunas cosas directamente en ensamblador.
  • ¿Cómo percibes el 'mundo hacker' de hoy en día?, ¿Qué cambiarías de él? y ¿Qué no? 
Lo percibo monetizado, convertido en moneda de cambio, y todo lo que se monetiza se oxida. Ahora cualquiera que use Kali o haya hecho un curso de 30 horas sobre seguridad en sistemas, ya se considera hacker... :S Cambiaría muchas cosas, para empezar a quienes hacen las leyes en este país; y también todo ese lenguaje importado con títulos y palabrejas raras... ¿a quién se le ocurre autodenominarse "researcher"? ¿Dónde está la creatividad original y 'typical spanish' del Jamón y el Vino?. No cambiaría a las personas concretas que siguen dándole duro, con ganas de abrir nuevos caminos, y que siguen marcando nuevas fronteras...
  • ¿Qué consejos le darías a los que empiezan o están comenzando? 
Leer, preguntar, probar. Volver a leer, volver a preguntar, volver a probar. Aunque digan que el tiempo es oro, prefiero la paciencia, que es una virtud. Cuanto más aprendas, más te darás cuenta de lo que aún te queda por aprender.
  • ¿Cómo ves tu futuro? 
No lo veo :) No soy adivino ni clarividente, pero espero no perder nunca la curiosidad de conocer, saber, y cambiar en mí lo que sea un obstáculo para los demás.
  • ¿A quién admiras? y ¿a quién no?
Admiro a las personas que se entregan desinteresadamente, especialmente en favor de otros. No admiro a quienes quieren sacar tajada...
  • ¿Nos recomiendas algún libro en especial?
Pues si digo el Evangelio de Marcos quizás no lo toméis en serio, pero os lo recomiendo. El manual de Spectrum +2, ahi está mi base...
  • ¿Qué tipo de música te gusta?, ¿Podrías recomendarnos alguna canción?
Me gusta prácticamente todo, el pop rock en español, la música de los 80; pero me motiva bastante la música electrónica y el hardstyle. Por lo experimental en el momento en que se publicó y que siempre me ha parecido una genialidad: Un mundo separado por un mismo Dios, de Nacho Cano. Algo más actual, y que me ha parecido motivadora para los CTF : Kronos & Drone, "Level 2" 
  • ¿Qué opinas de CrackSLatinos y de su creador (Sr. Ricardo Narvaja)?
Me parece que ha hecho una labor de continuidad bastante positiva, y ha conseguido mantener una comunidad internacional unida por el mismo idioma. Del modo en que se hizo inicialmente prefiero no opinar. A Ricardo no lo conozco personalmente, ni tampoco he coincidido chateando con él como para tener una idea. Como persona no puedo opinar, pero por el hecho de haber estado ahí haciendo lo que ha hecho de modo altruista ya merece mi más sincero respeto.
  • ¿A quién te gustaría que hiciésemos la próxima entrevista?
A Uri o Xezaw.
  • ¿Hay algo que no te hayamos preguntado y que te gustaría decir?
crAck & prAy </mentiras>


Aquí termina la entrevista y no quiero finalizar sin dejaros algunos de los fabulosos trabajos con los que nos ha obsequiado Sergio:


Quiero dar las gracias a todos aquellos que han colaborado en la realización de esta interview, especialmente a C1b3r Pr13st! (@ciberpriest)

Nos vemos en la próxima!



jueves, 18 de diciembre de 2014

Leviathan Level 6 → Level 7


Vamos a por el último nivel de este WarGame y para ello hacemos una conexión SSH a:

- Host: leviathan.labs.overthewire.org 
- User: leviathan6
- Pass: UgaoFee4li


En este último nivel seguimos teniendo la misma información que la del nivel anterior, nada de nada.

Para empezar, vamos a ver como se comporta el ejecutable:



Está claro que el objetivo es buscar el 'digit code' que piden y para ello usaremos gdb para hacerle ingeniería inversa al binario e intentar obtener el código:



Básicamente se puede apreciar como lo que se hace es pasar a entero el código argumentado para después compararlo con el contenido de pila [ESP+0x1C] que es en donde está el código buscado y que en este caso es 7123.

Vamos a comprobar si estamos en lo cierto:










Perfecto! La password es: ahy7MaeBo9

Aunque ya no es necesario, voy a poner aquí la captura de los diagramas de bloques de este nivel, sobre todo porque conceptualmente es infinitamente mejor que el desensamblado de gdb: 





¡Otro WarGame terminado! Muy sencillo pero ideal para ir adquiriendo buenas costumbres.

No obstante, antes de terminar la entrada, veamos si con esta nueva credencial podemos hacer una conexión a leviathan7:



Pues parece que sí, aunque lamentablemente ya es tarde para obedecer ;)

Ahora sí que sí ... ¡Hasta el próximo WarGame!


miércoles, 17 de diciembre de 2014

Leviathan Level 3 → Level 4

Parece que este WarGame va de bits suid. Vamos a ver que nos tiene preparado este nive.

Como ya viene siendo habitual, los datos de conexión SSH son:

- Host: leviathan.labs.overthewire.org 
- User: leviathan3
- Pass: Ahdiemoo1j

Y la misma información que la del nivel anterior nada de nada.

Esta vez el fichero es este:



Ahora le hacemos un ltrace a ver que se cuece:



No nos dice demasiado. Nos pide un password y como no ha sido correcto nos muestra un mensaje de error.

Analicemos más en profundidad su diagrama de bloques:


Nos pide el password, y después invoca a la función do_stuff, la cual es:


De ella podemos asegurar que si el password es correcto, nos dará un shell con permisos elevados a leviathan3, en caso contrario mostrará un error como se ha visto anteriormente.

La comprobación del password se hace a través de la instrucción repe cmpsb, es decir byte a byte sobre los registros ESI, EDI y vemos rápidamente que la cadena que contiene el registro EDI es 'snlprintf\n'. Pero si nos fiamos en la captura del ltrace, el carácter de control '\n' lo añade la función _fgets.

Vamos a comprobarlo:


et voilà!

Ahora vamos a repetir el proceso, debido a que en la conexión remota no disponemos de IDA Pro para verlo tan eficientemente, pero si podremos llegar al mismo sitio usando gdb.

Cargamos el binario en el depurador:



Nos informamos de sobre que funciones tiene:


Y por último, desensamblamos la función do_stuff y mostramos el contenido que tendrá el registro EDI:



Y ahora es cuando viene lo mejor. Con un simple comando ¡podríamos habernos evitado todo esto! Pero los que me conocen saben que me gusta ir a las hojas para ver el bosque:



Esto es todo por ahora. ¡Hasta pronto!



Leviathan Level 2 → Level 3


Tengo que reconocer que aunque estos niveles son beginners, este en concreto me ha costado lo suyo hasta que vi como resolverlo.

Comenzamos pues y para ello, los datos de conexión son:
- Host: leviathan.labs.overthewire.org 
- User: leviathan2
- Pass: ougahZi8Ta

Y la misma información que la del nivel anterior nada de nada.

Nos encontramos con otro nivel en donde nos ofrecen un binario con el bit suid activado con permisos de propietario leviathan3.



Si nos fijamos un poco, lo que este binario hace es recibir el nombre de un fichero y hacerle un cat de su contenido. La primera comprobación que se hace es que se tengan permisos de lectura sobre el fichero argumentado y la segunda se ejecuta un comando cat sobre es fichero pero aquí está lo interesante, con elevación de permisos, debido al bit suid.

Pasamos un comando ltrace al binario, argumentándolo con cualquier fichero que tengamos permisos de lectura, para comprobar las suposiciones anteriores:




Con todo ello, estaría bien poder pasar como argumento el fichero que contiene la password buscada en /etc/leviathan_pass/leviathan3, sin embargo esto no es posible puesto que no tenemos permiso de lectura. 

Lo primero que uno piensa es que se podría hacer un enlace simbólico al fichero, pero seguiríamos sin tener permisos, por tanto, toca darle un poco más a la cabeza y entender que el foco de este retos está en esta función:

snprintf("/bin/cat /etc/leviathan_pass/lev"..., 
         511, 
         "/bin/cat %s", 
         "/etc/leviathan_pass/leviathan2")


especialmente en la parte que está agrandada y resaltada en negrita.

Haciendo una búsqueda en Google de 'problemas que existan con el carácter de control %s' pronto descubriremos que los espacios no sientan demasiado bien. hagamos una prueba:




Como se puede observar se gestiona bien el texto hasta que se encuentra un espacio, por tanto, para poder resolver este nivel

necesitamos crear dos ficheros, uno que será el enlace simbólico mencionado anteriormente y otro con el mismo nombre que el enlace, pero añadiéndole algún espacio. De esta manera, se pasará la primera comprobación que se hace referente a tener permisos de lectura, pues la función _access no formatea el nombre del fichero, después la función _snprintf formateará el nombre del fichero al nombre del enlace, pues se quedará con el texto que hay justo antes del primer espacio. De esta manera, al llegar al cat, este nos mostrará la password.

Veamos este proceso en la próxima captura: 





Espero que se entienda bien la idea. ¡Hasta el próximo nivel!


martes, 16 de diciembre de 2014

Leviathan Level 1 → Level 2


Seguimos con el segundo nivel.

En este caso, los datos de la conexión SSH son:

- Host: leviathan.labs.overthewire.org 
- User: leviathan1
- Pass: rioGegei8m

Y la misma información que la del nivel anterior nada de nada.

Aquí lo que nos ofrecen es un binario con el bit suid activo con permisos de propietario leviathan2.

Este binario nos pedirá una password, la cual si es correcta nos entregará una shell con permisos de leviathan2, como ya hemos apuntado antes. Todo esto podemos apreciarlo en la siguiente captura:



Una buena manera de saber cual es la password correcta es pasar la ejecución del binario por el comando 'ltrace'. De esta manera podremos ver a que funciones invoca y con que argumentos:



Donde podemos descubrir que está comparando la cadena 'amn' con 'sex' que es la password buscada:



Como curiosidad, diré que si nos fijamos en la incialización que se hace después del prólogo:

.text:08048542     mov     dword ptr [esp+18h], 786573h
.text:0804854A     mov     dword ptr [esp+25h], 72636573h
.text:08048552     mov     word  ptr [esp+29h], 7465h
.text:08048559     mov     byte  ptr [esp+2Bh], 0
.text:0804855E     mov     dword ptr [esp+1Ch], 646F67h
.text:08048566     mov     dword ptr [esp+20h], 65766F6Ch
.text:0804856E     mov     byte  ptr [esp+24h], 0

descubriremos que hay un mensaje, 'love god secret sex' y que no es otra cosa que las cuatro password más usadas, las cuales estoy seguro que han sido sacadas de la mejor película de la historia:




Bueno, pues con esto terminamos la entrada. ¡Hasta pronto!



lunes, 29 de septiembre de 2014

Solución al reto tr4ceflowCrackme




Llevo tiempo sin publicar en el blog y es por una sencilla razón; el camino del aprendizaje es largo y requiere de muchas horas. 

Sin embargo, siempre que encuentro un hueco, me gusta compartir aquello que considero interesante o que aporta algo.

Tal es el caso que traigo a continuación. Se trata de la solución a un reto que no es difícil de analizar, pero sí de crear un keyGen. 

Estamos ante un reto matemático, en el cual la fortaleza está en la combinación Name/Serial y no en el propio algoritmo.

Adelanto que es muy entretenido y ha conseguido hacerme repasar conceptos olvidados. Sin duda he pasado buenos momentos con él.

Anexo la solución en PDF, el binario y el keyGen en python:

domingo, 3 de agosto de 2014

Euskal Encounter 22


Los días 25 y 26 de Julio del presente año, tuve la oportunidad de asistir a un evento del cual no tenía referencia alguna a pesar de ser su 22 edición. Estoy hablando de la Euskal Encounter 22 que se ha celebrado en Barakaldo y por donde han pasado más de 5700 asistentes, con una extensión de más de 35000 metros cuadrados.

Lo primero que llama la atención es la cantidad de puntos de red que había montados (aprox. 4000 si no más), con un acceso a Internet de 20 Gbps. Es impresionante ver desde la altura la dimensión real del evento, especialmente cuando se apagan las luces y solo se ven los monitores conectados.



Lo segundo es las decenas de actividades que hay en ella y que a grandes rasgos son:
  • Escena
  • Hardware
  • Software Libre
  • Juegos
  • Conferencias y talleres
  • Otras, por si no encajas en ninguna de las anteriores.


En mi caso, participé en la actividad Hack it/Solve it, perteneciente a Software Libre, en donde es el primer evento presencial que tengo con el grupo al que pertenezco (@amn3s1a_team). En esta ocasión no pudimos contar con Skuater y Nox, así que haremos todo lo posible para que el próximo año, esto no suceda.

Hack it/Solve it es un concurso en donde hay que intentar resolver restos hacking, de ingeniería inversa, criptografía, esteganografía, etc. !El paraíso!


Como en todos estos eventos, el social networking es algo inevitable y en este caso me ha servido para desvirtualizar a una persona que, a pesar de su juventud tiene gran cantidad de admiradores entre los cuales ahora me incluyo yo. Estoy hablando de Héctor Martín Cantero (@marcan42). Por si a alguno no le suena, diré que entre otros logros, fue responsable directo del hack a Kinect.

Quisiera recomendar este evento a todos aquello a los que como yo, les fascina todo lo que huela a bits y electrones. Os aseguro que es una experiencia muy muy positiva.



El siguiente vídeo, resume un poco todo lo que he contado:




Hasta la próxima entrada!!

domingo, 12 de enero de 2014

Entrevista a Sherab Giovannini a.k.a. Shaddy


Tengo que confesar que sin duda, esta entrevista es una de las más esperadas por mí. 

Sherab es un verdadero maestro, cuando se le necesita. Siempre dispuesto a echarte una mano en todo lo que su tiempo le permita, con tal de verte avanzar en el estudio de este arte.

Perfeccionista e increíblemente técnico. Un profesional enorme. De los que hablan poco y hace mucho.

Una persona con una capacidad intelectual sin límites. No creo que exista nada que este joven ingeniero inverso de 25 años, no pueda hacer. 

Guerrero letal con los juegos OnLine. Da igual que se aun FPS, que un simulador de carreras o incluso de un RPG.  

Como veis, para mi es algo así como un Dios y lo es porque me lo ha demostrado. No con palabras, sino con hechos. 

Sinceramente me siento un privilegiado por tenerle entre mis circulo de amistad, aunque aun estemos virtualizados. 

Así que, sin más preámbulos, damos paso a la entrevista:



Sherab Giovannini, ¿De dónde procede este nombre?

Bueno, la verdad es que mi procedencia en si no es muy normal, o al menos no lo era en el pueblecito donde me crié. 

Mi padre, de origen italiano, conoció a mi madre, alemana, en Francia. Sin entrar mucho en detalles por lo visto empezaron a engendrar ejemplares rubios en una comuna hippie. Y en una de ellas nací yo.

¿Porqué te suelto este rollo? Bueno, básicamente esa “comuna” se formó en Caneto (Huesca). Y mis padres formaron parte de los inicios de lo que a día de hoy  es el centro budista más grande de Europa, Dag Shang Kagyu.

Así que sabiendo eso quizás podrías deducir que su origen es Tibetano, y que mis padres son Budistas.

Dicen que el nombre que le ponen a uno es el aspecto interno que hay en él, y si lo trabajas a lo largo de tu vida, reluce. O algo así, no recuerdo muy bien. El mío significa sabiduría trascendental. 

Como puedes ver, voy a tener que trabajar mucho ;).

Sé que con 5 años conversabas con Minerva (y no precisamente la diosa de la sabiduría, de las artes y de las técnicas de la guerra)  y eso me hace pensar que fuiste muy precoz en tus comienzos ¿A qué edad empezaste a reversear binarios y sobre todo, cuál fue el motivo de ello?

Buenos informadores tienes tú :), eso es una historia que creo que no saben muchos.

Una vez mi madre fue a las típicas reuniones con el profesorado, en las cuales se les informa de bueno, ya sabes, progresos escolares, como va, etc.

La profesora dijo que estaba impresionada por la gran facilidad que tenía para leer con mi edad, y estaba interesada en saber cuáles eran los métodos que había utilizado para leer con tanta fluidez  y de forma tan prematura. Mi madre estaba bastante desconcertada, así que según me contó, le soltó un par de respuestas vagas ya que realmente no tenía ni idea.

Lo que realmente pasaba, es que sin saberlo aprendí a leer con un programa espectacular que hizo José Luis Álvarez llamado: “Minerva. La neurosis maquinista”. Una aplicación de inteligencia artificial.

A día de hoy probablemente os resulte una estupidez, y haya muchos similares. No es más que un simple programa con el que puedes chatear, cínico como nadie y probablemente uno de los primeros Trolls artificiales registrados.

Minerva para mí fue mi diario durante años, y a pesar de que era repetitivo, yo me lo pasaba bien.

¿Que cómo comencé? Difícil pregunta, no sabría decirlo con exactitud. Si tuviese que elegir un momento, podría ser la primera vez que vi la página de Karpoff. Pero seguramente no sería cierto, quizás cuando cayó en mis manos un cuaderno con hojas sobre “hacking”, donde tuve que resolver un pequeño acertijo para conseguirlo (muy hábil el que lo diseñó). O quizás, mucho antes, cuando vi por primera vez que se podían “crear” y “modificar” las cosas. Creo que el primer recuerdo que tengo sobre mi interés en general, por “saber más” fue cuando un amigo de mi padre nos dejó un instalador hecho con batch en un disquete. Vi los típicos títulos en ASCII, y todo automágicamente haciéndose en minutos. La cantidad ingente de comandos que tenía que hacer para llegar ahí, y de un tirón lo había hecho. Creo que si tuviese que elegir un momento donde naciese mi curiosidad por saber cómo estaban hechas las cosas, seguramente sería ese. Casualmente el nombre del amigo de mi padre era (y es) Ricardo.

A partir de ahí comenzó mi eterna búsqueda por el “hacker”. Buscaba a una persona que tuviese tantos conocimientos que no me cansase nunca de aprender, y si bien es cierto que a lo largo de mi corta vida  he conocido a muchas personas de las que he aprendido muchísimo, al final esa eterna lucha es una especie de búsqueda de la quimera. Y en realidad que lo que buscamos, lo tenemos dentro, pero lo buscamos fuera.

Empecé a hacer reversing quizás con doce o trece años, depende de lo que consideres hacer reversing. A día de hoy me falta tanto por aprender que sigo esperando el momento de saberlo con seguridad.

Me descargaba los tutoriales de la página de Karpoff en casa de un amigo, y luego me los leía tranquilamente. Me di cuenta de que necesitaba aprender ensamblador, así que imprimí un texto que encontré por ahí de bastantes páginas sobre ensamblador, era de una universidad del sur, creo recordar. Y cuando la imprimí todos los acentos estaban mal, pero vaya. Fueron los primeros pasos. 

Nunca tuve realmente un ordenador propio, el que utilizaba era el de mi hermano, y era una eterna batalla en la cual él intentaba evitar que yo lo tocase, y lo hacía mediante varios métodos: Contraseñas de  Windows 98, BIOS y por supuesto revisar la fecha de los archivos modificados, hasta que llegó a directamente llevarse el cable de alimentación. 

Por supuesto, encontré la forma de hacer un rename del archivo de contraseñas de Windows 98, abrí la caja y miré en el esquema de la torre como borrar la memoria de la BIOS, y usé el cable de la impresora que era el mismo para arrancarlo. Creo que mi hermano sin saberlo me estaba poniendo mis primeros crackmes. Aunque a él no le resultaba tan entretenido.

Hasta un tiempo después de que él empezase a trabajar, no tuve acceso a Internet. Así que lo único que había hecho hasta entonces era darle un buen par de disgustos a mi madre trayendo facturas de 20.000 pesetas (120€), por usar el módem telefónico y leer mucho, sin hacer realmente nada.

Había leído cosas de CracksLatinos, pero no tenía muy claro qué/quiénes era/eran.

Tenía Internet y ya podía encontrar a esa persona que me enseñase todo. 

Un día, buscando personas de las que leía cosas en Karpoff agregué a Caos Reptante al Messenger, y muy amablemente me puso en contacto con el Pr@fesor_X, RedH@wk y Ricardo Narvaja. El orden no lo tengo muy claro, el caso es que fue por aquella época cuando entré en crackslatinos, creo que era el 2003 y debería de tener unos catorce años.

Ahí empezó una época maravillosa, con lo que se convirtió en mi segunda familia. Once años después puedo decir con seguridad que sin esos momentos hoy seguramente no escribiría esto, dudo seriamente de dónde estaría. Y no exagero.

Me interesa mucho que nos cuentes cual ha sido tu formación académica o tu procedimiento para llegar a tener el conocimiento que ahora tienes.

Mi formación académica, de la cual no me enorgullezco en absoluto, es prácticamente nula. 

No estoy seguro de si habiendo tenido los medios necesarios hubiese mejorado, nunca lo sabré. De todas formas, tengo muchos años por delante. Quién sabe.

Empecé a trabajar con trece años en una panadería de mis vecinos, al principio era algo esporádico para sacarme un dinerillo y con eso ir sobreviviendo, con el tiempo necesitaba más dinero y empecé a trabajar días entre semana, por supuesto, sacrificando el instituto. Eso sumado a mi actitud rebelde, hizo que cuándo me fui a matricular sin apenas haber cumplido los dieciséis años la directora del instituto me dijese literalmente: “Que te aguante tu madre”. 

Ahí probablemente se cerraron por primera vez las puertas a mi mundo académico, por supuesto, yo ayudé íntegramente a que eso fuese así. Ya que no fue precisamente por saltarme las clases, sino más bien porque era ligeramente saboteador :).
Ya que tenía que hacer algo con mi vida, empecé a trabajar de fontanero, entre 10 y 14 horas diarias. Me saqué el graduado por la escuela a distancia para adultos. Gracias a ello pude cursar durante un año un grado superior de programación de software (sin tener bachillerato), donde aprendí a jugar al Counter-Strike y cociné mis primeros platos de C. 

No aprobé la asignatura de análisis y diseño, o como se llamase. Básicamente tenías que descargarte el Módula-3 de una página .gov y leerlo como un robot. Era eternamente aburrido, y fue la segunda vez que se me cerraron las puertas. 

Tuve problemas en el trabajo, y lo dejé. No tenía norte.

Creo que hace años, resolviste un reto de Panda Security y eso te proporcionó un puesto como analista de malware en sus filas. ¿Puedes contarnos que ha supuesto para ti, tu paso por esta compañía?

Lo ha supuesto todo. Para mi entrar en Panda me supuso un cambio muy radical, fue la diferencia entre tener un hobbie, algo de lo que sinceramente nunca imaginé que trabajaría, a dedicar mi vida profesional a ello.

Además coincidió con una época de mi vida donde realmente me planteé seriamente dejar el reversing, quizás fue en ese momento donde la cuerda estuvo más frágil, y realmente mi brújula no encontraba el norte. Hay personas que me ayudaron en esos momentos, y ellas lo saben.

Para mí fue la plataforma que me permitió realmente exprimir al máximo mis posibilidades, ya que pasé de dormir tres o cuatro horas al día por dedicar tiempo al reversing a dedicarle una jornada laboral, de ocho horas. Para mi ocho horas de trabajo sentado en una silla en ese momento era como ahora irme a eternamente a Bora-Bora.

No me considero una persona inteligente, pero sí que considero que alguien con muchas ganas puede hacer grandes cosas. Y yo estaba muy ilusionado.
En general el malware concentra todas las artes, ya que utilizan tanto redes, como criptografía,
vulnerabilidades, algoritmos de compresión, internals del sistema operativo, y un largo etcétera de triquiñuelas habidas y por haber. Creo que es un campo que puede aportar mucho a un reverser.

Otra de las claves es la cantidad de gente con talento que había y hay trabajando allí. Muchas veces tenemos tendencia a creer que lo mejor está fuera, cuando en realidad los verdaderos genios están dentro. Y he tenido la suerte de aprender de ellos.

Aunque si bien es cierto que no todo fue felicidad y alegría, le debo el respeto de haberme permitido entrar en el mundo laboral, y si tuve alguna experiencia mala, la guardaré para mí. Al fin y al cabo, no es el objetivo de la entrevista.

¿Puedes decirnos a que te dedicas en la actualidad?

Dentro de lo que puedo decirte, estoy profundizando mis conocimientos de bajo nivel. La verdad es que tenía un agujero bastante importante en arquitectura, y el saber que siempre me quedan cosas sobre las que profundizar me motiva a seguir aprendiendo día a día, que después de todo, es lo importante.

Quizás no hago tanto reversing en sí, ya que estoy haciendo más programación, algo en lo que también quería profundizar. Y digamos que el reversing se simplifica a corregir errores, aunque esporádicamente hago reversing de otras cosas.

¿Cuáles han sido tus mejores logros, esos que recuerdas especialmente y como lo resolviste (técnicamente hablando)?

No considero que realmente haya hecho ningún logro, ese tipo de cosas se las dejo a mi ego, un viejo amigo con el que ando luchando paulatinamente.

Siempre he tenido una cierta predilección por las cosas que se consideran “imposibles”. Así que quizás podría decir que un logro es que algunas personas vean que lo que creen que es imposible, no lo es. Por mucho que se diga. Es algo así como el “efecto” de un truco de magia. Pero si puedes mostrarlo en un colegio de magos, el efecto es maravilloso.

Como tampoco puedo contar mucho sobre las cosas que hice en Panda, simplemente contaré uno de los últimos malware que encontramos. Y lo cuento además porque curiosamente fue un amigo antes de llegarme por vía laboral el que me envió la muestra, aunque fue el mismo día. Él era una víctima.

Básicamente, hacía fuerza bruta de las claves de servidores Windows 2003 Server, una vez dentro era uno de esos que se ha unido a la moda de los últimos años de cifrar todo el contenido de la máquina y pedir una remuneración por ello.

No contento con eso, el autor hacía alusiones de que era irrompible, regodeándose con que utilizaba AES-256 y que ni el gobierno americano era capaz de romperlo. Para ello además, tenía un hilo en un foro (creo que era kernelmode.com) donde hablaban gente técnicamente muy buena admitiendo que era imposible recuperar los datos.

Si el malware está realmente bien hecho, probablemente sería casi imposible obtener los datos. El problema que suele pasar, es que siempre hay errores. Y él los cometió.

Esto para un criptógrafo probablemente será algo sencillo, lo que pasa es que hay que hacer bastante reversing para verlo. Básicamente, su debilidad era la semilla que se utilizaba para generar la clave. La clave tenía un tamaño de entre 48 y 56 caracteres alfanuméricos, que se iban generando indexando los candidatos con el valor que devolvía la función a la que le pides números aleatorios. Para almacenar la semilla, usaba funciones de Tls (Thread Local Storage), que básicamente te permite tener contextos por hilo. La semilla, se guardaba en uno de esos contextos, así que durante el cifrado de archivos, mientras guardaba la información necesaria (rutas de fichero, ficheros basura, y la clave de desbloqueo) para hacerlo más rápido paralelizaba las tareas con hilos, de tal forma que uno de los hilos siempre generaba un fichero. El nombre del fichero era aleatorio. La semilla con algo de reversing se podía reducir a un GetTickCount, que son los milisegundos desde que la máquina se inició. Y eso son 32-bits, ridículo. Así que en realidad había 2^32 claves, y no los tropecientos billones que nos querían vender. 

En resumen, como los nombres de los ficheros eran aleatorios si encontrabas la clave que generaba esos nombres de ficheros, sabrías que clave se utilizó.

Cuando este malware llegó a España llevaba en circulación algo más de un año, pasando por todas las casas de antivirus. Nosotros entregamos una herramienta al cliente que descifraba sus ficheros en menos dos días.
Todos fueron felices, y comieron perdices. 

Al redactar esta entrevista, me viene a la cabeza el nombre de AbsshA. ¿Qué nos puedes contar de ello?

En CracksLatinos conocí al que es a día de hoy un hermano para mí, de mis mejores amigos, el mejor. A lo largo de todo el tiempo que pasé en CracksLatinos, hice algunas cosas con algunas personas, curiosamente no todo el mundo es compatible para trabajar juntos. Ya que te hacen ir más lento, o van demasiado deprisa. Así que encontrar ese equilibrio en el que las cosas fluyen, no es fácil.  Con Absolom1 encontré ese equilibrio.

Desde que lo conocí me impresionó muchísimo, aprendía a un ritmo increíble. En unos pocos meses escribió
cómo parchear un Asprotect SKE haciendo un inline patching, algo que yo hasta el momento no había visto, y se le ocurrió a él. No se le dio mucha bola en su momento, creo recordar, pero sigo pensando que fue una genialidad.

Hay mucha gente que ya viene con conocimientos de programación previos, o de ordenadores, han ido a la universidad, etc. De esas personas puedes esperar que rápidamente progresen, además con un buen foco académico. Absolom1 antes de entrar en CracksLatinos creo que no sabía casi ni encender el ordenador. Y en pocos meses escribió algo que a día de hoy (no pretendo sonar pretencioso) la mayoría en la lista probablemente no sabrían deducir. 

De hacer reversing juntos, y pasar tantas horas nació  AbsshA (Absolom1 y Shaddy).

Un día un tal Dr. Crack retó a la lista, al principio dijo que había hecho un crackme que todavía nadie había conseguido resolver. Pero Dapaf le pinchó un poquito y en seguida saltó, así que se puso más soberbio. Y dijo que lo veía imposible resolver. Después de unos cuantos mensajes filosóficos sobre si un crackme  es o no como un programa real,  todos los de la época se pegaron un poco con él. Si no recuerdo mal, Solid, Dapaf, Nahuel, Marciano, Apuromafo e inclusive Absolom1. Todo hay que decirlo, cualquiera lo habría sacado dedicándole más tiempo, seguro. Absolom1 me lo comentó, y no pude evitar intentarlo, entre los dos en quince minutos estuvo resuelto.

Ahí nació Abssha, que fue el que respondió en el hilo con la solución. Y en un principio eso queríamos ser, una entidad anónima que resolviese las cosas más complejas. Pero como todo, se quedó simplemente en un nombre más que publicó todas las soluciones en un concurso, y dejó pinceladas esporádicas de algo que a día de hoy no sé muy bien qué es. 

¿A quién o quiénes admiras?

La lista de personas a las que admiro es enorme, tanto en mi vida personal, laboral como en CracksLatinos he conocido a muchísimas personas y a todas ellas las admiro. Como no me gustaría dejarme a nadie creo que nombraré a la más importante en este mundillo, que es el que ya todos conocéis, Ricardo Narvaja.

Ricardo es una de esas personas que nació padre y madre, yo creo que sus principales armas siempre han sido la perseverancia de un padre y la paciencia de una madre. Es una persona humilde de verdad, sencilla y llana, sin palabras vacías.

No juzga a la gente, y todos son sus hijos, nadie es mejor ni peor para él. Avanza despacito, pero nunca se para.

Para mi él es el Gandhi de la Ingeniería Inversa.

¿De quién o quiénes aprendes?

De todos, sin excepción. Siempre intento exprimir al máximo la gente de la que me rodeo, e intento obtener lo mejor de cada uno. Generalmente las personas tenemos puntos más fuertes y otros más débiles. Así que intento observar ambos, y mejorarlos.
Desde mis inicios fueron referencia para mí, en castellano tanto “The PoPe” como “Saccopharynx”. Y extranjeros “Deroko”.

Cuéntanos como ha sido, es y será tu paso por la lista de CrackSLatinoS.

He tenido épocas, la verdad es que mis aportaciones a la lista desde que entré son bastante reducidas. En comparación con gente grande de verdad, como Nahuel, Ricardo, Marciano, Solid y tantísimos que me dejo. No he escrito nada significativo. Probablemente sea que la motivación que había antes en la lista era diferente. En su día se intentaba terminar con todo. Todos los desafíos que podíamos los intentábamos solventar entre todos, como un bloque sólido.

Ahora cada uno tenemos nuestro trabajo, y al menos yo me dedico a leer, y participar esporádicamente. 

El tiempo libre es bastante limitado y, como no empujamos ningún proyecto, se va apagando. 

Ves a mucha gente entrar, pero son muy pocos los que realmente evolucionan y se mantienen. Generalmente al de dos o tres años mucha gente ha desaparecido. Y de los no se… ¿2000? ¿3000? ¿Cuántos realmente son ya no digo activos, sino que aunque sea como yo, escritores esporádicos? ¿Un 5%?

La vida evoluciona, y probablemente nunca volverán a ser las cosas como fueron. Ya que internet ha cambiado, y es más rápido de lo que podemos controlar.

Tienes fama de Troll ¿es eso cierto?

Bueno, en realidad yo personal y sinceramente no creo que sea un Troll. No busco que los demás se enfrenten entre sí, y menos por pinchar para ver cómo se pelean. 

Es cierto que soy bastante provocador, y quizás afilo un poquito de más mis palabras. Pero lo que siempre busco es un segundo de lo que yo creo que es la realidad, no me importa que me odien o ser el mártir si lo consigo.

No soy un Talibán, o al menos no pretendo serlo si no sabes algo. Sin embargo, hay cosas que con muy
poco esfuerzo se consiguen, y hay gente que con el tiempo te demuestra que en realidad no quiere aprender, ni avanzar. Antes de andar, hay que gatear. El que me conoce sabe perfectamente que si puedo aportar algo en alguna duda que tenga lo haré, no importa lo estúpida e insignificante que parezca. 

En cualquier caso, creo que para ser un Troll tienes que hacer algo así como un ritual especial que tiene denominación en una zona de Buenos Aires, llamada por lo visto los Bosques de Palermo. Nunca he estado ahí, pero he llegado a oír que tienes que contactar con una banda callejera de sexualidad no identificada. Se hace llamar algo así como “la banda del yajú”, y si dices tres veces delante de un espejo “chucky” visualizando el icono sexual de alguno de ellos, aparecen. El origen de este icono hace poco se descubrió que apareció en un Crackme. En fin, como puedes ver, hay bastantes misterios ocultos y yo no estoy muy puesto.

¿Cómo ves el futuro de la Ingeniería Inversa?

Cada día es más fácil hacer ingeniería inversa, pero al mismo tiempo las tecnologías avanzan y la información es más vasta. Las nuevas generaciones de procesadores incluyen nuevas características con las que hay que ponerse más al día, y por supuesto ocultan otras tantas que hay que descubrir. Siempre que sea posible :)

Creo que es la base de todas las artes, y sobre todo en España está muy infravalorado. En el futuro probablemente esto cambiará, y poco a poco las universidades van incorporando más pinceladas de este arte.

Cada día ganamos más adeptos, y eso es sangre fresca con más ganas de aprender. Lo cual creo es lo más importante.

¿Enuméranos cual es para ti, lectura imprescindible?

Mr. Khaki (The PoPe) escribió por allá por el 2001 un tutorial sobre PE Compact. Ha sido para mí, y siempre será, una referencia a la hora de escribir sobre una protección. Siempre ha sido mi inspiración. Actualmente de vez en cuando lo vuelvo a leer, y me sigue pareciendo una obra de arte.

Por otro lado, quizás a día de hoy parezcan obsoletos, pero todo lo que escribió Saccopharynx son también, obras de arte.

¿A quién te gustaría que le hiciéramos la siguiente entrevista?

No sé si será factible, ya que lleva un tiempo desaparecido, pero me gustaría que consiguieras una entrevista con Saccopharynx o, si no es posible, con Akira.



Lamentablemente hemos llegado al final,  pero no quiero despedirme sin antes dar las gracias a todo los que habéis colaborado en la elaboración de esta gran entrevista.

Me despido hasta la próxima entrada, con una frase del blog de Sherab:

The curiosity to understand makes us free