Malware Prevention through DNS Redirection

Bom dia,

Todos os dia temos ouvido historias de terror, relacionadas com fugas de informação causadas por malware em empresas, assim bem como empresas a serem indiciadas como possíveis criminosas devido a botnet attacks.

A verdade é que podem existir os melhores procedimentos, o melhor equipamento, mas nada vai deter o utilizador incauto que tenta aceder a um site e descarrega inadvertidamente malware.

Existe no entanto forma de mitigar esta situação, através de DNS sinkholes nos DNS de perímetros que suportam a rede.
Traduzindo em linguagem mais simples, os últimos DNS da rede a serem consultados antes das querys irem para a internet, falsificam a resposta que o malware procura desviando o tráfego para um buraco negro, impedindo assim a comunicação e a quebra de sigilo.

dnssinkhole

A ideia em si é simples, e existem publicadas semanalmente listas na internet com os FQDN’s que as botnets de malware se ligam para comunicar.

Uma das minhas favoritas é publicada pela malware domains  que tem bastante atividade em termos tanto de colaboração da comunidade como de laboratórios de investigação.

Nota: Este post assume que que já tem um bind 9 a funcionar na vossa rede como local dns & forwarder:

Em primeiro lugar vamos descarregar uma das blacklists de domínios identificados com malware:

#cd /var/lib/named
#wget http://mirror1.malwaredomains.com/files/spywaredomains.zones
#dos2unix spywaredomains.zones

Criar o include no vosso named.conf para o ficheiro de zonas agora descarregado:

include “/var/named/spywaredomains.zones”;
(secção zones).

Criar a dummy zone para o tráfego não ir parar a lado nenhum:

# /var/lib/named # vi etc/namedb/blockeddomain.hosts 

; This zone will redirect all requests back to the blackhole itself.

$TTL    86400   ; one day
@       IN      SOA     bhdns.mydomain.ca. bhdns.mydomain.ca. (
                          1
                          28800   ; refresh  8 hours
                          7200    ; retry    2 hours
                          864000  ; expire  10 days
                          86400 ) ; min ttl  1 day
                  NS      bhdns.mydomain.ca.

                  A       172.16.69.100

*               IN      A       172.16.69.100

 

Nota: É obrigatório que o IP do blackhole seja um IP que não vá dar a lado nenhum e que não seja routeavel pela internet.

Em seguida, efetuar reload ao serviço e validar através do log que efetivamente arrancou corretamente.
No meu caso (e uso SuSE Leap) para os DNS de perímetro com logging segregado do syslog tenho:

21-May-2016 12:43:28.505 general: info: zone saacp.co.za/IN: loaded serial 1
21-May-2016 12:43:28.506 general: info: zone noproblemnews.com.ve/IN: loaded serial 1
21-May-2016 12:43:28.506 general: info: zone functionaltherapy.co.uk/IN: loaded serial 1
21-May-2016 12:43:28.517 general: info: zone safranchisebrands.co.za/IN: loaded serial 1
21-May-2016 12:43:28.518 general: info: zone unoweb.com.ve/IN: loaded serial 1
21-May-2016 12:43:28.519 general: info: zone greenwoodglass.co.uk/IN: loaded serial 1
21-May-2016 12:43:28.529 general: info: zone acd.com.vn/IN: loaded serial 1
21-May-2016 12:43:28.560 general: info: zone store.id.apple.liverpoolbuddhistcentre.co.uk/IN: loaded serial 1
21-May-2016 12:43:28.560 general: info: zone pano4you.vn/IN: loaded serial 1
21-May-2016 12:43:28.561 general: info: zone wingnut.co.za/IN: loaded serial 1
21-May-2016 12:43:28.564 general: info: zone carboxytherapy.co.za/IN: loaded serial 1
21-May-2016 12:43:28.565 general: info: zone lovelipo.co.uk/IN: loaded serial 1
21-May-2016 12:43:28.565 general: info: zone montevideo.co.za/IN: loaded serial 1
21-May-2016 12:43:28.566 general: info: zone vww2.irs.gov.confirm25id.us/IN: loaded serial 1
21-May-2016 12:43:28.567 general: info: zone uecsjb.com.ve/IN: loaded serial 1
21-May-2016 12:43:28.568 general: info: zone sign.cdrn70.xyz/IN: loaded serial 1
21-May-2016 12:43:28.569 general: info: zone earthproafrica.co.za/IN: loaded serial 1
21-May-2016 12:43:28.569 general: notice: all zones loaded
21-May-2016 12:43:29.044 general: notice: running

Fazendo nslookup contra o servidor, com um domínio identificado como pertencente a uma botnet temos:

# nslookup
> wingnut.co.za
Server:        10.0.0.10
Address:    10.0.0.10#53

Name:    wingnut.co.za
Address: 172.16.69.100

Nota: Caso tenham mais forwarders na vossa rede, deverão replicar o procedimento por cada um de forma a garantir total cobertura.

Para clientes standalone (ie o portátil que utiliza quando está fora de casa, ou mesmo para o pc que tem em casa) a malware domains disponibiliza a mesma blacklist no formato de ficheiro de hosts a carregar no vosso ficheiro de hosts (windows, linux ou macos).

Concluindo, com uma simples alteração nos vossos DNS de perímetro conseguiram aumentar a vossa segurança de rede com muita eficiência.
É aconselhável fazerem um script que corra de cron para ir atualizando a lista de blacklisted domains, assim bem como a sua conversão para um formato unix.

Como consideração final, lembro que adicionar mais que 23 mil zonas aos vossos DNS irá consumir mais tempo de CPU no arranque assim bem como mais memoria (+118MB no meu caso).
Não estranhem o processo demorar bastante mais a arrancar do que o habitual.

Até a próxima. Se tiverem duvidas estou como sempre disponível.

Abraço!
Nuno