miércoles, 15 de febrero de 2012

Nuevas y curiosas técnicas del malware contra entidades latinoamericanas


No es un secreto que el malware contra entidades latinoamericanas se fundamente en el "pharming". O sea, la modificación de la resolución de dominios a través del archivo hosts del sistema. Con sus distintas variantes, los atacantes se han centrado principalmente en esta técnica en los últimos años. Sin embargo hace poco, hemos observado una pequeña progresión que nos ha parecido curiosa.

Los brasileños

Los atacantes brasileños suelen utilizar técnicas muy diferentes a los rusos o los latinoamericanos. Ellos prefieren programar en Delphi, y crear ventanas de programa que son como réplicas de una parte o de toda la página del banco objetivo. Se superponen en la web original cuando se visitan, y la víctima introduce en esos formularios sus datos. A este tipo de malware los llamamos "delephant", porque además de estar programados en Delphi, también suelen "pesar" mucho (varios megas) al contener imágenes en bruto de varios bancos.


O también pueden llegar a crear una pantalla que simule ser por completo el navegador.

Los brasileños no se caracterizan precisamente por su calidad al programar, ni por su innovación. Y este caso que vamos a estudiar será un buen ejemplo.

Los rusos

Además de más sofisticados, una de las características de la escuela de malware rusa  es que consiguen posicionarse en el sistema de forma que recogen el tráfico, aunque esté cifrado. Contra esto, los bancos se apresuraron a ofuscar el tráfico con JavaScript. Antes de enviarlo al servidor, lo codifican profusamente. Así, aunque lo interceptasen (con un man-in-the-browser en forma de BHO, por ejemplo) seguirían encontrándose con la dificultad del ofuscado.

Si los programadores del malware lo tuviesen en cuenta, podrían indicarle al BHO que obviasen las rutinas de ofuscado específicas... pero veremos qué han preferido hacer los brasileños ante la "dificultad" de programar un BHO.

Las "nuevas" técnicas

Lo que nos hemos encontrado es un método que mezcla estas dos familias e implementa una curiosa técnica para eludirlas. Lo que el troyano hace es:

  • Infecta la máquina, y se queda a la espera de la monitorización de ciertas páginas.

  • Cuando detecta que se está en las páginas que necesita, inyecta un JavaScript propio en la página, que se encarga de copiar al portapapeles los datos robados.


  • JavaScript, por definición, no puede escribir en disco, por tanto (y aquí lo curioso), lo que hace el troyano es copiar el contenido que le interesa en el clipboard y, por otro lado, el troyano monitoriza el portapapeles. Si contiene los datos que le interesan, es él el que los graba en disco.


Curiosísima forma de eludir la restricción de JavaScript de escribir en disco, a través del portapapeles.

Más datos sobre el troyano

Por lo demás, como suelen hacer los especímenes brasileños, envía por correo los datos robados. También captura los teclados virtuales en pequeñas "fotografías" cuando el usuario pulsa sobre los números. Si el banco ofusca estos números con un "*" cuando son pulsados, el troyano carga una rutina JavaScript que evita que esto ocurra, y así puede grabar en imágenes las teclas virtuales pulsadas.

Muestras de los resultados

El troyano ataca a diferentes entidades, principalmente sudamericanas. Estos son un par de ejemplos de archivos HTML que el troyano envía a los atacantes. Por ejemplo para el Banco Guayana.


Y para el Banco Caroní.


Curioso porque pega todas las imágenes y las letras de la contraseña dos veces. Esto es simplemente uno (de tantos) errores de programación.

Como curiosidad final, durante el análisis del troyano (pero independientemente de este) he advertido un error de concepto en la seguridad del Banco Guayana. Normalmente, los bancos se protegen de los troyanos que realizan capturas de pantalla sustituyendo los números o teclas por asteriscos cuando son pulsados (momento en que un hipotético troyano haría la "foto"). Por el contrario, cuando se separa el puntero, los números deben ser mostrados en claro, para que el usuario pueda identificarlos. Este es el comportamiento "normal":


Pero en el caso de Guayana, sus administradores lo han implementado al revés... en concreto tiene un error de concepto en su teclado virtual que hace que sus medidas de seguridad no sean útiles, puesto que, oculta los números cuando no se están pulsando... y los muestra cuando se van a elegir. Lo que facilita la vida a los troyanos de este tipo.




Sergio de los Santos
Twitter: @ssantosv


11 comentarios:

  1. IM-PRE-SIONANTE
    Me ha encantado el articulo, genial...
    Creo que estas "practicas en la programacion" no son mas que un reflejo de la sociedad donde se hubican. Si le llegan las imagenes dos veces, "para que molestarse weeeeey..." no son culturas especialmente refinadas, son efectivas, son metodos pesados y sencillos pero eficaces! Reflejan un poco el entorno que envuelve estos desarrollos, para que luego digan que un entorno y una formacion adecuada no es importante... para muestra un boton...

    ResponderEliminar
  2. El artículo es interesante, solo hago una salvedad "geográfica", Brasil (aunque no hablen en castellano) es parte de latinoamérica. No coincido con lo expresado por QaSaR, parece que hubiera algún prejuicio en su opinión.

    ResponderEliminar
  3. @quasar, o sea que el nivel de un programador, en este caso, depende de si vive en un pais desarrollado o subdesarrollado??..ja ja. Pues estas muy equivocad@, y concuerdo con @HH, tu comentario refleja prejuicios.

    ResponderEliminar
  4. me parece muy interesante la forma de atacar de estos hacker las tacticas que utilizan y las formas que se dan para obtener es muy interesante pero a la ves peligrosa...

    ResponderEliminar
  5. Sooiis todos unooss fiiera viva españa , viva el rey, viva el orden y la leey PIIMM PAAMM TOMA LACASITOS!

    ResponderEliminar
  6. @QaSar

    hubican va escrito sin hache !!!

    no pareces el más indicado para hablar de 'refinados'.

    Salud!

    ResponderEliminar
  7. Estoy totalmente de acuerdo con HH. Esta información me parece obsoleta y pareciera que tuvieran algo en contra de estas entidades que casualmente se encuentran en proceso de fusión. Y para su información con la tendencia de los troyanos los teclados virtuales ya no son seguros para lo que fueron destinados. hay páginas bancarias que no utilizan teclado virtual. lo importante que tienen que darse cuenta es en los certificados de seguridad SSL utilizados por dichas entidades. Saludos.

    ResponderEliminar
    Respuestas
    1. Cada capa de seguridad debe ser tenida en cuenta por separada, todas las medidas de seguridad adicionales pueden aumentar el nivel de seguridad.
      Los antivirus, como otras herramientas de seguridad, no siempre son usadas en entornos de seguridad por su ineficacia, pero en cualquier caso no hay ninguna herramienta infalible. Cuanto mayor sea nuestro conocimiento mejor podemos prevenirnos con herramientas, configuraciones o conocimientos.

      En cualquier caso el fallo de concepto de mostrar lso números solo cuando se pulsa puede ser interpretado de otra forma. Si entramos en el banco fuera de nuestro domicilio dificulta que otras personas vean nuestras claves. Personalmente pocas veces entro en el banco fuera de mi casa, pero claro, cada usuario hace uso de las herramientas según las necesita

      Eliminar
  8. no lo puedo creer... hay que tener un preservativo actualizado y fue

    ResponderEliminar
  9. Esto pasa en sistemas operativos que no tengan antivirus y firewall actualizados. por que no explica eso también.? las web implementan métodos de seguridad para minimizar riesgos, pero no eludir todo. sin un software de seguridad en la pc lo que se puede implementar es el uso de token o certificados únicos que identifiquen al usuario.

    ResponderEliminar
  10. Creo que una de las soluciones para poder mitigar esto es utilizar algún tipo de token, u otro tipo de factor de autenticación de doble o triple factor

    ResponderEliminar