Los ataques hardware a dispositivos embebidos se suelen considerar de difícil acceso para personas con bajo presupuesto y poca experiencia en el campo de la seguridad informática. Esta charla pondrá a prueba esta creencia, mostrando que solamente con herramientas de código libre y hardware de súper bajo coste (y dudosa calidad) se puede montar ataques hardware exitosos en dispositivos Internet-of-Things (IoT), accesibles para cualquiera. En concreto, con menos de 50 euros de presupuesto veremos en directo cómo montar herramientas para extraer claves AES con ataques Side-Channel Analysis y cómo saltarse comprobaciones de seguridad con Fault Injection en un dispositivo IoT.
Rafael Boix - Reventando IOT con ataques hardware por menos de 50 euros [rootedvlc2018]
1. 1
Reventando IoT
por menos de 50 euros
Rafael Boix Carpi
Principal Trainer & Security Specialist
Valencia, 15 de septiembre, 2018
2. 2
Sobre mi
• Principal Trainer & Security specialist en
Riscure (Holanda)
• Ingeniero informático por la UPV
• Trabajando en seguridad en sistemas
embebidos desde 2013
• Análisis de software y hardware de
aplicaciones de alta seguridad: pago móvil,
tarjetas inteligentes, módulos HSM,
evaluaciones CC de dispositivos, etc…
4. 4
Breve historia sobre un CTF e IoT
Introducción
2017: Mas de 8400 millones de “cosas” conectadas a internet
Mi cafetera ya
no me sigue en
Twitter
5. 5
Breve historia sobre un CTF e IoT
Introducción
Dispositivo IoT = Internet of Things (internet de las cosas)
• Pieza central: microcontrolador de propósito general (MCU)
• Súper barato (MCU < 5 euros)
• Hace miles de cosas
– WiFi / Bluetooth / memoria / USB / …
– Múltiples interfaces y sensores
– Kit de desarrollo típicamente < 20 euros
6. 6
Breve historia sobre un CTF e IOT
Introducción
Dispositivo IoT = Internet of Things (internet de las cosas)
• Pieza central: microcontrolador de propósito general (MCU)
• Súper barato (MCU < 5 euros)
• Hace miles de cosas
– WiFi / Bluetooth / memoria / USB / …
– Múltiples interfaces y sensores
– Kit de desarrollo típicamente < 20 euros
14. 14
Breve historia sobre un CTF e IoT
Introducción
Muchos resolvieron las pruebas de software
Pero casi nadie resolvió las pruebas de SCA o FI
Excusas más frecuentes:
• “El equipo para ataques hardware tipo SCA o FI es muy caro”
• “Los ataques SCA o FI son muy complicados”
• “Eso solo lo hacen los laboratorios de seguridad hardware”
• “Tengo alergia a las matemáticas”
• “Romperé mi dispositivo”
15. 15
Breve historia sobre un CTF e IoT
Introducción
Mis objetivos de hoy:
• Enseñaros que los ataques SCA están al alcance de todos
• Enseñaros que los ataques FI están al alcance de todos
• Si desarrollas sw/hw de cosas conectadas a internet, y:
– manejas información sensible
– crees que estos ataques no pasan en tu desarrollo
– no pruebas estos ataques
– no investigas cómo defenderse ante estos ataques
ten por SEGURO que te hackearán: ¡¡¡¡por favor haz algo!!!!
16. 16
Reglas del juego
Introducción
Usar las herramientas más baratas que pude encontrar
Ataques genéricos para (casi) cualquier dispositivo IoT
Usando solo código abierto
Ataques reproducibles por un perfil atacante “script-kiddie”
Script-kiddie:
18. 18
Mensaje Msj. cifrado
SCA: teoría y práctica
SCA: teoría y práctica
Prueba: Piece of SCAke (disponible en riscure.com/Github)
Objetivo
Extraer la clave AES128 del dispositivo IoT
Información adicional
1) El dispositivo IoT recibe mensajes
2) El dispositivo responde los mismos mensajes cifrados con AES128bit
19. 19
SCA: teoría y práctica
SCA: teoría y práctica
Nota: existen ataques SCA para cualquier tipo de criptografía
Solo hace falta tener acceso físico al dispositivo*
20. 20
SCA: receta
SCA: teoría y práctica
1 – Enviar (o escuchar) mensajes al dispositivo
2 – Medir el side-channel (hardware: consumo de potencia) durante la
operación de cifrado con AES 128bit
3 – Un programa SCA “hace matemáticas” con lo obtenido en los dos
primeros pasos
4 – Obtienes la clave criptográfica
21. 21
SCA paso a paso
SCA: teoría y práctica
Medir trazas
de consumo
Procesado de
señal
Detección de
fuga de datos
(opcional)
Atacar la
clave
criptográfica
22. 22
SCA paso a paso
SCA: teoría y práctica
Medir trazas
de consumo
Procesado de
señal
Detección de
fuga de datos
(opcional)
Atacar la
clave
criptográfica
¿Cómo se mide el
consumo de potencia?
23. 23
Ordenador
Sensor de consumo
Medida de potencia
Traza de potencia:
- Medida de potencia
- Mensaje de entrada/salida
Medir potencia en sistemas embebidos
24. 24
Medir potencia en sistemas embebidos
SCA: teoría y práctica
• Hay maneras “más eficientes” para
medir potencia (sensor de corriente,
antenas, etc.) pero no las veremos
hoy…
Ri
Dispositivo IoT
¡¡Porque una
resistencia es
barata!!
(<0.01euro)
línea de masa
(99% veces es el
cable negro)
25. 25
Coste del equipamiento
SCA: teoría y práctica
Resistencia
0.01 eur
Cable USB del cubo de la basura
Gratis
Soldador USB
3.77 euros, ¡envío gratis!
¡Estaño incluido!
¡Y encima funciona! ¡¡INCREIBLE!!
“Osciloscopio” Hantek 6022BE
43.34 euros, ¡envío gratis!
¡Cables y sondas incluidas!
Cable USB a UART (opcional)
0.89 euros, ¡envío gratis!
Coste total del equipamiento: 48.01 euros
27. 27
SCA paso a paso
SCA: teoría y práctica
Medir trazas
de consumo
Procesado de
señal
Detección de
fuga de datos
(opcional)
Atacar la
clave
criptográfica
¿Se puede “mejorar” la
captura de potencia?
28. 28
SCA paso a paso
SCA: teoría y práctica
Para calcular estadísticos, hay que comparar “peras con peras”
Los dispositivos IoT suelen tener un LED para indicar actividad
El dispositivo RHMe2 enciende un LED si está ocupado
Vamos a alinear las medidas de potencia con el LED
alineado
30. 30
SCA paso a paso
SCA: teoría y práctica
Medir trazas
de consumo
Procesado de
señal
Detección de
fuga de datos
(opcional)
Atacar la
clave
criptográfica
¿El dispositivo filtra
información?
31. 31
SCA paso a paso
SCA: teoría y práctica
Existen herramientas libres para cálculo estadístico (R, SciPy, Octave, etc.)
Estadístico útil para detectar fuga de información: Welch T-test
• Este test detecta si el dispositivo muestra un consumo diferente
dependiendo de si el mensaje de entrada es constante o aleatorio
32. 32
SCA paso a paso
SCA: teoría y práctica
Medir trazas
de consumo
Procesado de
señal
Detección de
fuga de datos
(opcional)
Atacar la
clave
criptográfica
¿Reventamos la clave?
33. 33
Advertencia: matemáticas
Voy a explicar un ataque SCA en detalle
Si no queda del todo claro, no pasa nada:
• Los programas SCA (p.ej. jlSCA) tienen todo implementado
• Ejecutad los scripts del tutorial y ya
• Revisad luego la presentación hasta que llegue la iluminación
• O preguntadme luego en un descanso/email/etc…
SCA: ataque CPA
34. 34
S-box S-box S-box
Mensaje entrada Clave 128bit AES
S-box S-box S-box
128 bits 128 bits
8 bits8 bits8 bits8 bits8 bits8 bits
Más operaciones …
……………….
(16 boxes)
+
Sub-claves en AES
• independientes entre si
• atacables por separado
Ataque fuerza bruta: 2128
Divide y vencerás:
16*28 = 212 = 4096 intentos
Reducimos 2128 a 4096!!!
Ataque CPA: divide y vencerás
SCA: ataque CPA
35. 35
99.999% de los algoritmos de cifrado modernos son públicos
Si asumo un valor para un byte de clave puedo calcular partes
Teniendo partes del algoritmo:
• ¿mis valores calculados se parecen a la traza de potencia?
• ¿hay alguna manera de comprobarlo?
Comodín de Internet:
Ataque CPA: divide y vencerás
SCA: ataque CPA
38. 38
Conclusiones SCA
Conclusiones: CPA
Conclusión 1: ataques SCA son ultra-baratos y escalables
• Coste total del equipamiento: menos de 50 euros
• P: ¿Coste en tiempo? 2 días enteros para el primer ataque*
– 1.8 días peleándome con el “osciloscopio” & drivers & software libre
– 0.1 días para construir el montaje (quitar condensadores)
– 0.1 días para montar el toolchain SCA con software libre y medir potencia
– *Nota: con ~200 euros de osciloscopio, tiempo ~2 horas. Con herramientas profesionales: <2
minutos
• P: ¿Y repetir el ataque con las mismas herramientas? ¡¡2 minutos!!
• Resultado: reventada la clave entera & ataque escalable
Conclusión 2:
Montar un equipo SCA con software libre para atacar dispositivos tipo IoT es (casi) trivial
40. 40
FI: teoría y práctica
FI: teoría y práctica
Prueba: FIesta (disponible en riscure.com/Github)
Objetivo
Desbloquear el candado IOT
Información adicional
El dispositivo IoT se enciende
El dispositivo imprime el mensaje “Lock” infinitamente
Lock
Lock
Lock
Lock
…
44. 44
FI: receta
1 – Inyectar una perturbación eléctrica en el chip
2 – Repetir (1) muchas veces y cruzar los dedos
3 – Con suerte*, (2) corromperá el estado del chip:
• Datos almacenados
• Instrucciones almacenadas o en ejecución
4 – El dispositivo empieza a hacer cosas interesantes
FI: teoría y práctica
45. 45
FI: Hipótesis inicial
FI: teoría y práctica
Hipótesis inicial: el código en el dispositivo se parece algo a esto:
boolean desbloqueado=false;
inicializa_dispositivo();
while(1){
desbloqueado=comprueba_algun_secreto();
if(desbloqueado){
print(secreto);
}
else{
print(“Lock”);
}
}
46. 46
FI: Definición del ataque (en el lab)
FI: teoría y práctica
Definición del ataque:
¿Que dato o instrucción podemos cambiar para ejecutar el desbloqueo?
boolean desbloqueado=false;
inicializa_dispositivo();
while(1){
desbloqueado=comprueba_algun_secreto();
if(desbloqueado){
desbloquear();
}
else{
print(“Lock”);
}
}
47. 47
FI: Definición del ataque (versión practica)
FI: teoría y práctica
En la práctica:
boolean desbloqueado=false;
inicializa_dispositivo();
while(1){
desbloqueado=comprueba_algun_secreto();
if(desbloqueado){
desbloquear();
}
else{
print(“Lock”);
}
}
48. 48
Cómo generar un glitch 101
FI: teoría y práctica
Ataque FI más simple: glitching en voltaje
Reloj del MCU en el dispositivo IoT: 16MHz
– 1 ciclo de reloj = 62.5ns
– Generar un pico de voltaje de ese tiempo es muy fácil hoy en día
Brainstorming para montar un dispositivo de glitching
– MCU, un transistor y dos fuentes de alimentación
– MCU con un DAC y un buffer
– MCU con un multiplexor y un buffer
– ….
49. 49
CheapoGlitcher 2
FI: teoría y práctica
Kit de desarrollo con un MCU ARM @ 180MHz
– Si queréis comprar el mismo, cuesta ~US$ 15
– Webinars de fabricantes: suelen dar placas gratis
GPIO pins @ 90MHz máx. glitches de 11ns “sobrao”
GPIO proporciona suficiente corriente para el dispositivo IoT
Vamos a encender/apagar los pins aleatoriamente
¿Funcionará?
50. 50
CheapoGlitcher 2
Después de 5 horas tomando cafés en la conferencia SHA2017 en Ámsterdam…
Probabilidad de éxito: 100%
FI: teoría y práctica
52. 52
Conclusiones FI
FI: conclusiones
Conclusión 1: se puede hacer glitching en MCUs con casi cualquier cosa
RHMe2: 100% reproducible, herramienta de glitching súper barata y 5
horas de esfuerzo
Conclusión 2: obligatorio implementar defensas contra FI
Bucle infinito en código: intentos ilimitados
En tu desarrollo: ¿tienes alguna estructura similar?
55. 55
Conclusiones
Conclusiones
Mis objetivos de hoy
Desarrolladores de dispositivos tipo IoT: ¿deberíais hacer algo?
¿Podéis contestar a estas preguntas?
– ¿Se puede romper la seguridad de mi dispositivo con FI?
– ¿Se pueden revelar los secretos de mi dispositivo con SCA?
56. 56
Recomendaciones
Recomendaciones
1. Entender cómo funciona y por qué es un problema
– Aprende cómo funcionan estos ataques SCA/FI (p.ej. training o lee algún paper)
– ¡Prueba los ataques tú mismo!
2. Desarrolla una solución
– Importante: lo que he mostrado aquí no es nada comparado con los ataques profesionales
• Pero defenderse contra ataques como los presentados es un muy buen comienzo
– Poner defensas a todos los niveles
• Software
• Hardware
• Protocolos
– Usar patrones de diseño seguro de hardware/software: https://www.riscure.com/gocheap/
3. Verifica que la solución implementada funciona de verdad
– Diseño != implementación problemas más persistentes de lo que parece
– Testeo independiente ayuda a evitar puntos ciegos pentesters / laboratorios de evaluación
son tus amigos