Sunday, March 29, 2009

Jugando con codigos de barras




Haciendo un poco de limpieza de mi disco, encontré una presentación de Phenoelit sobre hacking de código de barras.

El codigo de barras o UPC Universal Product Code fue creado para auxiliar a los negocios pequeños ( kioscos, mini markets ) a llevar mejor el inventario y para cobrar mas rápido.
Pero fue tal su exito que poco a poco comenzo a extenderse su uso.

Entendiendo su funcionamiento :

El codigo , esta divido en :

- Un codigo de barras que pueden leer las maquinas
- Un codigo numerico


La identificacion del fabricante esta dada por los primeros seis digitos del numero UPC --639382 en la imagen anterior, los proximos cinco digitos --00039 corresponden al codigo del producto.
Una persona esta a cargo de asignar un codigo unico a cada item, y retirar el codigo a un producto una vez que se saca de produccion.

El ultimo digito es el llamado digito de verificacion. Con este digito el scanner puede verificar si el codigo escaneado es correcto o no.

Veamos ahora como es el proceso para el codigo : 63938200039
  1. Sumar los digitos en posiciones impares (digitos 1, 3, 5, 7, 9 y 11).
    6 + 9 + 8 + 0 + 0 + 9 = 32

  2. Multiplicar por 3.
    32 * 3 = 96

  3. Sumar los digitos en posiciones pares (digitos 2, 4, 6, 8 y 10).
    3 + 3 + 2 + 0 + 3 = 11

  4. Sumar a este numero lo obtenido en el paso 2.
    96 + 11 = 107

  5. Tomar el numero del paso 4. El digito de verificacion resulta ser el numero que sumado al obtenido en el paso 4 es multiplo de 10.
    107 + 3 = 110
En este caso 3 es el digito verificador.

Si el digito verificador no coincide con el obtenido por este calculo, el scanner pedira que se tome nuevamente la lectura.


Y como interactua con una BD ?

Al momento de tomar lectura, el sistema envia el codigo al equipo donde se realiza el procesamiento de las ventas, el cual devuelve el precio del producto.

Esto es importante tenerlo en cuenta ya que el codigo puede ser parte de una query.



Ahora existen diversos codigos de barras y en diferentes formatos. Los que vimos en los ejemplos anteriores son en 1 Dimension, los cuales vienen con diferentes diseños



, en algun momento han visto los codigos en 2 Dimensiones o QR-Codes.


Que se puede hacer con un codigo de barras ?

En la presentacion, dan ejemplos de copia de codigos mediante una camara fotografica, para reutilizarlos en diferentes situaciones.

Beber gratis

Por ejemplo en algunos bares a la entrada ( En Sao Paulo por lo menos es asi )entregan una tarjeta con un codigo de barras, cada vez que uno toma se carga el costo a la tarjeta, al salir del bar se pasa por caja y se entrega la tarjeta donde se toma el valor de lo consumido. Si alguien duplica la tarjeta, sacando una foto al codigo de barras, la proxima visita puede hacer un duplicado y ......

Beber gratis

Las maquinas que toman los envases en los super tambien entregan un ticket con un codigo de barras


Es posible duplicar estos tickets ( supuestamente no hay relacion entre la maquina y las cajas )

Control de Acceso

Algunas empresas utilizan una tarjeta con codigo de barras para el acceso, en la presentacion indican que muchas veces mas de lo habitual, el sistema solo verifica que la estructura de datos este correcta para dar el paso. Para verificar esto, se puede probar con un codigo de algun producto ( una caja de chiclets x ej )


Hay otros ejemplos como Parking, renta de peliculas , tracking de objetos, todos utilizando codigos de barras que pueden ser facilmente manipulados.

Injections and Multi-Decoding

Usando Code 128, se puede injectar otros caracteres como entrada.

Esto puede dar como resultado SQInjection u otros ataques utilizando strings.



QR-Codes

Recientemente, la inclusión de software que lee códigos QR en teléfonos celulares en Japón ha permitido nuevos usos orientados al consumidor, que se manifiestan en comodidades como el dejar de tener que introducir datos de forma manual en los teléfonos. Las direcciones y los URLs se están volviendo cada vez más comunes en revistas y anuncios japoneses. El agregado de códigos QR en tarjetas de presentación también se está haciendo común, simplificando en gran medida la tarea de introducir detalles individuales de un nuevo cliente en la agenda de un teléfono móvil.

Por supuesto esto deja abierta la posibilidad de ser enviado a sitios que contengan codigo malicioso.

No es lo mismo ver una direccion con http://xxxxxxxx/malware.exe que el siguiente grafico arriba a la izquierda que sera escaneado por el mobil y redirigido automaticamente al sitio.


La presentacion continua dando ejemplos de uso de codigos de barras ( tickets aereos, equipajes, servicio postal )


Principios de aplicacion segura de codigos de barras

Considere el codigo de barras igual que una cookie de browser
Esta puede ser interceptada, copiada, modificada, perdida,etc.
Si solo se puede utilizar 1D, este seguro que este representa una ID interno impredecible y nada mas.
Si puede usar 2d, utilize cryptografia.
Si la seguridad del proceso depende del codigo de barras, esta en problemas.
Nunca confie en el numero impreso.


Informacion adicional

a ) Generador de codigo de barras online

b) Generador de codigos de barras Online

Decodificador Online


http://electronics.howstuffworks.com/upc.htm
http://www.phenoelit-us.org/stuff/StrichAufRechnung.pdf


No me quiero despedir sin antes dejare un mensaje en el siguiente QR al amigo que sabiamente aplico mi consejo del referer. Espero pueda decodificarlo :





No comments: