lunes, 31 de julio de 2017

Poniendo a prueba la seguridad de las máquinas de votación en la DefCon

El pasado fin de semana se celebró la famosa conferencia de seguridad DefCon en su 25ª edición. En esta ocasión,  el gobierno norteamericano cedió algunas máquinas de votación ya retiradas para que los investigadores disfrutaran y a la vez encontraran agujeros de seguridad para mejorar las nuevas remesas de máquinas.

Una de las máquinas cedidas fue la “ExpressPoll 5000”, que utilizaba un antiguo slot PCMCIA para transferir archivos, además de almacenar distintas bases de datos. Para empezar, hicieron un pequeño chequeo al sistema para sacar información general, como:


  • Sistema operativo Windows CE 5.0
  • El software estaba desarrollado en una aplicación usando .NET.
  • El software utilizaba WinForms en la interfaz de usuario.
  • El “bootloader” era propietario.
  • La arquitectura del procesador era ARM.
  • Contenía un fichero de base de datos en una tarjeta de memoria.


Tras probar múltiples exploits típicos para esta versión de Windows sin éxito, los investigadores se centraron en otro vector de ataque: la tarjeta de memoria.

Al arrancar el sistema con la tarjeta de memoria insertada, el bootloader comprueba un archivo llamado NK.BIN. Si está presente, lo carga en memoria RAM sin ningún tipo de comprobación de autenticidad. En ese momento se puede cambiar el firmware de manera permanente.

En este caso el archivo NK.BIN se utiliza para actualizaciones de Windows CE 5.0 en dicha máquina, pero un atacante puede subir y ejecutar cualquier Kernel NT e incluso una imagen con Linux (aunque esta última posibilidad no fue probada).



Inyección del nuevo bootloader


De manera similar a la que se cambia el firmware, también es posible cambiar el bootloader del sistema utilizando el fichero “EBOOT.BIN”. Se carga sin comprobar ninguna firma de integridad, al igual que el NK.BIN. Por desgracia esta vez la inyección no funcionó y el dispositivo quedó inservible.

Sobreescribiendo el archivo de recursos de la aplicación .NET


Cuando el software de ExpressPoll se lanza desde el botón “Lanzar” carga desde la tarjeta de memoria el archivo llamado “ExPoll.resources”. La idea de este archivo es poder definir imágenes, cadenas, botones, layouts, etc. Está pensado para personalizar la aplicación, por ejemplo sustituyendo el logotipo de Diebold.

El punto de fallo en el sistema es que los botones (y potencialmente otros elementos de la interfaz) se pueden sobreescribir para hacer otras acciones diferentes, como ejecutar un archivo almacenado en la tarjeta de memoria o ejecutar un comando en Windows CE.

La vulnerabilidad ha sido confirmada creando un archivo de recursos aleatorio de .NET, nombrándolo ExPoll.resources y copiándolo a la tarjeta de memoria. Como era de esperar, el sistema mostró un error, lo que significa que la carga del archivo funcionó. Pero al cargar un archivo corrupto se copió a memoria y dejando el sistema inservible en el proceso.

Bases de datos SQLite3


Pero sin duda una de las vulnerabilidades que más llamaron la atención es la del archivo de base de datos llamado “PollData.db3” en la tarjeta de memoria. Esta base de datos contenía toda la información de las encuestas, votantes… Usando esta información nos encontramos con varios tipos de posible ataques:


  • Filtración de información: Un atacante puede fácilmente extraer la tarjeta de memoria y reemplazarla por una que esté vacía.
  • Falsificación de información: Un atacante podría crear su propia base de datos y, reemplazando la tarjeta, cambiar los votos por unos falsos.


Datos de la base de datos. Fuente: blog.horner.tj

Puertos USB abiertos

El dispositivo dispone de una serie de puertos USB donde un atacante puede introducir un dispositivo para lanzar un ataque. A partir de aquí, las posibilidades quedan abiertas a la imaginación del lector.

Servidor web por defecto en WinCE

Windows CE tiene por defecto un servidor web abierto en el puerto 80 que se podría considerar como un riesgo de seguridad. Por ahora no han conseguido ningún ataque usando este vector, pero la investigación sigue abierta.

Los investigadores probaron otra serie de ataques, como desbordamientos de memoria usando “Bash Bunny” a través de los puertos USB, o introduciendo una base de datos de SQLite mayor de 1GB, sin que llegara a funcionar.


Más información:
Hacking Voting Machines at DEF CON 25
https://blog.horner.tj/post/hacking-voting-machines-def-con-25

Antonio Sánchez