Por @Alvy — 15 de Octubre de 2020

Reverse engineer whispersync | ptbrowne

Whispersync es el sistema de sincronización de Amazon que permite mantener el mismo punto de lectura de libros y audiolibros entre varios dispositivos. De este modo puedes estar leyendo en el Kindle en casa y abrir el ebook en al mismo punto exacto al abrir el móvil en el autobús, o hacer una consulta rápida en el ordenador, cuyo software Kindle también se mantiene sincronizado.

Ahora PTBrowne se ha currado la ingeniería inversa de Whispersync no por nada sino porque podía hacerlo, y porque quería ver qué tipo de cosas se pueden hacer: recuperar tus propias anotaciones en los libros, meter en una hoja de cálculos los datos de lectura (cuánto lees por día o semana) e incluso desarrollar una especie de «biblioteca personal» con sus libros Kindle.

La ingeniería del hackeo es bastante interesante, dado que requiere acceder en algún punto intermedio de la comunicación entre Amazon Whispersync y el dispositivo para capturar todos los datos (un Android cualquiera) y desentrañar qué es lo que sucede ahí. Es lo que los criptólogos conocen como ataque de intermediario (man-in-the-middle). Aunque suene fácil porque se pueden leer y enviar los datos fácilmente, todo eso está encriptado y con el certificado digital de Amazon. De modo que otra de las cosas que hay que hacer es crear una Autoridad Certificadora (CA) que simule ser el servidor de Amazon. Al final todo esto «queda en casa» y el dispositivo vive en una especie de mundo irreal donde Amazon y sus claves son las que se le dicen que son, porque no tiene forma de «salir fuera» a comprobarlas.

El resto es también bastante interesante: volcar todos los datos HTTP, entender qué hace cada petición, la forma en que se identifica/registra el dispositivo, el formato de los metadatos (llamado sidecar) y luego decodificar y trabajar un poco con todo ello.

Tal y como cuenta PTBrowne al embarcarse en una aventurilla como estas «se aprenden cosas», entre ellas cómo realizar un ataque de intermediario en la práctica, algo de criptografía, codificación y decodificación en binario y codificación de cadenas de textos (base64 y similares). Una buena demostración de que todos los días se puede aprender algo nuevo.

(Vía Hacker News.)

Compartir en Flipboard Publicar / Tuitear