SAFE. Guía para proteger tu vida digital y tu privacidad

25 ago 2010

Método (barato) para evitar Zeus (y otros malware)

Zeus es un troyano identificado por los antivirus como Zbot y tiene como objetivo troyanizar sistemas Windows para luego robar credenciales bancarias de los usuarios a quienes infecta.

Actualmente es uno de los malware de mayor propagación. Con él se crean gran cantidad de botnets en todo el mundo, complica el trabajo de las empresas antivirus y está llenando los bolsillos de sus creadores y "clientes". Es comercializado a distintos precios, que van desde U$S 100 a U$S 5000 a lo que se suma el monto de los distintos módulos a los cuales se puede acceder.


En Zeus, esta configuración se realiza desde un archivo TXT de la siguiente manera:
set_url SITIO-1
data_before
XXX - DATOS QUE SE BUSCAN EN EL HTML DEL SITIO-1 AFECTADO
data_end
data_inject
YYY - FORMULARIO-1 CON LOS CAMPOS A INYECTAR
data_end

set_url SITIO-2
data_before
XXX - DATOS QUE SE BUSCAN EN EL HTML DEL SITIO-2 AFECTADO
data_end
data_inject
YYY - FORMULARIO-2 CON LOS CAMPOS A INYECTAR
data_end
Como puede suponerse, el funcionamiento es sencillo: en la página del SITIO-N, se busca la cadena de texto "XXX" y se reemplaza/agrega/inyecta "YYY". Este último seguramente será el formulario que obtiene los datos extras a robar (por ejemplo, el usuario, la contraseña, el PIN, la tarjeta de crédito, la clave de transferencia, etc.) y que se enviarán al delincuente para completar el ataque.

A modo ilustrativo, en las siguientes imágenes se muestra un formulario tipo de cualquier sitio, antes y después de la inyección:
En este caso, en el formulario original se reemplazó la línea en donde se solicita la "Contraseña" para agregar el campo de la "Clave de transferencia", con lo cual el delincuente consigue este último dato necesario para cometer sus delitos: movimientos de dinero a través de mulas ubicadas en distintos países.

La posible solución descripta a continuación para evitar esta inyección, es de relativa sencillez en su funcionamiento e implementación, además de su bajo costo de desarrollo.

Debido a que Zeus busca y reemplaza texto, se puede generar un formulario distinto para cada instancia que el cliente visualiza de la página, cambiando el código fuente generado. Al cambiarlo, Zeus no encontrará texto para reemplazar y por lo tanto la inyección no se llevará a cabo.

En el caso anterior, se podría crear funciones cuyo resultado siempre devuelva un dato distinto de forma que la entropía del formulario sea mayor y por lo tanto más difícil de ser inyectado.

Este caso se puede llevar al extremo y a través de una función, el formulario se podría reescribir en su totalidad cifrándolo u ofuscándolo cada vez que es mostrado al cliente (demo en vivo), con lo cual nunca habría una cadena de caracteres igual a otra y Zeus, en su modo de trabajo actual, no encontraría código para inyectar.

Como conclusión, es importante destacar que este método es una alternativa menos costosa pero no reemplaza la implementación de doble autenticación, que debería ser considerada por las entidades financieras, bancarias o cualquier otro blanco potencial de Zeus.

El procedimiento descripto puede ser implementado como una medida de control adicional (defensa en profundidad), y considerado en el caso en donde los troyanos utilizan el formulario del sitio para robar información del usuario.

Nota 1: hasta el momento del desarrollo del presente documento, no se ha visto ninguna organización que implemente este método.

Nota 2: lo mencionado no contempla las posibilidades de keylogging de cualquier troyano y tampoco el robo de datos a través del control remoto del sistema afectado.

Nota 3: la descripción del procedimiento completo fue publicado en el Boletín 157 de Segu-Info.

Cualquier comentario o feedback sobre el procedimiento puede ser dejado en la demo.

Cristian de la Redacción de Segu-Info



Suscríbete a nuestro Boletín

4 comentarios:

  1. Mmmmmmm, no es mala, pero de aca a que los desarrolladores lo tengan en cuenta, pueden pasar 10 años como viene siendo las inyeccion sql con las comillas.

    Igual, digamos que es muy provisoria, ya que la web de un banco no suele tener muchos forms.

    ResponderBorrar
  2. Como siempre los métodos de prevención pueden existir pero luego es otro tema la decisión de implementarlo.
    Esta decisión puede corresponder a los desarrolladores pero sobre todo DEBE depender de la política de la organización.

    Cristian

    ResponderBorrar
  3. Para ingresar al boletin debes estar suscripto. Más alla de eso, la publicación se hará en el proximo número.

    Cristian

    ResponderBorrar

Gracias por dejar un comentario en Segu-Info.

Gracias por comentar!