RHme+: CTF sobre Arduino

Para hoy traemos una entrada de Ramiro Pareja Veredas, analista de seguridad en Riscure, empresa especializada en evaluar y testear la seguridad de Smart cards o dispositivos embebidos. Si sois amantes del hardware hacking, las comunicaciones móviles, o la tecnología RFID no dudéis en visitar su Web, Tech for fun o la charla que, junto con Rafa Boix, dio en el último CCC 2015, “Hardware attacks: hacking chips on the (very) cheap”.


img1Durante la BlackHat Europe 2015 arrancó la primera edición del RHme+ (Riscure Hak me) challenge, una prueba CTF sobre una placa Arduino. El objetivo del juego consiste en extraer de un Arduino las claves criptográficas usadas para autenticar a los usuarios.

Para ello, se repartieron entre los asistentes a la BlackHat 150 placas Arduino nano v3 pre-programadas con el reto.

Los participantes no tuvieron acceso a ningún código fuente, binario u otra información más allá de una breve explicación del funcionamiento de la autenticación Challenge-Response implementada. Todo tipo de ataques estaban permitidos, incluidos ataques hardware como Side Channels Attacks o Fault Injection.

img2La dificultad de la prueba se encuentra en la novedad de la plataforma, ya que habitualmente los CTF se basan en explotar arquitecturas X86 o ARM, y ésta es la primera vez que se realiza un CTF sobre una arquitectura Atmel AVR, de la que existe poca (casi nula) literatura acerca de cómo explotarla.

Para comenzar con el reto, es necesario instalar el firmware RHme+ en el dispositivo objetivo. El «oficial» de la prueba es Arduino nano 3.0, tal y como hemos mencionado anteriormente, que se puede adquirir por muy poco coste, pero es posible utilizar cualquier otra placa basada en Atmel ATmega328.

A continuación un listado de dispositivos Arduino que deberían de funcionar a pesar de no haber sido testeados en este reto:

  • Arduino Uno.
  • Arduino Pro.
  • Arduino Pro Mini (5V and 16 MHz version).
  • Arduino Duemilanove (ATmega328P version).
  • Arduino Mini (Pro ATmega328P version).

Finalmente, tras dos meses durante los que el challenge estuvo abierto a participantes, dos equipos consiguieron finalizar la prueba. Los diseñadores del reto introdujeron múltiples vulnerabilidades para resolverlo de diferentes maneras, de modo que los participantes con diferentes backgrounds técnicos pudieran encontrar la solución. A pesar de todo, uno de los equipos ganadores consiguió resolverlo usando una vulnerabilidad no introducida a propósito; lo que demuestra lo difícil que puede ser a veces programar de manera segura.

El binario del CTF ha sido publicado en Github junto con una serie de instrucciones y recomendaciones que os aconsejamos llevar a cabo para que se pueda probar el reto en casa usando nuestro Arduino.

En marzo será publicado el código fuente y las soluciones en la Web oficial del challenge, dando suficiente tiempo para que se pueda jugar sin que se copie la solución :)

La próxima edición del RHme+ tendra lugar en Q4 2016 así que… ¡permaneced atentos!