Nueva versión de PESTO y las medidas de seguridad en los binarios de Windows 10

Área de Innovación y Laboratorio de ElevenPaths    18 febrero, 2020
Nueva versión de PESTO y las medidas de seguridad en los binarios de Windows 10

Uno de los peligros elementales en seguridad informática son las vulnerabilidades en general y la capacidad de explotarlas para ejecutar código en particular. Desde hace mucho tiempo se han ido desarrollando en Windows un gran número de tecnologías destinadas a mitigar la capacidad de los exploits para funcionar, creando barreras que impidan que una vulnerabilidad acabe ejecutando código no deseado. Muchas de estas barreras necesitan que el binario que se desea proteger (o que no ayude a la realización de un exploit) se compile con esa opción activa para que la protección se materialice. Para poder analizar cómo y cuántos ficheros se encuentran protegidos en un sistema operativo creamos PESTO, que ahora hemos actualizado para detectar algunas cabeceras más.

PESTO ElevenPaths

Con esta excusa, hemos vuelto a realizar un pequeño estudio para ver cuánta protección ofrecen los binarios en un Windows 10. En esta ocasión, mirando otros flags de las cabeceras no necesariamente relacionados con la seguridad.

En el anterior informe sobre el nivel de protección antiexploit en Windows 10, analizamos DEP, ASLR, SEH y CFG. En este además, analizamos otras cabeceras, no todas relacionadas directamente con la seguridad:

  • HIGH_ENTROPY: una mayor entropía de ASLR dificulta algunos tipos de ataque contra esta tecnología. Si el binario está compilado para 64 bits, se activa por defecto la opción /HIGHENTROPYVA a la hora de linkar. Para que se active el flag también se necesita añadir la opción /LARGEADDRESSAWARE (también activa por defecto) y por supuesto /DYNAMICBASE que activa ASLR en general.
  • FORCE_INTEGRITY: este flag hace que el cargador de sistema compruebe la integridad del binario (básicamente, si está correctamente firmado con un certificado) antes de ser ejecutado. Si no, no lo lanzará. Muy útil en entornos críticos.
  • NO_ISOLATION: significa que no le hará caso al manifiesto del ejecutable, esté incrustado o no en la aplicación.
  • NO_BIND: durante el linkado de la aplicación, la Import Address Table (IAT) y la Import Lookup Table (ITL) son idénticas hasta que la aplicación se “binda”.
  • APP_CONTAINER: si está activo, la aplicación solo puede correr en un contenedor de apps. Esto aísla el ejecutable y lo hace más seguro, aunque no sirve para todos los programas.
  • WDM_DRIVER: el fichero se convierte en un Windows Driver Model (WDM) device driver.
  • TERMINAl_SERVER_AWARE : si se ejecuta en entornos multiusuario (Terminal Server) el sistema operativo mejorará el rendimiento de la aplicación en remoto y hará modificaciones para que será más útil en este tipo de entornos.          

El experimento

El experimento que hemos vuelto a realizar pretende comprobar hasta qué punto estas medidas se encuentran implementadas en los binarios de Windows 10 y programas más populares utilizados por cualquier usuario. Para conseguirlo, se han analizado los flags en las cabeceras de los ejecutables, buscando qué prevenciones de seguridad descritas se encuentran activas. Los ficheros objetivo del estudio han sido los ejecutables (exe) y librerías (dll). Para acceder a las cabeceras, se ha usado un programa en PESTO. El sistema estudiado tenía estas características.

  • Instalación base de Windows 10 Pro sin programas adicionales (Versión 1909 build 18363.592 de enero de 2020). A este perfil lo llamamos base.
  • Instalación base más paquete ofimático (Office Pro Plus 2016, v16.0.12325.20344 de enero de 2020). A este perfil lo llamaremos ofimático.
  • Instalación base más paquete ofimático más navegadores (Firefox 72.0.2(x64 en-US), y Chrome 80.0.3987.87 (64-bit)) y lectores de PDF (Foxit en su versión 9.7.1.29511 y Adobe Reader en su versión DC 19.021.20061). A este perfil lo llamaremos completo.

Resultados

Hemos analizado el siguiente número de ficheros por cada perfil:

  • Base: 10742 archivos DLL y 1711 archivos EXE.
  • Ofimática: 11753 archivos DLL y 1822 archivos EXE.
  • Completa. 12074 archivos DLL y 1891 archivos EXE.
binarios según perfil y flag

Además hemos entrado en detalle para comprobar los binarios del sistema operativo exclusivamente.

flags activos en C:\Windows

Luego, como en el informe anterior, hemos querido comprobar qué tal las activaciones de flags en los dos lectores de PDF, Foxit y Adobe.

binarios de foxit vs adobe

Igual en los navegadores Firefox y Chrome.

binarios de firefox vs chrome

ASLR y DEP son ampliamente usadas. Los navegadores tienen más cuidado a la hora de activar la alta entropía, mientras que parece que los lectores de PDF no le dan tanta importancia. CFG no resulta muy relevante para los programadores en general que no se molestan en activarlo (aunque sí está activo en una buena parte de los programas propios del sistema operativo). No es de extrañar puesto que se ha reconocido que es fácilmente eludible.

La nueva versión de PESTO está disponible desde su Github.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *