jueves, 23 de agosto de 2012

Entrevista "técnica" L0ngin0x. Reverse Engineer.

Nunca en mi vida habría imaginado que iba a conocer a tanta buena gente como me está pasando desde que empece mi aventura bloggera. Todos sabeis quienes soys, y os agradezco de corazón el apoyo que tengo de vuestra parte.
El otro día, el amigo Akil3s del conocido blog "1gb de información" me realizó una entrevista cachonda ( no enseño las tetas, lo siento)al cual agradezco mucho.
Me quedé con ganas de hacer lo mismo, y le he pirteado la idea.
Para esta entrevista/charla/explicación he buscado al amigo L0ngin0x, una de esas personas, amante de lo que hace, que dedica su tiempo libre, y su dinero, en asistir a charlas a kilometros de su ciudad, dejando esos momentos de familia que todos necesitamos en nuestro tiempo, por aprender.
Como siempre en este blog, la entrevista va un poco en plan broma, mezclando la parte personal, con la parte técnica en la que este hombre destaca, la Ingienería Inversa.
Muchas gracias por tu ayuda, y espero que os sirva, como a mi, a comprender un poco mas ese mundo "reverso" y tener las nociones básicas, para poder empezar a buscar en google/amazon y demás.
A por ellos. !!!



¿Quién es L0ngin0x? de donde eres, de donde vienes, a donde vas?

L0ngin0s es un apasionado del mundo digital, posiblemente desde el mismo día que mis padres me concibieron.
 Nací en Madrid, soy acuario, tengo 40 años, algunos kilitos de más y estoy felizmente casado con una morena que me quita el sentido y que me ha regalado mis dos mejores tesoros, mi hija de 9 años y mi hijo de 4.
 Deje de estudiar cuando apenas tenía 15 años, sencillamente porque mi mente era totalmente inmadura y no me motivaba nada el bachiller. No obstante, siempre he dedicado infinitas horas a este mundo digital del que hablaba antes. Por eso un día, mi mujer y mi hermana, me animaron a canalizar esas horas de estudio de una manera más organizada.
 Así que hace unos 9 años me matriculé en el CAD para poder hacer la ingeniería en informática de sistemas (hoy llamada grado en ingeniería informática) y aquí sigo, con ¾ del camino recorrido.
 Actualmente prestos mis servicios en materia de seguridad de software, en una empresa que está a la vanguardia mundial de la diagnosis en vehículos industriales.
Es una de esas empresas en donde saben que un activo muy importante es la formación continua de sus empleados y ayudan mucho a ello.
 ¿A dónde voy? Difícil pregunta.
 Está claro que de 0 a 1 trillón estoy en el -1 en la escala del conocimiento informático y para poder subir por esa escala solo queda que seguir formándome día tras días mientras mi mente lo resista.
 Tengo la intención de hacer algunas certificaciones de seguridad informática, de hecho es inminente hacer alguna.
 Pero sin dudarlo, me gustaría terminar mis días siendo un excelente profesional de la seguridad informática.

Creo que eres de los que piensas que si la montaña no va a Mahoma, Mahoma va a la montaña. ¿ Eres muy aficionado al montañismo?

Pues en realdad me gusta la montaña pero no mucho más que otras actividades, simplemente intento hacerle entender a mi cuerpo, que hay más vida que la que existe entre mi torso y mi teclado ;).
 Es evidente que mi mayor afición es todo lo que implique un teclado y un ratón y eso incluye también los juegos online del tipo de los FPS y los de simulación de carreras de coches.
 También he de confesar que últimamente estoy enganchadísimo a la F1 y al irrepetible Fernando Alonso.
 Pero sí, soy de los que creen firmemente que si quieres conseguir algo no hay más remedio que morir por ello.

Unas palabras de ánimo para la gente que quiere "aumentar" sus conocimientos estudiando una carrera tan difícil como la informática, a edades avanzadas adultas.

No hace muchos años, alguien cercano a mí, me dijo que yo terminaría mis días de albañil (por aquel entonces yo trabajaba de peón albañil), sin embargo hoy se tiene que comer sus palabras.
 Gracias al haber empezado la carrea hoy por hoy tengo el trabajo que quiero y deseo.
 Es falso que no se pueda empezar a estudiar porque ya no seas adolescente, es más, a edades adultas uno le saca más partido a lo que estudia, porque lo hace por devoción y no por obligación.
 La fórmula es fácil, si quieres, puedes. No hay más.
 
El señor L0ngin0x se está haciendo hueco en el panorama de la ingeniería inversa, destripando los binarios en busca del hack perfecto xD. Ejemplos de ello son sus recientes publicaciones en su Blog resolviendo retos que muy pocos entiende, y que muchos menos se animan a resolver y así contribuir a que todos aprendamos.

Solución al reto unpackme- FSG 1.31 - dulek

Solución al reto XYZ_KeygenMe20110505_Dev

Solución al reto LaFarge's crackme #2

Resolución del FPR6: Reto Hacking de Julio – ¡Killo! ¡onde ectá mi clave! 

Para empezar la "chicha" de la entrevista, ¿Qué es el Reverse?.

Reverse, reversing, ingeniería inversa o ethical cracking ahora tan de moda.
 Podemos decir que la ingeniería inversa es el proceso al que sometemos un “algo” con el propósito de obtener sus principios tecnológicos. Como cabe esperar, ese algo puede ser software o hardware.
 En el caso del software, partiendo de un binario, mediante técnicas y herramientas de reversión, podemos entender como fue programado. De esta manera, en algunos casos podremos modificarlo y en otros incluso mejorarlo.
 Pero dime kino ¿acaso este proceso no se hace también en el ethical hacking?... hacemos un escaneo, en función de las respuestas obtenidas nos hacemos idea de lo que tememos detrás, permitiéndonos en algunos casos, entender como fue diseñado, incluso modificarlo y porque no, mejorarlo ;) 
El reversing existe desde el inicio de los tiempos y se basa puramente en la necesidad humana de entender como están hechas las cosas que nos rodean.

Típica pregunta: ¿ Qué hay que estudiar, qué habilidades hay que entrenar para conseguir dominar el demonio que el software lleva dentro xD?

Como bien sabes kino, es difícil dar la formula exacta, pero básicamente es recomendable saber fundamentos de:
-          Arquitectura de computadores. Recomiendo los libros de William Stallings y David Patterson.
-          Sistemas operativos. Sin duda el mejor libro es el de profesor Andrew S. Tanenbaum, creador de minix.
-          Programación (Ensamblador, C, ...).

Importante es conocer las herramientas que nos puedan ayudar en nuestra labor.

Y por supuesto horas, horas y horas traceando ejecutables y lo más imprescindible, pasión por todo lo que se hace.

¿Qué recursos (webs,foros,etc) recomiendas seguir para enterarnos de que va este mundo? Mojate xD.

Sin duda alguna, para sumergirnos en este mundo es imprescindible empezar por los cursos de Ricardo Narvaja  “introducción al cracking con ollyDbg desde cero”. Repito, imprescindibles.

Posteriormente a ello podemos seguir tanto a Ricardo como a una legión de crackers latinos en su lista CrackSLatinoS dispuestos a ayudarnos en nuestro camino.
 En esta lista se proponen y resuelven infinidad de retos y teorías.
 Podría dar algunos sitios más, pero definitivamente esta es la mejor opción para empezar.

¿Qué software recomiendas para tales menesteres, y que hace cada software?.

Esta pregunta tiene tela y podríamos perfectamente anestesiar a tus lectores (nota kino: Hola papaaaaa) si damos una relación completa de herramientas, así que con tu permiso, me limitaré a dar las que considero más importantes.
           
-          Decompiladores (Decompilers):
o          Proceso inverso a la compilación, es decir, de un binario, obtenemos su código fuente.
o          Algunos de ellos son Reflector, DeDe, DJ Java Decompiler, ...

-          Desensambladores ( Disassemblers ):
o          En este caso obtenemos del binario su código fuente, pero en ensamblador.
o          Algunos de ellos son IDA Pro, OllyDbg, Immunity Debugger, ...

-          Depuradores (Debugguers)
o          Esta herramienta nos permite ejecutar un binario instrucción por instrucción, viendo en todo momento el estado de la memoria del proceso, registros internos del micro y la pila.
o          Algunos de ellos son IDA Pro, OllyDbg, Immunity Debugger, ...

-          Editores para Portable Executable:
o          Herramientas que nos permiten editar los encabezados de un ejecutable
o          Algunos de ellos son PETools, PEEditor, LordPE Deluxe, ...
-          Editores hexadecimales
o          Con estos editores podemos gestionar ficheros en su estado nativo, esto es, byte a byte.
o          Algunos de ellos son Ultra Edit, HxD, WinHex...

-          Dumpeadores de memoria (Dumpers)
o          Permiten volcar a un fichero el contenido de una parte de la memoria RAM.
o          Algunos de ellos son virtualsectiondumper, OllyDump, PETools.

-          Monitores de procesos
o          Son herramientas de monitorización del sistema operative que muestra en tiempo real la actividad del sistema de ficheros, registro, procesos e hilos.
o          Algunos de ellos son las herramientas contenidas en la suite de SysInternals como el Proccess Monitor.

-          Scanners
o          Estas herramientas nos ayudan en la detección de packers, Cryptors, Compiladores, Packers... con los que está construido un ejecutable.
o          Para mí la mejor de ellas es RDG Packer Detector.

Seguro que me dejo alguna por el camino.

Leyendo tu biografía personal, se me ocurre la eterna pregunta, pero la voy a hacer con mas mala leche xD:
            Spectrum o Amstramd?
Spectrum for ever.
             Nintendo o Xbox o Sony xDDD?
Sony, aunque estoy algo mosqueado con la calidad de sus portátiles Vaio.
             Pc o Mac?
PC
             Windows o *nix?
Ambos
             Android/Rim/Ios/Windows phone?
Android / windows phone

¿En qué proyectos andas metido últimamente?.

Últimamente estoy dedicando muchas horas al estudio de cómo protegen software ciertas aplicaciones (algunas comerciales) denominadas packers como Themida, Execriptor, WMProtect, ASPack, Armadillo, ...
 Esto me va a llevar algunos años de diversión ;)

¿Qué opinas de la "moda" que hay hoy en día con el cloud y la virtualización?

Creo que la virtualización ha sido uno de los mejores inventos del siglo, me parece absolutamente necesario.
 Para mí la principal ventaja que aporta es la optimización de todo (recursos, tiempo, dinero, ...)
 En cuanto al Cloud, pues es un tema que podríamos debatir horas y horas.
 Para empezar el cloud no es nuevo, todos sabemos eso, solo que ahora se le llama cloud y queda más cool.
 Mi opinión es que existe un problema de confianza, es decir, ¿realmente los datos que subimos a la nube están exentos de miradas curiosas?, seguramente, si le preguntamos a Richard Stallman dirá que va totalmente en contra de nuestras libertades, sin embargo creo que si somos capaces de proteger nuestros datos de miradas curiosas, el cloud merece la pena y es un buen servicio.

¿Algo que quieras decir, y que se pueda decir? xD

Quisiera darte las gracias por este hueco que has hecho en tu blog y pedirte que sigas con este afán de compartir tus conocimientos con todos nosotros.
Es muy gratificante ver como hay gente que gasta su tiempo ayudando a otros y sin pedir nada a cambio. Esa es la esencia de la red y por la que gente como tú y como yo, estamos aquí.
Si además con esta publicación, conseguimos que al menos una persona se ponga a estudiar, el objetivo se habrá cumplido.

A estudiar !!!!!!!!!!!!!!!!!!

Muchas gracias por leerme/nos.