Give me your credit card, the NFC way

Hace ya más de un mes realicé una presentación en la No cON Name (NcN) sobre privacidad en tarjetas de crédito NFC. No se trata de un tema nuevo, ni mucho menos, ya que sobre todo durante este año se han realizado diferentes ponencias sobre este tema a nivel internacional, aunque, hasta ese momento, no se habían hecho pruebas con tarjetas de crédito españolas (al menos de forma pública). Podéis descargar la presentación desde aquí.

 

 

Como ya comentaba en diferentes posts sobre el tema, el pago mediante la tecnología NFC se usa desde hace años en algunos países asiáticos, como Japón. Sin embargo no ha sido hasta este año 2012 cuando se ha empezado a impulsar en España con diferentes iniciativas promovidas por varias entidades bancarias. El resultado es que ahora mismo más de una persona puede tener una tarjeta de crédito NFC en su cartera sin ni siquiera saberlo. Esto no debería ser un problema si los datos estuvieran bien protegidos, pero esto es algo que no se puede dar por supuesto, de ahí el origen de esta presentación.

Mi investigación se basó en el código fuente publicado por Renaud Lifchitz en la pasada Hackit Ergo Sum, que permitía la lectura de datos de tarjetas de crédito sin contacto. Este código está pensado para tarjetas que siguen el estándar ISO/IEC 14443A y para ciertos tipos de tarjeta, así que tuve que tirar de las especificaciones para hacerlo un poco más global, añadiendo soporte para tarjetas que usan el estándar ISO/IEC 14443B y para algunos fabricantes más (VISA, VISA Electron, Mastercard). El código que resultó lo podéis encontrar en este enlace. En mi defensa tengo que decir que hace muchos años que no programaba en C ;)

Para realizar la lectura de los datos usé un lector con un chip PN532, del que ya hablé en un post anterior, que parece soportar un buen número de librerías para trastear con NFC (entre ellas, la que creo que es la más usada, libnfc). Para la comunicación NFC sólo son necesarios dos comandos (especificación completa aquí):

 

  • InListPassiveTarget: Lista e inicializa la comunicación con los dispositivos cercanos.
  • InDataExchange: Intercambio de datos entre el lector y el dispositivo.

 

Simplificándolo un poco, las tarjetas de crédito sin contacto (NFC) no son más que tarjetas con chip (smartcards) a las que se les ha añadido una interfaz NFC. Por lo que, una vez establecida la comunicación con el dispositivo, enviaremos comandos EMV para obtener los datos de la tarjeta. Los comandos EMV que usaremos son los siguientes:

 

  • Select: Abre un canal lógico con la tarjeta en el MF/EF seleccionado. En nuestro caso sirve para seleccionar la aplicación (tipo de tarjeta) de la que obtener los datos:

    0xA0 0x00 0x000x000x03 0x10 0x10 (VISA)
    0xA0 0x00 0x000x000x03 0x20 0x10 (VISA Electron)
    0xA0 0x00 0x000x000x04 0x10 0x10 (Mastercard)
     

  • Read record: Lee el registro especificado.

 

Con sólo estos comandos y mirando a conciencia las distintas especificaciones (EMV Specification Book 3 y ISO7816-4) podemos intentar sacar los datos de las tarjetas, pero...¿realmente merece la pena molestarse? Para responder a esta pregunta podéis echar un vistazo al siguiente vídeo:

 

 

En este caso sólo hice la prueba con una tarjeta de crédito, pero en la NcN me llevé tres tarjetas de tres entidades financieras españolas diferentes (¡gracias Marc!) y, además, una chica muy amable se ofreció como voluntaria para probar con la suya (no se guardaban los logs, claro...:p). En definitiva, como mínimo se pueden obtener los siguientes datos:

 

  • Nombre del titular
  • Número de la tarjeta
  • Fecha de caducidad
  • Modos de operación
  • Clave pública de la tarjeta
  • Clave pública de la entidad
  • ...

 
Ahora bien, ¿realmente se puede hacer fraude con estos datos? A continuación se dan unas simples ideas de lo que se puede llegar a hacer:
 

  • Compras telefónicas: En muchas ocasiones en las que se permite el pago mediante una llamada telefónica no se comprueban más datos de los mencionados anteriormente.
     
  • Compras online: Lo normal es que al hacer compras por Internet siempre se pida el CVV/CV2, que es el número de tres cifras que aparece en el reverso de las tarjetas de crédito. Este número no se almacena en la banda magnética ni en el chip, por lo que con eso valdría para olvidar este escenario. Sin embargo, no son pocos los sitios en los que se pueden realizar compras sin introducir este número, si no podéis echar un vistazo a alguna tienda de deporte online o una de las grandes de las compras por Internet, por ejemplo ;)
     
  • Clonado de tarjetas: A través de los comandos EMV se puede acceder a los datos del Track1 y Track2 de la banda magnética. Con estos datos se podría crear una nueva tarjeta de crédito y usarlas en sitios de pago no atendido, como gasolineras 24 horas, peajes, máquinas de vending, etc. Este escenario está por demostrar, aunque Kristin Paget ya realizó una prueba de concepto en su charla en Shmoocon este año.
     
  • Mercado underground: En los foros underground se suele comerciar con credenciales bancarias y datos de tarjetas robadas, por lo que se podrían recolectar y buscar el mejor postor en uno de estos foros.

 

Por lo tanto, se podría llevar un lector NFC o incluso un teléfono móvil con chip NFC a un sitio que esté lo suficientemente abarrotado, para que nadie sospeche nada si te acercas mucho a una persona (el “ataque cebolleta” según Mikel, arrimando cebolleta...:p), y después pensar qué hacer con estos datos. ¿Qué tal el metro en hora punta?

 

 

Creo que en este escenario se podrían conseguir un buen número de datos de tarjetas de crédito para realizar pagos fraudulentos. Entonces, ¿cómo nos defendemos?

 

  • Primeramente, intentar evitar las tarjetas sin contacto, sobre todo si se demuestra que son inseguras.
     
  • Si no hay otro remedio se puede intentar inhabilitar o incluso extraer el chip. Parece ser que tres segundos en el microondas son suficientes para dejarlo inutilizado, pero también dicen que si son cinco los segundos puede llegar a arder (no lo probéis en casa).
     
  • Como última opción se debe introducir la tarjeta en una jaula de Faraday. No es que tengamos que llevar la tarjeta como si fuera un canario, la idea es aislar la tarjeta para que no se puedan establecer comunicaciones con ella y los datos estén seguros. Existen carteras que incorporan esta función y no se nota nada. De hecho, probamos una de ellas en la presentación, gracias a otro voluntario, y realmente funcionaba (al menos con el lector utilizado).

 

Como ya he comentado al principio, no se trata de una nueva vulnerabilidad, sino de un fallo de privacidad que se conoce desde hace años y que durante este año se ha intentado dar a conocer en diferentes conferencias de seguridad. Es algo que debería conocerse y comprobarse antes de repartir tarjetas de este tipo a los clientes (mucho más grave si los clientes no saben ni qué es una tarjeta sin contacto), ya que es una forma de facilitar el fraude, esté cubierto por las entidades o no. Incluso, posiblemente se esté incumpliendo la norma PCI DSS, que dice en su Requisito 4 que se debe “Cifrar los datos de los propietarios de tarjetas e información confidencial transmitida a través de redes públicas abiertas”. En este apartado se menciona de forma explícita que afecta a las "tecnologías inalámbricas", entre las que se incluyen NFC y RFID.
 
Dicho esto, revisad vuestras tarjetas y quién se acerca a ellas, porque la aplicación de la tecnología NFC en tarjetas de crédito dista mucho de ser privada, al menos por el momento.

¿Y la protección con PIN para

¿Y la protección con PIN para pagos no está presente para la protección de las comunicaciones?
H.

Buenas! Si te refieres a

Buenas!

Si te refieres a pedir el PIN cuando quieres leer datos de la tarjeta, no, no hay ningún tipo de protección en ese sentido. Simplemente te acercas a una persona en el metro y puedes leer los datos de su tarjeta de crédito acercando el lector (que puede ser tu teléfono) a su bolsillo/bolso. En cualquier caso, la protección del PIN para pagos se usa para pagos superiores a cierta cantidad, que suele ser 20€ en la mayoría de las entidades financieras. Lo peor de todo es que la gente no sabe que le pueden robar por tener esa tarjeta en el bolsillo (aunque después puedan devolverle el dinero).

Espero haber respondido a tu duda...

Un saludo!

hola amigo,una pregunta,yo

hola amigo,una pregunta,yo conozco los tracks de las tarjetas y se de que se compone y me gustaria saber si despues de la fecha d evencimiento vienen 3 numeros que significa si es chip o banda y despues de esos 3 numeros los demas que siguen que significan...

tambien me gustaria saber si una tarjeta de chip se puede pasar a ser banda osea que cuando haga una compra el pinpad no me pida el chip

Buenas! Puedes echar un

Buenas!

Puedes echar un vistacillo a las diferentes especificaciones sobre la banda magnética para averiguar sobre eso. Este link por ejemplo explica bastante bien todo:

http://www.gae.ucm.es/~padilla/extrawork/magexam1.html

Lo que me comentas del chip al pagar, a no ser que no funcione el chip siempre tendrás que usarlo como medio de pago, pero eso depende mucho del establecimiento donde vayas a pagar, del país, etc.

Un saludo!

Hola, ya tengo los traks en

Hola, ya tengo los traks en la tarjeta virgen, quiero saber si la tengo que modificar para retirar dinero en los atm ya que yo poseo el nip

Favor necesito ayuda estoy

Favor necesito ayuda estoy haciendo una librería para leer datos emv pero tengo problemas en autenticación sda,cda,dda y issuer script quien me ayuda pero que no sea caro soy pobre