Il Cliente mi contatta perché il suo portale, che si rivolge all’intera regione Umbria, realizzato su piattaforma Drupal7 ha subito un attacco hacker.
Il sintomo “esterno” è stato l’avviso anti-malware di Google Chrome rivolto a coloro che volessero visitare il sito in questione. Aggirando l’avviso, per controllare la situazione, scopro che tutti i link dell’homepage dirigono verso siti compromettenti contenenti materiale pornografico e vendita di farmaci online.
Il sito aveva ricevuto oltretutto un messaggio in Google Webmaster Tools che avvertiva della vulnerabilità riscontrata.
Immediatamente pongo il sito in manutenzione e comincio i lavori di sanificazione.
Rilevo la situazione iniziale
Il sito si presenta con queste caratteristiche iniziali:
- Drupal 7.9
- Moduli “core”: Block, Contextual links, Database logging, Field, Field SQL storage, Field UI, File, Filter, Image, List, Locale, Menu, Node, Number, Options, Overlay, Path, PHP Filter, RDF, System, Taxonomy, Text, Toolbar, User
- CCK: Multiselectd
- CHAOS TOOL SUITE: Chaos tools
- DATA/ORA: Calendar, Date, Date API, Date Popup, Date views
- FIELDS: Email, Field permission, Link
- OTHER: Google Plus One +1, Pathauto, Token, Weight
- SHARING: Share this, Share this block
- TAXONOMY MENU: Taxonomy menu
- VIEWS: Views, Views PDF Display, Views PHP, Views UI
- Altri moduli: CKEDITOR, VIEWS_SLIDESHOW, IMCE, DOMPDF, PRINT, WYSIWIG
Analizzando lo spazio web rilevo varie anomalie
- Molti files strani nello spazio FTP: mainma3.php (questo file era in tutte le cartelle!), functoins.php, sum75.html, wlc.html, aol.zip, chase.zip, chaseverification.zip, 501830549263.php, wp-conf.php e tutta una serie di files wtmXXXXn.php (dove X = numero) rinvenuti nella root.
- Il file install.php aveva il codice tutto modificato: una sola lunghissima riga di codice
- A TUTTI i files javascript era stata aggiunta la seguente riga di codice, in fondo: ;document.write(”);
Alerts nel log di Drupal
Dal log di Drupal ho rilevato decine di messaggi “strani”, ripetuti decine di volte a distanze ravvicinatissime (il dominio è oscurato con “—–“):
> wtm4698n.php?showimg=1&cookies=1 > pagina non trovata
> http://—–/user?destination=node/add > Tentativo di accesso fallito per shadowke
> http://—–/user?destination=node/add > Tentativo di accesso fallito per Elovogue
> fhd42i3d.html > pagina non trovata
> calendar/week/2012-W19?year=2011&mini=2012-12 > pagina non trovata
> misc/]};P.optgroup=P.option; …ecc… > pagina no trovata
> misc/)h.html(f?c( > pagina non trovata
> mail.htm > pagina non trovata
> wp-conf.php?t2471n=1 > pagina non trovata
> index.php?q=ckeditor/xss > Notice: Undefined offset: 5 in eval() (linea 29 di /web/htdocs/—–/home/modules/php/php.module(74) : eval()’d code(1) : eval()’d code).
Errori commessi
Per implementare alcune funzioni (e risolvere problemi del codice stesso) è stato modificato il codice di vari moduli, per cui gli stessi non sono mai stati aggiornati nel timore di perdere il lavoro effettuato ed “inceppare” il sito.
Altro problema (che forse ha innescato il tutto) è stato il fatto che i dati di accesso erano in possesso anche del Cliente il quale potrebbe aver lavorato da una postazione poco sicura se non già infettata da malware.
Non esisteva una copia del backup del sito precedente all’attacco.
Cura dell’attacco hacker
Rilevata la situazione ho provveduto a risolvere l’attacco hacker effettuando i seguenti steps:
- Messo in manutenzione il sito (error503.php + .htaccess allegati al presente post), lasciando aperto solo al mio IP Address;
- Scaricato tutto il sito in locale e poi ho cancellato la copia online;
- Cercati e rimossi files strani > ne ho trovati una quarantina;
- Cercati files contenenti le seguenti parole chiave [con freeware AGENT RANSACK]: eval(base64_decode($_POST[“php”])), eval(, eval (, base64_, document.write, iframe, unescape, var div_colors, var _0x, CoreLibrariesHandler, pingnow, serchbot, km0ae9gr6m, c3284d, upd.php, *timthumb*. > ne ho trovati a centinaia, li ho esaminati TUTTI e agito in uno di questi modi: a) sostituito eval con php_eval() (la versione sicura di drupal); b) segnato il modulo come “sospetto”; c) confronto con il modulo scaricato fresco; d) rimosso il codice malevolo (nel caso dei javascript sopracitati);
- Cercate modifiche al filesystem [con freeware WINMERGE] tra la copia nuova e quella vecchia > non ho trovato risultati utili perchè le copie erano già differenti di suo;
- Individuati moduli sospetti, a partire dalla lista stilata al punto 4 e grazie a ricerche su google ( security issue, hacked, etc…). Dopo ho scoperto che potevo guardare anche nel sito Secunia;
- Analizzato mio computer: Avast in modalità temporanea, Spybot Search&Destroy, Malwarebytes Antimalware > Non sono stati rilevati virus o spyware!
- Cambiata la login d’accesso ai servizi del dominio;
- Ricaricato tutto il sito;
- Rimossi tutti i moduli risultati sospetti: CKEDITOR, VIEWS_SLIDEWHOW, PRINT, DOMPDF, IMCE, CAPTCHA, WYSIWIG, WEBFORM;
- Modificato .htaccess affinchè bloccasse gli IP dai quali provenivano le richieste strane rilevate nel log di Drupal (precauzione inutile, cambia sempre);
- Contattata l’assistenza del provider (richiesto log server, log http, spiegazioni).
Il sito torna a funzionare dopo alcuni giorni di lavoro.