0 calificaciones0% encontró este documento útil (0 votos)
132 vistas13 páginas
Este documento presenta una introducción a la técnica de ofuscación de código. Explica que la ofuscación de código oculta el significado del código para dificultar la ingeniería inversa, pero mantiene la funcionalidad. También incluye un marco teórico con definiciones de términos como legibilidad, claridad, modularidad e ingeniería inversa. Finalmente, presenta algunos usos y riesgos de la ofuscación de código dinámica.
Este documento presenta una introducción a la técnica de ofuscación de código. Explica que la ofuscación de código oculta el significado del código para dificultar la ingeniería inversa, pero mantiene la funcionalidad. También incluye un marco teórico con definiciones de términos como legibilidad, claridad, modularidad e ingeniería inversa. Finalmente, presenta algunos usos y riesgos de la ofuscación de código dinámica.
Este documento presenta una introducción a la técnica de ofuscación de código. Explica que la ofuscación de código oculta el significado del código para dificultar la ingeniería inversa, pero mantiene la funcionalidad. También incluye un marco teórico con definiciones de términos como legibilidad, claridad, modularidad e ingeniería inversa. Finalmente, presenta algunos usos y riesgos de la ofuscación de código dinámica.
Maestra: Neidy Delgado Alumnos: Rodrigo Ivn Garca Lpez Ricardo Ernesto Prez Padilla Geovanny Michel Aguilar Castaeda Trabajo: UNIDAD 2. Redaccin del proyecto de investigacin.
Martes, 13 de mayo de 2014 Introduccin. La ofuscacin de cdigo es una tcnica utilizada por programadores de un gran nmero de lenguajes que quieren demostrar sus capacidades tcnicas e intelectuales para poder ocultar el cdigo de cierto programa que ellos hayan realizado. La finalidad de esta tcnica es principalmente, entre los crculos de programadores experimentados, es ms que nada como pasatiempo o medirse en competencias donde se evala la complejidad de cmo puede ser escondido el objetivo o la funcin del cdigo que se est escribiendo para alguien que lo ve a simple vista, esto cabe destacar, es todo lo contrario a algunos de los objetivos de lo que el programador debe de hacer en sus programas, recordando estos objetivos son: Operatividad. Legibilidad. Portabilidad. Claridad. Modularidad. En el caso de la ofuscacin se busca lo opuesto a: Legibilidad Claridad Modularidad Debido a estas diferencias con lo que se busca como objetivo en la tcnica de la ofuscacin se puede utilizar para otros fines distintos a tomarlo como un pasatiempo como seguridad para evitar plagio o piratera. Por ende lo que se intenta definir en esta investigacin es encontrar esos otros fines o usos para esta tcnica de la ingeniera de software.
Marco Terico Marco conceptual Legibilidad Un programa puede hacerse ms legible dndole cierto formato al cdigo, utilizando el sangrado (indentacin) para reflejar las estructuras de control del programa, e insertando espacios o tabuladores. (Martnez, 2012). 1 Claridad Esta caracterstica se refiere a la facilidad con la que el texto del programa comunica las ideas subyacentes. (Martnez, 2012). 1 Modularidad Dividir el programa en un nmero de mdulos pequeos y fciles de comprender puede ser la contribucin ms importante a la calidad del mismo. Cada mdulo debe realizar slo una tarea especfica y no ms. (Martnez, 2012) 1 Cdigo de computacin. Conjunto de instrucciones escritas en algn lenguaje de programacin de computadoras, hechas para ser ledas y transformadas por alguna herramienta de software (compilador, intrprete, ensamblador) en lenguaje de mquina o instrucciones ejecutables en la mquina. (Wikipedia, 2014) 2 Ofuscacin del cdigo. La ofuscacin de cdigo consiste en reordenar o alterar las instrucciones de un programa para que, aunque realice la misma funcin, sea ms difcil su comprensin. En consecuencia, la ofuscacin es la herramienta ms importante para evitar la ingeniera inversa. (UPV, 2011) 3 Ofuscacin. La ofuscacin se refiere a encubrir el significado de una comunicacin hacindola ms confusa y complicada de interpretar. (Wikipedia, 2013) 4 Ingeniera inversa. La ingeniera inversa es el proceso de descubrir los principios tecnolgicos de un dispositivo, objeto o sistema, a travs de razonamiento abductivo de su estructura, funcin y operacin. La ingeniera inversa se trata de tomar algo (un dispositivo mecnico o electrnico, un software de computadora, etc.) para analizar su funcionamiento en detalle, generalmente para intentar crear un dispositivo o programa que haga la misma o similar tarea sin copiar la original. (Alegsa, 2010) 5 Desensamblador. Un desensamblador es un programa de computadora que traduce el lenguaje de mquina a lenguaje ensamblador, la operacin inversa de la que hace el ensamblador. (Wikipedia, 2014) 6
ASCII. ASCII (acrnimo ingls de AmericanStandard Codefor InformationInterchange Cdigo Estndar Estadounidense para el Intercambio de Informacin) es un cdigo de caracteres basado en el alfabeto latino, tal como se usa en ingls moderno y en otras lenguas occidentales. (Wikipedia, 2014) 7 Marco referencial Un ofuscador cdigo fuente acepta un archivo fuente de programa, y genera otro archivo fuente funcionalmente equivalente que es mucho ms difcil de comprender o realizar ingeniera inversa. Esto es til para la proteccin tcnica de la propiedad intelectual cuando: Cdigo fuente debe ser entregado para fines de ejecucin pblica (con lenguajes interpretativos como ECMAScript en pginas web) Componentes comerciales deben ser entregados en forma de cdigo fuente para la integracin directa por un cliente en su producto final (aplicaciones porttiles en C o PHP, etc, libreras de cdigo o componentes de hardware codificadas en Verilog o VHDL) El envo de casos de prueba derivados de cdigo propietario a los vendedores (cdigo de activacin comportamiento con errores, etc.) Cdigo objeto contiene todava demasiadas pistas (por ejemplo, los mtodos pblicos de la clase utilizados solamente dentro de una aplicacin, al igual que con los archivos de clase Java) http://www.semdesigns.com/Products/Obfuscators/ La ofuscacin de cdigo es el encubrimiento de informacin haciendo que sea ms confuso el tratar de leerlo, esto es algo que se utiliza en programacin para hacer que un cdigo fuente sea muy confuso de entender, pero al momento de compilarlo o interpretarlo funciona correctamente, esto es practicado ms que nada como una forma de proteger tu cdigo para evitar sea pirateado o solo para hacerlo ilegible y que seas t el nico para poder darle mantenimiento. http://elhappy.net/2012/08/ofuscacion-de-codigo/ La ofuscacin de cdigo consiste en reordenar o alterar las instrucciones de un programa para que, aunque realice la misma funcin, sea ms difcil su comprensin. En consecuencia, la ofuscacin es la herramienta ms importante para evitar la ingeniera inversa. Como hemos podido comprobar en los apartados anteriores, cuando se compila Java se incluye informacin para depurar cdigo en los byte codes (o cdigo Dalvik). En esta informacin se incluyen los nmeros de lneas a partir de las que se ha generado el cdigo o los nombres de las variables. Por ejemplo, en la clase BaseSplashActivity de la aplicacin Apalabrados, dentro del fichero DEX se ha incluido informacin como que existe una variable SPLASH_DURATION con nombre y que esta variable era inicializada en la lnea 21 del fichero Java.
La ofuscacin de cdigo dinmica es una nueva forma de enmascarar el cdigo, a lo largo de este artculo veremos las ventajas y riesgos que implican el descubrimiento de esta nueva tcnica, as como algunos de las mtodos que existen tanto para ofuscar el cdigo, como para lograr la desofuscacin del mismo, adems de las principales formas y lugares donde esta tcnica puede ser aplicada. La ofuscacin de cdigo dinmica es una tcnica que transforma el cdigo en garabatos incomprensibles, esta tcnica puede ser utilizada con dos propsitos principales, el primero como una herramienta de proteccin de derechos de autor del cdigo de los programas, y el segundo como una amenaza a los mecanismos actuales de seguridad en la red. La mayora de las empresas tratan de evitar que su cdigo fuente pueda ser obtenido por alguien ms, es por esto que hacen uso de herramientas que les permitan evitar que alguien lo pueda obtener. Sin embargo la ofuscacin tambin sirve como un mecanismo de para generar muchas versiones del mismo cdigo, logrando de esta manera sobrepasar los mecanismos usuales de anlisis de los sistemas de seguridad, como los antivirus. La amenaza oculta En la actualidad, a pesar de que los antivirus son cada da ms potentes y hacen uso de tcnicas mucho ms complejas para lograr evitar las amenazas, nace una nueva tcnica que logra poner en dificultad a estos sistemas actuales de defensa, esta nueva tcnica es llamada ofuscacin de cdigo dinmica, y se basa en la transformacin o enmascaramiento del cdigo para evitar que se pueda determinar la forma que tena originalmente. http://sg.com.mx/content/view/685
La ingeniera inversa es un procedimiento mediante el cual se toma un objeto por separado para ver cmo funciona con la finalidad de duplicarlo o mejorarlo. Aunque esta prctica era empleada por las antiguas industrias, en la actualidad su uso se ha extendido al software y hardware, en cuyo caso, la ingeniera inversa aplicada al software implica la reversin de un programa que est codificado en lenguaje maquina (lenguaje de bajo nivel) a el cdigo fuente de alto nivel en el que fue escrito originalmente. http://dsp.mx/blog/sistemas-de-informacion/62-que-es-ingenieria-inversa
La ingeniera inversa se ha definido como el proceso de construir especificaciones de un mayor nivel de abstraccin partiendo del cdigo fuente de un sistema software o cualquier otro producto (se puede utilizar como punto de partida cualquier otro elemento de diseo, etc.). Estas especificaciones pueden volver ser utilizadas para construir una nueva implementacin del sistema utilizando, por ejemplo, tcnicas de ingeniera directa. (Sicilia, 2009). Beneficios de Ingeniera Inversa La aplicacin de ingeniera inversa nunca cambia la funcionalidad del software sino que permite obtener productos que indican cmo se ha construido el mismo. Se realiza permite obtener los siguientes beneficios: Reducir la complejidad del sistema: al intentar comprender el software se facilita su mantenimiento y la complejidad existente disminuye. Generar diferentes alternativas: del punto de partida del proceso, principalmente cdigo fuente, se generan representaciones grficas lo que facilita su comprensin. Recuperar y/o actualizar la informacin perdida (cambios que no se documentaron en su momento): en la evolucin del sistema se realizan cambios que no se suele actualizar en las representaciones de nivel de abstraccin ms alto, para lo cual se utiliza la recuperacin de diseo. Detectar efectos laterales: los cambios que se puedan realizar en un sistema puede conducirnos a que surjan efectos no deseados, esta serie de anomalas puede ser detectados por la ingeniera inversa. Facilitar la reutilizacin: por medio de la ingeniera inversa se pueden detectar componentes de posible reutilizacin de sistemas existentes, pudiendo aumentar la productividad, reducir los costes y los riesgos de mantenimiento. La finalidad de la ingeniera inversa es la de desentraar los misterios y secretos de los sistemas en uso a partir del cdigo. Para ello, se emplean una serie de herramientas que extraen informacin de los datos, procedimientos y arquitectura del sistema existente. Publicado por: Miguel-ngel Sicilia. http://cnx.org/content/m17432/latest/ - Optimizar el cdigo J avaScript consiste en "compilar", el ofuscador acta como "compilador de J avaScript" convirtiendo el cdigo inicial en otro cdigo ms optimizado. Un ejemplo de ofuscador que lo hace es el Google Closure Compiler.
- Ofuscar J avaScript consiste en procesar el cdigo de forma que no sea tan legible como cuando lo escribi "manualmente" el programador, y no solamente cambiando los nombres de las variables por letras simples que no indican nada respecto a su funcin, sin tambin encriptando strings (y otros procesos similares). El proceso de renombrar variables puede ser parte del proceso de optimizacin [optimization], o del de ofuscacin [obfuscation] (depende del ofuscador).
- Minificar o minimizar el cdigo J avaScript consiste en eliminar los comentarios, el whitespace (los retornos de carro / saltos de lnea, etc.) y los [;] innecesarios. (ComDigitalPro, 2009). http://www.comdigitalpro.com/javascript/como-ofuscar-y-minificar-codigo-javascript- ofuscador-ofuscadores_66.html
Con las herramientas de ofuscacin de cdigo. Estas herramientas no impedirn la decompilacin del cdigo, pero s que harn que sea prcticamente imposible entenderlo, y por tanto editarlo y utilizarlo para las malas artes de un programador mal intencionado. La mala intencin podra consistir en sacar un juego o programa muy parecido al que hemos hecho nosotros. Siempre es desagradable que copien tu trabajo ms ahn cuando has pasado muchas horas de desarrollo en l. As que es necesario tener en cuenta el uso de las herramientas de ofuscacin de cdigo. (Jess Bosch, 2011) La ofuscacin se refiere al acto deliberado de realizar un cambio no destructivo, ya sea en el cdigo fuente de un programa informtico o cdigo mquina cuando el programa est en forma compilada o binaria, con el fin de que no sea fcil de entender o leer. Pues bien, esto es muy til a la hora de publicar nuestro cdigo Javascript en nuestra pgina web, ya que cualquiera puede acceder a l. La ofuscacin la podemos utilizar simplemente para que no nos copien nuestro cdigo Javascript o por si hemos cometido algn error durante la programacin,ste que pueda servir como vulnerabilidad en nuestra web. Por ejemplo, tenemos ste cdigo: 1 2 3 4 5 6 var a="Hello World!"; function MsgBox(msg) { alert(msg+"\n"+a); } MsgBox("OK"); Ofuscado quedara de la siguiente manera: 1 var _0x55ae=["\x48\x65\x6C\x6C\x6F\x20\x57\x6F\x72\x6C\x64\x21","\x0A","\x4F\x4B"];var a=_0x55ae[0];function MsgBox(_0x9e43x3){alert(_0x9e43x3+_0x55ae[1]+a);} ;MsgBox(_0x55ae[2]); Javascript Obfuscator es una aplicacin web que nos permite ofuscar nuestro cdigo Javascript. Tiene varias opciones, como codificar las cadenas y los nmeros, mover las cadenas, remplazar los nombres, etc.
Metodologa exploratoria. Es aquella que se efecta sobre un tema u objeto desconocido o poco estudiado, por lo que sus resultados constituyen una visin aproximada de dicho objeto, es decir, un nivel superficial de conocimiento. Este tipo de investigacin, de acuerdo con Sellriz (1980) pueden ser: a) Dirigidos a la formulacin ms precisa de un problema de investigacin: dado que se carece de informacin suficiente y de conocimiento previos del objeto de estudio, resulta lgico que la formulacin inicial del problema sea imprecisa. En este caso la exploracin permitir obtener nuevo datos y elementos que pueden conducir a formular con mayor precisin las preguntas de investigacin.
b) Conducentes al planteamiento de una hiptesis: cuando se desconoce al objeto de estudio resulta difcil formular hiptesis acerca del mismo. La funcin de la investigacin exploratoria es descubrir las bases y recabar informacin que permita como resultado del estudio, la formulacin de una hiptesis. Las investigaciones exploratorias son tiles por cuanto sirve para familiarizar al investigador con un objeto que hasta el momento le era totalmente desconocido, sirve como base para la posterior realizacin de una investigacin descriptiva, puede crear en otros investigadores el inters por el estudio de un nuevo tema o problema y puede ayudar a precisar un problema o a concluir con la formulacin de una hiptesis. Como en este tipo de tcnica no hay mucha informacin disponible para poder definir una metodologa descriptiva entonces se optara por una metodologa exploratoria, seria conducente a dejar una base para ampliar las bases del tema enfocada a evitar el plagio del tema.
PLANTEAMIENTO DEL PROBLEMA El principal problema del programador es que plagien su cdigo o lo copien, ya que todo su esfuerzo y dedicacin se ven daados debido a que existen algunas personas que se dedican a copiar otros cdigos y no crean los suyos, es por eso que fue creada la ofuscacin de cdigo.
Piratera de cdigo Los buenos programadores no sobresalen El programador o la empresa no obtienen ganancias de su software El usuario no tiene el dinero para comprar un software original El usuario no tiene los conocimientos para programar Facilitar su trabajo a costa de otros Ganar dinero a costa de otros La persona que copio el cdigo no aprende nada Se comete piratera Hiptesis La tcnica de ofuscacin de cdigo es ideal para poder evitar la ingeniera inversa de los programas, con esto se evita la piratera, que se hagan generadores de llaves para poder craquear los programas y que se pueda revisar el cdigo fuente por la competencia para evitar la utilizacin ilegal del cdigo, esto puede resultar un poco ms laborioso y costos, aplicar tcnicas de ofuscacin y ofuscadores que resulten eficaces para evitar lo antes mencionado, pero los alcances que tendra aplicarlo en los productos terminados podran ser bastante tiles sin mencionar los ahorros econmicos que se tendran al momento de evitar el plagio de las ideas.
Objetivos de la investigacin El principal objetivo de esta investigacin es presentar de alguna manera la utilidad que este tipo de tcnicas nos presenta, adems de cmo es posible refinar su utilidad utilizndola para fines de seguridad, ya que como ingenieros en sistemas, el cdigo que realizamos tiene un valor real en el mercado, por lo cual debemos de ser muy cuidadosos con las personas que puedan plagiar el contenido de nuestros programas, ofuscando (ocultando) el contenido del mismo entonces es una capa ms de seguridad que se puede aplicar para que nuestro cdigo sea realmente seguro y tenga que llegar nicamente a las manos de las personas que realmente estn destinadas (colaboradores y clientes). Justificacin La investigacin es justificable por el simple hecho de lo que representa tanto econmica e intelectualmente el plagio o piratera del software, la estabilidad econmica, mental y social se ve en juego en algunos sectores de la poblacin por este tipo de problemtica, incluir esta prctica para desarrolladores de software reducira en gran medida los problemas que se mencionan anteriormente con esto los empleos en el rea de la informtica no se veran tan afectados como en pocas actuales y el xito o fracaso de un ingeniero en sistemas se vera solamente por su capacidad intelectual y no por factores externos como la piratera o plagio. Delimitacin Lo que se estar investigando en este proyecto ser directamente las tcnicas de ofuscacin utilizadas en la actualidad y como pueden ayudar a los proyectos para evitar problemas con la piratera o el plagio del cdigo. Obviamente esta investigacin est enfocada a las personas que tienen conocimientos del rea de ciencias de la computacin como licenciaturas o ingenieras y tambin profesionistas que ya tienen proyectos de desarrollo de software.
Impacto tico, Social, Tecnolgico, Econmico y Ambiental Ms que nada lo que impacta en esas reas es el problema, que en este caso sera el plagio y piratera de software, el desarrollo de tcnicas de ofuscacin intentan reducir ese impacto directamente evitando que se produzca el problema para empezar. En el lado tico, es algo que se ve muy afectado por lo que significa piratear o plagiar algn producto de software, es bsicamente robar las ideas que otra persona o empresa puso empeo, dedicacin y dinero en producir, hacer estas actividades ilcitas se han vuelto cosa de todos los das por la facilidad que conlleva bajar un software, aplicar un parche y automticamente tenerlo pirateado sin costo, por lo tanto las personas o usuarios ya no toman como algo malo realizar este perjuicio contra los desarrolladores, y esto es precisamente lo ms malo, se dej de pensar que se comete algo ilcito, en este caso esto ltimo es lo que afecta socialmente, la perdida de sentido del delito. Tecnolgicamente hablando afecta porque al no haber una ganancia directa por los productos o ms bien una prdida considerable de las ganancias, los desarrolladores entran en un estancamiento tecnolgico porque se dejan de producir ideas nuevas al saber que su producto ser plagiado, sin garantizar ni su reconocimiento ni su remuneracin, aqu tambin entra el lado econmico porque las prdidas del sector son multimillonarias al ao, son ganancias que evitan que muchas personas tengan un sueldo digno y empleos se pierdan por el mismo problema.
Fuentes de informacin: 1 Martnez, E. (2012). Caractersticas de un buen programa. masinteligencia.wordpress.com, recuperado el 2012/08/22, de http://masinteligencia.wordpress.com/2012/08/22/caracteristicas- de-un-buen-programa/ 2 Wikipedia (2014). Cdigo fuente. es.wiktionary.org, recuperado el 2014/05/14, de http://es.wiktionary.org/wiki/c%C3%B3digo_fuente 3 Universidad Politcnica de Valencia (2011). Ofuscacin del cdigo. www.androidcurso.com, recuperado el 2014/05/14, de http://www.androidcurso.com/index.php/tutoriales-android- avanzado/48-unidad-9-ingenieria-inversa-en-android/348-ofuscacion-del-codigo 4 Wikipedia (2013). Ofuscacin. es.wikipedia.com. recuperado el 2013/04/24, de http://es.wikipedia.org/wiki/Ofuscacin 5 Alegsa (2010). Ingeniera Inversa. www.alegsa.com.ar. Recuperado el 2010/02/19, de http://www.alegsa.com.ar/Dic/ingenieria%20inversa.php 6 Wikipedia (2014). Desensamblador. es.wikipedia.org. Recuperado el 2014/01/21, de http://es.wikipedia.org/wiki/Desensamblador 7 Wikipedia (2014). ASCII. es.wikipedia.org. Recuperado el 2014/04/15, de http://es.wikipedia.org/wiki/ASCII