Allegato | Dimensione |
---|---|
![]() | 784 byte |
Salve a tutti,
Vorrei raccontarvi l'attacco malware che il mio sito Drupal7 ha subito (sta subendo?), non solo per trarre utili insegnamenti e consigli, ma soprattutto per aiutare chi si dovesse trovare nella mia stessa situazione. Dunque...
SITUAZIONE INIZIALE
- Drupal 7.9
- Moduli attivati:
>>> 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 CHE ORA HO RIMOSSO: CKEDITOR, VIEWS_SLIDESHOW, IMCE, DOMPDF, PRINT, WYSIWIG
I MIEI ERRORI INIZIALI
- Per implementare alcune funzioni (e risolvere problemi del codice stesso) ho messo mano al codice di vari moduli, percui non ho mai aggiornato i moduli stessi, per la paura di bloccare il funzionamento del sito.
- Ho dato i dati di accesso anche al cliente il quale lavora con computer poco sicuri
- Non avevo una copia perfettamente identica del sito online, confidando nel backup settimanale del dominio
SINTOMI ESTERNI DELL'ATTACCO
- Tutti i link dell'homepage puntavano a siti contenenti malware
- Google ha indicato il sito come non sicuro nel browser
- Messaggio critico nel pannello Google Webmaster Tools
SINTOMI NELLO SPAZIO FTP
- Il backup settimanale
- 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('');
- Non ho possibilità con il mio provider di visualizzare il log del server, nè tantomeno quello delle richieste http. L'ho richiesti entrambi, quando ho notizie ve le posto
- Dal log di Drupal ho rilevato decine di messaggi "strani", ripetuti decine di volte a distanze ravvicinatissime (il mio dominio è oscurato con "-----"):
>>> 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).
>>> wtm4698n.php?showimg=1&cookies=1 > pagina non trovata
>>> user?destination=node/add
>>> 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;P.tbody=P.tfoot=P.colgroup=P.caption=P.thead;P.th=P.td;if(!c.support.htmlSerialize)P._default=[1,
Messaggio misc/]};P.optgroup=P.option;P.tbody=P.tfoot=P.colgroup=P.caption=P.thead;P.th=P.td;if(!c.support.htmlSerialize)P._default=[1, > pagina no trovata
>>> misc/)h.html(f?c( > pagina non trovata
>>> mail.htm > pagina non trovata
>>> wp-conf.php?t2471n=1 > pagina non trovata
CURA [in gran parte fondata sulle nozioni di questo articolo: http://25yearsofprogramming.com/blog/20070705.htm]
1) Messo in manutenzione il sito (error503.php + .htaccess allegati al presente post), lasciando aperto solo al mio IP Address
[vedi questa guida: http://25yearsofprogramming.com/blog/20070704.htm]
2) Scaricato tutto il sito in locale e poi ho cancellato la copia online
3) Cercati e rimossi files strani > ne ho trovati una quarantina
4) 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)
5) 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.
6) 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 [http://secunia.com/community/advisories/search]
7) Analizzato mio computer: Avast in modalità temporanea, Spybot Search&Destroy, Malwarebytes Antimalware > Non sono stati rilevati virus o spyware!
8) Cambiata la login d'accesso ai servizi del dominio
9) Ricaricato tutto il sito
10) modificato .htaccess affinchè bloccasse gli IP dai quali provenivano le richieste strane rilevate nel log di Drupal
11) Contattata l'assistenza del provider (richiesto log server, log http, spiegazioni)
LEZIONI IMPARATE
- Non mettere mano ai moduli, così da poterli aggiornare tranquillamente
- Tenere i dati d'accesso al sicuro
- Informarsi su probabili problemi di sicurezza dei moduli prima di installarli
- Avere sempre una copia pulita da qualche parte
COSA CHIEDO ALLA COMMUNITY:
- Che tipo di attacco ho subito? E come evitare in futuro?
- Come posso porre termine ai contenuti tentativi di accesso a pagine inesistenti?
- Pensate che dovrei disabilitare altri moduli?
- Posso fre altro per mettere in sicurezza il sito?
Grazie mille per l'attenzione!
Dimenticavo, dopo il punto 9 di CURA:
Rimossi tutti i moduli risultati sospetti: CKEDITOR, VIEWS_SLIDEWHOW, PRINT, DOMPDF, IMCE, CAPTCHA, WYSIWIG, WEBFORM.
@marcopanichi
La maggioranza dei moduli da te indicati come sospetti sono utilizzati da tanti utenti del forum e nessuno li ha mai indicati come sospetti.
I tuoi problemi, come anche tu dici, sono stati generati da tuoi errati comportamenti come modifica di moduli e mancanza di aggiornamenti degli stessi, ma anche dalla mancanza di adeguate protezioni dello spazio web.
La sicurezza in Drupal può essere implementata in tanti modi con moduli specifici.
Oltre che con Drupal, è possibile aumentare la sicurezza anche con le varie opzioni offerte dal servizio di hosting, ma in ogni caso la gestione della sicurezza spetta sempre all' amministratore del sito.
Nel forum se ne parla molto e nessuno ha la sua ricetta infallibile; ciò che oggi può andar bene, domani potrebbe essere superato.
@marcopanichi
Dimenticavo: quanto da te detto in riferimento a Secunia, la lista non è altro che una breve cronologia di quanto già scoperto dagli esperti della sicurezza Drupal e visionabile in maniera molto più dettagliata nel sito ufficiale all' indirizzo http://drupal.org/security .
Ciò che è indicato nel sito ufficiale, è visibile su ogni sito in Drupal, dal link /admin/reports/status in D6 (non so in D7) e ciò che l' amministratore deve fare è solo aggiornare il core ed i moduli indicati. Naturalmente il modulo del core Update status DEVE essere abilitato.
E' evidente che al momento, con l' ultima vulnerabilità del core del 19/12 (sia D6 che D7) e di alcuni moduli fondamentali come Ctools del 14/11, espongono maggiormente i siti in Drupal se non aggiornati.
Ciao Giovanni,
Grazie della risposta, molto utile.
Quali sono secondo te i migliori moduli per incrementare la sicurezza del sito?
Non permettere più commenti ad anonimi, proteggere ogni form di invio con metodi Captcha (Captcha, reCaptcha, Captcha Riddler, Mollom) in particolare il form di registrazione.
Quando inizi ad avere abbastanza visibilità, affiancare al Captcha un modulo di controllo I.P./e-mail come Spambot.
Quando ti vogliono buttare giù il sito, utilizzare il blocco I.P. di Drupal e, se non bastasse, il blocco range I.P. da CPanel (il blocco del range da Drupal sembra che non funziona).
Ma nel mio sito non è possibile nè inserire commenti nè tantomeno registrarsi (vedi lista "moduli attivati")
Il sito presenta solo 2 utenti: io e l'amministratore dei contenuti.
Rimango dell'opinione che il problema possa essere derivato da due fronti alternativi:
1) esecuzione di script esterna (qualche falla nei moduli sopracitati)
2) furto delle credenziali d'accesso allo spazio FTP
Ho appreso tralaltro che non è possibile per il provider offrire il log http nè il log errori del server.
Ma nel mio sito non è possibile nè inserire commenti nè tantomeno registrarsi (vedi lista "moduli attivati")
Il sito presenta solo 2 utenti: io e l'amministratore dei contenuti.
Rimango dell'opinione che il problema possa essere derivato da due fronti alternativi:
1) esecuzione di script esterna (qualche falla nei moduli sopracitati)
2) furto delle credenziali d'accesso allo spazio FTP
Ho appreso tralaltro che non è possibile per il provider offrire il log http nè il log errori del server.