Download - ESET NOD32 Antivirus: análisis técnico de Poker Agent, troyano de Facebook

Transcript
Page 1: ESET NOD32 Antivirus: análisis técnico de Poker Agent, troyano de Facebook

‘PokerAgent’El robo de 16.000 contraseñas de cuentas de Facebook

Page 2: ESET NOD32 Antivirus: análisis técnico de Poker Agent, troyano de Facebook

PokerAgent

La red de “bots” llamada “PokerAgent”, a la que se sigue desde 2012, fue diseñada para conseguir datos de acceso a Facebook. También recogía datos de las tarjetas de crédito ligadas a cuentas de Facebook y estadísticas de los jugadores de “Zynga Poker”, supuestamente con la intención de estafar a las víctimas. Israel ha sido el país donde la amenaza ha sido más activa.

IntroducciónHace aproximadamente un año, el laboratorio de investigación de ESET descubrió un troyano y le llamó la atención. Todo parecía indicar que había algo interesante: referencias a Facebook y a la aplicación Zynga Poker (que aparecían en cadenas de texto dentro del código), el código ejecutable “PokerAgent” y características de botnet, ya que el troyano contactaba con una red de control remoto.

ESET ha estado detectando diferentes variantes del troyano, denominado genéricamente MSIL/Agent.NKY. Tras el descubrimiento inicial, fuimos capaces de encontrar otras variantes del troyano, unas más antiguas y otras más modernas. También se consiguieron estadísticas de detección, que revelaron a Israel como el país con mayor actividad del código malicioso.

Hemos llevado a cabo un análisis profundo del código del troyano (tarea fácil, ya que estaba programado con C#, muy fácil de descompilar) e iniciamos la monitorización de la botnet. Los resultados se presentan a continuación.

Funciones del malwareEl autor del malware tienen una gran base de datos con nombres de usuario y contraseñas de Facebook. Al principio, no sabíamos cómo las había conseguido, pero al continuar la investigación se aclaró. Cuando el bot se conecta al centro de control, le solicita tareas para llevar a cabo. Una de esas tareas equivale a un usuario de Facebook. EL troyano está programado para iniciar sesión en una cuenta de Facebook y conseguir la siguiente información:

1. Estadísticas de Zynga Poker de la cuenta de Facebook en cuestión2. Número de métodos de pago (tarjetas de crédito) almacenadas en la cuenta de Zunga Poker.

Las estadísticas del usuario en Zinga Poker se consiguen pasando la respuesta dela URL http://facebook2.poker.zynga.com/poker/inc/ajax/profile_popup.php?zid=1:%_FACEBOOK_ID%&signed_request=%_SIGNATURE% &platform=1.

Los datos devueltos se asemejan mucho a los mostrados más abajo, y tienen diversa información sobre el usuario, como su nombre, género, imagen del perfil de la cuenta, clasificación y puntos en Zynga Poker, número de amigos y estadísticas sobre cada mano jugada.

2

Page 3: ESET NOD32 Antivirus: análisis técnico de Poker Agent, troyano de Facebook

PokerAgent

Al troyano solamente le interesa el género del usuario, sus puntos y su clasificación. Esta información se envía de vuelta al centro de control.

Hay que tener en cuenta que para hacer la consulta el atacante solo necesita el identificador numérico de la cuenta de Facebook y un parámetro válido firmado (https://developers.facebook.com/docs/howtos/login/signed-request/) por la aplicación Zynga Poker. En diferentes versiones del bot hemos detectado que se usaban diferentes parámetros.

Se puede encontrar más información sobre el popular juego Zynga Poker aquí.

Con el fin de determinar el número de formas de pago vinculadas a la cuenta de Facebook, el bot primero tiene que entrar en esa cuenta, utilizando el nombre de usuario y contraseña que ya están en poder del atacante. Entonces, el troyano busca en https://secure.facebook.com/settings?tab=payments&section=methods y simplemente consigue el número que hay entre las etiquetas HTML en la cadena “ “You have <strong>X</strong> payment methods saved.” que se devuelve en HTML.

3

Page 4: ESET NOD32 Antivirus: análisis técnico de Poker Agent, troyano de Facebook

PokerAgent

Siempre recomendamos que se sea muy cauteloso a la hora de almacenar datos de tarjetas de crédito en una aplicación, no solo en Facebook. De nuevo, toda la información se manda al centro de control para actualizar la base de datos de víctimas.

El sistema infectado puede llevar a cabo diversas tareas en nombre de una víctima de Facebook:

3. Publicar enlaces en el muro del usuario de Facebook.

El propósito de esta función es llevar a otros usuarios de Facebook (por ejemplo, amigos de los usuarios a los que se les ha robado los datos de Facebook) a una página falsa de inicio de Facebook, para robarles también a ellos su nombre de usuario y contraseña.

La tarea mandada al bot, aparte de un nombre de usuario y contraseña de Facebook, también contiene una URL (mandada de manera cifrada) y posiblemente algún texto de acompañamiento para publicarla (aunque no hemos visto que esta característica la use la botnet). El troyano, una vez iniciada sesión en Facebook, publica el link descifrado en el muro del usuario.

Aquí pueden verse unos cuantos ejemplos.

El link apuntará a una página web similar a la que aparece en la imagen más abajo.

Independientemente del tema de la página a la que redirigen, todas tienen un factor común: cada imagen tiene un enlace HTML a una página falsa de Facebook en la que iniciar sesión, como se puede ver más abajo. De nuevo, se han ido usando diferentes URL a lo largo del tiempo.

4

Page 5: ESET NOD32 Antivirus: análisis técnico de Poker Agent, troyano de Facebook

PokerAgent

Como cabía esperar, cuando una víctima rellena sus datos en esta página falsa de Facebook, sus datos son mandados al atacante.

El análisis del código también revela una interesante característica de la lógica de programación del troyano. El código contiene una función llamada “ShouldPublish”, que determina si los datos robados al usuario deben ser publicados en el muro del usuario. Esto dependerá de si la víctima tiene alguna tarjeta de crédito vinculada a su cuenta y su clasificación en Zynga Poker. Aparentemente, si se cumple una de las condiciones, el atacante considera que ha triunfado, y, si no (no hay tarjetas y tiene una clasificación baja), el troyano buscará otras víctimas.

El ataque de un vistazoHay que aclarar que, a diferencia de otros troyanos que hemos visto propagarse frecuentemente por Facebook, este no intenta entrar ni interferir con la cuenta de Facebook del usuario que está infectado (de hecho, podría no tener una cuenta en Facebook). La botnet sirve más bien como un proxy, por lo que las actividades ilegales (las tareas ordenadas a los bots) no se ejecutan fuera del ordenador infectado.

5

Page 6: ESET NOD32 Antivirus: análisis técnico de Poker Agent, troyano de Facebook

PokerAgent

Una vez visto esto, todo lo anterior nos lleva a la conclusión de que el propósito de la botnet es:

1. Aumentar el tamaño de la base de datos de usuarios y contraseñas de Facebook.

2. Actualizar la base de datos: compara los datos de los usuarios de Facebook con las estadísticas de Zynga Poker y las tarjetas de crédito almacenadas.

Solo nos cabe especular acerca de cómo el atacante emplea los datos robados. EL código sugiere que el atacante busca usuarios de Facebook con cosas de valor que merezca la pena robar, determinándolo por las estadísticas de Facebook y los datos de la tarjeta de crédito almacenados en su cuenta de Facebook. Posteriormente, el cibercriminal puede usar para sí los datos de la tarjeta de crédito o quizá vender la base de datos a otros delincuentes.

Otros detalles técnicos Las muestras analizadas fueron escritas en C# y así hemos podido descompilarlas a su código fuente, que se parece mucho al código escrito por el programador. La aplicación PokerAgent está orientada a objetos y basada en clases, y aunque no es especialmente avanzado ni es programación a bajo nivel, indica que el autor tiene experiencia previa en programación.

En las capturas de pantalla del código fuente, podemos observar que el código es muy largo (Las carpetas BizCenter.ControlServiceRef, BizCenter.PopupServiceRef, y BizCenter.PublishServiceRef están contraídas con muchos más ficheros fuente en ellas).

En el texto siguiente, veremos muchas más partes interesantes del código, incluyendo el mecanismo de comunicación del botnet y la implementación de sus funciones, Sin entrar en profundidad, las clases donde la función principal del troyano se ejecuta, son llamadas “Popup” y “Publish”. La tarea Popup consigue el identificador numérico de Facebook como entrada, y devuelve las estadísticas de Zynga Poker para esa cuenta. La tarea Publish necesita un nombre de usuario de Facebook, una contraseña y una URL falsa para entrar en la cuenta y comprobar la cantidad de tarjetas de crédito vinculadas y para publicar los falsos enlaces en el muro de Facebook de la víctima.

6

Page 7: ESET NOD32 Antivirus: análisis técnico de Poker Agent, troyano de Facebook

PokerAgent

Comunicación con el centro de controlLa comunicación con el centro de control está implementada mediante SOAP 1.

El código del troyano contiene dos grupos de URL de centros de control cifrados fuertemente con el algoritmo DES (esto cambia en diferentes versiones del troyano):

• Una para descargas, como actualizaciones a nuevas versiones, un nuevo fichero de configuración, etc.

• Una segunda para comandos, las tareas como conseguir datos de Facebook.

Las primeras URL están cifradas en el código, de hecho, solamente apuntan a las URL de los centros de control. Estos centros han sido alojados en diferentes dominios. Este método de dos URL añade flexibilidad extra para alojar en distintos sitios los centros de control.

La tabla siguiente muestra los comandos soportados por el centro de control.

Class Command Note

Control

Connect

Mensaje inicial enviado por el bot. Se identifica a sí mismo con la dirección MAC del ordenador y la versión del bot. El servidor asigna al bot un identificador de máquina.

IAmAliveSegundo mensaje mandado por el bot. El servidor contesta con una lista de parámetros de configuración.

Popup

GetNextPopupTaskEl servidor manda al bot un usuario y contraseña de Facebook de su propia base de datos robados.

UpdateUser2El bot manda las estadísticas del servidor de Zynga Poker (sexo, puntos y clasificación) del usuario actual de Facebook.

Class Command Note

Publish

GetNextTask

El servidor manda al bot un usuario y contraseña de Facebook, una URL cifrada para el phishing y, posiblemente, el texto para la publicación en el muro.

UpdateUser1El bot manda un informe al servidor acerca de los métodos de pago asociados a la cuenta de Facebook.

WrongPasswordManda un mensaje de error, usuario y/o contraseña de Facebook no válidas.

SuccessNotification Manda un mensaje de éxito.

ErrorNotification Manda un mensaje de error.

Ejemplo de respuesta a GetNextTask:

7

* In fact, older versions, which we were able to capture during our tracking of this threat, use a different approach by accessing the attacker’s database directly. In this text, we only describe the functionality of the most recent version.

1. de hecho, en versiones antiguas en las que pudimos capturar datos durante el seguimiento de esta ame-

naza, usábamos una táctica distinta, entrando en la base de datos del atacante directamente.

En este documento solamente describiremos las funciones de la versión más moderna.

Page 8: ESET NOD32 Antivirus: análisis técnico de Poker Agent, troyano de Facebook

PokerAgent

Funciones relacionadas con FacebookEl autor trató de hacer al troyano bastante infalible, lo que tiene sentido ya que quería aprovecharse al máximo de los datos de Facebook robados. El código está al tanto de lo que hace la tarea que se está ejecutando e informa al servidor en caso de que ocurriera algún error en su ejecución.

El código C# usa elementos del componente del navegador para navegar por páginas de Facebook como si lo hiciera la propia víctima. Así, el troyano lee el HTML, rellena textos y simula clics si es necesario.

Al iniciar sesión en la cuenta de Facebook, el troyano también puede manejar distintas situaciones, como los avisos de Facebook de que el usuario ha iniciado sesión en un dispositivo desconocido. La porción de código mostrada a continuación muestra esta función.

Para publicar los links de páginas de phishing en el muro de Facebook de la víctima, el troyano utiliza uno de los dos métodos descritos a continuación. Su uso queda determinado por un fichero de configuración descargado.

El primer método para compartir cosas en Facebook emplea http://www.facebook.com/sharer/sharer.php?u=.

El segundo es a través de “Actualizar estado” que se encuentra en el NewsFeed de Facebook (Un elemento HTML con id=””pagelet_composer”).

8

Page 9: ESET NOD32 Antivirus: análisis técnico de Poker Agent, troyano de Facebook

PokerAgent

Vector de propagaciónAntes hemos visto la página falsa de Facebook que el atacante emplea para hacer que las víctimas le den sus datos de Facebook. Por lo que se refiere a la distribución del troyano “PokerAgent”, no hemos tenido la suerte necesaria para pillarle “con las manos en la masa”. Desde que empezamos a monitorizar la botnet en marzo de 2012, no siguió propagándose activamente.

No sabemos, sin embargo, si el troyano se descarga en el sistema por algún otro componente para descargarlo (de los que hemos visto varias versiones). Este componente “downloader” fue visto en la web, en varias URL cambiaban dinámicamente) y las víctimas han sido engañadas para descargarlo.

Por las técnicas que utiliza el troyano, es lógico suponer que el downloader también se distribuyó por Facebook, haciendo uso, también, de técnicas de ingeniería social.

Escala de los ataques y acciones llevadas a caboHemos estado detectando el troyano MSIL/Agent.NKY desde el 3 de diciembre de 2011. Poco después nos dimos cuenta de que era algo que requería más atención y llevamos a cabo un análisis del código. Así, iniciamos el seguimiento de la amenaza y tras analizar el protocolo con su centro de control, empezamos la monitorización de la botnet.

Gracias a la detección genérica, pudimos conseguir versiones iniciales y más modernas del troyano. En total encontramos 36 versiones distintas de “PokerAgent” con fechas de compilación comprendidas entre septiembre de 2011 y marzo de 2012. Los “hashes” MD5 se pueden encontrar al final del documento. Por tanto, estábamos viendo cómo el creador del malware estaba desarrollando activamente su proyecto.

El seguimiento de la botnet reveló que al menos 800 ordenadores habían sido infectados con el troyano, y el atacante tenía al menos 16.194 entradas únicas en su base de datos de credenciales de Facebook el 20 de marzo de 2012.

Estos números no se corresponden exactamente con el número de credenciales válidas robadas, ya que puede haber muchas más que no hemos visto. Sin embargo, por lo que conocemos, no todas las entradas eran válidas, y muchos usuarios que intentaron ser engañados introdujeron nombres de usuario y contraseñas visiblemente falsos.

Tal y como muestra la evolución de detecciones en nuestro ESET LiveGrid®, el autor del malware dejó la propagación activa del troyano a mediados de febrero de 2012.

9

Page 10: ESET NOD32 Antivirus: análisis técnico de Poker Agent, troyano de Facebook

PokerAgent

Los ataques se concentran en un solo país. Nuestra telemetría indica que precisamente el 99% de todas las detecciones de MSIL/Agent.NKY de los productos de seguridad de ESET provienen de Israel.

En cuanto conseguimos información fidedigna de estas actividades delictivas, cooperamos tanto con el CERT de Israel como con la policía. Los detalles de la investigación no pueden ser hechos públicos por razones de confidencialidad.

También hemos avisado a Facebook, y ha llevado a cabo tareas de prevención para frustrar futuros ataques en las cuentas robadas.

ConclusiónEl caso “PokerAgent” representa un ataque con éxito a los usuarios de la red social más grande del mundo y a los jugadores del mayor sitio de Poker del mundo. Hay, sin embargo, varias prácticas de seguridad, además de la obvia recomendación de utilizar un antivirus actualizado, que evitarán a los atacantes tener suerte.real thing, the fake Facebook log-on webpage could easily be recognized as such if the user checked the browser address bar, yet the majority of victims were duped by the phishing scam.

- No solo son necesarias medidas técnicas, sino que también la vigilancia del usuario es una protección contra todos los ataques que emplean ingeniería social. Aunque a simple vista la página falsa de Facebook es una copia perfecta de la auténtica, el usuario puede reconocerla como una copia si comprueba la barra de direcciones, aunque la mayoría de las víctimas fueron engañadas por la página.

- Facebook ha implementado varios mecanismos para mejorar la seguridad de sus usuarios. En concreto, el doble factor de autentificación podría haber evitado que los bots entraran en las cuentas de Facebook de las víctimas.

- Queremos insistir en que hay que ser cauteloso antes de permitir a los navegadores “recordar” contraseñas de servicios importantes, y mucho más si se están almacenando los datos de la tarjeta de crédito en cualquier aplicación, no solo en Facebook.

- Con las redes sociales más populares siendo atacadas pro malware, spam, phishing y otros propósitos nefastos, es muy recomendable asegurarse de que estamos protegidos de estos vectores de ataque también. Para mantener la cuenta de Facebook limpia, ESET ha presentado ESET Social Media Scanner, aplicación gratuita que puedes descargarte desde www.eset.es/particulares/social-media-scanner.

10

Page 11: ESET NOD32 Antivirus: análisis técnico de Poker Agent, troyano de Facebook

PokerAgent

Lista de MD5s1A177AD790309F162043557DA2C178B8

2CBE2BA07C5887170FE587C91739F137

82EECB76E4F0EFEA29CE7E790EBFFF99

AEF2313BAAE374CE3AB000AE15046CC5

4988851C88674CE45883141628559C04

4A05B90F662CBC47CC4C826ABEBEBE8F

335864D4E02CEFE9E328043730BA4630

725A34B0F9EE536B63E75913CA17DEC8

538312BDAD9F1EA62D5690E87CABA00F

47AC52B3A13443B061DD293D64142D18

6B51FEF476C48AD121D2543F037CC438

B038A93D36FA9FA82F2C2AD3908F79A9

BB1236655A35D74F43FC1087BA0A6D59

EB4740D54570E847086D863E1FA51C61

1C6689ABD86A1114B50DCF1F809B164D

B1E168DE7E9E495F2C02F73BC0092FE3

C854D298D5A70E89390F55E998682B1A

5E8A0B4EF16B784CA4D78F8036EEC52E

4D3DBFCA81F73F03CE18A848478838CD

4F2BA75830B3470615C9AD66A3B86916

D764E2B23ADDD8156AFE259097713101

10ABB121FF6C6EDC47AEA2263F00DF2E

2E2F62C79F31EFF7A2F4605D6B59455D

82482F49F9E204E48CD68F3A6081162F

911B0EDC23382C8E6BC4684C759FE429

6FF4D77ED54F50EF36348478D71BA490

B29E3ACDF92D665D2B175C60A70C72AC

4E917F6FBB9F4D722018273B0C764B86

F6695F4B63073F059ABD57DFFA397353

5168C1A87AAE174272FD9993B2365ACA

BA15FE1242D471BCB80803A40C30F9EE

3C7485C07D631EB67486A06C9BA6037A

85728B5295F48905E33FF2833AC7A70B

D78ED2A9268068129266F8B28C97C9BA

287E4DEBE7E1F407ADD481ED67897EEC

D21A691EEFBA72113C4B44389A304466

11