Todos somos conocedores del valor de nuestras credenciales o contraseñas, esas llaves que nos dan acceso a parte de nuestra vida digital. No es extraño encontrarse durante los procesos de pentesting los típicos documentos “.txt”, Excel o Word con todos los passwords de acceso a los sistemas TI. Es más, cuando parte del proceso de intrusión se focaliza en el departamento financiero es habitual ver como un señor director contable guarda todas las contraseñas de acceso a las cuentas bancarias en un fichero de texto plano, adjuntando para mayor disfrute una copia escaneada de la tarjeta de coordenadas (ver Barbarities I: Banca electrónica).
Es por eso que siempre se recomienda el uso de aplicaciones de gestión de contraseñas que permitan almacenar de forma segura las llaves del reino. En este punto entraría ya en juego seleccionar, según criterios de confiabilidad si no te la quieres auditar tú), qué aplicación debe ser la encargada de cifrar nuestra información confidencial. Son numerosas las herramientas (de pago o de software libre) disponibles en el mercado y una de ellas puede ser la popular Keepass bajo licencia GNU. Según su página Web, el cifrado de la base de datos se realiza con un algoritmo AES o Twofish con un tamaño de bloque de 128bits y una longitud de clave de 256 bits, seems good.
Dada la popularidad que ha tomado esta herramienta, han surgido una serie de ports para diferentes operativos y dispositivos que, aprovechando el tirón de esta, tratan de hacer su negocio.
En especial nos vamos a centrar en la aplicación de pago para iOS Kypass, que por el módico precio de 6,99€, promete dotar de un nivel de seguridad similar a “Fort Knox” a nuestras contraseñas.
Llegados a este punto, ¿qué requerimientos de seguridad le exigiríamos a un software de este tipo? Por ejemplo, ¿le exigiríamos que no realizara conexiones a Internet de forma no cifrada? Como por ejemplo…
POST http://www.kyuran.be
Aparentemente, estas peticiones se realizan de forma semanal a la web de los desarrolladores de la aplicación (invito al lector a visitarla). Os preguntaréis: ¿Para qué? ¿Para comprobar la versión y saber si se ha de actualizar? ¿Esto no se debería hacer a través del AppStore?
Veamos un poco más en detalle la información que remite. Pese a que las peticiones son de tipo POST, como parámetros en la URL vemos lo siguiente (separado para mejor lectura).
http://www.kyuran.be:3128/iphone/api.php?
UIDeviceName=iPhone+de+XXX
bundle=be.kyuran.kypass2
token=b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c
s=10.0.2
v=3.7+(2764)
cmd=join
¿Para qué necesita una aplicación de almacenamiento de contraseñas remitir a los desarrolladores información como el nombre del teléfono, el nombre del paquete, el identificador único del terminal, la versión del operativo o el comando que ha de ejecutar contra el servidor (en este caso join)?
Destacar que como payload POST no se ha identificado el envío de otro tipo información pero quién sabe qué otros comandos permitirá el parámetro “cmd=” al margen de “join”.
Concluyendo, y como se ha comentado al principio del artículo, uno no dispone de todo el tiempo del mundo para auditar cada software que utiliza y por lo tanto entra en juego la confiabilidad basada en: el feeling que te pueda dar el desarrollador, si el código es libre o no, comentarios o popularidad de la herramienta dentro del mundo de la seguridad, etc.
Desde mi punto de vista personal, dada la criticidad de este tipo de software y basándome en esa comentada confiabilidad, optaría por otras soluciones de almacenamiento de contraseñas.