Escolar Documentos
Profissional Documentos
Cultura Documentos
a cabo ciertas acciones, por ejemplo solicitar un nmero de licencia (en el caso de un atacante) o conocer donde lleva a cabo ciertas acciones dainas un virus. Este tipo de herramientas tambin son utilizadas por desarrolladores de cdigo para encontrar errores de codificacin, Podemos mencionar a Debug, Soft-Ice, TR, dbg, como ejemplos de estas herramientas. Los analizadores de archivos proporcionan informacin sobre un archivo, como el tipo de este. En el caso de ejecutables pueden dar a conocer el tipo de plataforma para la cual fue compilada la aplicacin. Si se conoce el tipo de plataforma se podr elegir el des-ensamblador y depurador adecuado. El comando file de Linux es un ejemplo de este tipo de utileras, as como File Inspector XL, EXEScan, GETTyp. FILE Info, Multi Ripper y Language 2000. Los dumpeadores de memoria permiten vaciar el contenido de una regin de la memoria RAM. Lo cual puede ser interesante ya que muchas aplicaciones almacenan informacin al arranque de la aplicacin para consultarla peridicamente. Al conocer el contenido de la memoria es posible que se conozcan contraseas utilizadas por la aplicacin. Como ejemplos podemos mencionar a AMDUump, LordPE DEeluex, ProcDump, Pupe Los monitores de registro son utilizados en aplicaciones que corren sobre Windows. Varias aplicaciones almacenan informacin en los registros de Windows y este tipo de herramienta permite conocer el contenido de los registros. 3. Tcnicas de ingeniera inversa. Lo primero que uno tiene que hacer para poder llevar a cabo un anlisis de ingeniera inversa es conocer las protecciones que la aplicacin presenta, para poder darles la vuelta. Existen varias tcnicas para hacer esto. La primera tcnica, a la retro, consiste en depurar el programa hacia atrs. Se lanza la aplicacin y en cuanto sistema de proteccin se active se detiene la ejecucin. A partir de este momento se examina al cdigo hacia atrs, buscando las instrucciones relacionadas con el mensaje de proteccin. Una vez localizado el mensaje, se procede a investigar las condiciones e instrucciones que lo generaron, para poder cambiarlas o darles la vuelta. Todas estas acciones se harn con la ayuda de las herramientas descritas en la seccin anterior. Otra opcin consiste en poner un punto de ruptura (breakpoint) en una funcin, o funciones, que se crea que son usadas dentro del sistema de proteccin. Una vez que
la ejecucin llega a este punto, se contina depurando hasta llegar al punto buscado. Esto es muy utilizado cuando se busca la funcin que despliega un banner, o una pantalla nag, o cuando se conoce el sistema de proteccin que esta usando el sistema analizado. Si el procedimiento de proteccin muestra un mensaje de error, est se copia. La aplicacin se des-ensambla y se busca la cadena de caracteres en la lista de instrucciones que hace referencias a cadenas. Una vez localizadas las direcciones de las instrucciones, se examina el cdigo que hay alrededor y se busca por un salto que aleje al flujo de informacin de una referencia a dicha cadena. En muchas ocasiones es necesario examinar las llamadas previas al salto, ya que estas pueden contener las instrucciones de verificacin. Si se conoce la cadena de caracteres, y esta no se puede localizar por la tcnica anterior, se puede utilizar un editor hexadecimal o un dumpeador de memoria. Se busca la cadena y si se encuentra en memoria se introduce una instruccin para interrumpir al programa antes de realizar cualquier accin sobre esta. Por ltimo, si se sospecha que una determinada secuencia de instrucciones en ensamblador est siendo usada por el sistema de proteccin, se puede utilizar un editor hexadecimal para buscar la secuencia de cdigosbytes y actuar en consecuencia. Por ejemplo si la operacin en cuestin es una comparacin de fechas, esta instruccin se puede cambiar por una comparacin entre dos nmeros iguales, lo cual siempre dar verdad y evitar que el sistema de alerta se active. 4. Posibles defensas. Existen diferentes tipos de mecanismos de defensa para dificultar el trabajo de las personas que llevan a cabo un anlisis de ingeniera inversa. Entre las ms comunes podemos mencionar a los sistemas de proteccin por tiempo, sistemas de proteccin mediante hardware externo (mochilas o dongles), sistemas de defensa basado en empaquetadores y en la comprobacin de la integridad de los datos (CRC). Existen dos formas de implementar un sistema de proteccin por lmite de tiempo. En el primero el software comprueba si han transcurrido n das desde la instalacin del mismo. En caso positivo procede a la salida inmediata o a su des-instalacin o puede mostrar mensaje informando al usuario. En el segundo de los casos se comprueba si se ha llegado a una fecha lmite. En ambos casos el software no funcionar si se vuelve a instalar. Sin embargo un atacante tiene analizar la aplicacin
para comprobar donde se almacena la fecha de instalacin o donde se encuentra el contador de los das que han pasado y modificar estos valores. Otra opcin de proteccin es utiliza un dispositivo hardware externo, que se conecta a la computadora cada vez que se utiliza la aplicacin a protegida. Este dispositivo se conoce como dongle o mochila. Una mochila no es ms que una caja que contiene un circuito que puede variar en complejidad segn el tipo de mochila. Algunas mochilas cuentan con memoria donde se almacenan datos usados por la propia mochila. El software a proteger se comunica con la mochila a travs de rutinas que proporciona el fabricante. La proteccin depende de la habilidad del programador de implementar la proteccin. Es importante cifrar la llamada a la mochila, mandar llamar a la mochila en varios lugares del programa y en diferentes intervalos de tiempo durante la ejecucin de la aplicacin. Con el objetivo de ocultar el funcionamiento del sistema de proteccin del software, algunos autores software empaquetan sus programas para reducir el tamao de los archivos del programa y complicar el trabajo de ingeniera inversa, ya que no se puede obtener un desensamblado exacto del archivo El programa original esta envuelto dentro del cdigo del empaquetador, el cual esconde el cdigo original Cuando se lanza el programa, se esta ejecutando en primer lugar el cdigo empaquetador., el cual desempaqueta aplicacin original en memoria y despus se ejecuta. Es posible usar un cifrador en lugar de un empaquetador. Tambin es posible utilizas CRCs (Cdigo Redundancia Cclica) para la proteccin de software. Los CRCs son usados para la deteccin de errores en la transmisin de datos en comunicaciones. El dispositivo calcula el CRC en base a un polinomio y enva informacin junto con su CRC. En el otro extremo de la recepcin se usa el mismo polinomio para calcular el CRC de lo recibido y compara resultado. Si son iguales se ha transmitido con xito, en caso contrario algn dato fue cambiado. Es posible usar huellas digitales en lugar de CRCs.
Conclusiones Se han presentado las diferentes herramientas y tcnicas utilizadas para llevar a cabo un anlisis de ingeniera inversa. Las opciones son variadas y no existe un mtodo nico para llevar a cabo este tipo de anlisis. Existen varios tutoriales para ahondar en esta rea y tambin se cuenta con los famosos crackmes. Estos son programas o aplicaciones diseadas especialmente para practicar eludir diferentes tipos de proteccin. Cada crackme contiene un tipo de proteccin y el reto es romperlo. Es importante conocer las tcnicas usadas por los especialistas en crackeo de aplicaciones para poder tomar las medidas adecuadas y proteger nuestro software. Referencias [1] Cracking sin secretos, Ataque y defensa de software, J. Zemnek, Ed. Alfaomega, 2005 [2] Hacker Disassembling Uncovered, K. Kaspersky, Ed. Alist, 2003 [3] Reversing, Secrets of Reverse Engineering, Eldad Eilam, Ed. Wiley Publishing, 2005 [4] Seguridad en software, Profesor X, Revista Conthackto, No 2, noviembre/diciembre 2005 [5] Digital Rigthts Management, Spyware and Security, E.W. Felten and J. A. Halderman, IEEE Security & Privacy, Vol.4 No. 1, January/February 2006 [6] Electronic Frontier Foundations Sony BMG Settlement FAQ http://www.ef.org/IP/DRM/SonyBMG/settlement_faq.php [7] Armouring the ELF: Binary encryption on the UNIX platform, grugp, scut, Phrack Magazine http://www.phrack.org