Las vulnerabilidades del hardware
Introducción
El autor de este capítulo ha trabajado en el diseño de productos del tipo "Internet de las cosas" orientados a la energía, así como en la interconexión de productos industriales y la gestión técnica de edificios.
Está claro que los sistemas industriales tienen buses de campo sin ningún tipo de seguridad física: los buses propietarios basados en RS232 o RS485. Otros en modbus o profibus se detectan fácilmente con una sonda que cuesta menos de 10 €, y se presenta más adelante. Hay otros que son totalmente accesibles directamente desde la red: modbus TCP/UDP, bacnet. Por lo tanto, es posible utilizar las herramientas que se han visto en el capítulo Las vulnerabilidades de la red como Wireshark o Ettercap, para secuestrar estos protocolos. Pero esto ya no está realmente dentro del dominio del hardware.
Esta experiencia ha demostrado que incluso en 2022 es difícil lanzar un producto seguro. No es que no haya una solución de seguridad, pero implementar esta seguridad a menudo es imposible. La visión de los accionistas es claramente ahorrar en los presupuestos; la seguridad se ve como un activo de marketing o se olvida por completo.
Peor aún, la estrategia suele ser "restringir" el producto, eliminar sus capacidades de comunicación y gastar el dinero de esta seguridad en abogados y patentes.
En realidad...
Las herramientas básicas
1. Juego de destornilladores
Esta es su herramienta clave para acceder a las entrañas del equipo. Algunos equipos requerirán cabezales no estándares para evitar que los pequeños hackers que somos le echen un vistazo. Los juegos de destornilladores Torx y BTR planos, de estrella y de precisión, son lo mínimo indispensable. Algunos cabezales desconocidos puede que se le resistan, aquí tiene una lista no exhaustiva para conocerlos: square drive, allen, allen security, torx security, schrader, tri-wing, clutch y spanner.
Indicando el nombre de un tipo de cabezal en su buscador favorito, inevitablemente encontrarás sitios web llenos de herramientas que le permitirán adquirir este tipo de equipamiento.
Presupuesto: 30 €
Fuente: Direct Industry, Wikimedia
2. Multímetro
Multímetro, la herramienta básica
El multímetro se utilizará principalmente para seguir las huellas; al utilizar el modo de "prueba de continuidad", puede facilitar la tarea de reverse engineering.
Le permitirá comprobar los diferentes voltajes o conocer los valores de las resistencias.
Es una herramienta indispensable, es de uso sencillo, barato y fácil de conseguir.
Presupuesto: 15 €
3. Placa de pruebas
Placa de pruebas con alimentación 3,3 V/5 V por USB
La placa de pruebas le permitirá crear rápidamente prototipos de montajes...
Usuario habitual
1. Adaptador USB RS232 TTL
Adaptador TTL con USB conectado a un STM32F4 Discovery
El chip FTDI TTL-232R-3V3 probablemente es el mejor de los adaptadores compatibles con Windows y Linux. Le permitirá explotar los puertos serie que no son visibles a primera vista. La mayoría de las cajas y otros sistemas integrados de Linux tienen este tipo de puerto oculto para el usuario final.
Presupuesto: de 5 a 30 €
2. Sonda de análisis lógico
Sonda de análisis lógico Saleae 8 canales, 24 MHz
La sonda de análisis lógico le permitirá analizar cualquier tipo de señal digital. Es una herramienta que se ha vuelto accesible para todo el mundo desde hace varios años. Terminado el estudio con el osciloscopio del I²C o el cálculo de la velocidad del puerto serie, la sonda le dará la posibilidad de guardar los niveles lógicos y después intentar emular un tipo de bus y ver el resultado.
Presupuesto: 20-100 €
3. Interfaz JTAG
En el marco del equipamiento mejor diseñado, se enfrentará a una interfaz bastante especial: el JTAG. Este sistema proporciona acceso de fábrica a los distintos dispositivos de una tarjeta para probarlos e insertar programas a través de un único conector. Una interfaz JTAG, si la encuentra, le permitirá hacerse rápidamente con el control de un hardware.
Presupuesto: 25 €...
Usuario avanzado
1. Software de diseño de PCB
En este nivel, el software de diseño como Eagle o ISIS facilitará el diseño cuando los cables Dupont y las placas de pruebas ya no sean suficientes.
Por nuestra parte, contamos con la insoladora y la grabadora para poder hacer circuitos caseros pero, a día de hoy, ya no estamos seguros de la utilidad de este equipo. De hecho, es fácil obtener PCB de calidad industrial para menos de 10 ejemplares a precios imbatibles.
2. Programador
Algunas veces querrá reprogramar el microcontrolador de una tarjeta. En ocasiones, la configuración de los fusibles le permitirá leer/escribir. A veces, será necesario eliminar la soldadura del microcontrolador para cambiarlo por uno virgen que no tenga fusibles de escritura quemados para poder insertar en él su programa personalizado. Por lo tanto, necesitará el programador de la familia del microcontrolador en cuestión, así como algunos conocimientos del lenguaje de programación de este.
Aquí hay algunas demoboards de microcontroladores que se encuentran en el mercado, incluida la interfaz de programación. La elección de estas demoboards con programador va a permitir reprogramar las diferentes familias de microcontroladores encontradas durante nuestros reverses.
El interés de este tipo de joyas puede ser, por ejemplo, crear un lector de tarjetas inteligentes con microprocesador...
Metodología de ingeniería inversa de hardware
Tomemos como ejemplo un producto de mercado sin dar su nombre.
Este producto es una pasarela GSM a línea telefónica fija. Encontramos este tipo de instalación en embarcaciones.
Su misión, si la acepta, será encontrar el código PIN de la tarjeta SIM.
Primero, y sin desmontar siquiera el dispositivo, veremos cómo está hecho.
Enseguida observamos un conector de alimentación, un enchufe RJ11, una ranura para la tarjeta SIM y una antena GSM externa.
Hasta el momento, nada especial.
Los tornillos son del tipo tri-wing, no accesibles para cualquiera, lo que sugiere que los diseñadores han agregado protección física porque al menos hay una brecha de seguridad.
Otra fuente de información que no se debe subestimar es la documentación del dispositivo. Gracias a ella aprendemos que el sistema le permite inicializar el código PIN a través del teléfono fijo usando la combinación: #738*746*XXXX# donde XXXX es el código.
Imagine cómo podríamos recuperar nuestro código PIN.
Una forma de recuperar el código PIN sería crear una tarjeta SIM falsa y guardar el código solicitado por el dispositivo durante la inicialización GSM, directamente en la EEPROM de la tarjeta falsa. Es muy sencillo con una BasicCard.
Gracias a los tornillos sabemos que el sistema no está necesariamente bien hecho, no cuesta mucho desmontar los cuatro tornillos y estudiar la tarjeta.
Una vez desmontada la tarjeta, intentaremos reproducir un diagrama de bloques simplificado.
Para eso vamos a recuperar los diferentes circuitos del montaje.
Tenga la seguridad de que esta gimnasia mental se vuelve cada vez más obvia con la experiencia.
Por lo tanto, recuperamos los identificadores de los encapsuldos/chips: SIM900, STM32F407, LM7812C, AT24C256 y un encapsulado sin marcar.
Para cada uno de los elementos desconocidos, buscaremos la documentación del fabricante. En la actualidad, esto es muy fácil simplemente escribiendo en Google el término "datasheet", seguido del identificador.
El resultado obtenido puede tener la forma de una matriz:
Identificador |
Descripción |
SIM900... |
Estudio sobre los T2G y Arduino
Antes de la llegada de los teléfonos móviles, las tarjetas telefónicas tuvieron su apogeo en las décadas de 1980 y 1990. Estas pequeñas tarjetas prepago para cabinas telefónicas con tecnología francesa han dejado huella, aunque hoy ya no están en servicio.
Se comercializan a precios exorbitantes entre los coleccionistas. Por lo tanto, no es raro encontrarlas en los mercadillos de segunda mano.
Pero como cualquier sistema de banda electrónica más o menos disfrazado, han sido codiciadas por los piratas.
La última técnica conocida fue el emulador Josephina. Este emulador era el equivalente de un Man in the Middle de hardware al usar la tarjeta verdadera para la parte de autenticación y el microcontrolador PIC para falsificar el decremento de crédito.
En ese momento, Josephina estaba programado en Ensamblador, a través de su PIC16F84 y una EEPROM externa.
Eran necesarios muchos componentes: un programador externo imprescindible y la comprensión de un código ensamblador, no necesariamente fácil para un principiante en electrónica/informática.
En la era del "Do It Yourself", es fundamental asimilar las técnicas del pasado y aplicarlas a las nuevas tecnologías para facilitar la comprensión y generalización de estos conocimientos.
Un conocimiento cuidadosamente guardado por una élite, si no perdido completamente. Son estas proof of concept las que no debemos olvidar, ya que a menudo estos conocimientos antiguos son los que nos abren las puertas a nuevas técnicas de piratería o, por el contrario, a la protección.
Por lo tanto, primero crearemos un lector de tarjetas T2G con un Arduino Uno y, en segundo lugar, un emulador de tarjetas T2G. Por lo tanto, se reunirán todos los componentes para comprender en detalle el funcionamiento de las tarjetas telefónicas y de Josephina.
Seguro que le da ideas.
1. Creación de un lector de tarjetasT2G
Diagrama de bloques
Para no reinventar la rueda, vamos a crear un shield Arduino. Los shield son componentes enchufables directamente en los conectores Arduino, lo que permitirá beneficiarse del poder del desarrollo de Arduino.
El diagrama de bloques de dicho shield es: un lector de tarjetas inteligentes de tipo T1G/T2G que requiere pocos componentes; de hecho, los voltajes...