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.
Hace 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 en el informe adjunto.
El 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 en el 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.
- 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.
2. 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 Funciones del malware
de Facebook y estadísticas de los jugadores de “Zynga Poker”,
El autor del malware tienen una gran base de datos con nombres de
supuestamente con la intención de estafar a las víctimas. Israel ha
usuario y contraseñas de Facebook. Al principio, no sabíamos cómo las
sido el país donde la amenaza ha sido más activa.
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á
Introducción programado para iniciar sesión en una cuenta de Facebook y conseguir la
Hace aproximadamente un año, el laboratorio de investigación de ESET siguiente información:
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 1. Estadísticas de Zynga Poker de la cuenta de Facebook en cuestión
“PokerAgent” y características de botnet, ya que el troyano contactaba con 2. Número de métodos de pago (tarjetas de crédito) almacenadas en la
una red de control remoto. cuenta de Zunga Poker.
ESET ha estado detectando diferentes variantes del troyano, denominado
Las estadísticas del usuario en Zinga Poker se consiguen pasando la
genéricamente MSIL/Agent.NKY. Tras el descubrimiento inicial, fuimos
respuesta dela URL http://facebook2.poker.zynga.com/poker/inc/
capaces de encontrar otras variantes del troyano, unas más antiguas y
ajax/profile_popup.php?zid=1:%_FACEBOOK_ID%&signed_request=%_
otras más modernas. También se consiguieron estadísticas de detección,
SIGNATURE% &platform=1.
que revelaron a Israel como el país con mayor actividad del código
malicioso.
Los datos devueltos se asemejan mucho a los mostrados más abajo, y
Hemos llevado a cabo un análisis profundo del código del troyano (tarea tienen diversa información sobre el usuario, como su nombre, género,
fácil, ya que estaba programado con C#, muy fácil de descompilar) e imagen del perfil de la cuenta, clasificación y puntos en Zynga Poker,
iniciamos la monitorización de la botnet. Los resultados se presentan a número de amigos y estadísticas sobre cada mano jugada.
continuación.
2
3. PokerAgent
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=pa
yments§ion=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.
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í.
3
4. 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.
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
El link apuntará a una página web similar a la que aparece en la imagen más
han ido usando diferentes URL a lo largo del tiempo.
abajo.
4
5. PokerAgent
El ataque de un vistazo
Hay 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.
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.
5
6. PokerAgent
Una vez visto esto, todo lo anterior nos lleva a la conclusión de que el En las capturas de pantalla del código
propósito de la botnet es: fuente, podemos observar que el
código es muy largo (Las carpetas
1. Aumentar el tamaño de la base de datos de usuarios y contraseñas de
BizCenter.ControlServiceRef, BizCenter.
Facebook.
PopupServiceRef, y BizCenter.
2. Actualizar la base de datos: compara los datos de los usuarios de Facebook PublishServiceRef están contraídas con
con las estadísticas de Zynga Poker y las tarjetas de crédito almacenadas. muchos más ficheros fuente en ellas).
Solo nos cabe especular acerca de cómo el atacante emplea los datos En el texto siguiente, veremos muchas más
robados. EL código sugiere que el atacante busca usuarios de Facebook con partes interesantes del código, incluyendo
cosas de valor que merezca la pena robar, determinándolo por las estadísticas el mecanismo de comunicación del botnet
de Facebook y los datos de la tarjeta de crédito almacenados en su cuenta de y la implementación de sus funciones,
Facebook. Posteriormente, el cibercriminal puede usar para sí los datos de la Sin entrar en profundidad, las clases
tarjeta de crédito o quizá vender la base de datos a otros delincuentes. donde la función principal del troyano se
ejecuta, son llamadas “Popup” y “Publish”.
La tarea Popup consigue el identificador
Otros detalles técnicos numérico de Facebook como entrada, y
devuelve las estadísticas de Zynga Poker
Las muestras analizadas fueron escritas en C# y así hemos podido
para esa cuenta. La tarea Publish necesita
descompilarlas a su código fuente, que se parece mucho al código escrito por
un nombre de usuario de Facebook, una
el programador. La aplicación PokerAgent está orientada a objetos y basada
contraseña y una URL falsa para entrar
en clases, y aunque no es especialmente avanzado ni es programación a bajo
en la cuenta y comprobar la cantidad
nivel, indica que el autor tiene experiencia previa en programación.
de tarjetas de crédito vinculadas y para
publicar los falsos enlaces en el muro de
Facebook de la víctima.
6
7. PokerAgent
Comunicación con el centro de control GetNextPopupTask
El servidor manda al bot un usuario y contraseña de
Facebook de su propia base de datos robados.
La comunicación con el centro de control está implementada mediante Popup El bot manda las estadísticas del servidor de Zynga
SOAP 1. UpdateUser2 Poker (sexo, puntos y clasificación) del usuario
actual de Facebook.
El código del troyano contiene dos grupos de URL de centros de control Class Command Note
cifrados fuertemente con el algoritmo DES (esto cambia en diferentes
El servidor manda al bot un usuario y contraseña
versiones del troyano): de Facebook, una URL cifrada para el phishing y,
GetNextTask
posiblemente, el texto para la publicación en el
• Una para descargas, como actualizaciones a nuevas versiones, un nuevo muro.
fichero de configuración, etc.
El bot manda un informe al servidor acerca de
UpdateUser1 los métodos de pago asociados a la cuenta de
• Una segunda para comandos, las tareas como conseguir datos de Publish Facebook.
Facebook.
Manda un mensaje de error, usuario y/o contraseña
WrongPassword
de Facebook no válidas.
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 SuccessNotification Manda un mensaje de éxito.
alojados en diferentes dominios. Este método de dos URL añade ErrorNotification Manda un mensaje de error.
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 Ejemplo de respuesta a GetNextTask:
Mensaje inicial enviado por el bot. Se identifica
a sí mismo con la dirección MAC del ordenador
Connect
y la versión del bot. El servidor asigna al bot un
Control identificador de máquina.
Segundo mensaje mandado por el bot. El
IAmAlive servidor contesta con una lista de parámetros de
configuración.
* 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-
7
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.
8. PokerAgent
Funciones relacionadas con Facebook 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
El autor trató de hacer al troyano bastante infalible, lo que tiene sentido ya
continuación. Su uso queda determinado por un fichero de configuración
que quería aprovecharse al máximo de los datos de Facebook robados. El
descargado.
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 primer método para compartir cosas en Facebook emplea http://www.
facebook.com/sharer/sharer.php?u=.
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.
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
9. PokerAgent
Vector de propagación
Antes 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
Gracias a la detección genérica, pudimos conseguir versiones iniciales y
se refiere a la distribución del troyano “PokerAgent”, no hemos tenido
más modernas del troyano. En total encontramos 36 versiones distintas de
la suerte necesaria para pillarle “con las manos en la masa”. Desde
“PokerAgent” con fechas de compilación comprendidas entre septiembre
que empezamos a monitorizar la botnet en marzo de 2012, no siguió
de 2011 y marzo de 2012. Los “hashes” MD5 se pueden encontrar al final del
propagándose activamente.
documento. Por tanto, estábamos viendo cómo el creador del malware
No sabemos, sin embargo, si el troyano se descarga en el sistema por estaba desarrollando activamente su proyecto.
algún otro componente para descargarlo (de los que hemos visto varias
El seguimiento de la botnet reveló que al menos 800 ordenadores habían
versiones). Este componente “downloader” fue visto en la web, en varias
sido infectados con el troyano, y el atacante tenía al menos 16.194 entradas
URL cambiaban dinámicamente) y las víctimas han sido engañadas para
únicas en su base de datos de credenciales de Facebook el 20 de marzo de
descargarlo.
2012.
Por las técnicas que utiliza el troyano, es lógico suponer que el downloader
Estos números no se corresponden exactamente con el número de
también se distribuyó por Facebook, haciendo uso, también, de técnicas
credenciales válidas robadas, ya que puede haber muchas más que
de ingeniería social.
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.
Escala de los ataques y acciones llevadas a
cabo 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
Hemos estado detectando el troyano MSIL/Agent.NKY desde el 3 de
febrero de 2012.
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.
9
10. PokerAgent
- 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
Los ataques se concentran en un solo país. Nuestra telemetría indica que más si se están almacenando los datos de la tarjeta de crédito en cualquier
precisamente el 99% de todas las detecciones de MSIL/Agent.NKY de los aplicación, no solo en Facebook.
productos de seguridad de ESET provienen de Israel.
- Con las redes sociales más populares siendo atacadas pro malware,
En cuanto conseguimos información fidedigna de estas actividades delictivas, spam, phishing y otros propósitos nefastos, es muy recomendable asegurarse
cooperamos tanto con el CERT de Israel como con la policía. Los detalles de la de que estamos protegidos de estos vectores de ataque también. Para
investigación no pueden ser hechos públicos por razones de confidencialidad. mantener la cuenta de Facebook limpia, ESET ha presentado ESET Social
Media Scanner, aplicación gratuita que puedes descargarte desde www.eset.
También hemos avisado a Facebook, y ha llevado a cabo tareas de prevención
es/particulares/social-media-scanner.
para frustrar futuros ataques en las cuentas robadas.
Conclusión
El 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
10
the majority of victims were duped by the phishing scam.