Últimamente he visto muchas webs que reportaban problemas de posts publicados «solos» y problemas de comportamientos extraños en su panel de administración de WordPress. En estos casos e detectado que la causa de esto eran plugins piratas que contienen backdoors.
No todos los plugins y temas pirateados contienen malware pero es muy común que se distribuya malware en este software. Por eso es importante descargarse plugins y temas solo desde fuentes oficiales.
Paginas como thewordpressclub.org suministran plugins «piratas» que han modificado previamente y en los que han incluido un backdoor. Por suerte, google a lo ah marcado como una fuente de malware.
El backdoor que he podido encontrar en varios sitios infectados hace lo siguiente:
- Habilita el acceso remoto a los atacantes
- Permite que los atacantes creen, eliminen y modifiquen contenido
- Aunque se elimine el plugin instalado no se elimina el malware
El plugin o tema contiene 2 ficheros que no pertenecen al plugin original, estos ficheros son:
rms-script-ini.php rms-script-mu-plugin.php
A parte de incluir estos ficheros en el paquete del plugin o tema, realiza varios require_once() en ficheros del tema o plugin, de forma que si eliminas los ficheros también tienes que eliminar estas referencias en el código o saltará error 500 al visitar la web o el panel de administración de WordPress.
Para localizar estos require_once se pueden buscar la siguientes lineas:
require_once('rms-script-ini.php'); rms_remote_manager_init(__FILE__, 'rms-script-mu-plugin.php', false, false);
Al tratar de eliminar por la vía habitual el plugin o tema no eliminamos del todo el malware ya que al instalarlo ha creado el directorio:
./wp-contents/mu-plugins/
Que contiene el siguiente fichero que es una copia del fichero rms-script-mu-plugin.php incluido en el paquete de la instalación descargado:
./wp-contents/mu-plugins/rms_unique_wp_mu_pl_fl_nm.php.
Este ultimo fichero habilita funciones como la inicialización del plugin (backdoor) activando el control remoto registrandolo en managerly.org, el cual hace de centro de control de la botnet (red de hosts / sitios web infectados).
Intenta imitar el funcionamiento de un plugin se vale de los mecanismos de WordPress para guardar valores en base de datos. Las entradas que crea en la tabla wp_options
son las siguientes, tienen como option_name
:
rms_report_done_already rms_extension_names_from_event rms_remote_site_id rms_remote_site_hash rms_remote_connection_pass
Cómo se puede ver en la imagen
Para encontrar estas entradas eliminarlas podemos usar la query:
select * from wp_options where option_name like "rms_%";
Si solo nos aparecen las entradas anteriores podemos eliminar estas entradas con:
delete from wp_options where option_name like "rms_%";
Aquí puedes encontrar más información sobre este malware
En resumen, para eliminar este malware hay que seguir los siguiente pasos:
- Eliminar todos los ficheros PHP que hemos comentado antes, incluido el directorio en wp-content/mu-plugins
- Buscar las dos lineas de código del require() que hace que se ejecute el malware al visitar el wordpress infectado
- Eliminar las entradas de la base de datos
- Hacer logout del panel de administración de WordPress y login para asegurarnos de que todo va bien
- Si tenemos plugins de caché y/o caché en el tema, las vaciamos
- Borramos caché del navegador para evitar problemas añadidos
- Buscamos de nuevo en todos los directorios de WP si existen los ficheros y si existen los eliminamos de nuevo
- Volvemos a buscar si tenemos esos require_once() en el código de nuestro sitio
- Consultamos otra vez la base de datos y verificamos que no existen las entradas anteriores
- Revisamos que no existen ficheros extraños en la raíz de wordpress ni en ninguno de los subdirectorios especialmente en wp-content/uploads y todos los directorios contenidos.
- Tenemos que revisar los posts para verificar que no contienen código extraño y verificamos que no existe ningún post que no hayamos creado
- Verificar que no existen usuarios extraños
- Pasamos un scanner de seguridad como por ejemplo el del plugin Wordfence para verificar que no tenemos otras amenazas