Hardware Hacking en Sistemas de Control Industrial

Publicado el 29/06/2017, por INCIBE
Hardware Hacking en Sistemas de Control Industrial

Una de las cosas que no debe olvidarse a la hora de diseñar los dispositivos y realizar sus auditorías de seguridad es el hecho de que alguien abra el dispositivo para analizarlo y extraer información, como puede ser el firmware o software embebido o los valores de memoria en determinados momentos de la ejecución.

Está técnica es conocida como “Hardware Hacking”, requiere aunar conocimientos de electrónica, de comunicaciones entre componentes de circuitería impresa, de sistemas operativos e ingeniería inversa de software; lo que dificulta mucho su realización.

En industria es frecuente encontrarse con chips multipropósito, con diseños de uso general y utilizados en diferentes dispositivos específicos. Esto es una ventaja para el fabricante a la hora de producirlos, pero también es una ventaja a la hora de analizarlo. La especificación técnica sobre funcionamiento, conexiones o número de pines del chip, así como el tipo de entradas y salidas que aceptan, suelen ser públicas y fáciles de encontrar en Internet. Esto facilita su estudio y el seguimiento de descubrimientos, por parte de personas dedicadas al “Hardware Hacking”.

Pero no todo es hardware, el software embebido contiene mucha información, como algoritmos para la generación de claves, claves embebidas (mala praxis pero extendida), funciones de cifrado, certificados, etc. El conocimiento de la estructura de la memoria y su direccionamiento es imprescindible a la hora de buscar datos valiosos en ella, así como para facilitar el volcado para un posterior análisis estático, tanto de valores de argumentos de funciones, variables, configuraciones, etc.

Conocer y controlar las entradas y salidas, tanto digitales como analógicas, que acepta un chip permite modificar el comportamiento normal del dispositivo, simular reseteados, forzar reinicios, etc. Los análisis estáticos y dinámicos de todas las funciones que intervienen permiten descubrir los argumentos empleados, así como la existencia o no de validaciones de entrada o salida. Estos análisis, unidos al volcado de la memoria en un determinado momento y al uso de herramientas específicas, pueden ayudar a descubrir desbordamientos de búfer y otras vulnerabilidades, no contempladas por el fabricante que pueden ser utilizadas para la obtención de información o tomar el control del dispositivo.

Imprescindibles en un laboratorio de “Hardware Hacking”

Las herramientas más utilizadas para realizar hardware hacking son las siguientes:

Kit de herramientas físicas:

  • Destornilladores y destornilladores de precisión: Necesarios para abrir las carcasas de los dispositivos investigados o desmontar partes internas o placas.
  • Estación de soldadura: Se requiere para soldar o desoldar componentes, como chips o memorias y analizarlos bajo determinadas condiciones o de forma aislada.
  • Lupa o microscopio digital: Los componentes tienen serigrafiado en su superficie información (números de componente, fabricante…) que, por su tamaño, es difícil de leer. Además aporta precisión a la hora de trabajar con la estación de soldadura.
  • Analizador de señal: Un analizador de señal es importante si vamos a realizar pruebas con flags y conocer el funcionamiento a nivel binario de algunos pines concretos del chip.
  • Multímetro: Los medidores de voltaje (multímetro) son muy útiles para realizar pruebas puntuales, aunque en muchos casos el propio analizador contempla esta posibilidad.
  • Osciloscopio: Imprescindible a la hora de interpretar una señal de manera exacta, tanto analógica como digital.
  • Programador de memoria y microcontroladores: Es capaz de leer y programar diferentes tipos de memorias Flash, EPROM, chips, etc…
  • Pinzas de precisión para conexión y conversores: Conversores UART/Puerto Serie a USB, pinzas de conexiones, etc… permiten leer directamente desde el bus de comunicación.
  • Interfaz de comunicación, como JTAG: Para comunicar el ordenador del analista con los dispositivos es habitual disponer como por ejemplo Buspirate, The Shikra, Jtagulator, etc.

Kit de herramientas software:

  • OpenOCD (Open On-Chip Debugger): Permite establecer conexiones entre nuestro ordenador y el chip a analizar mediante un dispositivo interfaz. La interacción se realiza a través de una interfaz telnet por el puerto 4444/TCP o con el GDB en el puerto 3333/TCP por defecto.
  • GDB: Depurador libre para sistemas Linux que nos ayudará a entender el funcionamiento de las ejecuciones on-chip.
  • OllyDbg: Desensamblador utilizado para análisis de binarios en Windows.
  • IDA PRO: Desensamblador de código similar a OllyDbg.
  • Binwalk: Es una herramienta para el análisis y escaneo de imágenes firmware y binarios, muestra de manera muy rápida las diferentes particiones, tamaño, cifrado, sistema de ficheros utilizado, etc…
  • Radare2: Framework para la práctica de ingeniería inversa y análisis de binarios compuesto por varias herramientas, completamente portable y con soporte para varias arquitecturas.
  • Fritzing: Para desarrollo de circuitos o diseño de esquemas electrónicos.

Problemas y medidas preventivas en la industria

El fabricante, desde la fase inicial de diseño, es el encargado de construir un producto robusto. La visión del cliente final debe estar recogida en el ciclo de producción, o al menos tenida en cuenta para introducir demandas y mejoras. Las medidas de protección implementadas por el fabricante tienen que ir desde el propio sistema de arranque (boot) control de contraseñas y control de integridad, sistema operativo (Kernel) cifrado y no modificable; hasta el espacio de usuario (Aplicaciones) gestión de usuarios, roles, permisos; sin olvidar en ningún momento el aspecto físico y los mecanismos Anti-Tampering.

A nivel de hardware, el fabricante del dispositivo dispone de medios para evitar ciertas técnicas de hardware hacking. La lectura directa de señales en los pines de un chip puede ser evitada mediante el uso de resina epoxy cubriendo dichas patillas; si un atacante intenta quitar la resina, la placa se daña impidiendo establecer las comunicaciones. La existencia de puertos de prueba (debug), JTAG, SPI, I2C UART, en placas de producción podrían ser aprovechados por los especialistas en hardware hacking: si no son necesarios, o no van a ser usado en el cliente final, deben desaparecer. Otros mecanismos de protección adicionales para evitar la lectura de estos puertos puede incluir el cambio de funcionalidad de los pines, haciendo que difieran del estándar; o el borrado del firmware si se detecta tensión en alguno pin concreto.

Conclusiones

Uno de los vectores de ataque que debemos tener en cuenta a la hora de realizar nuestro análisis de riesgos es el hardware hacking. Debemos conocer que tipo de información crítica puede ser descubierta, para esto podemos preguntar directamente a los fabricantes, obtenerla mediante métodos propios o con empresas de auditoría especializadas. Además de realizar un análisis técnico para evaluar la seguridad de los dispositivos, sistema de cifrado si es que contiene, como se gestionan las claves, algoritmos de generación de clave o claves embebidas, servicios abiertos por defecto, etc. Finalmente, construir una métrica con estos parámetros será de gran ayuda a la hora de elegir un dispositivo. Del mismo modo que se realizan estas evaluaciones para la elección de una tecnología software, debemos seguir una metodología para valorar que dispositivo usaremos para dar solución a nuestra necesidad industrial.