Las criptomonedas son uno de los activos digitales más atractivos para los atacantes, dada su facilidad de robo y cobro. Por ello, para protegerse, los inversores más serios usan monederos de criptomonedas que almacenan sus claves privadas y las mantienen alejadas de ordenadores y smartphones vulnerables, facilitando la firma de transacciones. Pero, por desgracia, el uso de este tipo de dispositivos no garantiza la seguridad de tus fondos, algo que ha acabado aprendiendo por las malas uno de nuestros clientes.
Los síntomas del hackeo
El trabajo de los atacantes fue de lo más sigiloso, hasta que un fatídico día apareció en el historial de transacciones de un monedero de criptomonedas una operación con la que se había transferido una importante suma de dinero y, por desgracia, la víctima no había tenido nada que ver. Además, el monedero de criptomonedas ni siquiera se había conectado a ningún ordenador.
El análisis del monedero
La víctima adquirió el famoso monedero físico Trezor Model T, que utiliza código totalmente abierto, tanto a nivel de software como de hardware, y se basa en el famoso microcontrolador STM32F427.
El proveedor de Trezor Model T toma una amplia variedad de medidas de seguridad que, en teoría, deberían proteger correctamente el dispositivo de los atacantes. Tanto la caja como la carcasa de la unidad están selladas con pegatinas holográficas y el microcontrolador está en el modo protección de lectura (RDP 2) de las memorias USB. El gestor de arranque comprueba la firma digital del firmware y, en caso de detectar alguna anomalía, muestra un mensaje de que el firmware no es original y elimina todos los datos del monedero. Para acceder al dispositivo y confirmar las transacciones, hay que introducir un código PIN que, aunque no proteja la clave de acceso maestra (una base para la generación de la frase mnemotécnica), se utiliza para cifrar el almacenamiento. Además del PIN, también puedes proteger tu clave maestra de acceso con una contraseña de acuerdo con el estándar BIP-39.
De un simple vistazo, el monedero que examinamos parece exactamente el mismo que el auténtico y no muestra señales de manipulación. Esta unidad se compró a un vendedor de confianza mediante un famoso sitio de anuncios clasificados y las pegatinas holográficas de la caja y el monedero estaban correctamente colocadas y sin daños aparentes. Cuando se inició en el modo de actualización, el monedero mostró la versión de firmware 2.4.3 y la versión de arranque 2.0.4.
A la hora de hacer funcionar el monedero, nada parecía sospechoso: todas las funciones estaban en su lugar y la interfaz de usuario no mostraba diferencias con respecto de la original. No obstante, siendo conscientes del robo que había tenido lugar, profundizamos un poco más. Y aquí es donde salieron a relucir nuestros interesantes descubrimientos.
De inmediato, descubrimos que el proveedor nunca había lanzado la versión de arranque 2.0.4. El historial de cambios del proyecto en Github afirma que esta versión fue “omitida debido a los dispositivos falsos”. Después de estas interesantes declaraciones, solo quedaba coger el bisturí y comenzar con la disección…
La apertura de la carcasa no fue nada fácil: las dos mitades estaban unidas con mucho pegamento y cinta de doble cara en lugar de la soldadura ultrasónica que se usa en Trezor. Y, lo que es aún más curioso, en el interior había un microcontrolador totalmente diferente que mostraba rastros de soldadura. Por tanto, en lugar del original STM32F427, la unidad contaba con un STM32F429 con los mecanismos de protección de lectura de la memoria USB del microcontrolador totalmente desactivados (RDP 0 en lugar del RDP 2 de los Trezors auténticos).
Por tanto, la teoría de que el monedero de criptomonedas era falso quedó demostrada: se trataba de un clásico ataque a la cadena de suministro en el que la víctima confiada compra un dispositivo previamente hackeado. Pero el método usado para el robo de las criptomonedas sigue sin quedar claro…
El firmware troyano
No vamos a repetir los típicos consejos sobre los monederos de criptomonedas que ya hemos mencionado en otras ocasiones, pero sí te dejamos un pequeño recordatorio: un monedero de criptomonedas contiene tu clave privada y todo aquel que la conozca podrá utilizarla para firmar cualquier transacción y gastar tu dinero. El hecho de que los atacantes hayan podido realizar una transacción mientras el monedero estaba sin conexión en la caja fuerte de su propietario solo puede significar dos cosas: que copiaron la clave privada después de generarla o que ya la conocían.
Como ya sabes, los atacantes decidieron no reactivar la protección de lectura de la memoria USB tras soldar el nuevo microcontrolador. Con este mecanismo desactivado, pudimos extraer fácilmente el firmware del monedero y, tras reconstruir su código, descubrimos que los atacantes ya conocían la clave privada. Pero ¿cómo?
El gestor de arranque y el firmware del monedero recibieron solo tres modificaciones:
Primero, se cancelaron las comprobaciones del gestor de arranque en busca de mecanismos de protección y firmas digitales, deshaciéndose así del problema de la “pantalla roja” durante la comprobación de originalidad del firmware en el arranque.
Segundo, en la fase de inicialización o cuando se restaura el monedero, la frase semilla generada aleatoriamente se remplazó con una de las 20 ya generadas y almacenadas en el firmware hackeado que el propietario podría comenzar a usar en lugar de una nueva y única.
Tercero, aunque el usuario optara por establecer una contraseña de protección adicional para la semilla maestra, únicamente se tendría en cuenta su primer símbolo (a…z, A…Z, 0…9 o ! para cualquier carácter especial), que, junto con la opción sin contraseña, da únicamente 64 combinaciones posibles. Por lo tanto, para descifrar un monedero falso, solo se consideran 64 * 20 = 1280 variantes.
El monedero de criptomonedas falso funcionaba con normalidad, pero los atacantes tenían el control total desde el principio. Aunque, de acuerdo con el historial de transacciones, no tenían mucha prisa, ya que esperaron un mes entero después del primer ingreso para hacerse con el dinero. Ante esta situación, el propietario quedaba totalmente desprotegido: el juego estaba perdido conforme el dinero llegaba por primera vez al monedero infectado con el troyano.
Respuesta del fabricante
Tras la publicación de nuestra investigación, Trezor, el fabricante de este modelo de monedero, señaló en su cuenta oficial de Twitter que este incidente en realidad había tenido lugar en el 2022, con la entrada en el mercado de varios monederos falsos de la mano de un revendedor ruso no autorizado. En su discurso, recalcaron que después de este caso no habían recibido noticias de otros incidentes.
Cómo evitar esta amenaza
No es fácil distinguir un monedero de criptomonedas falso de uno auténtico sin conocimientos ni experiencia en la materia. La principal medida de protección cosiste en adquirir tu monedero directamente del proveedor oficial y elegir los modelos cuyos microcontroladores estén protegidos; en este sentido ni siquiera los Trezors originales son una buena opción: hay otros monederos en el mercado con chips mejor protegidos y mecanismos de protección adicionales.
Cabe recordar que incluso un monedero auténtico y sin modificar puede ser vulnerable a una serie de amenazas. Para protegerte, las medidas preventivas que puedes tomar incluyen el uso de una contraseña (si el monedero lo permite) y, por supuesto, una solución de protección para todos los ordenadores y smartphones.