Come rilevare e rimuovere un trojan Linux?


16

Di recente (ri) mi sono imbattuto in questo:

Sì, so che l'aggiunta di alcuni software / PPA casuali da una fonte non attendibile richiede problemi (o peggio). Non lo faccio mai, ma molti lo fanno (molti blog e tabloid Linux promuovono l'aggiunta di PPA per app fantasiose, senza preavviso che potrebbe danneggiare il sistema o, peggio ancora, compromettere la sicurezza.)

Come è possibile rilevare e rimuovere un cavallo di Troia o un'applicazione / script canaglia?


Ho fatto la stessa domanda (3 minuti dopo averlo fatto qui) su: askubuntu.com/questions/13265/… Fammi sapere se si tratta di una violazione, ne eliminerò una.
iamsid,

Risposte:


20

Non esiste una ricetta generale. Se il tuo sistema è stato infettato da un trojan sconosciuto, tutto ciò che puoi fare è reinstallare.

Se sai che il trojan funziona in un certo modo - ad esempio sai che il trojan non infetta il kernel - potrebbe esserci un modo meno duro di recuperare. Ma questo dipende interamente dal sapere come si comporta il trojan. Se tutto ciò che hai sono i sintomi (come il tuo computer che invia spam senza il tuo consenso), non esiste una tecnica generale: il rilevatore di trojan deve essere più intelligente del designer di trojan (e fortunato). Per quanto riguarda i trojan, il rilevamento e il nascondimento sono come armi e armature: c'è un'escalation tecnologica e nessuna delle parti ha un vantaggio intrinseco (anche se i cacciatori hanno un vantaggio).

Molti sistemi dispongono di un canale di distribuzione sicuro. Ad esempio, quando si installa un pacchetto dai repository di Ubuntu con gli strumenti basati su apt (apt-get, aptitude, synaptic, software center, ...), lo strumento verifica che il pacchetto sia firmato (verificato) da qualcuno di cui Ubuntu si fida. (La maggior parte delle distribuzioni ha un meccanismo simile.) Quando installi un pacchetto da un PPA, tutto ciò che puoi sapere è che il proprietario PPA ha verificato il pacchetto, il che non è di aiuto se non hai motivo di fidarti del proprietario PPA in primo luogo.

A proposito di trojan e backdoor, consiglio vivamente di leggere la conferenza sul premio Turing di Ken Thompson , Reflections on Trusting Trust . Per riassumere, ha cambiato il compilatore in modo che durante la compilazione del programma di accesso, aggiungesse codice che gli permettesse di accedere con una password segreta; quindi ha cambiato il compilatore in modo che quando si compilava da solo, avrebbe inserito il codice per aggiungere la backdoor; quindi ha ricompilato l'intero sistema (in particolare il programma di login e il compilatore); alla fine ha ripristinato l'origine del compilatore sull'origine originale e indiscutibile. Ancora una volta, leggi l'articolo di Ken Thompson ; allora puoi anche leggere il contrappunto di David Wheeler , forse meglio compreso nell'articolo del blog di Bruce Schneier .


+1 per la risposta descrittiva e per raccomandare quegli articoli: hanno ampliato la mia conoscenza. Grazie.
iamsid,

7

Se capisco correttamente il "trojan" descritto in questo articolo non potrebbe essere scoperto in modo "normale" come malware "normale". Questo IRCd si comportava normalmente fino a quando non veniva usato, quindi l'amministratore poteva trovare questo buco di sicurezza solo quando: 1) veniva usato e l'azione fatta da questo buco causava l'inserimento nei log o era visibile in qualche altro modo, 2) leggendo il codice sorgente.

Il malware Linux "reale" dovrebbe essere rilevato anche dal software AV per i dischi di ripristino Linux o AV LiveCD, in modo da poter scansionare il computer utilizzando questo software. Come puoi vedere nell'elenco SecureList, ci sono 1941 voci con nome Linux e quel software dovrebbe essere rilevato dal software Kaspersky. Una rapida occhiata a questo elenco mostra che molte voci riguardano alcuni strumenti DDoS e exploit o strumenti che non possono diffondersi automaticamente e potrebbero essere utilizzati solo come strumenti per l'attacco (quindi non sono dannosi).

Per verificare backdoor / rootkit installati dal cracker è possibile utilizzare uno strumento che controlla i checksum dei file (è necessario generare un elenco di file e checksum su un sistema pulito e aggiornarlo dopo l'aggiornamento del software del server). Ogni nuovo file o file con checksum errato è sospetto. L'elenco di checksum e lo strumento che lo genera dovrebbe essere di sola lettura (il cracker potrebbe anche cambiare ad esempio md5sum per la sua versione che mostra checksum errati). Questo modo di trovare malware potrebbe essere utilizzato su sistemi "stabili" in cui il software non viene aggiornato ogni giorno.

Alcuni malware potrebbero essere rilevati eseguendo netstatlocalmente per verificare il traffico di rete, ma se il sistema è infetto i dati mostrati da netstatpotrebbero anche essere modificati. In questo caso, una soluzione consiste nel monitorare il traffico di rete da un altro computer (ad esempio dal router, per verificare quale traffico viene inviato a Internet).


4

SELinux e AppArmor esistono per la prevenzione di trojan / rootkit e altre infezioni. Dico il caso di SELinux, che conosco meglio. Con SELinux abilitato, dai un contesto a tutto il processo (demone incluso) che installi sulla macchina. È inoltre possibile etichettare il file system per lavorare con il contesto, abbinandoli. Quando un processo tenta di fare qualcosa che non rientra nel suo contesto, si riceve un messaggio e, se SELinux è in modalità di esecuzione, l'azione non può essere completata.
In questo modo, se il tuo trojan ircd fosse disposto a sovrascrivere il comando ps o qualcos'altro (strategia comune per trojan / rootkit / worm per evitare il rilevamento), non mi sarebbe permesso farlo. E saresti informato.
So che è difficile da configurare, ma le mie macchine funzionano ora con SELinux e i miei (due) laptop Fedora possono fare tutto ciò di cui un desktop ha bisogno senza troppi problemi.
Anche il mio server di casa è ora in modalità di applicazione.
Un'altra strategia è una serie regolare di rilevatori di rootkit che calcolano una somma di controllo per i comandi cirtici e ti informano sulle modifiche ai comandi di base.
Lavoro sia con SELinux sia con rkhunter abilitato (più un antivirus clamav).

Saluti


2

Un'altra risposta ha affermato che i "cacciatori" (malware invisibili) hanno un vantaggio intrinseco rispetto ai "rilevatori". Non sono d'accordo. Questo è vero se ti limiti ad approcci di rilevamento che si basano su firme o euristica per rilevare malware. Ma esiste un altro modo per rilevare malware: verificare beni noti. Tripwire, AIDE, ecc. Possono verificare i file sul disco. Second Look può verificare il kernel e i processi in esecuzione. Second Look utilizza la memoria forense per ispezionare direttamente il sistema operativo, i servizi attivi e le applicazioni. Confronta il codice in memoria con ciò che è stato rilasciato dal fornitore di distribuzione Linux. In questo modo può individuare immediatamente le modifiche dannose apportate da rootkit e backdoor e programmi non autorizzati in esecuzione (trojan, ecc.).

(Divulgazione: sono lo sviluppatore principale di Second Look.)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.