TL; DR:
Si trattava di una vulnerabilità altamente critica del drupal 2014-Oct-15 che ho patchato troppo tardi e al momento ho perso la gravità del problema e non ho eseguito i controlli appropriati per valutare che il server non fosse stato compromesso. L'hack si è propagato dai file del tema copiati dal backup del server dismesso invece che appena scaricato dalla sezione temi del sito di Drupal. Sono giunto a questa conclusione esaminando database, server web e registri di sistema, confrontando i backup di database e drupal, leggendo i bollettini di sicurezza di nucleo ed estensioni di drupal e analizzando il RAT grazie ai suggerimenti forniti da texacre.
OK Mi vergogno molto ad ammetterlo, ma ora sembra chiaro cos'è successo.
Come di solito accade con queste cose, non era un exploit da 0 giorni ma un aggiornamento critico applicato troppo tardi:
Stavo eseguendo un altro server Drupal che stavo usando per testare i miei progetti in natura fino allo scorso dicembre.
Lo tenevo aggiornato con i controlli giornalieri ogni volta che effettuavo l'accesso, ma verso novembre ero troppo impegnato al lavoro e mi mancava un aggiornamento molto critico: link
Solo 7 ore dopo l'annuncio il team di Drupal stava avvisando gli utenti che esistevano già exploit di escalation di privilegi che permettevano di rilevare qualsiasi server non dotato di patch che eseguiva Drupal 7 o 8.
In qualche modo questo avvertimento non mi ha colpito, e 11 giorni dopo ho visto il messaggio tipico "c'è un aggiornamento disponibile" e aggiornato senza nemmeno leggere di cosa si trattasse l'aggiornamento. Dato che ero già hackerato, probabilmente non è una coincidenza che non mi sia stato mostrato alcun enorme segnale di avvertimento che mi dicesse quanto fosse importante questo aggiornamento (o forse il servizio di aggiornamento non fornisce un meccanismo abbastanza valido per dirti cosa fare quando stiamo aggiornando un sistema che potrebbe essere già stato compromesso ...)
In ogni caso, non ci pensavo più da quando, un paio di settimane più tardi, ho deciso di aggiornare il mio piano EC2, ho eseguito il backup di questa istanza e l'ho spento definitivamente per sostituirlo con uno nuovo.
Ora avanza velocemente fino a due mesi fa quando ho configurato questo nuovo server:
L'ho avviato fresco (nuovo drupal core e tutto), ma ho abbandonato i file del tema da quello vecchio, invece di preoccuparmi di scaricare nuovamente il tema. Il primo audit di routine che ho eseguito su questo server ha dato gli indizi per scoprire il codice RAT che mi ha portato a pubblicare questa domanda sul primo posto.
E questa è la storia su come ho impostato e gestito per due mesi un server Drupal hackerato per il piacere di alcuni spammer (dai log sembra che fosse lo scopo principale dell'attacco, anche se nessuna email di spam è stata inviata perché il Il criterio del gruppo di sicurezza di AWS che ho sempre impostato per le istanze che ho eseguito lo impediva).
Quindi, questo è un promemoria per chiunque dovrebbe trovare e iscriversi al bollettino di sicurezza dei loro CMS / framework / distribuzione o qualsiasi altra tecnologia che stanno utilizzando su un server, specialmente uno di accesso pubblico.
(Che io sia, comunque, anche se ci sono più di altri 30 feed RSS ho perso totalmente questo avviso fino a quando non era troppo tardi)
Quindi immagino che le lezioni per me qui siano:
- Non è sufficiente accedere e controllare gli aggiornamenti: il CMS deve essere configurato per inviarti una e-mail al tuo account principale quando ce n'è uno critico (ho impostato un account secondario per questo e non ho impostato un filtro per inoltrare automaticamente questi messaggi al mio account principale, che avrebbe richiesto 5 minuti in più e mi avrebbe salvato da tutti questi problemi)
- Per essere più organizzato con il mio feed RSS e expeditive sui miei aggiornamenti.
- Per controllare sempre le intrusioni dopo che sono state annunciate vulnerabilità critiche
- Supporre sempre che il sistema sia compromesso se gli exploit sono in natura prima di applicare le patch
- Fresh significa fresco: non rilasciare file di temi dal vecchio backup di istanza e chiamarlo fresco!