Por Roberto Gómez Cárdenas

Hoy en día todo se encuentra en Internet, programas, bases de datos, libros, películas, conciertos, canciones de artistas, etc.

Hoy en día todo se encuentra en Internet, programas, bases de datos, libros, películas, conciertos, canciones de artistas, etc. Existen servidores que almacenan archivos que contienen este tipo de información. Algunos sitios cobran una cierta cantidad de dinero para que el usuario pueda bajar su contenido de forma más rápida o en paralelo. Un usuario que no ha pagado debe esperar una cantidad de tiempo antes de bajar un archivo, no puede bajar varios archivos al mismo tiempo y en algunas ocasiones debe esperar algunos minutos cuando acaba de bajar un archivo y desea bajar otro.

En mayo del 2008 se presentaron los resultados del quinto estudio anual mundial de piratería, publicado por la BSA (Bussinness Software Alliance) y realizado por la Internacional Data Corporation. De acuerdo a lo publicado, de los 108 países incluidos, el uso de software pirata disminuyó en 67 de ellos y aumentó en solo 8. Sin embargo, debido al rápido crecimiento del mercado de PC en los países de alta piratería, la tasa mundial de software pirata creció en tres puntos (38%) con respecto al año pasado. Las pérdidas por piratería aumentaron de $8 billones de dólares a 48 billones. A finales del 2007 existía más de un billón de PCs instalados en todo el mundo, y cerca de la mitad contenían software sin licencia en ellos.

El estudio presentado por la BSA se limita a software pirata, no aborda la piratería de otro tipo de información digital como música, video o libros. La piratería de software consiste en comprar un software, hacer copias ilegales de este y vender estas. Mucho software se encuentra protegido para impedir copias ilegales, es aquí donde entra la ingeniería inversa.

La ingeniería inversa es una metodología para analizar el diseño de un dispositivo o sistema. El objetivo del estudio varia ya que como toda metodología o herramienta en el área de seguridad es un arma de dos filos. Por un lado se puede utilizar para conocer como funciona un sistema y darle la vuelta a los sistemas de protección contra copias no autorizadas. Por otro lado es una buena herramienta para entender el funcionamiento de los nuevos virus, poder erradicarlos y/o diseñar una vacuna.

Desde un punto de vista de sistemas computacionales la ingeniería inversa puede ser vista como el proceso de extraer el código fuente de una aplicación a partir del código objeto. Hay que tomar en cuenta que el término cracking también se utiliza también cuando se burla al sistema de protección de algún software en específico para obtener una copia funcional de un software supuestamente protegido.

Para poder realizar un análisis de ingeniería inversa es necesario contar con las herramientas adecuadas. Dependiendo del objetivo del análisis será la, o las, herramientas utilizadas. Entre las herramientas más comunes podemos mencionar a los editores hexadecimales, los des-ensambladores, los descompresores, los depuradores, los analizadores de archivos, los dumpeadores de memoria y monitores de registro.

Un editor hexadecimal, permite editar un archivo en su forma bruta, es decir permite editar los bits de un archivo. Para que el usuario no tenga que lidiar con unos y ceros en la aplicación, el editor los agrupa en conjuntos de 4 bits y los convierte a hexadecimal. De esta forma el usuario solo ve números hexadecimales en el editor. A través de este tipo de herramientas es posible conocer el contenido de cualquier tipo de archivo, imágenes, ejecutables, office etc. También es posible conocer el contenido de un disco. Las personas que se dedican a hacer forencia usan este tipo de editores para buscar información oculta. Es importante hacer notar que no solo es posible conocer el contenido de un archivo sino que es posible modificar esté con los datos que se consideran relevantes. Usando esta herramienta es posible cambiar una instrucción por otra si conocemos el código hexadecimal de la instrucción y donde se encuentra ubicada. Entre los editores hexadecimales más conocidos podemos mencionar a Winhex, Hex, Ultraedit y Hacker's View.

Como su nombre lo dice, los des-ensambladores permiten des-ensamblar un programa. Dado un archivo ejecutable con esta herramienta podemos conocer las instrucciones en ensamblando que lo componen y poder entender su funcionamiento. Su función es toda la contraria a la de un compilador. Como ejemplos de des-ensambladores podemos mencionar IDA, Sourcery, DeCadePro, W32Dasm, VBDE, LDasm.

Una técnica utilizada para proteger aplicaciones de ser copiadas, es comprimir/cifrar el código de la aplicación y descomprimir/descifrar el código en el momento que se necesite ejecutar. Los descompresores son aplicaciones que permiten obtener el ejecutable original antes de que fuera procesado por el compresor/cifrador. O polo menos contar con una imagen descomprimida que pueda ser ejecutada o funcional. Ejemplo de este de aplicaciones son Armadillo Kille, CUP, EXELOCK, PeUNLOCK, Deshrink.

Un depurador permite dar seguimiento a la ejecución de una aplicación y poder conocer que es lo que hace cada una de las instrucciones de la aplicación. También permite conocer los valores de las diferentes variables que la componen en todo momento. Con este tipo de herramientas es posible localizar instrucciones que lleven a cabo ciertas acciones, por ejemplo solicitar un número de licencia (en el caso de un atacante) o conocer donde lleva a cabo ciertas acciones dañinas un virus. Este tipo de herramientas también son utilizadas por desarrolladores de código para encontrar errores de codificación, Podemos mencionar a Debug, Soft-Ice, TR, dbg, como ejemplos de estas herramientas.

Los analizadores de archivos proporcionan información 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 aplicación. 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 utilerías, así como File Inspector XL, EXEScan, GETTyp. FILE Info, Multi Ripper y Language 2000.

Los dumpeadores de memoria permiten vaciar el contenido de una región de la memoria RAM. Lo cual puede ser interesante ya que muchas aplicaciones almacenan información al arranque de la aplicación para consultarla periódicamente. Al conocer el contenido de la memoria es posible que se conozcan contraseñas utilizadas por la aplicación. 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 información en los registros de Windows y este tipo de herramienta permite conocer el contenido de los registros.
Existe una gran variedad de herramientas, pero no basta con tenerlas sino hay que saber usarlas. Existen diferentes metodologías para darle la vuelta a la protección de un medio digital, pero esto es otra historia.

Fuente: http://vilechahosting.com/foros/index.php?topic=1522.0