Caricamento script malware - La CPU è stata portata al massimo

1

Ho ricevuto notifiche che la CPU era al massimo. Usando Process Manager in WHM, ho visto che i comandi denominati "fuckyou" eseguivano una sorta di cron sript sul nostro server.

Il file che stava chiamando è stato trovato in una cartella che non ho caricato da solo: /home/user/.lesshts/run.sh

Questo è il contenuto di quel file:

#!/bin/sh
#fuckyou ;)
killall -9 kthread > /dev/null 2>&1
kill -9 'pidof kthread'> /dev/null 2>&1
sleep 5
cd /home/user/.lesshts
/home/user/.lesshts/kthread > /dev/null 2>&1

Ora ho cancellato la cartella e tutti i file contenuti. Ho anche ucciso tutti i processi.

  • Hai visto qualcosa di simile?
  • A parte il sovraccarico del server, puoi dalle informazioni di cui sopra capire quale fosse l'intenzione di questo? Cosa può fare sul nostro server?
  • Più importante: hai idea di come posso impedire che il malware venga nuovamente caricato sul server?

Qualsiasi informazione è molto apprezzata.

    
posta Carl 28.04.2015 - 11:47
fonte

4 risposte

1

Se usi FTP per accedere ai file sul tuo sito web, devi stare molto attento.

Se memorizzi i nomi utente e le password FTP sul tuo computer locale utilizzando un software come FileZilla, il tuo sito web può essere compromesso se sul tuo computer è installato un software dannoso o un Trojan.

Non memorizzare mai le credenziali sul tuo computer locale.

Inoltre, è necessario utilizzare SFTP (Secure FTP) o SSH (Secure Shell) che utilizza la crittografia, anziché FTP - FTP trasferisce credenziali e informazioni in testo normale. Ciò significa che qualsiasi persona o programma che "ascolta" la trasmissione di credenziali al server FTP, può farlo in modo relativamente semplice e quindi rubare queste credenziali.

Le credenziali, come il nome utente e le password FTP, possono essere compromesse da Trojan e virus installati sui computer di utenti ignari che "annusano" le credenziali trasferite su Internet al server web.

SSH (Secure Shell) o SFTP (Secure FTP) eviteranno compromissioni di credenziali dagli attacchi "sniffing".

    
risposta data 28.04.2015 - 12:35
fonte
1

I have now deleted the folder and all files it contained. I've also killed all the processes.

Hai fatto delle copie dei file o semplicemente li hai cancellati? Perché senza di loro non c'è davvero alcun modo per dirti qualcosa di preciso su di loro.

Non dovresti dare per scontato che tu abbia ripulito tutto o bloccato tutti gli accessi al malintenzionato. La soluzione migliore è eseguire il backup dei dati e cancellare il server. Se non sei pronto a farlo, almeno cammina attraverso passaggi come quelli elencati qui .

Have you seen anything similar?

Google ha . Giusto per questi risultati, il vettore di attacco era probabilmente Shellshock . Sei stato danneggiato contro di esso ?

Apart from overloading the server, can you from the above information understand what the intention of this was? What can it do to our server?

No, dovremmo vedere il contenuto di /home/user/.lesshts/kthread per poter rispondere a questa domanda. Se dovessi indovinare , probabilmente era la scansione e il tentativo di infettare altre persone vulnerabili a Shellshock, ma questa è solo un'ipotesi. Di nuovo, hai rimosso l'ovvio segno di compromesso. Quante backdoor non ovvie si sono lasciati alle spalle?

Aggiornato: in base al file binario caricato (vedi commenti sotto), il programma kthread ha l'aspetto di Tsunami IRC / bot . Ecco una buona analisi tecnica . Il tuo sistema era probabilmente impantanato perché stava partecipando a un attacco DDoS .

Most important: Do you have any idea how I can prevent malware from being uploaded to the server again?

Anche in questo caso, buona risposta su quello qui . Il mio consiglio, però, è:

  • Costruisci, applica patch e proteggi un sistema sostitutivo
  • Migrazione dei dati importanti e necessari solo dal vecchio al nuovo sistema
  • Cancella il vecchio sistema

Durante la migrazione dei dati, ovviamente, non accedere dal sistema compromesso al sistema pulito - copia da il sistema compromesso che ha invece le credenziali potenzialmente compromesse.

    
risposta data 28.04.2015 - 15:23
fonte
0

Vedo subito 3 bandiere rosse:

  • il primo è che usi WHM, che è una cattiva idea (proprio come il suo piccolo amico cPanel e i suoi colleghi Plesk, Kloxo, ecc) - Non sarei sorpreso se ci fossero vulnerabilità estreme in queste pile di spazzatura che consentirebbe l'accesso a livello di root al server senza compromettere alcun account utente.

  • il secondo è che usi FTP ... nel 2015. Oltre a essere un protocollo orribile e rotto sin dall'inizio, è anche completamente insicuro e qualsiasi utente malintenzionato che ascolta il traffico di qualsiasi cliente può ottenere la sua password. Dovresti usare SFTP che è incorporato in OpenSSH, quindi lo hai già.

  • infine, nonostante questo compromesso, stai ancora cercando di risolvere questo incubo anche se l'unica cosa giusta da fare è nuotare l'orbita, reinstallare una buona distro su di esso senza alcun tipo di pannello web.

Ora, per una risposta adeguata a ciò che questo codice fa - dopo avervi detto qualcosa di molto carino e amichevole, prova a uccidere qualsiasi versione già in esecuzione di se stesso, si avvia sotto il nome "ktnread", sperando di ingannare qualsiasi amministratori di sistema inesperti per scambiarlo con il vero, legittimo thread del kernel "kthreadd".

Potresti davvero dare un'occhiata a ciò che è il suo kthread, sono abbastanza sicuro che si tratti di una storia di orrore Perl rubata per anni, progettata per connettersi a un server IRC e attendere ordini per i DoS in modo che i bambini che li gestiscono può sembrare importante e potente, molto probabilmente per compensare ciò che realmente sono nella vita reale.

Per rispondere alla tua domanda finale, sfortunatamente è impossibile impedire completamente che ciò accada, ma puoi almeno limitare il danno:

  • blocca le connessioni in uscita dai server / contenitori / processi PHP e consenti loro caso per caso se l'applicazione ne ha veramente bisogno - puoi usare IPtables per questo. Anche in caso di compromissione, impedirà al loro malware di attaccare altri host dal proprio server o di inviare spam. Gli script kiddies si arrenderanno completamente perché il loro malware rubato non riesce a connettersi al proprio server IRC e non sono abbastanza intelligenti da modificarlo per prendere gli ordini dal server HTTP già in esecuzione (monitorando le richieste in entrata sull'accesso log).

  • blocca i processi PHP nel proprio chroot o contenitore LXC con il minimo che devono eseguire - sarà molto più difficile per la vita bassa implementare con successo il malware rubato in Perl se non c'è /bin/perl . Non è a prova di proiettile in quanto potrebbero semplicemente caricare il proprio binario Perl ma sarebbe comunque di aiuto e almeno scoraggiare alcuni di essi.

  • mantieni aggiornate le webapp e i loro plugin, poiché sono il principale punto di accesso per gli aggressori. Trovano spesso una vulnerabilità di caricamento dei file che consente loro di caricare tutto il loro carico utile e infine uno script PHP con exec("./payload") in esso che può essere eseguito semplicemente colpendo il suo URL.

  • esegue script PHP basati su una whitelist, invece di eseguire ciecamente qualsiasi cosa che finisca con .php . Anche se ci sono vulnerabilità di caricamento dei file, ciò non significa compromissione immediata del server perché non è possibile ottenere il payload perché il suo percorso non è autorizzato nella whitelist (e la maggior parte delle vulnerabilità di caricamento dei file non ti danno il lusso di anche specificando il percorso di destinazione, per sovrascrivere un file autorizzato).

  • impediscono al processo PHP di scrivere dove non dovrebbe - anche bloccare o almeno rallentare gli aggressori perché la vulnerabilità di caricamento dei file che hanno trovato consente loro solo di caricarsi in una directory non standard dove l'utente PHP può scriviamo.

  • infine, a seconda di cosa sei (host web, azienda standard, ecc.), dovresti chiederti se puoi fidarti dei tuoi utenti. Se sei un'azienda, la risposta è probabilmente sì, ma assicurati di avere delle buone norme per le password (usa le chiavi, laddove possibile, le chiavi SSH per SFTP, ad esempio), e alla fine limitando gli accessi solo alla rete della tua azienda. Se sei un host web, la risposta è decisamente no e dovresti pensare a far rispettare la verifica manuale per i nuovi clienti (il controllo di base delle informazioni fornite - se l'indirizzo o il telefono è reale o se si richiede l'ID) può essere un buon deterrente per le attività dannose.

In conclusione, non puoi mai essere sicuro al 100%, specialmente in un ambiente di hosting condiviso. Presto o tardi, nonostante tutti questi consigli sulla sicurezza, il tuo server sarà compromesso da root e dovrai nuotare e reinstallare, e in base alle tue leggi / ai dati ospitati su di essi potresti dover informare i tuoi clienti hanno violato i loro dati. Se i dati sono qualcosa di più prezioso dei blog di base, ti suggerisco di utilizzare VM separate o server bare metal per eseguire il codice effettivo (PHP, ecc.).

    
risposta data 29.04.2015 - 09:29
fonte
0

Oggi abbiamo visto questo esatto problema su uno dei nostri server.

Controlla i file cron sul tuo sistema per vedere se sono stati manipolati da questo malware - nella nostra particolare istanza il malware è stato impostato per essere eseguito tramite il cron di apache dell'utente. Controlla se qualcosa è stato aggiunto a uno qualsiasi dei tuoi file cron:

grep 'run.sh' /var/spool/cron/*

Se vengono trovati risultati, commentali o rimuovili.

Con la voce di cron come menzionato sopra, anche se avessimo ucciso tutti i processi del malware e il demone kthread malevolo, si riavvierebbe da solo dopo un riavvio o ogni giorno alle 23:59.

Disabilitare il job cron errato impedirà almeno al riavvio di riavviare il demone, ma è comunque necessario cercare di impedire agli utenti di infiltrarsi nel sistema con questi file. Ad esempio, prova ad isolare ogni dominio / account in modo che venga eseguito come account utente personale (non apache ).

Se stai utilizzando un ambiente di hosting condiviso potresti prendere in considerazione l'utilizzo di qualcosa come CloudLinux o BetterLinux per fornire isolamento e una maggiore sicurezza.

    
risposta data 05.06.2015 - 18:42
fonte

Leggi altre domande sui tag