FPGAs: Una tecnología que crece día a día en la ciberseguridad

Los FPGAs (Field-Programmable Gate Arrays) emergen como una solución rápida y flexible para abordar problemas complejos y se destacan el en escenario de la ciberseguridad por sus características.

Las herramientas tradicionales muchas veces no son suficientes para garantizar una protección efectiva, sobre todo ante las amenazas cada vez más sofisticadas. Los FPGAs (Field-Programmable Gate Arrays), entonces, están emergen como una solución capaz de abordar problemas complejos con rapidez y flexibilidad.  Pero ¿qué son exactamente los FPGAs, y cómo pueden transformar la manera en que defendemos nuestros sistemas digitales?

¿Qué es un FPGA?

Un FPGA es un circuito integrado reconfigurable que puede programarse para ejecutar tareas específicas a nivel de hardware. A diferencia de los microprocesadores o microcontroladores, que operan ejecutando instrucciones de software sobre una arquitectura fija, los FPGAs permiten configurar su arquitectura interna para realizar funciones específicas. Esto los hace excepcionalmente versátiles y eficientes en tareas que requieren procesamiento paralelo o baja latencia.

Arquitectura Interna de una FPGA

La arquitectura interna de una FPGA se compone de varios elementos clave:

Imagen 1: Aquitectura interna de una FPGA, elementos clave.

  1. Bloques Lógicos Configurables (CLBs): Estos son los «ladrillos» básicos de la FPGA. Contienen elementos lógicos como puertas AND, OR, XOR, etc., que pueden ser conectados de diversas maneras para implementar funciones lógicas complejas.
  2. Bloques de Entrada/Salida (IOBs): Estos bloques se encargan de la interfaz entre la FPGA y el mundo exterior. Permiten conectar la FPGA a otros dispositivos y circuitos.
  3. Matriz de Interconexión Programable: Esta es una red de rutas que conecta los CLBs y los IOBs. La configuración de esta matriz determina cómo se conectan los diferentes elementos de la FPGA.

Su capacidad de ser reprogramados, incluso después de ser desplegados, los convierte en una herramienta valiosa para una variedad de aplicaciones tecnológicas, hoy día si bien los FPGAs son utilizados comúnmente en el área aeroespacial para procesar señales de radar y realizar tareas de detección de objetos y seguimiento, o bien en el ámbito militar, videojuegos, diversas industrias y la instrumentación científica para adquirir y procesar datos de alta velocidad, también se encuentra incluida la ciberseguridad donde aporta interesantes usos de aplicación.

El potencial de los FPGAs en ciberseguridad

La ciberseguridad exige soluciones capaces de analizar grandes volúmenes de datos, identificar patrones sospechosos y responder en tiempo real. Los FPGAs se destacan en este escenario debido a sus características únicas:

  • Aceleración criptográfica: Los FPGAs pueden implementar algoritmos criptográficos como AES, RSA o SHA con un rendimiento superior al de las soluciones basadas en software. Esto los hace ideales para proteger datos sensibles en tiempo real.
  • Análisis de tráfico en redes: Su capacidad para procesar datos en paralelo permite analizar tráfico de red y detectar patrones de ataque con baja latencia. Esto es crucial para sistemas de detección de intrusos (IDS) y firewalls avanzados.
  • Mitigación de ataques: En entornos industriales y de IoT, los FPGAs pueden identificar y bloquear ataques antes de que comprometan el sistema.
  • Prototipos de hardware seguro: Los FPGAs son una plataforma perfecta para desarrollar y probar arquitecturas de hardware seguras antes de llevarlas a producción como ASICs (circuitos integrados de aplicación específica).
  • Ejecución de algoritmos de inteligencia artificial: Pueden acelerar modelos de machine learning que detectan actividades maliciosas o anómalas, combinando velocidad y precisión.

Ejemplos en la Práctica

Análisis de Fuerza Bruta: En investigaciones de ciberseguridad, los FPGAs son utilizados para probar claves criptográficas mediante ataques de fuerza bruta. Su capacidad de realizar millones de operaciones simultáneas reduce drásticamente el tiempo necesario para estas pruebas.

Protección de Infraestructuras Industriales: En diferentes industrias este tipo de tecnologías son utilizadas para la Inspección de productos en líneas de ensamblaje, sistemas de control de motores, redes de sensores industriales, y también las infraestructuras IoT que conviven en las infraestructuras industriales.

Protección de Sistemas Críticos: Infraestructuras críticas como plantas de energía o sistemas financieros pueden beneficiarse de los FPGAs para asegurar que los algoritmos de control sean inmutables y resistentes a ataques.

Protección contra Malware: Un FPGA puede ser configurado también para analizar archivos entrantes y detectar patrones de malware en tiempo real complementando el uso de software especializados.

Si a estas alturas te ves tentado por jugar con este tipo de dispositivos es importante que sepas que existen diversas opciones según tu nivel de conocimientos y el uso para el que deseas aplicarlos, veamos algunas opciones disponibles:

  • Cmod S7-25: Si estás comenzando en el mundo de las FPGAs o necesitas una plataforma sencilla para proyectos básicos, Cmod S7-25 es una FPGA de bajo costo y tamaño reducido, ideal para proyectos de aprendizaje y prototipado rápido. Utiliza un chip FPGA de la serie 7 de Xilinx y cuenta con una variedad de periféricos básicos como botones, LEDs, conectores para sensores y actuadores.
  • Nexys Video: Si tus proyectos involucran procesamiento de video, visión artificial o interfaces gráficas. Diseñada específicamente para aplicaciones de procesamiento de video, la Nexys Video incluye un chip FPGA de alta performance y una variedad de interfaces de video, como HDMI, VGA y cámaras.
  • Pynq Z1: Si necesitas una plataforma versátil para proyectos que combinen el procesamiento de alto nivel con la aceleración de hardware, como inteligencia artificial o aprendizaje automático, la Pynq Z1 combina la potencia de un FPGA Xilinx con un procesador ARM Cortex-A9, lo que la convierte en una plataforma de desarrollo versátil, otro dato interesante es que ofrece una interfaz de programación de alto nivel basada en Python facilitando su uso para desarrolladores sin experiencia en hardware.

Retos en su implementación

Aunque los FPGAs ofrecen ventajas significativas, su implementación también enfrenta retos:

  • Costo inicial: La programación y configuración de un FPGA requiere experiencia y tiempo.
  • Curva de aprendizaje: Los diseñadores deben dominar lenguajes de descripción de hardware como VHDL o Verilog.
  • Consumo de energía: Aunque eficientes, pueden consumir más energía que otras soluciones específicas como ASICs.

A pesar de estos desafíos, en el futuro de los FPGAs en ciberseguridad puede suponerse que habrá avances en herramientas de programación y que tendrán una accesibilidad crecientes, por lo que jugarán un papel clave en la defensa de sistemas digitales.

Conclusión

Los FPGAs por su flexibilidad, velocidad y potencia son aliados indispensables frente a amenazas cada vez más complejas. A medida que las organizaciones busquen soluciones innovadoras para proteger sus activos, es probable que veamos una adopción creciente de esta tecnología en diversos sectores. En el campo de la ciberseguridad, sin dudas los FPGAs son una herramienta que vale la pena explorar.

 

Fuente: www.welivesecurity.com

 

 

Hardware Hacking: introducción al análisis de un firmware

Una introducción al hardware hacking donde explicamos qué es, cómo se utiliza en ciberseguridad y cuáles son las técnicas que podemos utilizar para extraer el firmware de un dispositivo.

Tabla de contenidos:

—El hardware hacking: qué es y para qué se utiliza
—Para qué extraer y analizar el firmware de un dispositivo
—Técnicas para extraer el firmware de un dispositivo
—Extracción de firmware de dispositivos usando JTAG:
—Cómo funciona la interfaz JTAG
—Qué podemos hacer en la práctica con JTAG
—Cómo extraemos un firmware utilizando JTAG
—Conclusión

El hardware hacking: qué es y para qué se utiliza

Si bien hace un tiempo hablamos de los gadgets más utilizados en el hardware hacking, es importante destacar que en el mundo de la ciberseguridad el hardware hacking no se limita al uso de dispositivos electrónicos para realizar pruebas ofensivas sobre distintos sistemas. También está vinculado con el uso de técnicas para explotar fallos de seguridad y manipular el hardware de un dispositivo electrónico para alterar su funcionamiento, agregar nuevas funcionalidades, obtener información del equipo o vulnerar su seguridad.

Las técnicas de hardware hacking sirven para realizar ingeniería inversa y manipular el dispositivo que se quiere analizar. Pueden ser utilizadas por investigadores de seguridad para descubrir vulnerabilidades en dispositivos electrónicos y mejorar su seguridad, pero también por atacantes para acceder a sistemas o información protegida.

El hardware hacking puede involucrar la manipulación física de componentes electrónicos, la ingeniería inversa de circuitos y dispositivos, la soldadura de componentes, la creación de interfaces personalizadas y la extracción de datos de dispositivos de almacenamiento. Todas estas técnicas requieren conocimientos especializados en electrónica y programación, y pueden ser peligrosas si no se realizan con cuidado, ya que pueden dañar los dispositivos que se deseen analizar o poner en peligro la seguridad de la persona que lo realiza.

En el hardware hacking también se utilizan técnicas asociadas al hardware forense como parte del proceso de ingeniera inversa sobre componentes electrónicos de un dispositivo. Esto significa que se utilizan herramientas y técnicas especializadas para recuperar, analizar y preservar datos de dispositivos electrónicos. Esto puede incluir la extracción de datos de discos duros, el análisis de datos en la memoria RAM y la recuperación de datos eliminados.

Sin lugar a dudas, estas técnicas más específicas son importantes a la hora de investigar delitos informáticos. Por ejemplo, en casos donde es necesario obtener datos de un dispositivo para la investigación, para recuperar de datos perdidos debido a fallos de hardware o software, o cuando la utilización de las técnicas del hardware forense deben seguir las normas y procedimientos adecuados para garantizar la integridad y autenticidad de los datos recuperados, y evitar la alteración de la evidencia digital.

A la hora de analizar un dispositivo electrónico es necesario estudiar su funcionamiento y cada una de las partes que lo componen, pero es un hecho que cada dispositivo electrónico tiene su propia naturaleza y estructura de funcionamiento. Si bien el objetivo de este artículo no es abordar todas las posibles variantes tecnológicas que existen y sus técnicas de análisis asociadas, es un hecho que hoy día la mayor parte de dispositivos electrónicos contienen componentes comunes. Un ejemplo de estos componentes comunes son los microcontroladores, que a través del firmware se encargan de controlar y administrar la operabilidad de los dispositivos electrónicos y también gran parte de sus funciones.

Siguiendo en esta línea, a continuación veremos algunas cuestiones vinculadas al análisis del firmware de microcontroladores que son fundamentales a la hora de aplicar hardware hacking.

Para qué extraer y analizar el firmware de un dispositivo

Un firmware es un programa que se ejecuta de manera dedicada y con un propósito específico en un microcontrolador o microprocesador. Generalmente, se almacena en un dispositivo de memoria persistente, como una NAND/NOR flash o EEPROM, y el proceso de extracción implicara leer y copiar la imagen del firmware almacenada en la memoria del dispositivo a un archivo en nuestra computadora.

Este proceso de extracción de la imagen del firmware también se denomina dumping o snarfing y es de vital importancia para comprender cómo funciona un dispositivo, ya sea un disco duro, un router, una cámara IP o cualquier otro dispositivo que utilice microcontroladores (algo que ocurre en la mayoría de dispositivos electrónicos).

En este sentido, extraer y analizar la imagen del firmware del microcontrolador de un dispositivo electrónico nos permite comprender su funcionamiento y por lo tanto, nos ayuda en nuestro objetivo de estudio que, como dijimos anteriormente, puede ser desde detectar vulnerabilidades, mejorar o cambiar el comportamiento del dispositivo, entre otras.

Técnicas para extraer el firmware de un dispositivo

Para la extracción del firmware de un dispositivo electrónico se pueden utilizar varias técnicas. Antes de decidir que vía tomar para comenzar este proceso, uno de los puntos esenciales es asegúrese de que la imagen del firmware no esté disponible en el sitio web del fabricante.

Muchos fabricantes de dispositivos publican imágenes de firmware actualizadas en sus sitios web para que los clientes puedan descargar y actualizar el dispositivo. En este caso, el esfuerzo para extraer el firmware es nulo, ya que no tendremos que hacer otra cosa que descargarlo del sitio web del fabricante.

Ahora bien, una vez que tenemos acceso físico al dispositivo, una técnica para extraer el firmware es leer directamente la memoria de almacenamiento del dispositivo. Para ello podemos identificar el chip de memoria de la placa, retirarlo, soldarlo en otra placa y extraer el firmware. Si bien funciona, puede ser bastante engorroso y quizás un poco arriesgado, ya que existe la posibilidad de quemar el chip de memoria durante el proceso de extracción.

Una técnica menos riesgosa es leer la memoria de almacenamiento del dispositivo a través de una conexión al gestor de arranque o al sistema operativo del dispositivo. Por ejemplo, con acceso al gestor de arranque (a través de una conexión serie), podemos intentar leer la memoria del dispositivo y enviar los datos a nuestra máquina. Asimismo, con acceso a una terminal de línea de comandos en el sistema operativo (serial, ssh, etc.) y con privilegios, podemos intentar volcar la memoria de almacenamiento del dispositivo y enviarla a nuestra máquina.

Como podemos observar, dependiendo de la situación se pueden utilizar diferentes técnicas para extraer el firmware de un dispositivo. Si ninguna de estas técnicas es viable, la interfaz JTAG puede ser nuestra mejor aliada. A continuación explicamos qué es esta interfaz.

Extracción de firmware de dispositivos usando JTAG:

JTAG (Joint Test Action Group) es una interfaz de hardware físico que permite, entre otras cosas, extraer la imagen del firmware de los dispositivos electrónicos. Fue creada en 1985 para reemplazar a los antiguos sistemas de testing para las placas de circuitos impresos (PCB), conocidos como bed-of-nails, y es parte del estándar IEEE 1149.1 para probar las placas de circuito impreso durante el proceso de fabricación.

Con el tiempo, JTAG se ha convertido en una de las interfaces más populares para probar circuitos electrónicos. También fue añadiendo otras funciones, como la depuración y la grabación de dispositivos flash. Actualmente, esta interfaz está disponible en la mayoría de los procesadores y microcontroladores de diferentes arquitecturas, como ARM, x86, MIPS y PowerPC.

Cómo funciona la interfaz JTAG

Ahora bien, veamos a continuación un poco más en detalle cómo funciona la interfaz JTAG a bajo nivel .

Aunque hay algunas variaciones del estándar, los fabricantes de los chips suelen implementar la interfaz JTAG a través de cuatro pines obligatorios (TDI , TDO , TCK , TMS) y un pin opcional (TRST):

  • TDI (Entrada de datos de prueba): entrada de datos.
  • TDO (Test Data Out): salida de datos.
  • TCK (Test Clock): reloj cuya frecuencia máxima depende del chip (normalmente de 10MHz a 100MHz).
  • TMS (Test Mode Select): pin para controlar la máquina de estado JTAG.
  • TRST (Test Reset): pin opcional para resetear la máquina de estados JTAG.

Los pines de la interfaz JTAG están conectados internamente al chip a través de un módulo llamado TAP (Test Access Port).

La interfaz TAP implementa el protocolo de comunicación JTAG básico y varios TAP se pueden conectar simultáneamente en una arquitectura de tipo Daisy Chain.

Diagrama basico de la arquitectura JTAG. Fuente: Corelis

La interfaz TAP implementa una máquina de estados finitos (16 estados) que permiten acceder a un grupo de registros (IR, DR) para instrumentar el chip. El control de esta máquina de estados se realiza a través de los pines TMS y TCK. A través de esta máquina de estados, es posible seleccionar una operación a través del registro IR (Registro de Instrucciones) y pasar parámetros o verificar el resultado a través del registro DR (Registro de Datos).

Diagrama de estados en la arquitectura JTAG. Fuente: Corelis

Normalmente el fabricante del chip define el tamaño del registro IR y el número de instrucciones admitidas. Por ejemplo, un registro IR de 5 bits admitirá hasta 32 instrucciones.

Cada instrucción tiene su propio DR (Data Register), que tiene un tamaño variable. Tres instrucciones están definidas por el estándar JTAG y deben ser implementadas por el fabricante (BYPASS, EXTEST, SAMPLE/PRELOAD). Otras instrucciones son opcionales, pero también suelen implementarse (p. ej., IDCODE).

  • BYPASS: instrucción que selecciona un registro de 1 bit que rota de TDI a TDO. Muy útil para probar la interfaz JTAG.
  • EXTEST: instrucción que selecciona el BSR (Boundary Scan Register) para leer y cambiar el estado de los pines.
  • SAMPLE/PRELOAD: instrucción que selecciona el registro BSR (Boundary Scan Register) para leer el estado de los pines.
  • IDCODE: instrucción que selecciona el registro de identificación del dispositivo (32 bits) que contiene la identificación del chip.

Además de las instrucciones definidas por el estándar, el fabricante del chip puede implementar otras instrucciones según sea necesario. De esta forma, muchos fabricantes amplían la interfaz JTAG con funciones de depuración y acceso a memoria.

La información sobre las instrucciones JTAG admitidas y los pines en un chip generalmente se documentan en un archivo llamado BSDL (Lenguaje de descripción de exploración de límites), y también en un subconjunto llamado VHDL (Lenguaje de descripción de hardware).

Qué podemos hacer en la práctica con JTAG

Veamos que podemos hacer en la práctica con esta interfaz sobre el firmware de un dispositivo.

Si bien con JTAG podemos controlar la ejecución del firmware (detener la ejecución, inspeccionar la memoria, configurar puntos de interrupción, ejecutar el código paso a paso, etc). También podemos inspeccionar el estado del procesador y sus registros, leer y escribir en la memoria y acceder a cualquier dispositivo de E/S conectado al procesador.

A través de una función llamada Boundary Scan, la interfaz JTAG permite el acceso a todos los pines del chip y de esta forma podemos leer y escribir individualmente en cada pin y en consecuencia manipular los periféricos conectados al procesador/microcontrolador (GPIO, memoria, flash, etc.).

Concretamente, en la práctica con la interfaz JTAG podemos:

  • Identificar información sobre el hardware (procesador, memoria, etc).
  • Realizar volcado de la memoria RAM y obtener acceso a datos confidenciales, como contraseñas y claves criptográficas.
  • Cambiar el comportamiento de los programas en tiempo de ejecución para obtener acceso privilegiado al sistema.
  • Capturar datos confidenciales de dispositivos de hardware, como información almacenada en una EEPROM.
  • Activar los periféricos y cambiar su comportamiento, como establecer o restablecer un pin de E/S.
  • Y el punto central: volcar la memoria flash para extraer el firmware del dispositivo

Como vemos, la interfaz JTAG es perfecta para inspeccionar la ejecución del firmware, encontrar vulnerabilidades y explotar el dispositivo.

Y si a estas alturas te estas preguntando ¿por qué muchos fabricantes de hardware no eliminan o deshabilitan el acceso a ella si es tan insegura? La respuesta es concreta: porque es muy útil en la etapa de desarrollo y producción de hardware, ya que con este tipo de interfaz los desarrolladores pueden depurar el firmware que se ejecuta en el dispositivo de una manera práctica y sencilla y también pueden utilizarla como herramienta para programar y probar el dispositivos en producción.

Aunque también es un hecho que algunos fabricantes pueden adoptar contramedidas para dificultar el uso de la interfaz JTAG en el producto final, que incluyen ofuscación (como cortar pistas, quitar resistencias, etc.), reconfiguración de los pines JTAG en software, cifrado y validación de firma de la imagen del firmware, muchos otros fabricantes van más allá y deshabilitan por completo la interfaz JTAG a través de unos fusibles (bits internos del chip que, una vez programados, ya no se pueden cambiar). Pese a todas estas medidas, aun así es posible volver a habilitar la interfaz JTAG con técnicas como silicon die attack, lo cual demuestra que la seguridad es siempre una cuestión que está atada al tiempo, conocimiento y los recursos disponibles.

Cómo extraemos un firmware utilizando JTAG

En cuanto a los requisitos para la extracción del firmware utilizando JTAG, en la práctica es importante que tengamos algunos puntos presentes. Si bien esta publicación no incluye una prueba de concepto real, veamos los cuatro principales pasos que debemos tener en cuenta para extraer el firmware de un dispositivo usando JTAG:

  1. Identifica los pines de conexión JTAG.
  2. Prueba la conexión con un adaptador JTAG.
  3. Recopila información sobre el mapeo de memoria del chip.
  4. Extrae el firmware de la memoria flash.

Conclusión

Luego de esta introducción al hardware hacking creo que nos queda claro que estamos hablando de un universo amplio que involucra conocimientos interdisciplinarios entre electrónica, programación y otras áreas de conocimiento a fines. También queda claro que está lejos de limitarse al uso de dispositivos electrónicos para llevar a cabo ciberataques.

Si te gustó esta introducción, te alentamos a profundizar en el tema y por qué no, a llevar a la práctica esta información y extraer el firmware.

Fuente:  www.welivesecurity.com