Troyano SMS encuentra forma de evadir CAPTCHA

Contenidos

    A finales del año pasado nos topamos con el troyano SMS Trojan-SMS.AndroidOS.Podec, que utilizaba un poderoso sistema legítimo de protección contra el análisis y detección antivirus. Después de desactivar el sistema de protección, lo que vimos fue un pequeño troyano SMS, la mayoría de cuyas funciones estaban en la etapa de perfeccionamiento final. Pero pocodespués, a principios de 2015, logramos capturar una versión definitiva de Trojan-SMS.AndroidOS.Podec.

    El troyano perfeccionado resultó muy interesante: tenía funciones para enviar mensajes a números cortos de pago usando mecanismos para evadir el sistema Advice of Charge (que notifica al usuario sobre el coste del servicio y le pide confirmación para hacer el pago) y para suscribir a la víctima a servicios de pago, este último capaz de evadir el sistema CAPTCHA. Hasta este momento, Kaspersky Lab no había registrado este tipo de funciones en ningún otro troyano.

    Propagación

    En el presente artículo trataremos de la versión 1.23 (según el análisis del código) de Trojan-SMS.AndroidOS.Podec, que tienen la siguiente suma hash:

    72ADCF52448B2F7BC8CADA8AF8657EEB
    0D5708158B8782F115670BD51833AC5C

    Esta versión del troyano está difundida en Rusia y países vecinos.

    País Número de intentos de infectar usuarios únicos
    Rusia 3666
    Kazajistán 339
    Ucrania 305
    Bielorrusia 70
    Kirguistán 23

    Tendencias de la infección:

    podec_en_1

    Número de intentos de infectar usuarios únicos

    Fuentes de infección

    A juzgar por nuestra estadística, recopilada mediante Kaspersky Security Network, las principales fuentes de propagación de la versión que es objeto de nuestro estudio son diferentes dominios con nombres llamativos (Apk-downlad3.ru, minergamevip.com, etc.), y los servidores de la popular red social Vkontakte, usados para almacenar contenidos de los usuarios.

    podec_en_2

    Distribución de las fuentes de infección de ficheros

    El porcentaje de servidores de la red social es mayor, pero por desgracia, el servicio de almacenamiento de ficheros en esta red es anónimo y es imposible determinar la ruta de aparición del malware. Pero nuestra posterior investigación estableció que en esta red existe una serie de comunidades que propagan Trojan-SMS.AndroidOS.Podec:

    • http://vk.com/vzlomannye_igry_dlya_android
    • http://vk.com/skachat_minecraft_0_9_0_android
    • http://vk.com/minecraft_pe_0_9
    • http://vk.com/vzlom_igry_android_mody
    • http://vk.com/igry_android_cheats
    • http://vk.com/android_mody_apk
    • http://vk.com/novye_igry_na_android
    • http://vk.com/skachat_hill_climb_racing_bpan
    • http://vk.com/na_android_igry

    Todos los grupos de esta lista están repletos de contenidos en esencia similares: imágenes, enlaces y mensajes.

    podec_en_3

    El tema de cada grupo está dedicado, como regla, a un juego hackeado en concreto o a conjuntos de juegos hackeados, ya que los delincuentes informáticos cuentan con capturar la atención de las potenciales víctimas interesadas en usar contenidos de pago, pero sin pagar.

    Casi todos los mensajes que aparecen en el muro del grupo son enlaces a sitios que supuestamente contienen juegos y aplicaciones para la plataforma Android. Lo mismo sucede con la sección "Enlaces". En realidad, el único objetivo para crear estos sitios es propagar diferentes versiones de Trojan-SMS.AndroidOS.Podec.

    podec_en_4

    Ocho grupos de la red social que tienen un diseño gráfico similar

    La forma de conducir los grupos y su diseño gráfico (por ejemplo, el uso de palabras clave en lugar de descripciones, la abundancia de frases generales propias de los bots), y la presencia de enlaces a sitios falso, la mayoría de los cuales lucen como copias exactas, permite sacar la conclusión de que los responsables de la propagación del malware son especialistas en optimización "negra" de búsqueda (SEO, Search Engine Optimization). Los métodos que acabamos de enumerar les permiten poner los recursos web maliciosos (sitios y grupos) en los primeros puestos de los resultados de búsqueda en los sistemas de búsqueda, y de esta manera hacer que lleguen más visitas.

    El administrador de todos los grupos-clones es el usuario de Vkontakte titular del ID “kminetti”. En su página se publicita los grupos indicados más arriba. Su cuenta funciona desde el 12 de octubre de 2011 y desde 2012 en su muro empezó a poner enlaces y sitios de grupos que propagan aplicaciones maliciosas para plataformas móviles.

    podec_en_5

    Ejemplo de posts del administrador de los grupos maliciosos

    Esta cuenta se usaba antes como un bot que ponía enlaces a recursos web para incrementar su índice de citas.

    podec_en_6

    Ejemplo de posts de los administradores de los grupos, dirigidos a incrementar el índice de citas de recursos de terceros

    De todo lo expuesto podemos concluir que el principal canal de propagación de Trojan-SMS.AndroidOS.Podec es la red social Vkontakte.

    Esquema de la infección

    El ejemplar del troyano móvil capturado por Kaspersky Lab viene disfrazado como la popular aplicación Minecraft Pocket Edition. El tamaño del fichero es de 688 kilobytes, lo que es una ventaja desde el punto de vista de los inexpertos usuarios de Internet que tienen un canal lento o caro. El tamaño de la aplicación oficial es de 10 a 13 megabytes.

    Después de iniciarse, la aplicación pide privilegios de administrador del dispositivo. El objetivo de este paso es evitar que lo elimine el usuario o sus programas de protección antivirus. Si el usuario se niega a otorgar privilegios de administrador, el troyano repite su solicitud hasta que obtiene lo que quiere. Y entonces se hace prácticamente imposible trabajar con el dispositivo.

    podec_en_7

    Solicitud de privilegios de administrador

    Después de que Trojan-SMS.AndroidOS.Podec obtiene el acceso privilegiado, descarga (desde un tercer sitio) la aplicación legítima Minecraft y la instala en la tarjeta SD. Este comportamiento se establece en el fichero de configuración descargado junto con el troyano. En este mismo fichero se indica el enlace para descargar el fichero APK legítimo. Al mismo tiempo, el fichero de configuración puede no contener el enlace a la aplicación y en este caso el troyano simplemente se hace invisible ante el usuario después de obtener los privilegios.

    podec_en_8

    Parte del fichero de configuración con el enlace al Minecraft legítimo

    Después, el troyano borra su acceso rápido de la lista de aplicaciones y pone en su lugar el de la verdadera aplicación. Pero las huellas no evidentes del troyano quedan en la lista de aplicaciones instaladas y la de los administradores del dispositivo:

    podec_en_9

    El botón de eliminación de la aplicación maliciosa está desactivado y el intento de retirarle los privilegios termina con un comportamiento muy extraño del dispositivo: la pantalla se bloquea y el dispositivo se apaga por cierto tiempo. Después de encender la pantalla, el dispositivo muestra el menú de configuración y no hay nada que indique que hubo un intento reciente de quitar los privilegios de administrador.

    Protección contra el análisis antivirus

    La confirmación de la seriedad con que actuaron los delincuentes informáticos al desarrollar Trojan-SMS.AndroidOS.Podec es que usaron técnicas de protección contra el análisis antivirus. Aparte de agregar clases basura y enmarañar el código, los delincuentes usaron un protector caro y legítimo, que dificulta mucho obtener el código fuente de la aplicación para Android. Este protector brinda medios de control de integridad del código, oculta las llamadas de todos los métodos y las manipulaciones con los campos de clase, además de cifrar todas las líneas.

    He aquí un ejemplo del código protegido:

    podec_en_10

    Este es el mismo código después de quitar la protección:

    podec_en_11

    Administración del troyano

    El comportamiento de Trojan-SMS.AndroidOS.Podec se controla desde servidores de administración. Se usa un esquema donde el troyano envía solicitudes por el protocolo HTTP al servidor y espera mensajes SMS con instrucciones que controlen su comportamiento. Trojan-SMS.AndroidOS.Podec usa una lista principal de nombres de dominio y una lista adicional. La elección de un centro de administración se hace usando un algoritmo aleatorio. Si el servidor principal no da respuesta durante tres días, recurre a la lista adicional de nombres de dominio. De esta manera se realiza el mecanismo de adaptación con los servidores de administración, que permite evadir el posible bloqueo de nombres de dominio.

    Los nombres de dominio de los servidores de administración y todo el tráfico (tanto HTTP como SMS) se cifran con el algoritmo AES en el modo CBC/NoPadding, con una clave de 128 bits. La clave de cifrado y el vector de inicialización se encuentran al principio en el fichero fXUt474y1mSeuULsg.kEaS (el nombre de este fichero se diferencia de versión en versión) ubicado en la carpeta assets de la aplicación original. Una gran parte del fichero es basura. La informaciónš útil está contenida entre etiquetas, por ejemplo [a]línea[/a].

    podec_en_12

    En las líneas ubicadas entre etiquetas están los parámetros necesarios de cifrado (clave y vector), que también vienen cifrados. Más adelante se descifran mediante el sencillo intercambio de unas sublíneas por otras.

    podec_en_13

    Las instrucciones descifradas son un documento XML cuyas etiquetas representan determinada instrucción y el contenido de las etiquetas son sus parámetros. Conjunto de posibilidades de Trojan-SMS.AndroidOS.Podec realizadas mediante instrucciones:

    1. Recopilación de información sobre el dispositivo (operador, IMEI, número de teléfono, idioma de interfaz, país y ciudad, etc.).
    2. Obtención de la lista de aplicaciones instaladas.
    3. Obtención de información sobre el USSD.
    4. Envío de SMS.
    5. Instalación de filtro para los mensajes entrantes.
    6. Instalación de filtros para las llamadas entrantes y salientes.
    7. Muestra publicidad al usuario (notificación aparte, abre páginas, diálogos y otros tipos de contenido publicitario).
    8. Borra determinados mensajes.
    9. Borra determinadas entradas del registro de llamadas.
    10. Carga en el servidor de los delincuentes el código HTML de la página que ellos indiquen.
    11. Realiza ataques DDoS, hace aumentar las indicaciones del contador de visitas de los sitios.
    12. Suscribe al usuario a contenidos de pago.
    13. Se actualiza a sí mismo.
    14. Realiza llamadas salientes.
    15. Envía al centro de administración los mensajes entrantes según las condiciones establecidas por el mismo.
    16. Borra las aplicaciones que el centro de administración indique.

    Incluso durante un análisis rápido del código fuente del malware nos llama la atención la abundancia de funciones para el trabajo con HTML y HTTP. Además de la funcionalidad típica para esta clase de troyanos (envío e intercepción de mensajes de texto, posibilidad de hacer llamadas y manipular los registros de SMS y llamadas) en Trojan-SMS.AndroidOS.Podec hay funciones de hacer visitas configuradas a páginas web y enviar sus códigos al servidor de los delincuentes. Pero la peculiaridad clave del troyano es la función de reconocimiento óptico de imágenes CAPTCHA.

    Abajo presentamos el esquema de funcionamiento de Trojan-SMS.AndroidOS.Podec.

    podec_en_14

    De esta manera, las funciones de interacción con los recursos web es la fuente de dos tipos de amenaza:

    1. El troyano contiene funciones que permiten ejecutar un ataque HTTP Flood DDoS básico. Las líneas del fichero de configuración que responden de esta opción tienen el siguiente aspecto:
    2. podec_code_1

      El enlace obtenido se envía para su descarga, se llama la función sleep() con el parámetro “seconds”, el proceso se repite las veces indicadas en el parámetro “limit”.

      podec_en_15

      Gracias a que el esquema usado por los delincuentes permite configurar la frecuencia y cantidad de solicitudes, esta función puede usarse no sólo para lanzar ataques DDoS. En particular, se la puede usar para incrementar los contadores de visitas, con lo que se generan ganancias por la visualización de publicidad y los programas de afiliados.

    3. Una de las funciones más peligrosas de Trojan-SMS.AndroidOS.Podec es que usa reglas configuradas de visitas a páginas web que pueden hacer un reconocimiento óptico de sus CAPTCHA. Esto permite suscribir de forma subrepticia al usuario del dispositivo a servicios caros. Esta es una peculiaridad del troyano que merece un análisis más detallado.

    Suscripciones de pago

    Existen dos modelos principales para realizar suscripciones a contenidos en recursos web:

    • Seudosuscripción. Para usar este modelo, el usuario debe entrar al recurso web e ingresar su número de teléfono. A continuación, le llega un mensaje de texto que propone pagar el servicio enviando un mensaje con cualquier texto. Una vez enviado el mensaje, se descuenta de la cuenta del abonado una suma que depende de las tarifas de cada operador de telefonía móvil en concreto. Estos mensaje llegan con cierta periodicidad y cada vez el usuario debe tomar la decisión de enviar (o no) un mensaje de respuesta. Esta es la razón por la que este modelo se llama "seudosuscripción".
    • Suscripción MT. En este caso el usuario ingresa el número de su teléfono en el recurso web y espera un mensaje SMS con un código de confirmación. Después, debe ingresar este código en el sitio del operador para expresar su acuerdo con las condiciones de la suscripción. Más adelante, el operador descontará periódicamente de la cuenta del abonado la suma indicada en el acuerdo de suscripción. En el sector ruso de Internet hay una serie de programas de afiliados que ofrecen servicios de agregación de estos tipos de pagos. Es decir, al crearse un servicio desde donde es posible suscribirse a un contenido de pago, los delincuentes no tienen que entrar en contacto directo con los operadores de telefonía móvil, porque de este trabajo se ocupan los programas de afiliados. Es cierto que con esto los creadores del servicio pierden una parte de la ganancia (un promedio de 40-50%), pero aumenta el anonimato de sus transacciones financieras.

    La suscripción a contenidos de pago mediante el troyano le causa pérdidas notorias al usuario. En el caso de las seudosuscripciones el coste de un mensaje de respuesta puede varias de medio dólar a diez dólares. Si se trata de suscripciones MT, el coste en cada caso en particular lo acuerda el programa de afiliados directamente con el operador de telefonía móvil.

    Los factores más peligrosos son que los cobros a la cuenta son ocultos y periódicos. Si el usuario está suscrito a varias fuentes de "contenido", puede pasar mucho tiempo antes de que determine adónde va el dinero de su cuenta móvil.

    Ejemplo de funcionamiento del troyano

    Nuestra compañía logró interceptar las interacciones de Trojan-SMS.AndroidOS.Podec con su centro de administración y durante una sola sesión usó el siguiente esquema:

    • Hacía una visita al sitio RuMaximum.com, que ofrece servicios de verificación de usuarios. Para obtener los resultados del test, el usuario debe suscribirse a los servicios del sitio.
    • podec_en_16

    • Con la ayuda de una solicitud GET, el troyano finge las respuestas a las preguntas y al final del test sigue un enlace similar a http://rumaximum.com/result.php?test=0&reply[1]=0&reply[2]=0&reply[3]=0&reply[4] =0&reply[5]=0&reply[6]=0&reply[7]=0&reply[8]=0&reply[9]=0&reply[10]=0. En este enlace se encuentra el siguiente documento web:
    • podec_en_17

    • Después de ingresar el número de teléfono se genera una página única del operador de telefonía móvil, donde hay un campo de texto con una imagen CAPTCHA y otro para ingresar el código de confirmación enviado al teléfono por SMS. El troyano rellena ambos campos, confirmando así la suscripción. Después se remite al usuario, mediante el sistema de comercio móvil totmoney.ru a los resultados del test.

    podec_en_18

    El troyano ejecuta todas estas acciones de forma automática, usando la configuración enviada desde el servidor de los delincuentes informáticos. Pero la víctima no ve nada de lo que está sucediendo y no sospecha que en su dispositivo se han ejecutado tantas actividades.

    Funciones de suscripción de pago

    El campo de la configuración XML enviada por los delincuentes que responde de la operación de suscripción del usuario al contenido de pago luce así:

    podec_code_2

    Analicemos el campo de la configuración con más detalle:

    1. verify es un masivo de líneas con el divisor “-S-“. Contiene la información necesaria para recibir el valor del CAPTCHA.
    2. -verify[0]. Si este campo no es igual a “null”, es necesario el reconocimiento óptico del CAPTCHA, en caso contrario, se sigue el procesamiento. Puede contener un fichero de imagen cifrado con base64 (para el procesamiento de imágenes estáticas y CAPTCHA) o un identificador de la imagen;
      – verify[1], la llave del servicio http://antigate.com", usado para hacer el reconocimiento óptico del CAPTCHA necesario para autorizarse en el servicio;
      -š verify[2], el largo mínimo de la imagen, se usa para objetivos internos;
      -š verify[3], el largo máximo de la imagen, se usa para objetivos internos;
      – verify[4], el idioma al que pertenecen los caracteres de la imagen.

    3. service, el servicio al que se pretende acceder;
    4. search es un masivo de líneas con el divisor “-S-“. Se usa para buscar sublíneas en el enlace visitado y tomar decisiones sobre el método de suscripción basadas en los resultados de la búsqueda;
    5. images, en esta versión no se utiliza;
    6. actions es un masivo de líneas con el divisor “-S-“. Contiene los enlaces finales a los que va el servicio para iniciar y concluir el proceso de suscripción;
    7. type, el tipo de solicitud;
    8. source, envía el código fuente de la página al servidor de los delincuentes informáticos;
    9. domain, en caso de que sea necesario enviar el código fuente, indica al servidor de administración adónde se hace el envío.

    Para obtener el código HTML de las páginas y enviarlas al servidor de los delincuentes se usa la interfaz Observable, a la cual se envía,š mediante JavaScript, la información necesaria al cargarse la página.

    podec_en_19

    Es necesario obtener el código fuente de las páginas para que los delincuentes analicen su estructura y elaboren la configuración necesaria del módulo de suscripciones de pago. Además, el tener estos códigos fuente permite mostrar a la víctima la página en su diseño original. Como resultado, a los delincuentes les es más simple analizar la página para crear las instrucciones de suscripción.

    La función de creación de suscripciones de pago está en la clase CustomWebView, que se hereda de la clase WebViewClient. En ella se redefine el método onLoadResource, usado para recibir los enlaces a la imagen y onPageFinished, usado para el postproceso del recurso descargado. El postproceso está basado en el análisis de la configuración y la consiguiente visita de los enlaces mediante la función loadUrl. Si es necesario, se llama también al procesador del CAPTCHA.

    Evasión del CAPTCHA

    Los diferentes programas de afiliados tienen diversas exigencias respecto al diseño del recurso web donde se ubicarán los mecanismos de realización de la suscripción. Por ejemplo, existe la exigencia de poner un módulo CAPTCHA para evitar que la solicitud se realice de forma automática. En la mayoría de los casos el programa de afiliados redirige el navegador al sitio del operador, donde al usuario se le pide confirmar su solicitud a la suscripción ingresando el CAPTCHA. Como ya hemos dicho más arriba, la característica que diferencia a Trojan-SMS.AndroidOS.Podec es que es capaz de evadir la protección CAPTCHA contra robots.

    El procesador de CAPTCHA interactúa con el servicio Antigate.com, que proporciona servicios de reconocimiento manual del texto de las imágenes. Esto es lo que dice el propio servicio:

    “Antigate.com es un servicio de reconocimiento manual de textos en imágenes. Funciona de una forma fácil: su aplicación envía una imagen a nuestro sistema y en unos segundos recibe el texto”.

    Fuente: antigate.com

    En otras palabras, el texto de la imagen CAPTCHA lo reconoce un empleado del servicio. Según los datos de antigate.com, la mayoría de sus empleados está en la India.

    podec_en_20

    Fuente: antigate.com

    Distribución de los empleados de antigate.com por países

    La comunicación del troyano con antigate.com se realiza mediante el uso del API HTML del servicio: con la ayuda de una solicitud POST se envía la imagen en la cual es necesario reconocer el texto, después mediante solicitudes GET se realiza el monitoreo de los resultados del reconocimiento. El resultado obtenido (si se obtuvo en un tiempo razonable, claro) se agrega al enlace del campo “actions” de la configuración recibida y se las visita mediante la función loadUrl().

    podec_en_21

    Si el mecanismo de suscripción pide una confirmación por SMS, el troyano usa el filtro instalado por los delincuentes para buscar el mensaje que contiene el código de confirmación y con la ayuda de expresiones regulares obtiene el código.

    podec_en_22

    Esquema general de la suscripción

    podec_sp_23

    Esquema general de la suscripción de pago

    En general, el módulo de realización de suscripciones de pago consiste en el Observer de SubscribeService que “escucha” los eventos de escritura en la interfaz HTMLOUT y al recibir los datos (la imagen descargada) los envía al servidor de los delincuentes mediante la clase SubscribeService, que hereda la clase AsyncTask. Además, SubscribeService recibe en su entrada los parámetros de la instrucción del despachador, inicializa CustomWebView e inicia el procesamiento de la tarea mediante SubscribeTask. SubscribeTask lanza CustomWebView, donde ocurre el procesamiento de los parámetros de entrada y se toma la decisión sobre el mecanismo de realización de la suscripción. En caso de necesidad, se llama CaptchaProcessor, que responde de la interacción con el servicio de reconocimiento óptico de texto y el procesamiento de las solicitudes que necesitan la introducción de un código de confirmación y de los caracteres dibujados en el CAPTCHA.

    Conclusión

    Basándonos en los ejemplares de Trojan-SMS.AndroidOS.Podec capturados anteriormente podemos concluir que el troyano está en un periodo de elaboración activa. El código se está sometiendo a una refactorización, aparecen nuevas posibilidades, se está reprocesando la arquitectura de los módulos.

    Consideramos que este troyano lo están desarrollando un grupo de programadores para Android en estrecha colaboración con especialistas en Black SEO, especializados en estafas, monetización ilegal y generación de tráfico. De lo que dan fe:

    1. el esquema de propagación en la red Vkontakte mediante el uso de mecanismos de ingeniería social;
    2. el uso de un protector comercial;
    3. el complejo esquema de robarle dinero a la víctima, que incluye la evasión del CAPTCHA.

    En el código de la versión analizada de Trojan-SMS.AndroidOS.Podec se encuentran funciones que todavía no se usan, pero que revelan los planes futuros de los escritores de virus. Por ejemplo, hay una función adicional isRooted(), que permite verificar si el usuario del dispositivo ha recibido privilegios de superusuario. Esta función no se usa en el código principal del troyano, lo que permite suponer que en las nuevas versiones aparecerá una función relacionada con el uso de privilegios de superusuario.

    Los usuarios de los productos de Kaspersky Lab ya están protegidos contra todas las modificaciones existentes del troyano Trojan-SMS.AndroidOS.Podec. De todos modos, recomendamos a los usuarios que instalen aplicaciones sólo de las tiendas oficiales, por ejemplo, Google Play. En ningún caso hay que hacer caso a las provocaciones de los escritores de virus para descargar aplicaciones supuestamente gratuitas. El riesgo financiero por la descarga y ejecución del troyano es mucho mayor que el precio del software legítimo.

    Kaspersky Lab agradece a la compañía Mobilnye TeleSistemy, en particular a los expertos del control del tráfico de afiliados, por su ayuda durante la redacción de este artículo.

    Publicaciones relacionadas

    Deja un comentario

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *