Un sito che reindirizza i visitatori verso pagine sconosciute, che mostra pubblicità mai inserita, che viene segnalato dai browser come pericoloso o che invia spam: sono segni tipici di una compromissione. La tentazione è ripristinare un backup e dimenticare. Ma se non si capisce come l'aggressore è entrato, nella maggior parte dei casi tornerà, magari dopo pochi giorni.
Prima di tutto: conservare lo stato attuale
Prima di qualsiasi pulizia serve una fotografia completa del sito com'è adesso:
- copia di tutti i file del sito, compresi quelli nascosti e le cartelle di caricamento, mantenendo date e permessi;
- esportazione del database;
- copia dei log del server web, del pannello di hosting, dell'FTP o SFTP e, se disponibili, del firewall applicativo;
- elenco degli account con accesso al pannello, all'FTP, al database e all'area amministrativa del sito;
- schermate e salvataggi delle pagine che mostrano il comportamento anomalo;
- hash degli archivi prodotti.
Molti hosting conservano i log di accesso solo per pochi giorni. Scaricarli subito è spesso la cosa più importante da fare.
Dove cercare le tracce
File modificati di recente
Ordinare i file per data di modifica è il punto di partenza più intuitivo. Va però ricordato che le date si possono falsificare, e che un aggressore esperto può impostare su un file malevolo la stessa data dei file legittimi. Più affidabile è il confronto con una versione pulita.
Confronto con i file originali
Per piattaforme diffuse come WordPress, il nucleo del sistema, i temi e i plugin ufficiali sono disponibili nelle loro versioni originali. Confrontando gli hash di ogni file con quelli della versione ufficiale corrispondente, si individuano subito i file aggiunti o alterati. Resta da esaminare a mano ciò che non ha un originale di riferimento, come i temi personalizzati e i file caricati.
File sospetti
Segnali ricorrenti:
- file PHP in cartelle destinate solo a immagini o documenti caricati;
- file con nomi che imitano quelli di sistema, con una lettera diversa;
- codice offuscato, con lunghe stringhe codificate e funzioni che eseguono testo come codice;
- file molto piccoli che ricevono comandi dall'esterno, le cosiddette web shell.
Il database
L'aggressore può nascondere codice anche nel database: script inseriti negli articoli, opzioni modificate per caricare risorse esterne, nuovi utenti amministratori. Vanno controllati gli account amministrativi, con data di registrazione, e le opzioni che contengono indirizzi esterni.
I log di accesso
I log del server web mostrano le richieste ricevute. Individuato un file malevolo, si cerca nei log chi lo ha richiamato e quando: spesso la prima richiesta coincide con il momento della compromissione, e le richieste precedenti dallo stesso indirizzo mostrano come l'aggressore ci è arrivato.
| Indizio nei log | Possibile significato |
|---|---|
| Molte richieste alla pagina di login | Tentativi di indovinare le password |
| Richieste a un plugin specifico con parametri insoliti | Sfruttamento di una vulnerabilità nota |
| Caricamento di file seguito da richieste a quel file | Installazione di una web shell |
| Accesso FTP riuscito da un paese insolito | Credenziali sottratte |
Le vie d'ingresso più comuni
- plugin o temi non aggiornati con vulnerabilità note;
- componenti scaricati da fonti non ufficiali, già contenenti codice malevolo;
- password deboli o riutilizzate per l'area amministrativa, l'FTP o il pannello di hosting;
- computer dell'amministratore compromesso, da cui sono state sottratte le credenziali;
- altri siti sullo stesso spazio di hosting, da cui l'infezione si è propagata.
Quest'ultimo caso è frequente negli hosting condivisi: si pulisce un sito, ma l'infezione ritorna perché un secondo sito, dimenticato nella stessa cartella, è ancora compromesso.
Dopo l'analisi: ripristino e prevenzione
Individuato il punto d'ingresso, si può procedere con il ripristino:
- ricostruire il sito da componenti ufficiali e da un backup verificato precedente alla compromissione;
- cambiare tutte le password: area amministrativa, database, FTP, pannello, posta;
- aggiornare tutto e rimuovere plugin e temi inutilizzati;
- verificare i computer di chi amministra il sito;
- attivare la verifica in due passaggi e un sistema di monitoraggio dei file.
Nel mio lavoro di informatica forense noto che il passaggio più trascurato è il quarto: se le credenziali sono state rubate da un computer infetto, nessuna pulizia del sito sarà definitiva.
In sintesi
- Prima di pulire, copia file, database e log, che spesso hanno vita breve.
- Il confronto con le versioni ufficiali individua rapidamente i file alterati.
- Web shell, codice offuscato e nuovi amministratori sono segnali ricorrenti.
- I log permettono di risalire al momento e al modo della compromissione.
- Senza chiudere il punto d'ingresso, l'infezione tende a ripresentarsi.