EMET, ¿es oro todo lo que reluce?

lunes, 6 de octubre de 2014

EMET, de Microsoft, es una gran herramienta, pero a medida que gana popularidad, parece que se van encontrando algunos fallos, según algunos titulares recientes. ¿Pero qué hay de cierto? ¿Qué tipo de fallos se están cometiendo con EMET? ¿Es tan buena como parece? Analicemos lo que está pasando.

EMET (Enhanced Mitigation Experience Toolkit) es una gran utilidad para mitigar la explotación de vulnerabilidades mediante la inclusión de capas de protección adicionales. En resumen, EMET intenta evitar que funcionen los exploits. Hoy en día, cuando DEP y ASLR están activos para la mayoría programas "interesantes" para los atacantes, hay que recurrir a técnicas especiales (ROP para DEP y filtrado de información para ASLR, entre otras) para poder eludirlos. Estas técnicas disponen de varias fórmulas para poder llevarse a cabo, y EMET es un sistema que se instala en el equipo para evitar que estas técnicas conocidas funcionen. Esto hace que sea muy efectivo, puesto que, si bien es imposible evitar las vulnerabilidades y los exploits que los aprovechan, EMET acudiría al rescate para que no funcionasen correctamente.





Tipos de fallos de EMET

Pero toda herramienta contiene errores. Lo primero que hay que distinguir en este caso, es qué tipo de errores o fallos puede sufrir EMET. Mejor dicho, cómo se le puede atacar. Existen dos formas:


  • Deshabilitándolo por completo antes de lanzar el ataque. O sea, incluso antes de lanzar el exploit que se desea, desmontar EMET por completo para luego poder actuar de forma "normal". Esto, habitualmente, debe conseguirse usando una técnica ROP que permita desactivar el programa por completo, incluso antes de que pueda ser protegida esa técnica ROP con el propio EMET. Sería como un "meta-exploit" específico que permitiría ya lanzar cualquier otro exploit de forma "normal".
  • Eludir las protecciones en sí que EMET implementa. EMET ofrece ahora mismo unas 12 técnicas anti-ROP y antiexploit en general. Los atacantes intentan eludir no todo EMET, sino que se trata de "inventar" técnicas ROP más avanzadas, por ejemplo, para que las técnicas anti-ROP de EMET no sean válidas.


En ambos casos el efecto es el mismo: el atacante podrá lanzar ataques... pero la primera es más "apetitosa", puesto que elimina al enemigo por completo y ofrece más margen de maniobra.


Desarmando EMET


Han sido varios los golpes técnicos lanzados contra EMET. Empezó con un tal SkyLined que mostró cómo eludir la protección EAF en EMET 2.0. El primero y más duro vino en 2012, cuando Shahriyar Jalayeri, publicó dos métodos para eludir EMET 3.5 por completo. Aprovechó que la zona de memoria SHARED_USER_DATA está siempre en la misma dirección en todas las versiones de Windows para encontrar un punto de apoyo fijo en memoria y de ahí KiFastSystemCall para hacer llamadas de sistema. Con esto, consiguió marcar la memoria como ejecutable a través de ZwProtectVirtualMemory. Las funciones que se necesitan para culminar el ataque (tipo WinExec) estaban hookeadas por EMET y no podía lanzar el código shellcode... así que desde ahí, desactivaba EMET por completo. Pero no se quedó ahí. Poco después usó KernelBase.dll (que Microsoft olvidó proteger) para (obtenida su dirección base) usar VirtualProtect para eludir las técnicas anti-ROP de EMET.


Arriba, cómo definía Microsoft EMET en 2012. Abajo, cómo lo define en la actualidad

Pero fue resuelto. Más tarde, en su versión 4 de 2013, Aaron Portnoy publicó un método para eludir la mayor parte de las protecciones de EMET, y lo demostró explotando por completo un fallo en Shockwave protegido por EMET.

En su versión 4.1, Dabbadoo a finales de 2013 escribió un artículo muy interesante en el que, si bien no explicaba técnicas para eludirlo, supuso un estudio muy profundo sobre las limitaciones de la propia tecnología y sus puntos débiles, y en él se basaron otros para seguir adelante en la investigación.

Un poco más tarde, Jared DeMott, de Bronium publica en febrero de 2014 cómo eludir todas y cada una de las protecciones ROP de EMET 4.1 y 4.0. Trabajó en modificar ligeramente las técnicas ROP conocidas para poder impedir que EMET detuviese el ataque.

En julio de 2014, consiguen otra vez hacer que EMET deje de funcionar (en contraposición a eludir sus técnicas). Fueron los técnicos de Offensive Security, de Kali Linux. Para demostrarlo, consiguieron que la vulnerabilidad CVE-2012-1876 tuviera éxito en Windows 7 (x86) a través de IE 8.0 y con EMET 4.1.X.

Por aquel entonces ya existía la versión 5 (de febrero), en la que se arreglaban todos estos problemas. Y con ella... lo volvieron a conseguir. Los de Offensive Security pudieron, con pequeños cambios, eludir de nuevo EMET.

¿Entonces no sirve?

En general, mucho. El problema es que EMET funciona en el mismo plano de usuario, y desde ahí es a veces complicado proteger al propio usuario. EMET está creado para mitigar que los exploits funcionen incluso cuando ya se ha sido atacado y explotada una vulnerabilidad. Es una capa más de seguridad. No es infalible porque al fin y al cabo, está basado en una especie de lista negra basada en técnicas anti-ROP conocidas, que son limitadas y aparecen de vez en cuando. Pero es muy útil en varios sentidos:

  • Lo primero es que EMET, con estas limitaciones, cubre una capa en la que no se ha trabajado demasiado todavía: evitar que el exploit funcione. No cubre la detección del malware, del exploit, la actualización, los permisos... sino que funciona en un plano que hasta ahora había sido "olvidado".
  • En general, por ahora, es ignorado por los atacantes. Ningún ataque "in the wild" se ha detectado que se preocupe de si su víctima utiliza EMET o no. Que se sepa, estos métodos descritos no los han utilizado los atacantes indiscriminados y, por tanto, el usuario medio queda protegido con EMET. Sí es cierto que se ha encontrado que algunos atacantes intentan, a través de ciertas técnicas y usando Internet Explorer, enumerar el software que contiene el equipo que potencialmente será su víctima. Y se ha visto que si incluyen ciertos antivirus o EMET, prefieren evitar lanzarse a culminar el ataque. Pero quizás, es muy probable que la razón no es que no sepan eludirlo, sino que prefieren pasar desapercibidos. Una víctima que tenga instalado EMET u otras herramientas avanzadas, es más probable que se convierta en una víctima incómoda que pueda descubrir al atacante. En este sentido EMET, puede actuar con efecto disuasorio, además de sus bondades técnicas.
  • EMET está evolucionando. Aunque en su versión 5, todavía tiene mucho margen de mejora y sigue siendo un programa "poco usado" y para usuarios "expertos". Pero a juzgar por la promoción que le hace Microsoft, mejorará. 
  • EMET incluye otras protecciones, como Certificate pinning para Internet Explorer y ASR... que resultan también muy interesantes.

En resumen. EMET es tan necesario como cualquier otro software de protección que cubra una capa concreta y permita una correcta defensa en profundidad. Con sus virtudes, y comprendiendo sus limitaciones... que deben mitigarse precisamente quizás con la protección de otras capas.

Sergio de los Santos
ssantos@11paths.com

No hay comentarios:

Publicar un comentario