Sito hackerato? Guida WordPress: pulire, riparare e risolvere problemi

Gennaio 7, 2019ServerSicurezzaWordpress0

sito-hackerato-guida-wordpress-pulire-riparare-e-risolvere-problemi-copertina-background-3-1200x675.jpg

Sito hackerato? Guida WordPress: pulire, riparare e risolvere problemi

Recentemente il tema della sicurezza informatica ha guadagnato le prime pagine delle più note testate giornalistiche a causa della più infelice delle occasioni. Ovvero quella in cui ci si rende conto che l’attacco è già andato a buon fine (per l’attaccante) e qualcosa di arcano e misterioso sta accadendo al nostro caro sito WordPress, che pare impazzito ed inizia a fare le bizze.

Sito hackerato?

A centinaia hanno riportato di statistiche in cui url inesistenti hanno iniziato ad essere additate come tentativo di Phishing o Malware dai più famosi software di analisi del traffico, di contenuti e pagine modificati o di utenti inesistenti celati all’interno della propria area privata, il nostro caro e privato wp-admin.

La lista può purtroppo proseguire a lungo, confermando inesorabilmente la spada di Damocle che incombe sui nostri poveri web server.
Mi sono imbattuto in vari casi, di recente, in cui la causa dell’infezione è stato il famoso attacco distribuito basato su di una vulnerabilità 0-day (pertanto non nota e quindi mooolto pericolosa) del plugin WP GDPR Compliance per il nostro caro WordPress, il cui compito -appunto- è quello di assolvere automaticamente ed in modo assistito all’adeguamento previsto dal decreto GDPR attivo dallo scorso maggio. Ho voluto quindi racchiudere in una guida consigli, procedure e best practices per pulire, riparare e risolvere problemi di un sito hackerato con WordPress a bordo:

Diagnostica

Vietato farsi prendere dall’ansia, che potrebbe portare a cancellare files a casaccio peggiorando la situazione della nostra installazione di WordPress già disastrata. A questo punto abbiamo già rotto le uova nel nostro paniere, pertanto la prima cosa da fare è un backup manuale, in modo da analizzare l’infezione in modo completo.

Molti credono di risolvere ripristinando un backup: purtroppo così facendo colpiamo l’infezione, che viene rimossa, ma non riusciamo a riparare la falla che ha permesso all’hacker di entrare, ritornando quindi ad uno stadio di vulnerabilità iniziale.

Anche cambiare subito la password senza aver analizzato quanto sta succedendo potrebbe mettere sull’attenti l’hacker, che a questo punto dovrebbe cambiare strategia per mantenere l’accesso all’amministrazione del nostro povero WordPress infetto.

Cercare le tracce dell’attacco ed individuarlo

Quella che dobbiamo compiere è un’indagine forense in tutto e per tutto: avremo bisogno di isolare il problema e di analizzarlo prima di rimuoverlo e risolverlo definitivamente.
È quantomeno consigliabile effettuare un backup completo manuale del sito infettato, in modo da poterlo analizzare con più calma in locale.

Search Console e Google

Google offre sul proprio sito una sezione dedicata all’assistenza webmaster per siti infetti (clicca qui per visitarla)

Vediamo come, nell’immagine, Google per prima ci indichi un sito potenzialmente compromesso, segnalandolo affinché ci rendiamo conto che visitarlo potrebbe comportare rischi ed arrecare danni al nostro computer. Qualora utilizzaste Chrome come browser, invece, il sito viene immediatamente segnalato come pericoloso, con tanto di indicatore rosso.

Non solo: se avete la gestione di Google Search Console riceverete un messaggio di posta elettronica che indica nel dettaglio i malfunzionamenti, il cui audit potrà essere eseguito direttamente grazie al servizio della casa di Mountain View. Ci basterà individuare il menù sulla sinistra all’interno della nostra dashboard e seguire il percorso Site > Dashboard > Security issue.
Anche Fetch as Google (sempre nel menù a sinistra) ci offre uno strumento utile di monitoraggio del comportamento delle pagine del nostro sito, così da individuare script e tentativi di collegamento/redirect verso altri siti.

Cercare nei logs

I log sono una sorta di registro eventi: analizzandoli possiamo capire il funzionamento ma, soprattutto, il malfunzionamento di alcune componenti del sistema (come nel nostro caso).

Generalmente la loro gestione è affidata al fornitore del nostro hosting, dello spazio virtuale da noi affittato in cui risiede il nostro sito WordPress fisicamente. Possiamo quindi utilizzare lo strumento da loro fornito (ad esempio CPanel), per verificare attraverso una comoda interfaccia web eventuali anomalie per quanto riguarda gli accessi, il web server Apache o Nginx, gli errori, le email, l’ftp, il database MYSQL e WHM.

Usare un plugin

Ne parlo più avanti più approfonditamente nel corso di questo stesso articolo, nella Cronaca di un attacco.
Nell’esempio il plugin utilizzato è Wp Cerber, utile per il nostro scopo anche nella versione gratuita offertaci dai suoi creatori.

Usare FTP per confrontare files e cercare recenti modifiche

Collegati via FTP (File Transfer Protocol) al web server del sito hackerato e controlla le date dell’ultima modifica dei file e delle cartelle contenute nel webserver, tra cui quello di WordPress.

Generalmente malware e compagnia infettante colpiscono alcune zone predefinite di WordPress tra cui:

  1. header.php
  2. footer.php
  3. .htaccess
  4. sia index.php che index.html
  5. Cartelle dei temi e relativo function.php (wp-content/themes)
  6. Cartella dei plugin (wp-content/plugins)

Verifica quindi che questi file o cartelle non siano stati modificati recentemente a tua insaputa, altrimenti quello può essere il primo campanello d’allarme utile per permetterci di individuare l’ospite non gradito.

Usare SSH per indagini automatizzate ed approfondite

Collegati via SSH (Secure SHell) alla tua VPS ed, una volta raggiunto un terminale sulla macchina in questione, potrai verificare tutti file modificati recentemente con

find ./ -type f -mtime -5”

L’uso di find nel sopracitato metodo ti consente di elencare a video una lista dei file modificati negli ultimi 5 giorni.

Un’altro comando utile in questi casi è grep: grep ci consente di cercare delle stringhe di testo all’interno di un file.
Con i dovuti accorgimenti ci consente di cercare una stringa all’interno dei file contenuti in una cartella in modo automatico e ricorsivo, cioè cercando anche nelle cartelle a loro volta contenute all’interno di quella principale e così via..

Ora cosa possiamo cercare per individuare il malware che ci affligge?

Gli hacker sono soliti offuscare il codice e generalmente usano per questo genere di attacchi la codifica base64. Quest’ultimo è una sorta di alfabeto alternativo usato per nascondere l’oggetto delle loro malefatte ai nostri occhi.

Con queste premesse possiamo quindi spostarci nella root del nostro sito ( / ) e lanciare il comando:

grep -nr "base64" .

Ci verrà mostrata ogni occorrenza di base64 all’interno di ogni file contenuto in ogni cartella in modo ricorsivo partendo dalla cartella in cui è stato impartito il comando.

Per verificare la vostra posizione usate il comando

pwd

il quale restituirà la vostra posizione all’interno del filesystem.

Qualora aveste necessità di confrontare i file con quelli del backup in vostro possesso, da terminale potete ricorrere all’utility diff. Vi consiglio di consultare il manuale (man diff) per maggiori informazioni sull’utilizzo di questo piccolo coltellino svizzero da console.

Backup, ripristino e reinstallazione WordPress

Se un backup è stato necessario per procedere con l’analisi forense del sito infettato, è consigliabile rivedere il proprio piano di backup automatici in modo da minimizzare perdite di dati e possibilità di danni potenzialmente irreparabili. Tramite cron (da terminale) o la comoda interfaccia CPanel puoi facilmente impostare la frequenza in modo da rendere il processo più efficiente e sicuro.

Una volta individuata e rimossa la minaccia possiamo procedere con la reinstallazione di WordPress da zero, per poi ripristinare il suo stato precedente tappando la falla che ha permesso all’attaccante di violare la sicurezza WordPress.

Plugin per il backup

All’interno miriade di plugin che si incaricano del compito di effettuare backup completi del nostro sito e dei database collegati consiglio All in one WP migration e Updraft Plus, il quale oltre alla versione Premium ne offre anche una gratuita e funzionante che ci permette, tra le tante opzioni, di copiare e trasferire tutti i file direttamente al proprio spazio Dropbox o Google Drive.

L’importanza di usare password sicure

Una volta sventata la minaccia possiamo occuparci del cambio di password generale, davvero necessario se vogliamo ristabilire un livello di sicurezza accettabile all’interno della nostra piattaforma.

Sarà ovviamente importante scegliere una password sicura, che includa caratteri maiuscoli e minuscoli, numeri e simboli: per farci aiutare nella scelta possiamo utilizzare un generatore di password, come quello che trovate a questa pagina: davvero ottimo!

Prendiamoci cura delle password:

  1. Amministratore (ma anche degli utenti, se presenti)
  2. FTP
  3. Database
  4. Email (più per sicurezza che per altro ma a questo punto una in più male non fa)

Cronaca di un attacco: WP GDPR exploit

Eccoci alla parte più interessante dell’articolo, ovvero la reale cronaca di un intervento di rimozione malware dovuto ad un attacco distruibuito verificatosi di recente a causa di una vulnerabilità del plugin WP GDPR Compliance.
Sono stato contattato dall’amministratore del sito in questione in quanto ogni tentativo di connessione allo stesso veniva rediretto verso un altro link esterno di pubblicità ingannevole, wp-admin compreso.

Questo fenomeno è detto redirect e praticamente impedisce la visualizzazione di un sito, collegando il visitatore ad un link iniettato direttamente dal malware.

Sito hackerato: cosa fare e best practices

Bene, non ho dubbi: c’è stato un attacco.
Da dimostrare se sia ancora in corso o meno.

Procedo con un backup via SSH ed inizio ad analizzare i files contenuti nella root / del sito dove è presente l’installazione di WordPress.
Trovo un file aggiornato di recente che non ho mai visto all’interno di nessun WordPress: tale wp-user.php.

Il codice malevolo contenuto fa sì che vengano creati degli utenti amministratore a piacimento dell’attaccante.

Inoltre, nella cartella /wp-content/wflogs/ ho trovato una dozzina, tra files e cartelle (tra cui ovviamente un .htaccess dedicato), contenenti il codice del malware stesso.
Dopo averla analizzata mi sono reso conto che c’era qualcosa che scriveva un valore nel database nella tabella opzioni. Ho aperto phpMyAdmin e, difatti, ho trovato il risultato del codice, che scriveva un URL diverso in wpc_option.

Una volta corretto l’indirizzo il sito ha ripreso a funzionare normalmente.

Una volta riguadagnato l’accesso all’interno dell’amministrazione del sito hackerato ho subito notato che erano comparsi nuovi utenti ad insaputa dell’amministratore! Tra l’altro il nome, contenente la parola troll mi ha fatto pensare che si trattasse di uno scherzo.

Erano le prime ondate dell’attacco ed ancora online non trovavo informazioni precise, quindi dopo le procedure descritte nell’articolo, le best practices che sono solito seguire, ho deciso di utilizzare un plugin per eseguire una seconda ricerca in modo automatico.
Ho scelto Wp Cerber, che nella sua versione gratuita mi è bastato per avere conferma dei miei dubbi:

Dopo aver confrontato i file del sito hackerato con quelli contenuti nel backup precedente ho ripristinato WordPress con tema e contenuti. Per concludere ho aggiornato tutti i plugin, tappando le falle più evidenti.

Perché non ho parlato di Wordfence

In questo caso l’uso di Wordfence è sconsigliato. All’interno del codice di questo malware ho trovato svariate porzioni di codice codificate in base64. La traduzione e l’analisi mi hanno permesso di capire che una parte dell’exploit riguarda anche Wordfence, che di fatto viene disabilitato nel sito hackerato, inserendo in automatico una regola permissiva al firewall integrato nel plugin di sicurezza tra i più famosi sul mercato.

<<Ritorna al blog

Lascia una risposta

La tua email non verrà pubblicata. I campi richiesti sono contrassegnati *