El siguiente post es una traducción de la publicación “Win32/Kankan – Chinese Drama” escrita por Pierre-Marc Bureau y disponible en We Live Security.

En este post se analiza un código malicioso detectado por los productos de ESET como Win32/Kankan. Este malware nos pareció interesante debido a los siguientes motivos:

  • Registra un plugin de Office que no añade ninguna funcionalidad a la suite ofimática, sino para persistir en el sistema.
  • Instala silenciosamente aplicaciones móviles para Android. Esto lo hace cuando se conecta un teléfono inteligente que tenga la opción de USB debugging (Depuración USB, en los sistemas operativos en español) activada al computador infectado.
  • El ejecutable está firmado por una conocida empresa china llamada Xunlei Networking Technologies, que se destaca particularmente por desarrollar uno de los clientes torrent más famosos del mundo.

Primero se analizará el contexto que involucra este código malicioso y se explicará por qué su descubrimiento impactó a tantos usuarios chinos. Luego se realizará un análisis técnico de sus funcionalidades en profundidad y la evidencia que sugiere que Xunlei Networking Technologies está implicada en este caso.

Contexto

Esta historia comienza el pasado junio cuando aparecieron varios reclamos de usuarios chinos que publicaban en foros sobre la aparición de una aplicación sospechosa que estaba firmada por la compañía mencionada antes. Rápidamente el tema se convirtió en noticia de portada de varios sitios chinos.

Para entender este interés mediático, se debe comprender el contexto que para muchos usuarios que no sean chinos, es totalmente desconocido. El principal desarrollo de Xunlei Networking Technologies es Xunlei, un software cuyo propósito es acelerar la descarga de varios tipos de archivos (de forma similar a Orbit Downloader) y que su uso es bastante popular en China.

Para explicar esta popularidad, es necesario mencionar cómo funciona esta herramienta. En simples palabras, Xunlei mantiene una lista de sitios para cada archivo conocido. Cuando el usuario inicia la descarga de alguno de esos ficheros en su navegador o cliente torrent, el programa elige el servidor más rápido para la descarga de dicho archivo. Para implementar este proceso, Xunlei Networking Technologies desarrolló un complejo ecosistema de software que consta de un buscador de archivos compartidos, un cliente torrent multi protocolo y un protocolo peer-to-peer personalizado. Para aquellos interesados en profundizar sobre este tema, es posible consultar la publicación “Measurement Study of Xunlei: Extended Version” escrita por Dhungel y otros autores en 2012.

Como se mencionó previamente, Xunlei es extremadamente popular entre usuarios chinos. Un estudio publicado en 2009 por TorrentFreak posicionó este software como el cliente de torrent más utilizado del mundo con más de 100 millones de nodos ID mientras uTorrent registra un pico de 92 millones de nodos ID. Por otro lado, este software no es utilizado en ninguna otra parte del mundo y su sitio web tampoco ha sido traducido a otros idiomas. Cabe destacar que la herramienta ha sido traducida solo por terceros de forma no oficial. En base a lo anterior se puede especular que esto obedece a una estrategia intencionada por parte de la empresa involucrada.

Análisis

El contexto de esta historia explica la consternación entre los usuarios chinos cuando algunos descubrieron un programa malicioso firmado digitalmente por Xunlei Networking Technologies. El certificado se observa en la siguiente captura:

Certificado KanKan

Cuando se analice este programa en el presente post el usuario podrá notar por qué lo encontramos sospechoso.

Dropper

El programa viene como un instalador de Windows que suele llamarse INPEnhSetup.exe y que está basado en Nullsoft Scriptable Install System. En términos sencillos, el instalador es un archivo asociado a un script de instalación. En este caso, la instalación comienza contactando a un dominio que se encuentra escrito dentro del código y en donde se reporta la instalación del programa. Luego, copia tres archivos en el sistema: INPEn.dll, INPEnhUD.exe y INPEnhSvc.exe. Posteriormente, la librería INPEn.dll es cargada en memoria y su función DllRegisterServer es llamada. Finalmente, el instalador vuelve a contactar al dominio citado para reportar la finalización del proceso de instalación.

Plugin de Office

INPEn.dll comienza instalando una copia de sí mismo llamada esta vez INPEnh.dll y que actúa como un plugin para Word, Excel y PowerPoint. Para lograr este objetivo, crea una llave en el registro de Windows que provoca que esta DLL sea cargada como plugin. Algunas de estas llaves pueden ser observadas en la siguiente captura:

Llaves de registro

  • Carga el archivo conf.kklm.n0808.com/tools.ini. Parte del contenido es el siguiente:

Archivo de configuración

Este fichero contiene varios parámetros como por ejemplo, una lista de herramientas de seguridad cifradas en base64.

  • Comprueba si se está ejecutando alguna de las herramientas mencionadas. De ser así, el plugin de Office termina el proceso. La lista decodificada es la siguiente:
    taskmgr.exe|procexp.exe|procmon.exe|devenv.exe|windbg.exe|filemon.exe| ollyice.exe|ollydbg.exe|processspy.exe|spyxx.exe|cv.exe|wireshark.exe

Cabe destacar que dicha lista solo contiene herramientas como el Administrador de Tareas de Windows, OllyDebugger y una aplicación de manejo de Wi-Fi y no soluciones de seguridad. Se puede inferir que esta funcionalidad está destinada a evitar el análisis de la muestra.

  • Comprueba si existe una conexión a Internet contactando a dominios chinos como baidu.com y qq.com. Cuando no existe conexión, se mantiene buscando una constantemente.

Si todos los puntos son ejecutados, el plugin envía información a StatServer como la versión de Windows y el nombre de la aplicación (por ejemplo, WINWORD.exe). Luego, ejecuta el archivo INPEnhUD.exe.

  • Finalmente, entra en un bucle constante de administración de tareas (procesos). Este procedimiento es realizado por otra pieza de este puzle.

Actualizador

La ejecución la continúa INPEnhUD.exe que puede ser descrito como un actualizador. Particularmente, consulta la URL update.kklm.n0808.com/officeaddinupdate.xml. En ese momento, el contenido del archivo era el siguiente:

Contenido del archivo
Este fichero XML incluye una lista de direcciones y hashes MD5. Luego, el actualizador descarga cada archivo, verifica el MD5, y si corresponde, lo ejecuta. Tal como se aprecia en la captura anterior, la URL apunta a un archivo llamado Uninstall.exe. La descripción de tal componente será explicada en este post más adelante.

Servicio

INPEnhSvc.exe, el que será nombrado como “el servicio”, es el núcleo de este programa compuesto por tres componentes. Después de realizar la misma prueba que el plugin de Office para determinar la ejecución de herramientas de seguridad, el servicio obtiene un archivo de configuración XML que contiene varios comandos, cada uno con cierto número de parámetros. Los comandos pueden ser divididos en dos grupos:

  • Comandos locales: scanred, scandesktop y scanfavorites.
  • Comandos “externos”: installpcapp, installphoneapp, setdesktopshortcut, addfavorites y setiestartpage.

Como el nombre lo implica, los comandos locales están implementados en el mismo servicio: scanred busca llaves de registro específicas y reporta su presencia o ausencia al servidor. Scandesktop y scanfavorites buscan archivos .lnk (accesos directos) y .url (archivos de enlace de red) en la carpeta escritorio y favoritos respectivamente. Por otro lado, cuando un comando externo es recibido, el programa se comunica con el plugin de Office que es el responsable de ejecutar dicha acción. Esta comunicación pasa mediante un archivo de configuración llamado tasklist.ini que contiene tres secciones diferentes: Doing, Done y DoneByDate. También, ambos binarios contienen una lista única de identificadores (GUIDs), siendo cada uno procesado por una tarea. Precisamente, la comunicación ocurre de la siguiente manera:

  • Cuando se recibe un comando externo, el servicio simplemente escribe la GUID asociada en la sección Doing con sus parámetros (URLs, etc.)
  • Durante el bucle de administración de tareas, el plugin de Office lee el GUID, luego comprueba si el GUID no está presente en las secciones Done y DoneByDate del archivo tasklist.ini. Si el GUID solo está en la sección Doing, se ejecuta la lógica de programa asociada.
  • Una vez finalizado, el plugin de Office escribe el GUID en la sección Done. Asimismo, las GUID para los comandos installpcap e installphoneapp también son escritas en la sección DoneByDate. Esto se debe a que probablemente los comandos son ejecutados regularmente.

La arquitectura completa se resume a continuación. Los rectángulos azules representan procesos y los amarillos archivos:

Comunicación de KanKan

El nombre de los comandos externos se explican por sí solos y no requieren mayor explicación exceptuando el comando installphoneapp.

Aplicaciones para móviles

Como es de suponer, el comando installphoneapp provoca que el plugin descargue una aplicación para Android (archivos .APK) que luego son instalados a cualquier dispositivo Android que sea conectado al computador. Para hacer esto, el servicio descarga el binario Android Debug Bridge (ADB) – que es parte de Android SDK – más las librerías que necesita. Posteriormente, el plugin de Office descarga el APK en concordancia a las URL especificadas en el archivo XML de comandos. Finalmente, lista los dispositivos Android conectados al computador  utilizando el comando de ADB “devices” y luego instala cada APK utilizando la sentencia “install”.

De todos modos, la instalación solo funcionará si el dispositivo Android tiene la opción USB debugging activada dentro del menú de opciones del teléfono. Oficialmente esta característica está destinada para propósitos de desarrollo, sin embargo, también es necesaria para el funcionamiento de algunas aplicaciones y por la mayoría de técnicas de root o para instalar ROMs personalizadas. Cabe destacar que la instalación mediante esta técnica no muestra nada en el dispositivo del usuario, es decir, es un proceso completamente transparente para la persona.

Durante la investigación, las aplicaciones de Android no pudieron ser descargadas, no obstante, se pudo conseguir cuatro de ellas en algunos foros chinos de seguridad. A continuación se muestra la captura de esas aplicaciones para móviles:

Captura de aplicaciones para móviles

De acuerdo al análisis, todas esas aplicaciones son de utilidad para el usuario. Tres de estas son repositorios de Android que le permiten al usuario descargar otros programas. No se pudo encontrar ninguna característica específicamente maliciosa. Lo que sí llama la atención es que el código está bastante ofuscado. La última aplicación, todavía disponible en Google Play al momento de la escritura de este post, le permite al usuario realizar llamadas a una tarifa preferencial. De todos modos, este programa exhibe un comportamiento sospechoso al contactar a diversas direcciones conocidas por distribuir Adware para Android. Esta aplicación es detectada por los productos de ESET como una variante de Android/SMSreg.BT, que corresponde a un Programa Potencialmente Indeseable (PUA). En términos generales, el motivo detrás de la instalación de estas aplicaciones para móviles es desconocido.

La confesión de Xunlei Networking Technologies

La última pregunta que se debe responder es qué rol tuvo Xunlei Networking Technologies en toda esta historia. No solo el ejecutable está firmado con el certificado de la compañía, sino que el subdominio kankan.com corresponde al servicio de video bajo demanda que ofrece dicha empresa. En agosto pasado y frente a la molestia de varios usuarios, la compañía admitió oficialmente durante una conferencia de prensa, que algunos de sus empleados utilizaron los recursos de la empresa para desarrollar y distribuir el programa. La compañía afirmó que el programa fue creado por una subdivisión sin la autorización correspondiente. Asimismo, se afirma que las cinco personas responsables fueron despedidas y que se pidieron disculpas públicas.

Por otra parte, el archivo uninstaller – firmado por la misma compañía – ha sido provisto a partir de comienzos de agosto. Cualquier computador infectado descargará este archivo gracias al actualizador. De acuerdo a nuestros análisis, la desinstalación funciona correctamente removiendo todos los componentes del programa. El final de la propagación de Kankan puede ser verificado contrastando los números de archivos detectados por ESET durante agosto y septiembre:

Estadísticas de detección
Se puede observar que la propagación del programa ha decrecido considerablemente luego del pico registrado el 8 de agosto (el desinstalador fue firmado el 9 de agosto). Finalmente, la distribución geográfica de las infecciones puede ser obtenida gracias al sistema de ESET Virus Radar:

Distribución geográfica

Sin ninguna sorpresa, China ha sido el único país realmente afectado por este programa.

Conclusión

El uso de un plugin falso para Office como forma de obtener persistencia, la habilidad de instalar aplicaciones para Android, y las capacidades de backdoor, confirman la validez de la preocupación mostrada por usuarios chinos y es el motivo de que ESET detecte este programa malicioso como Win32/Kankan. Todavía quedan preguntas abiertas como el vector original de propagación y el motivo para instalar aplicaciones para Android. Finalmente, determinar con exactitud el grado de implicancia de Xunlei Networking Technologies en todo este caso es difícil de comprobar. Como nota al margen recordamos que hasta donde sabemos, ningún otro sitio que no sea chino, ha mencionado esta historia.

Agradecimientos

Gracias a Jean-Ian Boutin, Sieng Chye Oh y Alexis Dorais-Joncas por la ayuda durante el análisis de este código malicioso.

Traducido y adaptado por André Goujon
Especialista de Awareness & Research