Pirateando máquinas con códigos de barras. Hack the supermarket!

Códigos de barras maliciosos

Códigos de barras maliciosos

El blog Help Net Security se hizo eco hace una semana de un par de vídeos aparecidos en la cuenta de Twitter de Yang Yu, fundador e investigador del Xuanwu Lab del holding chino Tencent. En ellos se muestra y se demuestra cómo es posible hackear un ordenador mediante códigos de barras especiales, pudiendo instalar malware o realizar cualquier tipo de operación malintencionada. A esto lo han llamado BadBarcode, y lo presentaron en la Conferencia PanSec 2015, en Tokio.

Estos códigos de barras envenenados funcionan de una manera tan simple y son tan fáciles de generar que, realmente, dan bastante miedo. Y da también bastante miedo pensar que eso está ahí delante desde hace años y que a nadie se le hubiera pasado por la cabeza explotarlo. ¿O sí?

Cualquiera puede crear sus propios códigos de barras con las decenas de aplicaciones gratuitas que existen en Internet o incluso, si me apuras, a mano mediante una fuente específica descargada para Microsoft Word, por ejemplo. El problema reside en que, en función del protocolo que utilicen las pistolas o escáneres lectores de códigos de barras, sin son compatibles con Code 128, por ejemplo, además de poder representar caracteres numéricos, también son capaces de leer caracteres ASCII. Y ahí está el peligro.

La combinación de teclas especiales (tipo Ctrl o Alt) más cualquier carácter ASCII, puede utilizarse para activar combinaciones de teclas de acceso rápido que, por ejemplo, abran una ventana de comandos del sistema operativo (un shell) e inicien programas, lancen aplicaciones o ejecuten instrucciones críticas en el equipo.

Y lo mejor de todo es que es algo tan sencillo como generar los códigos de barras e imprimirlos en un papel o etiqueta adhesiva. Después, me voy a mi supermercado de confianza, sustituyo el código de un artículo y me acerco a la caja para pagar. El desaguisado puede ser enorme o una broma de mal gusto. Asimismo, teniendo en cuenta que, amén de mercados y comercios, códigos de barras podemos encontrar en hospitales, centros comerciales, gasolineras, aparcamientos públicos, etcétera, pues creemos que el BadBarcode se puede convertir en algo un poco más grave que lanzar un navegador en la caja del súper.

El siguiente vídeo muestra cómo con un simple lector de códigos de barras puede ejecutar instrucciones en un sistema Windows y abrir una ventana de comandos.

En su cuenta de Twitter, Yang Yu colgó uno y dos vídeos más de demostraciones adicionales diseñadas por él y por un colega de investigación.

La solución es complicada, pues BadBarcode no es una vulnerabilidad de un determinado producto, sino que afecta a la totalidad de las pistolas de códigos de barras, o al menos a las que funcionan como emuladoras de teclado (que son casi todas). La mejor defensa parece consistir en anular los atajos de teclado de las máquinas a las que están conectados estos escáneres. De esta manera, aunque un dispositivo envíe comandos acortados, estos no producirán efecto alguno.

Sin embargo, quién sabe si alguien no descubrirá algo que se pueda enviar (y no se pueda anular) y dé acceso a alguna característica interesante para el hacker. Lo ideal sería que los fabricantes de escáneres de códigos de barras no permitieran funciones adicionales más allá de los protocolos estándares por defecto. Pero eso supone una empresa bastante importante como para que cambie de un día para otro.

8 comentarios a “Pirateando máquinas con códigos de barras. Hack the supermarket!”

  • […] Pirateando máquinas con códigos de barras. Hack the supermarket! […]

  • Pedro:

    Bufff, pues no hace años que se hace; recuerdo más o menos en el año 2001 o 2002 un blog (eeuu) que explicaba como hacerte los códigos de barras con pegatinas de sobres en la impresora para el supermercado. Este bloguero decía hacerlo tranquilamente en su supermercado habitual, explicaba significado de las barras…etc.

    • Javi:

      Te creerás muy listo, pero a parte de expresarte de forma lamentable tienes una mala comprensión lectora. No habla de modificar las etiquetas, que eso es anterior al 2000, por cierto, sino de introducir códigos que ejecuten combinaciones de teclas como CTRL + ALT (más lo que sea).

      • Roberto:

        Lo cual no sirve realmente para mucho porque normalmente cualquier código no alfanumérico debería rechazado por las aplicaciones utilizadas para leer los códigos (se capturan los eventos generados por dichas teclas).

        En la entrada, aparte de otros pequeños errores, es incorrecto afirmar que el peligro está en que los lectores lean «carácteres ASCII», cuando esa es precisamente su principal utilidad. Por ejemplo, en cintas de datos Ultrium/LTO (uno de los estándares más utilizados a día de hoy) los códigos son así: *AAA000*, *CLN000*, etc. Los asteriscos indican el comienzo y final del código en la etiqueta, así como hay etiquetas de control de la robótica usadas por los técnicos de mantenimiento.

        No quiero dejar sin mencionar que esa primera frase es bastante agresiva y no se corresponde con las formas deseables en un debate.

        • Roberto,

          Creo que también substimas el problema. Las interrupciones de teclado(que es como son detectados la mayoría de estos lectores) el sistema las maneja como de bajo nivel es decir son procesadas por el sistema operativo antes que lleguen al software aplicativo y es muy posible que aunque tu programa ignore los caracteres de control estos nisiquiera lleguen al software antes de que el atacante pueda ejecutar una accion maliciosa.

          Tu programa por ejemplo sería incapaz de detectar un Ctrl+Alt+Supr antes de que el OS reaccione y esto abre posibilidades interesantes para un atacante que quiera ejecutar algún código malicioso.

          Lo que si estoy de acuerdo es que el artículo erróneamente asigna la vulnerabilidad al tipo de codificación que los lectores pueden identificar. La vulnerabilidad está en que leen/generan también otros caracteres de control que pueden ser utilizados para fines maliciosos.

          El problema es que estos lectores tienen un firmware cerrado que no puede ser modificado para que se filtren caracteres de control y estos caracteres de control solo pueden deshabilitarse a nivel de OS (y en algunos casos no pueden deshabilitarse). Tu software poco o nada puede hacer cuando la interrupción viene de hardware y es atendida por el OS mucho antes de que tu programa sea notificado de que se ha presionado una tecla.

  • UnoMas:

    Hola Javi

    Mírate esto:

    http://www.fundeu.es/recomendacion/aparte-a-parte/

    Saludos.

    PD: 😉 todos cometemos errores, algunos escriben tal y como hablan, otros parece que están enfadados siempre, los hay un poco agresivos cuando hablan,,,

Escribe tu comentario

eBook 'retroPLOF!'

retroPLOF!
Especifica tu dirección de correo electrónico y pulsa 'Comprar ahora'. Puedes pagar con tu cuenta de PayPal o con cualquier tarjeta bancaria.

E-mail envío eBook:

<script>» title=»<script>


<script>

Utilizamos cookies propias y de terceros para mejorar la experiencia de navegación. Más información.

ACEPTAR
Aviso de cookies