Malware Prevention through DNS Redirection – Edição Wcry 2.0!

Bom dia,

Depois do festival dos últimos dias relacionados com cryptoware e o pânico que tem envolvido a comunidade windows (!) vamos revisitar um post meu do ano passado sobre o tema.

Na altura falamos de zombie bot attacks, mas o principio é aplicável ao wcry e a tantos outros.

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, ou abre um email e carrega o anexo e contamina a sua rede.

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.


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/spyware/batbots

#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: Independente do malware ou bot associado é sempre 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.
Pode existir casos, como por exemplo no wcry 2.0 é necessário que o domínio tenha como um código diferente de 0 como resposta a um eventual pedido de http, ou seja o ip que configurarem no DNS, deverá apontar para um servidor interno vosso, com o URL respectivo em VHOST.
Para mais informação sobre os registos a bloquear e que servidores web configurar, existe uma thread muito interessante no reddit aqui.

Em seguida, efetuar reload ao serviço e validar através do log que efetivamente arrancou corretamente.
No meu caso (e uso opensSuSE 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.
Com uma pequena alteração no vosso sistema de logging de DNS, podem inclusive saber quais os vossos hosts / clientes que estão infetados (eles vão fazer querys contra algo, seja DNS, seja o vosso blackhole webserver, seja contra um proxy para lá chegar).

Para manterem o vosso sistema dinâmico e vivo é de todo 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