Cómo hackear un monedero físico de criptomonedas

15 Ene 2019

Los monederos físicos están considerados como el monedero de criptomonedas más seguro. No obstante, nada es 100 % seguro, por lo que también podrían acabar comprometidos. De hecho, los investigadores de seguridad Thomas Roth, Dmitry Nedospasov y Josh Datko lo demostraron en el Chaos Communication Congress 35. Pero antes de entrar en acción, vamos a repasar qué es un monedero físico y cómo funciona.

¿Qué es un monedero de criptomonedas?

Primero, conviene recordar qué es un monedero de criptomonedas en general. En pocas palabras, se trata de una cuenta de criptomonedas. La “cuenta” consiste en un par de claves cifradas, una pública y otra privada. Estas dos claves son similares al usuario y contraseña de toda la vida: la clave pública se utiliza como la dirección del monedero y la privada para acceder a las monedas, es decir, para firmar transacciones salientes.

Pero ¿cómo se generan las parejas de claves cuando la misma persona tiene más de un monedero? Almacenar varias claves no es práctico. Por tanto, lo que realmente hacen los sistemas de criptomonedas es generar una única gran cifra llamada semilla y derivar múltiples pares de claves públicas y privadas de la semilla a los monederos.

Esta cifra, la semilla, es lo que suele almacenar el usuario de un sistema de criptomonedas.

A diferencia de los sistemas financieros tradicionales, las criptomonedas generalmente no tienen una autoridad centralizada, ningún mecanismo de registro, no existen nada parecido a un seguro de devolución de cargos ni opciones de recuperación de cuenta. Cualquiera que posea la semilla y, por tanto, las claves derivadas de ella, posee los monederos de criptomonedas correspondientes. Es decir, si se roba o pierde la semilla, las monedas de los monederos sufrirán el mismo destino.

Por cierto, oficialmente un monedero consiste en un par de claves públicas y privadas. No obstante, también se llama monederos a los medios para almacenar esas claves. Visto así, un monedero físico es un dispositivo que almacena monederos de criptomonedas. Parece fácil, ¿verdad?

¿Por qué necesitas un monedero físico de criptomonedas?

Como podrás imaginar, es importante que guardes dicha semilla en un sitio seguro. Puedes almacenarla de muchas formas, cada una con sus pros y sus contras. El método más práctico es almacenarla en tu computadora o smartphone o, mejor aún, online. Sin embargo, la captura del malware en monederos de criptomonedas no es poco común. En cuanto a los servicios de monederos online, pueden ser hackeados o, incluso, caer en la quiebra, lo que conllevaría la desaparición de grandes cantidades de monedas.

Los monederos comunes están expuestos a problemas muy importantes, como el phishing, la suplantación de la información de pago, la pérdida de monederos debido a errores en el hardware y mucho más. Por ello, muchos optaron por los monederos físicos de criptomonedas, dispositivos seguros y de confianza diseñados para almacenar semillas.

¿Cómo funcionan los monederos físicos de criptomonedas?

El objetivo principal de un monedero físico de criptomonedas es almacenar la semilla de forma que nunca abandone el dispositivo. Todos los procesos de cifrado tienen lugar dentro del monedero y no en el ordenador al que está conectado. Por tanto, aunque tu computadora sea hackeada, los intrusos no podrán robar tus claves.

Además, el acceso está protegido con un código, por ejemplo, y el usuario puede verificar la transacción en el dispositivo y confirmarla o denegarla.

En cuanto al exterior del dispositivo, normalmente un monedero físico de criptomonedas es un adaptador USB pequeño con una pantalla y una serie de botones que se utilizan para introducir el código y para confirmar transacciones.

No obstante, el funcionamiento interno de estos dispositivos puede variar. De hecho, dos de los fabricantes líderes del mercado, Trezor y Ledger, enfocan el diseño del hardware de forma distinta.

Ledger almacena la semilla en el chip de elemento seguro

Los dispositivos Ledger (Ledger Nano S y Ledger Blue) cuentan con dos chips principales. Uno es el de elemento seguro, un microcontrolador diseñado para almacenar datos cifrados altamente sensibles. Estos chips se utilizan en tarjetas SIM, en tarjetas bancarias con chip y en los smartphones compatibles con Samsung Pay y Apple Pay.

El segundo chip es un microcontrolador de uso general que gestiona tareas periféricas: se encarga de la conexión USB y controla la pantalla, los botones y demás. En efecto, este microcontrolador actúa como un intermediario entre el elemento seguro y todo lo demás, incluido el usuario. Por ejemplo, cada vez que el usuario tiene que confirmar una transacción, pasa por este microcontrolador de uso general, no por el chip de elemento seguro.

No obstante, aunque el dispositivo de Ledger almacene la semilla en un chip protegido, no es impenetrable. Atacar un elemento seguro y robar la semilla es complicado, pero resulta relativamente fácil comprometer un microcontrolador de uso general y, por tanto, engañar a un monedero físico para que confirme transacciones ajenas.

Los investigadores examinaron el firmware del Ledger Nano S y encontraron que se puede volver a proyectar con una versión comprometida si un cierto valor se escribe en una dirección de memoria determinada. Esta dirección de memoria se introduce en la lista negra. Sin embargo, el microcontrolador que se utiliza en el dispositivo permite el remapeo de memoria y vuelve a hacer la dirección accesible. Los investigadores explotaron esta función y subieron un firmware modificado en el Nano S. A modo de demostración, a este firmware modificado le añadieron el juego de la serpiente. No obstante, podrían haber introducido, por ejemplo, un módulo maligno que cambie las direcciones del monedero en todas las transacciones salientes.

Otra alternativa para comprometer un monedero físico es utilizar un implante. Josh Datko consiguió insertar en un Ledger Nano S un implante común de radiofrecuencia que pulsa el botón de confirmación en cuanto recibe un comando de radio malicioso. El mismo método funciona probablemente con cualquier monedero físico; el investigador eligió Ledger Nano S porque es uno de los más pequeños y, por tanto, el que presentaba un mayor desafío para su ataque físico.

Otro de los dispositivos del mismo fabricante, el Ledger Blue, resultó ser vulnerable a los ataques de canal lateral. Ledger Blue es un monedero físico con una amplia pantalla y una gran batería. Tiene un error de diseño en las placas de circuito que filtra señales de radiofrecuencia cuando el usuario está introduciendo el código. Los investigadores registraron las señales y educaron a un algoritmo de aprendizaje automático para que las reconociera con una precisión del 90 %.

Trezor almacena la semilla en la memoria flash del microcontrolador de uso general

Los dispositivos de Trezor funcionan un poco diferente. No utilizan el elemento seguro, por lo que todo es controlado por un único chip, un microcontrolador de uso general basado en la arquitectura ARM. Este chip es el responsable del procesamiento y almacenamiento de los datos cifrados y de gestionar la conexión USB, la pantalla, los botones y demás.

En teoría, esto podría facilitar el hackeo del firmware del dispositivo y, por consiguiente, el acceso a la semilla almacenada en la memoria flash del microcontrolador. No obstante, según los investigadores, Trezor ha hecho muy buen trabajo. El firmware está reforzado, por lo que los investigadores tendrán que optar por el hackeo del hardware.

Con una técnica de hackeo que aplica un voltaje inferior al microcontrolador para afectar al rendimiento del chip (“voltage glitching” en inglés), cambiaron el estado del chip de “sin acceso” a “acceso parcial”, lo cual les permitió leer la memoria RAM del chip, pero no el almacenamiento de la memoria flash. Fue entonces cuando descubrieron que el chip ubica la semilla en la memoria RAM al iniciar el proceso de actualización del firmware para retenerla mientras que se sobrescribe la memoria flash. De esta forma, consiguen todos los contenidos de la memoria. Encontrar la semilla fue fácil y sencillo, pues se almacena en la RAM sin cifrar, en forma de una expresión mnemotécnica (palabras reales en lugar de números aleatorios).

El volcado de memoria contiene en texto plano la semilla en forma de una expresión mnemotécnica y el código (en este caso 1234)

Conclusiones

Tengo que mencionar que la mayoría de los hackeos que describieron Thomas Roth, Dmitry Nedospasov y Josh Datko son muy sofisticados y requieren acceso físico al dispositivo. Así que no te apresures, no tires todavía tu Ledger o Trezor a la basura. Mientras que nadie tenga acceso a él, tus bitcoins estarán a salvo (aunque algo devaluadas).

Sin embargo, no está mal que tengas en mente la existencia de los ataques a la cadena de suministro. Los monederos físicos se pueden alterar fácilmente y pueden comprometerse incluso antes de su compra. Evidentemente, esto mismo sucede con las laptops y smartphones. No obstante, los atacantes no pueden estar seguros de que un portátil en particular se vaya a utilizar para almacenar criptomonedas, a diferencia de los monederos físicos.

Los fabricantes de monederos físicos están afrontando el problema advirtiendo a los clientes con etiquetas adhesivas de seguridad en los envases de los dispositivos y con páginas en sus sitios web que permiten a los clientes comprobar la seguridad de sus monederos online. Sin embargo, estas medidas no son los suficientemente útiles, de hecho, pueden resultar algo confusas.

De todos modos, a diferencia de otros monederos físicos, los dispositivos de Ledger y Trezor han sido diseñados pensando en la seguridad, aunque no por ello debemos asumir que sean seguros al 100 %. Así que te aconsejamos que sigas estos pasos si quieres proteger tus criptomonedas:

  • Adquiere tus monederos exclusivamente en proveedores de confianza.
  • Durante el proceso de compra, comprueba minuciosamente cualquier indicio de manipulación.
  • Para más seguridad, puedes abrir el dispositivo y confirmar que no hay elementos adicionales en la placa de circuito.
  • Guarda tu monedero en un lugar seguro y no permitas que alguien en quien no confías se apodere de él.
  • Protege la computadora que utilizas para las criptomonedas con un software de seguridad de confianza. Una buena parte de los hackeos descritos anteriormente necesitan que el malware se instale en la computadora a la que se conecta el monedero.

Consejos especiales para Trezor:

Trezor es una plataforma de fuente abierta, tanto el software como el hardware. Por tanto, si se te da bien la electrónica, puedes construir tu propio monedero con los componentes disponibles. De esta forma podrás asegurarte de que nadie ha estado husmeando previamente en tu monedero.

Los dispositivos de Trezor ofrecen una protección adicional muy aconsejable con una contraseña para proteger la semilla de los ciberdelincuentes (de esta forma, la semilla queda incompleta sin la contraseña).

Aquí te dejamos la charla original al completo. Échale un vistazo, resulta interesante a la par que entretenida, sobre todo si utilizas monederos físicos.