Noticias de Seguridad Informática - Segu-Info

miércoles, 25 de agosto de 2010

16:05:00

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

Creative Commons License
Creative Commons Atribución-No Comercial-Compartir Obras Derivadas Igual 2.5


4 comentarios:

Anónimo,  25/08/10 17:43  

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.

www.segu-info.com.ar 25/08/10 19:03  

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

Dario 25/08/10 19:45  

No entro al boletìn :(

www.segu-info.com.ar 25/08/10 20:56  

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

Cristian

Publicar un comentario

Gracias por dejar un comentario en Segu-Info
Si vas a dejar una consulta, procura tener habilitado tu perfil en Blogger o deja una forma de contacto.

Gracias por comentar!

Aquí y Ahora

 
 Widget de Google 

Acerca de Segu-Info

Segu-Info es un emprendimiento personal de Lic. Cristian Borghello CISSP - MVP que brinda información sobre Seguridad de la Información desde el año 2000. Segu-Info es la Comunidad de Seguridad de la Información más grande de habla hispana. Todos los contenidos de este sitio se encuentran bajo Licencia Creative Commons a menos que se indique lo contrario. Cristian Borghello no se hace responsable del contenido o comentarios de terceros.

  ©Template desarrollado por Dicas Blogger y Adaptado por SoloE para Segu-Info - 2009