THEMIDA | RESUMEN  
 

Última Versión: 2.4 | Última Actualización: 2.4.5.0 | Actualizado Día : 19-Sep-2016




Cuando se crea una aplicación, el Compilador convierte el código fuente en varios ficheros objetos, los cuáles contienen el lenguaje en código máquina. Estos ficheros objetos serán unidos por el Linkador para convertir el ejecutable final.



Figura 1 : Compilación del código fuente

De la misma forma que el código fuente es convertido a código maquina en la fase de compilación, existen herramientas que pueden convertir una aplicación ya compilada en lenguaje ensamblador o en un lenguaje de alto nivel. Estas herramientas se conocen con el nombre de desensambladores o descompiladores.



Figura 2: Fases en la descompilación de una aplicación

Un atacante puede usar un desensamblador o descompilador para estudiar cómo funciona una aplicación y saber qué hace cada una de las rutinas específicas que la componen. Cuando el atacante ha examinado la aplicación y tiene suficiente conocimiento sobre ella, podrá modificar el código maquina para alterar el comportamiento de la aplicación. Por ejemplo, un atacante podría saltarse la rutina que chequea el periodo de prueba de una aplicación y hacer que funcione sin ningún tipo de expiración, o lo que aún es peor, modificar la aplicación para hacer que se ejecute como si estuviera registrada.




La idea de protector software nació para evitar que un atacante inspeccionara directamente o modificara una aplicación ya compilada. Un protector software podría ser definido como una especie de "armadura" que envuelve cada aplicación y la mantiene encriptada y protegida ante posibles ataques. Normalmente, cuando una aplicación protegida va a ser ejecutada por el sistema operativo, el protector software obtiene el control del procesador y chequea el sistema en busca de herramientas usadas por posibles atacantes, como desensambladores, monitores de registro, etc., las cuales podrían estar ejecutándose en memoria y suponer una amenaza para la aplicación. Si el protector software encuentra el sistema seguro contra posibles atacantes, desencriptará la aplicación protegida y le cederá el control del procesador para que empiece su ejecución normal.



Las ventajas de usar protectores software son las siguientes:

  •  Protegen a las aplicaciones contra la piratería
  •  Protegen a las aplicaciones contra la ingeniería inversa
  •  Evitan que las aplicaciones sean modificadas para cambiar su funcionamiento




Desde que aparecieron los primeros protectores software, muchos atacantes centraron sus esfuerzos en atacarlos, en vez de atacar a las aplicaciones sin proteger. Para ello, se crearon multitud de herramientas que ayudaban al ataque de los protectores software. El objetivo final de estos ataques es obtener la aplicación original pero eliminando por completo la "armadura" con la que los protectores software protegen cada aplicación.



Figura 3: Esquema común en la protección software

El mayor punto débil de los protectores software es que usan técnicas bastante conocidas por los atacantes y que pueden ser fácilmente esquivadas usando herramientas especializadas.

Otra importante debilidad en los protectores software es la ejecución restringida por parte del sistema operativo, es decir, los protectores software ejecutan código como una aplicación normal. Los atacantes aprovechan esta debilidad para ejecutar muchas de sus herramientas en un nivel de prioridad mayor, permitiéndoles la total supervisión sobre un protector software y poder inspeccionar y llevar a cabo un ataque en el momento deseado.




En Themida® , nos hemos centrado básicamente en proteger las debilidades comunes que sufren los protectores software . Themida® usa una nueva tecnología en protección llamada SecureEngine®, la cual puede ejecutar parte de su código en el nivel más alto de prioridad en los sistemas Windows® e implementar técnicas de protección jamás usadas en el mundo de la protección software.



Figura 4: Procedimiento común de protección en Themida®

Pulsar aquí para ver las características de protección de Themida®.

SecureEngine® vence todas las herramientas actuales usadas para atacar una aplicación y asegura que las aplicaciones protegidas puedan ser ejecutadas solo en entornos sin riesgo de posibles ataques.



Figura 5: La tecnología SecureEngine® ofrece un nivel extra de protección

Pulsar here para obtener más detalles sobre SecureEngine®



Normalmente, la protección software no es un campo conocido para los programadores de aplicaciones. Además, la protección software no usa técnicas que sean visibles y que puedan ser comparadas como en cualquier otra aplicación. Debido a esto, la mayoría de los autores de protección software hablan de impresionantes técnicas usadas internamente dentro del diseño de protección, cuando en realidad, muchas de las técnicas de protección apenas existen o son mucho más simples de lo que parecen.

Muchos protectores software presumen demasiado sobre la utilización de algoritmos de encriptación irrompibles como RSA, curvas elípticas, etc., dando la impresión al usuario final de que sus protectores serán igual de irrompibles como son esos algoritmos de encriptación. En la realidad es diferente, ya que la protección software es muy distinta a la protección de datos. Incluso si un protector software protege a una aplicación con el algoritmo criptográfico más robusto, en algún momento tendrá que desencriptar la aplicación protegida para cederle el control del procesador. Es en esta fase, donde la aplicación esta desencriptada, es cuando el atacante entra en acción para volcar la aplicación desencriptada desde memoria a disco, evitando por completo el tener que enfrentarse al algoritmo criptográfico que encripta la aplicación original.




En Themida® queremos ser realistas sobre qué vulnerabilidades son aprovechadas por posibles atacantes, y en qué hay que centrarse plenamente para proteger una aplicación con el mayor nivel de protección contra la ingeniería inversa.

 
 
   
Copyright © 2004-2017 Oreans Technologies. Todos los Derechos Reservados. -- Oreans, Themida y WinLicense son marcas registradas.
El resto de marcas registradas pertenecen a sus respectivos propietarios.