
SecureEngine® es una innovadora y revolucionaria tecnología para proteger aplicaciones
Windows® contra cualquier tipo de ataque que pueda suponer un riesgo en la seguridad de su software. El diseño y arquitectura de SecureEngine® es una idea completamente nueva y nunca vista antes en el mundo de la protección software.
Tradicionalmente, los protectores software ejecutan su código como una aplicación normal, es decir, está impuesto por las restricciones de prioridad del sistema operativo Windows. Muchas herramientas más actuales, para atacar la seguridad de las aplicaciones, se ejecutan en un nivel más elevado de prioridad (en modo Kernel), de manera que estas herramientas pueden supervisar y controlar en todo momento las aplicaciones protegidas y poder atacarlas cuando sea necesario.
SecureEngine® se sale de lo común y se ha diseñado de forma que evita esa situación donde las herramientas contra la seguridad software se ejecutan en un nivel más alto de priodidad. Parte del codigo de SecureEngine® se ejecuta en el mismo nivel de prioridad que el sistema operativo, evitando que herramientas generales de monitoreo sean pasadas desapercibido e indetectables ante SecureEngine®. La tecnologia SecureEngine® es compatible con los sistemas Windows comunes (Windows 98, ME, 2000, XP, 2003, Vista, x64).
Nuestros productos, Themida® y WinLicense® están ambos diseñados con la tecnología SecureEngine®.
SecureEngine® implementa las siguientes técnicas de protección para mantener a una aplicación totalmente protegida contra las más avanzadas técnicas de ingeniería inversa:
(Por favor, seleccione para ver la información extendida)

El sistema operativo Windows está diseñado para trabajar en dos niveles de operación: en el nivel Ring-0 se ejecuta el código interno de Windows y los drivers de dispositivos, mientras que en el nivel Ring-3 se ejecuta el código de las aplicaciones de usuario. El código que se ejecuta en Ring-0 supervisa y controla las aplicaciones ejecutadas en el nivel Ring-3. Esto significa que las aplicaciones normales no pueden ejecutar código de máxima prioridad.
Debido a que la tecnología SecureEngine® ejecuta parte de su código en el nivel Ring-0, tiene la posibilidad de implementar técnicas de protección muy avanzadas que no han podido ser utilizadas por otros sistemas de protección. La tecnología de protección en Ring-0 permite que muchas otras técnicas internas de protección de SecureEngine® puedan ser implementadas.

SecureEngine® puede operar al mismo nivel de prioridad que el sistema operativo, de este modo puede funcionar en conjunción con él y supervisar en todo momento las aplicaciones protegidas.

Normalmente, todos los protectores software mantienen la aplicación protegida en forma encriptada. Cuando la aplicación protegida es ejecutada, ésta debe ser desencriptada en algún momento para poder ser ejecutada por el procesador.
Un atacante utilizará herramientas para volcar el código desencriptado de una aplicación en memoria a disco y permitirle el reconstruir la aplicación original como si nunca hubiera sido protegida.
La tecnología SecureEngine® implementa técnicas muy avanzadas para evitar el volcado desencriptado de una aplicación a disco. Estas técnicas son efectivas con cualquier tipo de herramienta de volcado, incluso las más avanzadas basadas en drivers de dispositivos.

CodeReplace
es una nueva tecnología que elimina bloques de instrucciones en el programa original y los ejecutas en un lugar protegido en la memoria. El bloque original nunca es desencriptado, y es ejecutado bajo una máquina virtual interna que emula cada instrucción en cientos de instrucciones virtuales.

La máquina virtual de SecureEngine® es un poderoso motor de virtualización que es capaz de convertir código x86 en código interpretado totalmente ofuscado. Este código es ejecutado de forma totalmente diferente para cada instancia de aplicación protegida, evitando que posibles atacantes estudien cómo la maquina virtual interna ejecuta el código interpretado.

La Tecnología DebuggerGuard
introduce una revolucionaria técnica para detectar depuradores ejecutándose en memoria. Esta tecnología asegura que una aplicación protegida solo podrá ser ejecutada en un entorno seguro contra el "cracking". Otros protectores software actuales implementan técnicas para detectar depuradores, pero estas técnicas son bastante conocidas y son combatidas fácilmente con herramientas especiales.

SecureEngine® añade código de protección a cada aplicación protegida. Para evitar que este código sea siempre el mismo y evitar que posibles atacantes conozcan patrones específicos en el código de protección, se ha añadido la tecnología SmartMetamorph. Esta tecnología muta el código x86 original en código funcional equivalente, pero con distintas instrucciones máquinas.

Cuando una aplicación está en fase de protección, SecureEngine® elimina las instrucciones que son inicialmente ejecutadas cuando se lanza una aplicación. Estas instrucciones son ejecutadas en un lugar totalmente protegido por SecureEngine®, evitando que un atacante pueda reconstruir las primeras instrucciones cuando intenta hacer una reconstrucción de la aplicación original.

Cuando un atacante intenta eliminar la capa de protección añadida a una aplicación, necesita reconstruir la tabla de importación de APIs. SecureEngine® utiliza un complejo sistema de ofuscación de la tabla de importación, evitando que un atacante pueda reconstruir la tabla de importación en caso volcar un bloque desencriptado de la aplicación original a disco.

Para evitar que un atacante pueda desensamblar el código de protección de SecureEngine®, se utilizan multitud de capas de encriptación totalmente diferentes entre ellas y variando totalmente el método de desencriptación en cada aplicación protegida, es decir, cada capa de encriptación se genera con un algoritmo diferente de desencriptación. El número de variaciones posibles es superior a 50.000 capas distintas.

Muchos atacantes utilizan herramientas de monitorización del registro y el sistema de ficheros. Muchas aplicaciones suelen guardar información sobre su periodo trial en el registro y ficheros. Un atacante solo tendrá que activar una de estas herramientas de monitoreo y observar qué lugares del registro o ficheros son accedidos por una aplicación, a partir de ahí, solo tendrá que modificar y/o borrar las claves de registro o ficheros accedidos para resetear el periodo trial de una aplicación.
SecureEngine® ofrece técnicas avanzadas para detectar si una herramienta de monitoreo está ejecutándose en memoria y evitar que posibles atacantes estudien o detecten las claves de registro o ficheros accedidos por una aplicación.

SecureEngine® usa la tecnología AntiCrackTools para detectar si se están ejecutando herramientas que puedan suponer un riesgo en la seguridad de una aplicación protegida. La mayor parte de esta tecnología esta implementada bajo la tecnología KernelOperation que permite la ejecución de código privilegiado para mayor seguridad.

El código de protección de SecureEngine® es mezclado con código "basura" para permitir una total ofuscación cuando un atacante intenta estudiar la protección. Esta tecnología usa código basura muy similar al código real, de forma que evita que un atacante sepa qué código es real y cuál basura. La mayoría de protectores software actuales usan una técnica parecida, pero el código que entremezclan es bastante intuitivo para reconocer que no pertenecen al código real.

Esta tecnología ofrece la habilidad de eliminar bloques de código una vez que son ejecutados. El código a eliminar será inicialmente encriptado y será desencriptado justo en el momento de ser ejecutado, para pasar a ser eliminado tras esa ejecución.

Esta tecnología ofrece la habilidad de seleccionar qué bloques de código serán encriptados continuamente y desencriptados justamente cuando van a ser ejecutados. Una vez ejecutados estos bloques de código vuelven a ser re-encriptados hasta que necesiten ser ejecutados nuevamente. La tecnología CodeEncrypt utiliza algoritmos de encriptación avanzados para evitar que un atacante pueda reconstruir los bloques de códigos encriptados.

La arquitectura x86 ofrece capacidades de depuración para que puedan ser utilizadas por herramientas de depurado. Sin estas capacidades de depuración, los depuradores son incapaces de funcionar correctamente. La tecnología intDebugShield toma control total de las capacidades de depuración ofrecidas por el procesador y gestiona las interrupciones de depuración para evitar que puedan ser utilizadas sobre una aplicación protegida. Cualquier otra aplicación no protegida, podrá ser depurada normalmente sin interacción con SecureEngine®.

En muchas ocasiones, un atacante no intentará reconstruir la aplicación original eliminando el código de protección, sino que simplemente modificará ciertos valores en el contexto de la aplicación en memoria para cambiar el modo de ejecución de la aplicación. Un ejemplo de este escenario sería cuando se modifica una aplicación en memoria para simular estar registrada.
SecureEngine® ofrece técnicas para evitar el acceso directo sobre ciertos bloques de código de la aplicación, con el fin de evitar el acceso directo y manipulación de la aplicación en memoria.

Esta técnica usa el poder de la tecnología ThreadEngine para chequear continuamente alguna actividad malintencionada sobre la aplicación. Muchos protectores software simplemente realizan chequeos de seguridad antes de desencriptar la aplicación protegida y ceder el control a ellas, pero en cuando estos chequeos son realizados y se desencripta la aplicación, éstas son dejadas "desprotegidas" en memoria sin ninguna intervención más del protector software.
La tecnología RealTimeSpy supervisará en todo momento la aplicación protegida, evitando esta vulnerabilidad que poseen la mayoría de protectores software.

Cuando una aplicación es protegida por SecureEngine®, la aplicación será protegida por algoritmos de encriptación aleatorios, variando en cada instancia de aplicación protegida. Los algoritmos generados son capaces de resistir cualquier ataque conocido en la ingeniería inversa.

La tecnología InteractiveEngine permite establecer una comunicación bidireccional entre la aplicación protegida y el código de protección. De este modo la aplicación protegida puede "hablar" con SecureEngine® para chequear su presencia en memoria o peder servicios extras de protección.

Esta tecnología inspecciona la aplicación a proteger y permite mutar el código original en código equivalente con distinta estructura. De este modo variará cada vez que la aplicación es protegida nuevamente y hará mucho más difícil la ingeniería inversa sobre la aplicación.

Normalmente, un atacante usará un depurador para poner puntos de ruptura (breakpoints) cuando un cierto evento ocurre y estudiar lo que la aplicación está haciendo en ese mismo instante.
SecureEngine® ofrece un complejo mecanismo para evitar que se puedan poner puntos de ruptura para evitar el rastreo de código específico en la aplicación o sobre el mismo código de protección.

A menudo, un atacante estudiara qué APIs han sido llamadas desde una aplicación y entender cómo funciona una aplicación simplemente mirando el historial de APIs llamadas. La tecnología AntiAPISpyer hace totalmente invisible qué APIs son llamadas desde las aplicaciones típicas que rastrean las APIs llamadas de una aplicación, dejando a un posible atacante totalmente desorientado sobre qué APIs son llamadas en una aplicación protegida .

SecureEngine®posee múltiples hilos de ejecución (threads) los cuáles hacen muy tedioso el rastreo sobre el código de protección. Estos threads están intercomunicados entre sí, funcionando como un todo en una red simétrica. Si un atacante intenta desactivar uno de estos threads, el thread vecino notificará a la aplicación principal para evitar que la aplicación pueda seguir ejecutándose normalmente.

SecureEngine® puede añadir protección con clave a la aplicación protegida, de forma que cada vez que la aplicación se ejecuta, es necesario la introducción de una clave. Esta protección evitará el uso de una aplicacion a menos que la clave de paso sea conocida. La protección con password usa técnicas de encriptación avanzadas y evita que una aplicacion sea desencriptada a menos que se conozca la clave de paso.

SecureEngine® usa algoritmos de compresión para comprimir todo el código de protección a la vez que la aplicacion protegida. Debido a que el código de protección añade un tamaño extra a la aplicación original, la compresión ofrecida por SecureEngine® permitirá que el tamaño final de la aplicación protegida sea menor que la aplicación original. El algoritmo usado de descompresión es bastante rápido como para apreciar una ligera disminución en el tiempo de carga de una aplicación.
|