No he visto la sexta entrega de la película Mission Impossible, ni creo verla. Vi la quinta entrega (en un estado zombi durante un largo vuelo a casa, después de una semana difícil de negocios) solamente porque una escena se filmó en nuestra nueva, flamante y moderna oficina en Londres. Se trataba de entrega más de Mission Impossible de las muchas que hay. No es para mí. Bofetadas, disparos, golpes, choques, explosiones, conmoción. Uf. Yo prefiero algo más desafiante, intelectualmente estimulante y sencillamente interesante. Después de todo, mi tiempo es escaso y valioso.
Pareciera que estoy despotricando contra Tom Cruise y compañía, ¿verdad? Pero esperen. Tengo que darle crédito al menos a una escena muy bien realizada (es decir, intelectualmente estimulante y sencillamente interesante). Se trata de la parte donde los buenos necesitan que uno de los villanos delate a sus secuaces, o algo parecido. Así que instalaron un ambiente falso en un “hospital” donde “CNN” transmitía por “TV” un informe noticioso sobre el apocalipsis nuclear. Una vez satisfecho con la transmisión mundial de su manifiesto apocalíptico, el villano entrega a sus secuaces (¿o acaso era un código de inicio de sesión?) como parte del trato realizado con sus interrogadores. Uy. He aquí la secuencia.
¿Por qué me gusta tanto esta escena? ¡Pues porque ilustra muy bien uno de los métodos para detectar ciberamenazas anteriormente desapercibidas! De hecho, existe muchos métodos, que varían de acuerdo con el área de aplicación, efectividad, uso de recursos y otros parámetros (aquí escribo sobre ellos con regularidad). Pero hay uno que siempre destaca: la emulación (sobre la cual he escrito bastante anteriormente).
Al igual que en la película MI, un emulador inicia el objeto investigado en un ambiente artificial aislado, lo cual lo estimula para que revele su carácter malicioso.
Pero hay una gran desventaja en dicha estrategia: el propio hecho de que el ambiente sea artificial. El emulador se esfuerza en que ese ambiente artificial parezca un sistema operativo verdadero; sin embargo, el malware, que cada vez es más inteligente, aún logra distinguirlo de un ambiente real. Y cuando el emulador nota que el malware lo ha reconocido, se reorganiza y mejora la emulación. Y así sucesivamente, en un ciclo sin fin que normalmente abre una ventana de vulnerabilidad en una computadora protegida. El problema fundamental es que ningún emulador ha logrado ser la réplica viva de un sistema operativo real.
Por otra parte, existe otra opción para abordar el análisis de comportamiento de los objetos sospechosos: analizarlo (en un sistema operativo real) dentro de una máquina virtual. Y bueno, ¿por qué no? Si el emulador no lo detiene por completo, ¡deja que lo intente una máquina (real) virtual! Se trataría del “interrogatorio” ideal: se lleva a cabo en un ambiente real, no artificial, pero sin las consecuencias negativas.
Algunos, apenas se enteren de este concepto, se apresurarán a preguntar por qué nadie lo pensó antes. Después de todo, la virtualización ha estado en las tendencias dominantes de la tecnología desde 1992. Resulta, sin embargo, que las cosas no son tan simples.
Primero, el análisis de los objetos sospechosos en una máquina virtual es un proceso que consume muchos recursos, lo cual es idóneo solamente para las soluciones de seguridad de empresas de gran tamaño, donde el análisis necesita ser sumamente intenso de modo que absolutamente ningún objeto malicioso penetre las defensas. Por desgracia, esta tecnología no es adecuada para las computadoras domésticas, ya no digamos los smartphones… por ahora.
En segundo lugar, estas cosas existen realmente. De hecho, nosotros ya utilizamos esta tecnología (de modo interno, en la Kompañía) para investigaciones internas. Pero en términos de productos aptos para el mercado, pocos están disponibles. La competencia ha lanzado productos similares, pero su eficacia aún deja mucho que desear. En general, dichos productos se limitan a recopilar registros y análisis básicos.
Tercero, iniciar un archivo en una máquina virtual es apenas el principio de un proceso muy largo y difícil. Después de todo, el objetivo del ejercicio es hacer que el carácter malicioso de un objeto se revele; para esto, necesitas un hipervisor inteligente, el análisis y el registro de comportamiento, el ajuste cuidadoso de las plantillas de acciones peligrosas, la protección contra trucos antiemulación, la optimización de ejecución, entre muchos otros.
¡Puedo afirmar sin falsa modestia que estamos muy adelantados con respecto al resto del mundo!
Recientemente, obtuvimos una patente estadounidense (US10339301) que comprende la creación de un ambiente adecuado para que una máquina virtual realice análisis rápidos y profundos de objetos sospechosos. Así es como funciona:
- Las máquinas virtuales se diseñaron (para diversos tipos de objetos) con ajustes que aseguran su ejecución óptima y una tasa de detección máxima.
- El hipervisor de la máquina virtual funciona junto con el registro del sistema de comportamiento de un objeto y del análisis del sistema de este, apoyado por las bases de datos actualizables de las plantillas de comportamiento sospechoso, la heurística y la lógica de reacciones frente a acciones, entre otros.
- Si se detectan acciones sospechosas, el sistema de análisis incorpora en la marcha cambios al proceso de ejecución del objeto en una máquina virtual con el fin de estimular al objeto para que revele sus intenciones maliciosas. Por ejemplo, el sistema puede crear archivos, enmendar el registro, acelerar tiempo y demás.
El tercer punto es la característica más exquisita y única de nuestra tecnología. Déjame darte un ejemplo de su funcionamiento.
El sistema detecta que un archivo iniciado “se ha quedado dormido” y ya no da muestras de actividad. Eso se debe a que el objeto pudo haberse programado para permanecer inactivo durante varios minutos (o docenas de ellos; incluso horas) antes de comenzar su actividad maliciosa. Cuando empieza su falsa inactividad, aceleramos el tiempo en la marcha al interior de la máquina virtual, de modo que pasen uno, tres, cinco y hasta un millar de minutos por segundo. La funcionalidad del archivo sujeto a análisis no cambia, mientras que el tiempo de espera se reduce cientos (hasta miles) de veces. Y si, después de su “siesta,” el malware decide verificar el reloj del sistema (¿ha seguido su curso?), se le hará creer que así fue, con lo cual seguirá con su misión maliciosa y, en consecuencia, se expondrá en el proceso.
Otro ejemplo:
El objeto aprovecha una vulnerabilidad en una biblioteca específica o intenta cambiar el contenido de un archivo o de un registro. Al principio, con ayuda de la función común fopen(), tratará de abrir la biblioteca (o archivo o registro), y si fracasa (no existe esa biblioteca ni esos derechos de acceso), simplemente se dará por vencida. En dicho escenario, cambiamos (en la marcha) el valor de retorno de la función fopen() de “archivo inexistente” a “archivo existente” (o, de ser necesario, creamos el propio archivo y le introducimos el contenido correspondiente); luego, simplemente observamos qué hace el objeto.
Dicha estrategia también funciona muy bien en condiciones de árboles lógicos sobre el comportamiento del objeto. Por ejemplo: si existe el archivo A y el archivo B, entonces se modifica el archivo C, y listo. Sin embargo, se desconoce lo que hará el programa sujeto a investigación si existe solamente el archivo A o el archivo B. Por lo tanto, lanzamos una iteración en paralelo y le decimos al programa sospechoso que el archivo A existe pero no el B; después, analizamos con detenimiento la actividad del árbol lógico.
Es importante señalar que las bases de datos externas, fáciles de actualizar, configuran las reglas de reacción a la ejecución del archivo. No necesitas rediseñar el motor entero para añadir nueva lógica, basta con describir la multitud de posibles escenarios de comportamiento malicioso y actualizar con un clic.
Así es, en resumen, el funcionamiento de la tecnología. Pronto se le añadirá a KATA, y se le comercializará como una solución independiente para empresas: Kaspersky Sandbox.