Poodle: Padding Oracle On Downgraded Legacy Encryption

Lo prometido es deuda. Nunca publicamos dos posts el mismo día, pero tampoco se publican dos 0-day el mismo día.

En este caso, se trata de una vulnerabilidad crítica en SSLv3 (Secure Sockets Layer) que ha sido descubierta por el equipo de seguridad de Google y bautizada con el nombre de Poodle: Padding Oracle On Downgraded Legacy Encryption. No nos los pregunten. No sabemos si les gustó “Poodle” y buscaron una frase que le pegase, o salió así juntando las siglas. Este protocolo, que tiene más de 15 años y está ya obsoleto, solía utilizarse para securizar las comunicaciones SSL y fue reemplazado por TLS. Sin embargo, y aquí viene la gracia, por cuestiones de retrocompatibilidad la opción de hacer uso del SSL sigue estando disponible.

¿En qué consiste el ataque? Un hacker que consigue interceptar el tráfico enviado en SSL 3.0 entre un cliente y un servidor (por ejemplo, a través de un ataque de tipo MitM por ejemplo o gracias a un punto de acceso Wi-Fi malicioso), podría lograr descifrar y recuperar información crítica como las cookies de sesión.

[Read more…]

Tarjetas de crédito NFC (I): Falta de Privacidad

Quizás por no haber prestado mucha atención, gran número de usuarios ya disponen de una de las nuevas tarjetas de crédito sin contacto (NFC) y no tienen ni idea de lo que eso significa. A primera vista son iguales que las anteriores, la única diferencia exterior es un símbolo que representa unas ondas para indicar la presencia de la nueva funcionalidad.

Hace poco, ví a un compañero pagar en un restaurante con su tarjeta de crédito NFC. La camarera procedió a cobrarle acercando la tarjeta al punto de venta (TPV) móvil. Y sin pedirle más cosas, la terminal imprimió el recibo para confirmar la transacción. La característica que más nos llamó la atención fue la posibilidad de realizar compras sin tener que introducir el PIN, siempre y cuando el pago no sobrepase los 20€.

Navegando un poco por internet y después de leer “Hacking the NFC credit cards for fun and debit ;)” se puede ver que es posible recuperar datos personales de manera sencilla ya que no van protegidos y/o cifrados. Entre otros, se puede llegar a obtener:

  • Nombre y Apellidos.
  • Número de tarjeta de crédito.
  • Fecha de Caducidad.
  • Track2 de la banda magnética.
  • Historial de compras.

Lo que no devuelven es el código de seguridad CVV (menos mal), aunque existen páginas web (p.e. Amazon) que no piden ese código para aceptar los pagos.

Requisitos materiales para investigar un poco:

  • Disponer de una tarjeta de crédito NFC o como en mi caso tener un compañero a quien pedir ‘amablemente’ que nos deje jugar con su tarjeta.
  • Un lector de NFC: En este caso reutilizamos nuestro Touchatag que nos permite comunicar con la tarjeta de crédito basada en la ISO 14443. También se puede usar un móvil con NFC.

En cuanto a software podemos encontrar varios programas junto a su código fuente. Recomiendo revisar el código y compilarlo nosotros mismos. No hay que fiarse y usar software ya compilado tanto en PC como en Android pues no sabemos si por detrás mandan los datos a algún lugar de dudosa reputación.

Aquí cabe destacar que se usa el estándar EMV que es el mismo que se usa en las tarjetas de crédito Smartcard (tarjetas con chip). En poco minutos tenemos armado un sistema para la lectura de datos.

Funciona con la mayoría de los casos y tarjetas, pero con la tarjeta de mi compañero ningún programa de los usados consiguió respuesta, parece que la haya bastionado antes de dejármela.

Después de estar investigando el código fuente de varios programas, podemos ver que la mayoría (o todos) necesitan una lista de tarjetas soportadas. Lo que hacen es probar los AID de una lista hasta que la tarjeta responde correctamente a alguno de ellos (en el siguiente post de la serie destriparemos un poco el protocolo que usan las tarjetas).

¿Es algún nuevo tipo de protección? Para resumir… ¡No! Simplemente que la tarjeta no está en la lista de tarjetas soportadas y no conocemos su AID. ¿Como hace entonces el TPV para seleccionar la AID correcta? Existe un directorio que le dice cual es la AID a seleccionar. ¿Solución? Lo implementamos nosotros.

Personalmente me basé en el readnfccc. Para hacerlo un poco más universal, le agregué la lectura del PPSE (directorio con información relativa al pago sin contacto) para sacar el AID correcto. También existe el PSE que corresponde al directorio con información relativa al pago insertando la tarjeta en un terminal que soporta solamente Smartcard.

Se puede encontrar el código fuente en GitHub.

¿Cómo protegerse?

  • Usar una cartera especial que actúa como jaula de Faraday y no permite el paso de ondas. O envolverla en papel de plata.

  • Inutilizar la antena de la tarjeta haciendo un pequeño agujero por donde pasa. Estas tarjetas disponen de una antena formada por unas pistas que rodean la tarjeta. Haciendo un corte o un agujero en la pista anula la comunicación NFC de la tarjeta dejando intacto el chip y la banda magnética.

  • Se rumorea que un par de segundos en el microondas puede quemar el chip NFC, pero unos segundos más pueden dejar inutilizable la smartcard. Con unos cuantos segundos más se puede conseguir prenderle fuego (que no es la idea, pero soluciona el problema ;). Al ser una ciencia poco exacta y tratándose de rumores este ultimo método no es recomendable y se menciona a titulo de anécdota.

En el próximo post analizaremos con un poco más de detalle el protocolo EMV y su implementación en tarjetas NFC. Finalmente en otro post analizaremos algunos ataques posibles.

Hacking RFID, rompiendo la seguridad de Mifare (V)

Sabemos que las MIFARE Classic están totalmente rotas, como hemos podido comprobar en los posts anteriores de esta saga. Las claves de lectura y escritura de las zonas de memoria son fácilmente recuperables. Ahora nos queda enfrentarnos al último bastión de las tarjetas: el Unique Identification Number (UID).

En el Sector 0 Block 0 de la tarjeta, conocido como el Manufacturer Block es donde podemos encontrar almacenado el identificador único de la tarjeta o UID.

Ese UID es el número de serie de las MIFARE. Cada tarjeta tiene el suyo propio, consta de 4 bytes, y en principio es de sólo lectura.

Por eso las implementaciones que aún se basan en las MIFARE Classic confían en ese número para identificar los usuarios. Podemos fácilmente encontrar sistemas de ese estilo en puertas de acceso y en parkings por ejemplo.

[Read more…]