Con una derivación de filtro y algo de hexadecimal, los números de tarjetas de crédito hackeados siguen siendo, todavía, aptos para Google
Unas palabras sobre el hackeo de tarjetas de crédito
Si me conoces, o has leído mi post anterior, sabes que trabajé para una empresa muy interesante antes de unirme a Toptal. En esta empresa, nuestro proveedor de pagos procesaba transacciones en la vecindad de $500k por día. Parte de mi trabajo era hacer que nuestro proveedor cumpliera con PCI-DSS, es decir, que cumpliera con la Industria de Tarjetas de Pago – Estándar de Seguridad de Datos.
Es seguro decir que este no era un trabajo para los débiles de corazón. A estas alturas, estoy bastante familiarizado con las tarjetas de crédito (CCs), la piratería de tarjetas de crédito y la seguridad web en general. Al fin y al cabo, nuestro trabajo consistía en proteger los datos de nuestros usuarios, evitar que fueran hackeados, robados o mal utilizados.
Puedes imaginar mi sorpresa cuando vi el artículo de Bennett Haselton de 2007 en Slashdot: Why Are CC Numbers Still So Easy to Find? En resumen, Haselton fue capaz de encontrar los números de las tarjetas de crédito a través de Google, primero buscando los ocho primeros dígitos de una tarjeta en formato «nnnn nnnn», y más tarde utilizando algunas consultas avanzadas construidas sobre rangos de números. Por ejemplo, podría utilizar «4060000000000000..40609999999999» para encontrar todos los números de cuenta primarios (PAN) de 16 dígitos de CHASE (cuyas tarjetas empiezan todas por 4060). Por cierto: aquí hay una lista completa de números de identificación de emisores.
En aquel momento, no le di mucha importancia, ya que Google empezó a filtrar inmediatamente los tipos de consultas que utilizaba Bennett. Cuando intentabas buscar en Google un rango como ese, Google te mostraba una página que decía algo parecido a «Eres una mala persona».
Hace unos seis meses, mientras rememoraba con un viejo amigo, este hackeo de números de tarjetas de crédito me vino a la mente de nuevo. Poco después, descubrí algo alarmante. No muy alarmante, pero sí alarmante, así que avisé a Google y esperé. Después de un mes sin respuesta, se lo notifiqué de nuevo en vano.
Con un pequeño ajuste del viejo truco de Haselton, pude buscar en Google números de tarjetas de crédito, números de la Seguridad Social y cualquier otra información sensible de interés.
Bennett
Ayer, unos amigos míos (buhera.blog.hu y _2501) me llamaron la atención sobre un post más reciente de Slashdot: Credit Card Numbers Still Google-able.
El autor del artículo, de nuevo Bennett Haselton, que escribió el artículo original en 2007, afirma que los números de las tarjetas de crédito todavía se pueden buscar en Google. No se puede utilizar el hack de la consulta de rangos de números, pero todavía se puede hacer. En lugar de utilizar rangos simples, tienes que aplicar un formato específico a tu consulta. Algo así como «1234 5678» (fíjate en el espacio del medio). Con esta consulta aparecen muchos resultados, pero muy pocos son realmente interesantes. Entre los concursantes hay números de teléfono, códigos postales, etc. No es extremadamente alarmante. Pero aquí viene el giro del hackeo de tarjetas de crédito.
La Metodología
Tenía curiosidad por saber si todavía era posible obtener los números de las tarjetas de crédito en línea de la forma en que podíamos hacerlo en 2007. Como todo buen Ingeniero, suelo plantear las cosas mediante un plan debidamente interpretado e inteligente que debe ser perfectamente ejecutado con la máxima precisión. Si has probado ese método, sabrás que puede fracasar estrepitosamente, en cuyo caso tu cuidadosa planificación y esfuerzo se van al garete.
En TI tenemos la tendencia a intelectualizar en exceso, incluso cuando no está exactamente justificado. He visto a mis amigos y colegas romper completamente aplicaciones utilizando entradas aparentemente aleatorias. Su tasa de éxito era asombrosa y el esfuerzo que ponían en ello era casi nulo. Fue entonces cuando aprendí que para abrir una puerta, a veces sólo hay que llamar.
El hackeo de la tarjeta de crédito
El párrafo anterior fue un intento hábilmente disfrazado de hacerme parecer menos idiota cuando presumo de mis «habilidades de hacker de élite». Oops.
Primero, probé varios enfoques basados en consultas de rango. Luego, busqué consultas avanzadas y prácticamente cualquier cosa que se te ocurra en una hora o más. Ninguno de ellos dio resultados significativos.
Y entonces tuve una idea loca.
¿Y si había un desajuste entre el motor de filtrado y el back-end real? ¿Y si el mensaje que recibí de Google («Eres una mala persona») no provenía del propio back-end, sino de un motor de filtrado designado que Google había implementado para censurar consultas como la mía?
Tendría mucho sentido desde una perspectiva arquitectónica. Y bugs como ese son bastante comunes-los vemos en ITSEC todo el tiempo, particularmente en soluciones IDS/IPS, pero también en software común. Hay un procedimiento de filtrado que procesa los datos y sólo los entrega al back-end si considera que los datos son aceptables/no maliciosos. Sin embargo, el back-end y el servidor de filtrado casi nunca analizan la entrada exactamente de la misma manera. Por lo tanto, una entrada aparentemente válida puede pasar a través del filtro y causar estragos en el back-end, evitando efectivamente el filtro.
Puede desencadenar este tipo de comportamiento proporcionando su entrada en varias codificaciones. Por ejemplo: en lugar de utilizar números decimales (0-9), ¿qué tal si los conviertes a hexadecimal, octal o binario? Pues adivina qué…
Busca esto y Google te dirá que eres una mala persona: «4060000000000000..40609999999999»
Busca esto y Google estará encantado de complacerte: «0xe6c8c69c9c000..0xe6d753e6ecfff».
Lo único que tienes que hacer es convertir los números de las tarjetas de crédito de decimal a hexadecimal. Eso es todo.
Los resultados incluyen…
- Archivos CSV humosos llenos de información potencialmente sensible.
- Archivos de registro de comercio electrónico defectuosos.
- Información sensible compartida en sitios de hackers (e incluso en Facebook).
Es algo realmente aterrador.
Sé que este fallo no inspirará ninguna investigación de seguridad, pero ahí lo tienes. Google cometió este error y ni siquiera me contestó. Bueno, eso pasa. Sin embargo, no envidio a la gente de seguridad de la gran G. Deben tener muchas cosas que vigilar. Estoy publicando acerca de este número de tarjeta de crédito hackear aquí porque:
- Es relativamente bajo impacto.
- Cualquiera que esté interesado y motivado habrá descubierto esto por ahora.
- Según Haselton, si los grandes actores no asumen la responsabilidad y no actúan ante estos exploits, entonces «lo correcto es iluminar el problema e insistir en que lo solucionen lo antes posible».
Este truco puede utilizarse para buscar números de teléfono, SSNs, TFNs, y más. Y, como escribió Bennett, estos números son mucho más difíciles de cambiar que su tarjeta de crédito, para la que simplemente puede llamar a su banco y cancelar la tarjeta.
Muestras de consultas
ADVERTENCIA: ¡NO busque en Google su propio número de tarjeta de crédito completo!
Busca cualquier CC PAN que empiece por 4060:4060000000000000..40609999999999 ? 0xe6c8c69c9c000..0xe6d753e6ecfff
¿Algunos números de teléfono húngaros del proveedor ‘Telenor’? No hay problema:36200000000..36209999999 ? 0x86db02a00..0x86e48c07f
Busca los SSN. Afortunadamente, estos no devuelven muchos resultados significativos:100000000..999999999 ? 0x5f5e100..0x3b9ac9ff
Hay muchos, muchos más.
Si encuentras algo muy alarmante, o si tienes curiosidad sobre el hackeo de tarjetas de crédito, por favor déjalo en los comentarios o contáctame por correo electrónico en o en Twitter en @synsecblog. Llamar a la policía suele ser inútil en estos casos, pero puede valer la pena intentarlo. El comerciante o el proveedor de la tarjeta suelen estar más dispuestos a solucionar el problema.
A dónde ir desde aquí
Bueno, obviamente Google tiene que arreglar esto, posiblemente con la ayuda de los grandes actores como Visa y Mastercard. De hecho, Haselton ofrece una serie de sugerencias interesantes en los dos artículos enlazados anteriormente.
Lo que hay que hacer, sin embargo (y por lo que he escrito este post), es correr la voz. El fraude con tarjetas de crédito es una gran industria, y la simple concienciación puede evitar que te conviertas en una víctima. Además, si tienes un sitio de comercio electrónico o manejas algún tipo de procesamiento de tarjetas de crédito, asegúrate de que estás seguro. PCI-DSS es una buena directriz, pero está lejos de ser perfecta. Además, siempre es una buena idea buscar en Google su sitio con la consulta avanzada «site:mysite.com», en busca de números sensibles. Hay una probabilidad muy, muy pequeña de que encuentres algo, pero si lo haces, debes actuar de inmediato.
También, un consejo de amigo: Nunca debes dar los datos de tu tarjeta de crédito a nadie. Mi consejo sería utilizar PayPal o un servicio similar siempre que sea posible. Puedes consultar estos enlaces para obtener más información:
- Consejos de seguridad de la tarjeta de crédito de Visa
- Consejos de seguridad de la tarjeta de crédito de Citi
Y algunos consejos generales: no descargues cosas que no hayas pedido, no abras correos electrónicos de spam y recuerda que tu banco nunca te pedirá tu contraseña.
Por cierto: Si crees que no hay nadie tan estúpido como para caer en estas técnicas de hackeo de tarjetas de crédito o regalar la información de su tarjeta de crédito en Internet, echa un vistazo a @NeedADebitCard.
¡Mantente a salvo gente!