2. Índice
1.Extrayendo la información oculta
a) Accediendo al hardware
b) Accediendo a la información contenida en el
hardware.
2. Dándole uso a la información obtenida.
6. Las resinas expoxy o similares se
usan con frecuencia para esconder
los componentes electrónicos.
Estas resinas son extremadamente
duras una vez solidificadas, pero
pueden retirarse:
• Con aire caliente (> 400 ºC).
• Con químicos (decapante, butil-
glicol, etc.), si bien pueden tardar
días en reblandecer la resina.
• No conviene usar ultrasonidos
(pueden dañar las conexiones
internas).
Resinas epoxy o similares
Otra práctica es raspar su superficie
para que no podamos identificar el
componente. En este caso las técnicas
son: Identificador eléctrico (verificable
con una programadora), por marcas que
no hayan borrado (reverso...), decap e
inspección al microscopio, identificando
el código (si usa ROM externa), etc.
8. Resinas epoxy o similares: ¿Rayos X?
Útil para identificar dispositivos
suicidas o de tipo NVRAM
antes de iniciar la intrusión
9. Componentes a medida o indocumentados
Muchas veces el fabricante empaqueta un
componente común con un etiquetado propio.
Las formas de identificarlo son similares a
cuando encontramos un chip raspado:
• Decap, identificador eléctrico, inspección de
ROM externas o conexionado con otros
componentes, etc.
En otras, se usan componentes poco comunes de los cuales
no hay documentación. En estos casos las opciones se
reducen al decap o a intentar obtener información del
fabricante mediante ingeniería social.
10. La mayoría de los componentes que contienen y ejecutan lógica (MCU, PIC,
PLD/FPGA, etc.) tienen medidas de protección que impiden leer su ROM
interna.
En estos casos tenemos distintas estrategias para volcar esa ROM:
• Troyanos
• Glitching eléctrico no invasivo.
• Fuerza bruta (solo para componentes muy concretos).
• Decap:
• Visual.
• Máscara UV.
• Glitch láser.
• Microprobing.
• Etc.
Chips protegidos
11. • Los componentes de seguridad más
comunes son completamente
“autocontenidos”: Contienen de forma
interna todo lo que necesitan para funcionar
(ROM, RAM, CPU, etc.).
• El problema no es escribir un troyano, el
problema es cómo inyectarlo en un
componente completamente estanco.
• Es necesario revisar las interactuaciones del
componente con el resto de la electrónica,
buscando un fallo de diseño que permita
ejecutar código externo privilegiado… Y la
forma en la que este pueda extraer
información al exterior.
Chips protegidos: Troyanos
13. • Ciertos dispositivos “se suicidan” cuando
detectan un intento de intrusión, borrando
todo su contenido.
• La forma más común es una NVRAM con una
batería, en un diseño pensado para que
cualquier alteración física o eléctrica corta la
corriente de la batería causando el borrado
inmediato e irremediable de la NVRAM.
• En casos más sofisticados, y para evitar
ataques mediante glitching eléctrico, el chip
borra sus datos al detectar condiciones
eléctricas anómalas.
• Por ejemplo, el DNIe borra su memoria volátil
cuando el voltaje sube o baja más allá de los
niveles de tolerancia configurados.
Chips protegidos: Dispositivos suicidas
14. • Consiste en explotar debilidades en
el diseño de los chips para extraer la
información de su interior.
• En muchos casos se busca un
comportamiento “anómalo” del chip
aplicando tensiones fuera de rango,
campos magnéticos, luz ionizante, etc.
• Hay dispositivos con funciones de
“test” que a veces exponen mas
funcionalidad de la deseable.
• En cualquier caso, el descubrir
nuevos glitches requiere un
conocimiento íntimo del hardware y
una extensa experiencia.
Chips protegidos: Glitching
15. Un inciso: El bit de protección
• Muchos dispositivos protegidos (MCU, PIC, PLD, etc.) tienen un “bit de
protección” que cuando se establece no permite la lectura interna de la
información que contiene (la ROM).
• En los dispositivos regrabables, este bit se reinicia cuando se borra por
completo, dejando así la protección abierta, pero también toda la información
borrada.
• Este borrado/reinicio puede ser mediante exposición directa a la luz
ultravioleta (dispositivos “con ventanita”) o por medios eléctricos.
• En los dispositivos no reutilizables, una vez se establece este bit, no hay
forma de cambiar su valor ni reiniciarlo.
• En muchos de estos casos este bit es un fusible físico: Una conexión que
se rompe físicamente aplicando un voltaje superior al normal o por un
medio similar.
16. Chips protegidos: Glitching
Otro ejemplo: Glitch de
microcontroladores Atmel
AT89C2051.
• En ciertas series (antiguas) de estos
microcontroladores, al enviar comandos
de borrado de contenido e interrumpirlos
en momentos muy precisos, es posible
borrar únicamente el bit de protección
pero no el contenido, habilitando la
lectura libre.
• El trabajo ha incluido el desarrollo de un
hardware específico(basado en Arduino)
y la programación de un software a
medida para explotar este glitch.
• http://arcadehacker.blogspot.com/
17. La reina de las técnicas: El decapping
• La técnica consiste en retirar el
empaquetamiento del chip hasta dejar la
superficie completamente al descubierto.
• Una vez con la superficie al descubierto
podemos…
• Tomar microfotografías.
• Aplicar selectivamente luz ultravioleta.
• Modificar el valor de los bits de protección
mediante distintos métodos.
• Modificar el conexionado interno del chip.
• Causar disfunciones en el chip.
• Etc.
18. Decapping: ¿Cómo retiramos el sustrato?
• Una forma es aplicar
calor indirecto sobre el
chip.
• El calor, en un chip tipo
“sándwich” hace saltar
la tapa con facilidad.
• Provocar un cambio
brusco y grande de
temperatura quiebra y
desprende el sustrato.
19. Decapping: ¿Cómo retiramos el sustrato?
• Es muy difícil hacer un decap térmico limpio en chips que no sean
de tipo sándwich.
• El calor provoca un estrés en los componentes que los deja en
mal estado, y lo normal es que se rompa el cableado aéreo
interno.
20. Decapping: ¿Cómo retiramos el sustrato?
• La forma más común es
mediante químicos que
ataquen el sustrato pero
no a la superficie del chip
ni al conexionado interno.
• Con práctica, se obtienen
resultados muy limpios
en los que el chip no se
daña en el proceso y
sigue funcionado
normalmente.
21. Decapping: ¿Cómo retiramos el sustrato?
• El decapado
mediante láser de
alta potencia es
probablemente la
forma más sofisticada
de hacerlo.
• No obstante, el
equipamiento
necesario para
hacerlo no está al
alcance de
cualquiera…
23. Decapping: ¿Y ahora qué?
Es posible leer visualmente
el contenido de una
memoria, bit a bit.
24. Decapping: ¿Y ahora qué?
El análisis visual presenta
varias dificultades:
• Entender la disposición
interna de la información.
• Los errores de
interpretación (que pueden
paliarse con visión artificial
o el control interno de la
integridad).
• La falta de nitidez o de
aumento de las fotografías
(puede paliarse usando el
resultado de varios
dispositivos idénticos).
25. Decapping: ¿Y ahora qué?
Una de las técnicas más
usadas es en
dispositivos protegidos
regrabables sensibles a
la luz ultravioleta,
exponer únicamente el
bit de protección a esta
luz UV, protegiendo
mediante una máscara
el contenido de datos.
26. Decapping: ¿Y ahora qué?
• La máscara UV funciona en un amplio
espectro de dispositivos (no solo en los que
tienen “ventanita”), como MCU, PIC, EPLD,
etc.
• Podemos usar simple laca de uñas para
proteger la zona que queremos no reciba la
luz UV.
• Es importante determinar exactamente dónde
están los datos y dónde el bit de protección.
• Es problemático cuando los datos están muy
cerca del bit de protección.
• Una vez desprotegido, se puede leer
normalmente, siguiendo las instrucciones del
fabricante.
27. Decapping: ¿Y ahora qué?
• Una variante mucho más sofisticada es
usar un láser que, aplicado
directamente (en las condiciones
físicas adecuadas) sobre el bit de
protección, es papaz de cambiar su
valor.
• Incluso en los chips en los que este bit
es un fusible, un láser con la potencia
adecuada es capaz de restaurarlo
soldando efectivamente la conexión
fundida.
• De nuevo, la experiencia y los medios
de estas técnicas, no están al alcance
de cualquiera.
28. Decapping: ¿Y ahora qué?
De nuevo, la experiencia, la intuición y el íntimo conocimiento del hardware son
aspectos necesarios para sacar partido a esta técnica... ¡Junto a un poco de
suerte!
Otra aplicación del láser en un
chip decapado es el gliching:
Aplicando un haz de luz
ionizante (con la potencia
apropiada) en ciertas partes de
la superficie podemos causar
disfunciones que abren puertas a
la desprotección del dispositivo
y/o a la lectura de su información
interna.
29. Decapping: ¿Y ahora qué?
Por último… ¡El microprobing¡ Podemos crear nuevas interconexiones entre los
distintos componentes de un chip o exponer al exterior interfaces originalmente
internos.
30. Una última dificultad: Los PLD (lógica
programada)
• Los PLD pueden protegerse para imposibilitar la
lectura de su ecuación interna.
• No obstante es posible, en ciertas variantes (no
registrados), leer por fuerza bruta las salidas para
cada combinación de entradas y a partir de estos
datos determinar la ecuación interna.
• Para eso hay varios diseños de “PALCrackers”
que, mediante una programadora normal o un
Arduino, permiten hacer este ataque por fuerza
bruta.
31. ¿Quién es quién?
• Sean Riddle
• Caps0ff
• John McMaster
• Cole J.
• Team Europe
• The Dumping Union
• SiliconPr0n
• ArcadeHacker
32. 2.
Uso de la información
Tomás García-Merás
#CyberCamp19
33. Ya tenemos las ROM volcadas…
¿Y ahora qué?
Una vez tenemos la
información
volcada… Podemos
hacer una emulación
a muy bajo nivel que
nos permita
virtualizar el
hardware empotrado
y automatizar
programáticamente
pruebas.
34. Ya tenemos las ROM volcadas…
¿Y ahora qué?
¿Cómo? ¡Con MAME!
• MAME es un marco de emulación a
muy bajo nivel capaz de emular
prácticamente cualquier hardware.
• Cuenta con piezas de código para
prácticamente cualquier elemento
de hardware, desde CPU hasta
controladoras SCSI, controladoras
de pantalla (incluyendo LCD),
periferia, buses, etc.
35. Ya tenemos las ROM volcadas…
¿Y ahora qué?
Y lo que es mejor, cuenta con un depurador con desensamblador integrado con el
que podemos seguir la ejecución del programa original en el entorno emulado.
36. Ya tenemos las ROM volcadas…
¿Y ahora qué?
Y además… ¡Es
completamente
software libre!
Podemos modificar
libremente el código
para hacer literalmente
lo que nos de la gana,
como enganchar
pruebas
automatizadas,
entradas, salidas, etc.