Il worm Downadup (o Conficker) di recente si è diffuso sui computer con Windows sfruttando una vulnerabilità abbastanza vecchia (la patch risale a fine ottobre 2008) del servizio RPC.
Una delle sue varianti più difficili da rimuovere infetta gli altri computer con diversi metodi: password guessing degli utenti del dominio, duplicazione su network share e supporti rimuovibili (su cui crea un apposito file AUTORUN.INF).
[ad#ad-articolo-1]
Il worm ogni giorno genera 250 nomi a dominio che tenta di contattare per ricevere aggiornamenti ed eventuali comandi remoti.
L’algoritmo con cui tali indirizzi vengono generati è stato compreso dal team di F-Secure che lo ha sfruttato per fare una specie di censimento dei PC infetti.
Allo stesso modo, F-Secure di tanto in tanto rilascia l’elenco dei domini generati, sotto forma di un file di testo in cui vengono elencati uno per riga.
Vediamo come configurare il proxy Squid e il DNS della rete locale per far sì che i client non possano contattare i siti incriminati, concedendoci il tempo necessario a eradicare il virus dalla rete.
Configurare Squid per usare le liste
A quel che risulta il virus contatta i siti senza usare il proxy eventualmente configurato nelle Opzioni Internet di Windows.
Implementare la lista di F-Secure come una blacklist di Squid può comunque avere senso per ragioni di prudenza.
E’ invece assolutamente necessario farlo nel caso in cui Squid sia configurato sulla rete come proxy trasparente, quindi usato a prescindere dalla configurazione locale dei PC.
Scaricate la lista dei domini nella vostra home directory con il comando wget:
~: $ wget http:// BLABLA /downadup_domain_blocklist_17_31.txt
Copiatela sotto /etc/squid:
~: $ sudo cp downadup_domain_blocklist_17_31.txt /etc/squid
Aprite la configurazione di Squid:
~: $ sudo vi /etc/squid/squid.conf
Dovete aggiungere la seguente riga:
acl virus_blocklist url_regex -i "/etc/squid/downadup_domain_blocklist_17_31.txt”
Siccome l’elenco viene trattato come una regular expression, ogni volta che nella URL compariranno i nomi contenuti nella lista, questa sarà bloccata, qualsiasi cosa preceda o segua il nome.
Un ulteriore punto a favore di questa soluzione è che consente di aggiungere le liste via via che le scaricate, senza necessità di fare prima il merge dei file.
Nel caso vogliate usare le tre liste già rilasciate (quella dal 13 al 16 gennaio, quella dal 17 al 31 gennaio, quella di tutto febbraio), sarà sufficiente scaricarle e aggiungere una riga acl per ciascuna:
acl virus_blocklist url_regex -i "/etc/squid/downadup_domain_blocklist_13_16.txt" acl virus_blocklist url_regex -i "/etc/squid/downadup_domain_blocklist_17_31.txt" acl virus_blocklist url_regex -i "/etc/squid/Downadup_Domain_Blocklist_February.txt
Potrete poi usarla con il nome che gli avete assegnato, nel nostro caso virus_blocklist.
Il comando acl definisce solo il tipo di access list, senza però indicare come viene usata.
La seguente riga definisce cosa fare con l’access list. Nel nostro caso vogliamo bloccare l’accesso:
http_access deny virus_blocklist
Se avete già altre access list nella configurazione, fate attenzione all’ordine in cui le inserite: Squid le applica nella stessa sequenza con cui compaiono nel file squid.conf. Quindi quella per bloccare i domini della lista andrebbe posizionata il più in alto possibile, possibilmente prima di ogni clausola httpd_access allow.
Ogni volta che un client, passando dal proxy, tenterà di collegarsi a uno di quei domini, riceverà la classica pagina per l’accesso negato. Nella documentazione di Squid è spiegato come personalizzarla, se desiderato.
Usare le liste per bloccarle da DNS
Un ulteriore livello di sicurezza è rappresentato dalla blacklist a livello DNS. In pratica faremo in modo che ogni tentativo di risoluzione di un qualsiasi host o sottodominio afferente ai domini elencati nelle blacklist venga bloccato.
Nella pratica faremo in modo che la risoluzione punti sempre a 127.0.0.1, che corrisponde a localhost, quindi inutile per il virus.
Per chi si occupa di antispam è, in piccolo, la tecnica usata dalle cosiddette DNSBL (DNS Black List). Per chi segue l’attualità, invece, è la tecnica adottata dall’Agenzia del Monopoli di Stato per impedire agli utenti italiani di accedere ai siti di scommesse senza licenza valida.
Nel file /etc/named.conf è indicata la directory dove vengono collocati i file di configurazione delle zone. La trovate nella sezione options ed appare più o meno come segue:
options {
directory “/var/named”;
[...eventuali altre opzioni...]
};In /var/named saranno quindi posizionati i file come root.cache o local.zone (i nomi possono ovviamente variare). Qui dovete creare il file blackhole.zone, il cui contenuto dovrà essere:
$TTL 86400
@ IN SOA @ root (
43 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
IN NS @
IN A 127.0.0.1
IN AAAA ::1
* IN A 127.0.0.1Dopodiché modificate il file named.conf:
~:$ sudo vi /etc/named.conf
Immediatamente dopo la chiusura della sezione dedicata alle opzioni (la options che abbiamo visto prima), aggiungete la seguente riga:
include “/var/named/blackhole.conf”;
A questo punto si tratta di creare il file blackhole.conf contenente la configurazione delle zone, una per ogni dominio presente nelle liste di F-Secure. Per farlo ci avvaliamo di un piccolo script, in modo da automatizzare il compito. Poniamo che le liste siano salvate nella nostra home directory, con il nome originale dato loro da F-Secure. Tenete presente che il carattere > a inizio riga è il prompt che la shell mostra quando un comando viene spezzato in più linee.
~:$ for i in `cat $HOME/downadup_domain_blocklist_17_31.txt` ; do echo "
> zone \"$i\" IN {
> type master;
> file \"blackhole.zone\";
> allow-update { none; };
> };
> " >>./blackhole.conf ; echo $i ; doneAlternativamente potete scrivere tutto su una riga come segue:
for i in `cat /etc/squid/downadup_domain_blocklist_17_31.txt` ; do echo -e "\nzone \"$i\" \
IN {\n\ttype master;\n\tfile \"blackhole.zone\";\n\tallow-update { none; };\n};\n" >>./blackhole.conf ; echo $i ; doneNotate l’uso dell’opzione -e per il comando echo, che abilita l’interpretazione dei caratteri escape, nel nostro caso \n per andare a capo e \t per inserire un carattere di tabulazione.
Potete ripetere lo script per ognuno dei file che volete inserire nelle blacklist, semplicemente sostituendo cambiando il nome del file in accordo.
Terminata la creazione del file blackhole.conf sarà sufficiente far rileggere la configurazione a bind per iniziare a bloccare l’accesso a quei domini:
~: $ sudo /etc/init.d/bind reload
Ci sono alcuni accorgimenti che è necessario prendere affinché questo sistema non venga aggirato con o senza dolo.
Innanzitutto, nel caso sulla stessa rete i DNS siano per ridondanza più di uno, bisogna ripetere la configurazione su ognuno di essi. Sui secondari (slave nella terminologia di bind) in effetti si potrebbe fare in modo che le zone vengano scaricate dal primario (master), ma niente vieta di ripetere la configurazione del primo.
Bisogna inoltre accertarsi che il firewall aziendale impedisca ai client di usare DNS esterni alla rete, che vanificherebbero la nostra configurazione.







Ultimi commenti