Come trovare e debellare codici malevoli e trojan da un sito
Un mio cliente ha scoperto di avere un trojan installato nel proprio sito che rischiava di sottrargli traffico, pageRank e causargli seri problemi legali. Se il tuo sito è stato attaccato, ecco un suggerimento per scovare e liberarti dagli script parassiti.
Comportamento
Spesso l’infezione di un sito avviene con l’inserimento di uno script (tipicamente Javascript) che durante la visita al sito apre finestre pop-up su altri siti, spesso illegali o carichi di altre nefandezze.
Come faccia un hacker a modificare i file del vostro sito non è l’oggetto di questo articolo: qui ipotizziamo che il tuo sito non si comporti come dovrebbe (ad esempio: apre una finestra pop-up su un sito esterno che non conosci) oppure appare da qualche parte una scritta o un link che mai ti saresti sognato di mettere.
Segui i passi qui sotto per liberarti del problema.
Step 1 – Identificazione
Per risolvere un problema occorre prima identificarlo. Quindi devi essere tanto fortunato (se così si può dire) da ricevere una segnalazione di qualcuno che ti dica come riprodurre il comportamento in questione.
Se così è, annota quindi tutti i dettagli possibili:
- Si apre una finestra di pop-up su un sito esterno? Annotane l’indirizzo URL
- C’è un link verso un sito illegale? Annota la scritta che vedi o l’URL
- Il caricamento della pagina si blocca tentando di caricare da qualche sito esterno? Annotane l’URL
Step 2 – Ricerca
Il passo più difficile è di solito capire quale file è stato modificato e che causa l’apertura del pop-up o il link in questione. Per questa ricerca devi usare le informazioni che hai annotato nel passo 1, cercando le stringhe esatte in tutti i file del sito. Ciò è fattibile tramite una ricerca ricorsiva sui file.
Supponiamo che tu ti sia accorto che visitando il tuo sito si apre una connessione a un sito sospetto chiamato “jque.net” (l’esempio è tratto da un caso reale, proprio quello era il sito, che mimava un nome conosciuto per sembrare innocuo).
Supponendo che tu abbia un hosting che ti consente di aprire una finestra shell, una volta collegato con Telnet/Putty lancia i seguenti comandi:
cd public_html find . -exec grep 'jque.net' {} \; -print 2>/dev/null
Il primo comando ti fa posizionare sulla cartella che rappresenta la root del tuo sito.
Il secondo comando trova i file che contengono la stringa cercata: jque.net – modifica la stringa con qualunque cosa tu abbia visto di irregolare o che tu voglia cercare nel tuo sito.
Dopo una breve attesa otterrai, con un pò di fortuna, una lista di tutti i file che contengono quella stringa e la loro posizione.
Vai quindi a cercare il file in questione (ormai sai qual’è il file che è stato alterato e dove si trova) e quando ti trovi nella cartella che lo contiene, sempre all’interno della shell digita:
ls -al
Annota data/ora di modifica del file. E’ possibile che l’hacker abbia modificato altri file lo stesso giorno, cosa che vogliamo ora verificare.
Ora, per cercare nel sito tutti i file che sono stati modificati, ad esempio, il 6 Marzo 2013 usa il seguente comando:
find . -newermt 2013-03-06 ! -newermt 2013-03-07 -ls
Il che significa “trova tutti file modificati tra il 06 mar 2013 (incluso) e il 07 mar 2013 (escluso).
In generale usa come prima data è il giorno in questione, e come seconda data è il giorno dopo, curando di usare il formato aaaa-mm-gg.
E’ possibile modificare le date per ampliare il range del controllo, spesso queste incursioni vengono svolte in più giorni adiacenti.
Ovviamente ogni file andrebbe ispezionato per escludere che sia un falso positivo: potrebbe essere un file che hai modificato tu nella normale attività di gestione.
Step 3 – Rimozione
La rimozione di uno script inserito è di solito semplice: si cerca la stringa con un text editor e si rimuove il riferimento o lo script. Meglio ancora se si può recuperare il file originario da un backup.
Navigando sul sito il problema dovrebbe essere ora risolto.
Spunti ulteriori
Abbiamo visto la procedura base per la rimozione di un link, riferimento, script o scritta in un sito infetto. E’ stata una buona “scusa” per imparare a usare l’utilissimo comando find che unix ci mette a disposizione. Ecco alcuni spunti ulteriori:
- Stringhe codificate non vi temo – non è detto che la stringa cercata sia in chiaro. Se l’hacker è stato furbo potrebbe averla cifrata e un sistema molto usato è il metodo base64. Vedi questo articolo per cercare istruzioni di decodifica base64_decode che possono nascondere la stringa in questione.
- Url shortner: sgamali con Fiddler – un’altro sistema per mascherare i link è usare dei link shortner, servizi gratuiti come bit.ly o goo.gl che mascherano un link rendendolo meno visibile. Se l’hacker ha usato questo sistema per nascondere gli indirizzi a cui devia traffico puoi tracciare cosa succede avvalendoti del tool gratuito Fiddler.
- Niente shell, niente paura! – Molti diranno che non hanno a disposizione il comando find perchè hanno un hosting Windows oppure un hosting economico che non offre la shell (fatemi indovinare… è italiano). Oltre che consigliarvi di prendere un hosting estero o comunque fatto secondo gli standard di servizio USA (io uso HostGator, trovate i rif. in questa pagina per ottenerlo con lo sconto) puoi ripiegare scaricando l’intero sito sul vostro PC e facendo poi sul vostro disco una ricerca ricorsiva con un text editor adatto, io uso TextPad che è disponibile in versione di prova gratuita e anche in italiano. Quando scarichi il tuo sito, meglio se lo fai impacchettandolo in un unico ZIP direttamente dal server, così le date di modifica dei file resteranno invariate e avrai una informazione preziosa in più.
E’ stato utile? Condividi!
Se grazie a queste dritte hai salvato il… sito apprezzerò molto che tu lo condivida o che tu faccia Mi Piace sulla nostra pagina Facebook. Questo è il modo migliore per avere altre risorse gratuite a disposizione in futuro.
Lascia un Commento
Vuoi partecipare alla discussione?Sentitevi liberi di contribuire!