Bloqueando botnets com o ASA

Já foi o tempo em que a ameaça vinha de fora… Com as botnets, além de nos preocuparmos com possíveis ataques, também precisamos garantir que não estamos “atacando” ninguém.

Botnets são rede de computadores infectados, que passam a ser controladas pelo botmaster. Uma botnet pode ter computadores espalhados pelo mundo, e seu controlador a utiliza, sem que os verdadeiros donos dos PCs percebam, para enviar spam e fazer ataques, entre outros.

Segundo estimativa do FBI, existem entre 1 e 5 milhões de hosts infectados nos Estados Unidos e uma botnet pode ser “alugada” por até 50 mil dólares por dia.

Para evitar estes tipo de problema o Cisco ASA, com a licença apropriada, pode fazer a verificação dinâmica, através de URL ou IP, e identificar a comunicação entre um host infectado e seu controlador.

Análise do tráfego para identificação de botnet

Após habilitar a verificação, quando um host interno tenta acessar uma URL, o ASA consulta o DNS para transformar a URL em IP e então compara com sua base de dados, que é constantemente atualizado pelo Cisco Security Intelligence Operations (trabalha com reputação, como o Senderbase e o Ironport). Caso este IP esteja na base de dados, ele é adicionado no DNS Reverse Lookup Cache, que é consultado quando a conexão é realizada. Assim, todas vez que um host se conectar a este IP é gerando um log, para que o administrador possa tomar as medidas cabíveis.

Também é possível criar sua própria blacklist e whitelist.

Configurando o ASA para detectar botnets

1°) Configure o DNS no ASA, para que as URLs (nomes) possam ser convertidos para IP.

dns domain-lookup outside
dns server-group DefaultDNS
name-server 8.8.8.8
domain-name brainwork.com.br

2°) Habilite o dynamic-filter updater-client, para baixar as atualizações do SIO.

dynamic-filter updater-client enable

3°) Configure o ASA para utilizar o banco de dados (também podemos configurar para usar black list).

dynamic-filter use-database

4°) Habilite a filtragem para todos os protocolos.

access-list dynamic-filter_acl extended permit ip any any

5°) Aplique a filtragem na interface de saída, neste caso a outside.

dynamic-filter enable interface outside classify-list dynamic-filter_acl

6°) Agora habilite o DNS snooping na interface outside, que fará a inspeção nas consultas DNS.

class-map dynamic-filter_snoop_class
match port udp eq domain
policy-map dynamic-filter_snoop_policy
class dynamic-filter_snoop_class
inspect dns dynamic-filter-snoop
service-policy dynamic-filter_snoop_policy interface outside

7°) (Opcional) Adicione entradas na black e white lists.

dynamic-filter blacklist
name exemploblack1.com.br
name exemploblack2.com.ru
address 200.20.20.1 255.255.255.255
dynamic-filter whitelist
name exemplowhite1.com.br
name exemplowhite2.com
address 200.30.1.1 255.255.255.255

Bloqueando a botnet

Após as configurações o ASA passará a gerar logs quando um host tentar acessar um IP com má reputação.

Exemplo de log

ASA-4-338002: Dynamic Filter permitted black listed TCP traffic from inside:10.1.1.45/6798 (209.165.201.1/7890) to outside:209.165.202.129/80 (209.165.202.129/80), destination 209.165.202.129 resolved from dynamic list: bad.example.com

Após verificar o log, devemos impedir que o host infectado tenha acesso a rede.

1°) Crie uma access-list.

access-list bloquear_botnet extended deny ip host 10.1.1.45 host 209.165.202.129
access-list bloquear_botnet extended permit ip any any

2°) Aplique a access-list na interface outside.

access-group bloquear_botnet out interface outside

No site da Cisco também tem um vídeo tutorial, mostrando como fazer esta configuração via ASDM.

Até a próxima.

Tema Brainwork 0.2(beta)