Usando o Nessus

O Nessus é uma ferramenta de auditoria muito usada para detectar e corrigir vulnerabilidades nos PCs da rede local. Ele realiza uma varredura de portas, detectando servidores ativos e simulando invasões para detectar vulnerabilidades. Uma característica importante é que o Nessus procura por servidores ativos não apenas nas portas padrão, mas em todas as portas TCP. Ele é capaz de detectar uma vulnerabilidade em um servidor Apache escondido na porta 46580, por exemplo.

Até a versão 2.2.8, o Nessus era um aplicativo open-source. Os desenvolvedores trabalham na área de segurança, prestando consultoria e vendendo versões personalizadas do Nessus, com plugins e recursos adicionais. O problema é que outras empresas de segurança passaram a se aproveitar disso para incorporar recursos do Nessus em seus produtos proprietários e a desenvolver versões modificadas, que competiam diretamente com as soluções oferecidas por eles.

Isso criou um clima crescente de tensão até que os desenvolvedores decidiram mudar a licença, mudança que entrou em vigor a partir da versão 3.0. O Nessus continua sendo de uso gratuito, mas o código fonte passou a ser fechado, para evitar a concorrência predatória de outras empresas.

Você pode baixar a versão mais recente na seção de downloads do http://www.nessus.org. Para baixar, você precisa fornecer um endereço de e-mail válido, para onde é enviado um código de ativação.

Existem versões do Nessus para diversos sistemas, incluindo o Linux, Windows, FreeBSD e MacOS X. Ao usar a versão Windows, é recomendável que você utilize o Windows 2003 ou outra versão server do sistema. O Windows XP não é adequado para rodar o Nessus, pois a partir do SP2 o sistema inclui políticas de segurança que limitam o número de conexões TCP simultâneas e outros recursos utilizados por ele. As proteções foram incluídas como uma forma de reduzir o potencial nocivo de malwares, mas acabaram dificultando o trabalho do Nessus.

Ao usar o Windows XP, o ideal é que você baixe apenas o cliente Nessus e o utilize para se conectar a uma máquina Linux da rede rodando o componente servidor. Nesse caso, a máquina Linux faz o trabalho pesado e o Windows XP roda apenas a interface do programa.

Com relação à versão Linux, estão disponíveis pacotes para diversas distribuições, entre eles um pacote .deb para as distribuições derivadas do Debian e pacotes .rpm para o Fedora, Red Hat e SuSE. Você precisa baixar tanto o Nessus propriamente dito, quanto o “NessusClient”, disponível na mesma página:

Instale o pacote baixado usando o comando “dpkg -i” (no caso do pacote .deb), ou “rpm -Uvh” (para os pacotes .rpm), como em:

# dpkg -i Nessus-3.0.3-debian3_i386.deb

O Nessus utiliza o Nmap como portscan, por isso é necessário que ele também esteja instalado. O Nmap faz a primeira rodada de testes, detectando as portas abertas e o Nessus usa as informações fornecidas por ele como ponto de partida para executar uma rodada adicional de testes, que permitem devolver um relatório bastante detalhado das vulnerabilidades encontradas.

Depois de instalar, você precisa criar um login de usuário para utilizar o Nessus. Isso é necessário pois ele é dividido em dois componentes: um servidor (que é quem faz todo o trabalho pesado) e um cliente, que funciona como uma interface segura para ele. Isso permite que você instale o servidor em uma máquina que faça parte da rede que vai ser escaneada e use seu notebook para apenas rodar o cliente, o que pode ser feito até mesmo remotamente.

Com isso, seu notebook fica livre durante o teste, permitindo que você execute testes adicionais ou pesquise sobre as vulnerabilidades na web enquanto o teste é realizado. Naturalmente, você pode rodar ambos os componentes na mesma máquina, o único pré-requisito é usar uma máquina relativamente rápida, com pelo menos 256 MB de RAM livres (ou seja, descontando a memória usada pelo sistema e outros programas).

Este login não é uma conta de usuário válida no sistema. Ele é válido apenas para o Nessus, onde é usado para fazer a autenticação no módulo servidor. Para criá-lo, use o comando “/opt/nessus/sbin/nessus-add-first-user“. Ele pedirá o login e senha, o tipo de autenticação (escolha “pass”) e permitirá que você adicione regras para o usuário (User Rules). Se você quiser apenas criar o usuário usando as regras default, basta pressionar “Ctrl+D“. Ele pedirá uma última confirmação, basta responder “y“:

# /opt/nessus/sbin/nessus-add-first-user

    Using /var/tmp as a temporary file holder
    Add a new nessusd user
    ----------------------

    Login : tux
    Authentication (pass/cert) [pass]: pass
    Login password : ********
    Login password (again) : ********

    User rules
    ----------
    nessusd has a rules system which allows you to restrict the hosts
    that tux has the right to test. For instance, you may want
    him to be able to scan his own host only.
    Please see the nessus-adduser(8) man page for the rules syntax
    Enter the rules for this user, and hit ctrl-D once you are done:
    (the user can have an empty rules set)
    ^D

    Login : tux
    Password : ***********
    DN :
    Rules :
    Is that ok? (y/n) [y]y

Uma vez instalado, você pode iniciar o servidor Nessus usando o comando:

# /etc/init.d/nessusd start
ou:
# /opt/nessus/sbin/nessusd -D

Em ambos os casos ele roda em background, sem obstruir o terminal. Para fechá-lo, use o comando “killall nessusd“.

Isto conclui a instalação do servidor. O próximo passo é instalar o pacote do cliente. No site você pode baixar tanto o cliente Linux, quanto o NessusWx, que roda em máquinas Windows.

No meu caso, tive um pouquinho de trabalho para instalar o cliente Linux, pois, no momento em que escrevi este tópico, ainda não estava disponível uma versão do cliente para o Debian, de forma que precisei baixar o pacote para o Fedora, convertê-lo usando o alien e criar dois links simbólicos para bibliotecas com nomes diferentes nos dois sistemas.

O primeiro passo foi instalar o alien via apt-get e usá-lo para converter o pacote baixado do site:

# apt-get install alien
# alien NessusClient-1.0.0.RC5-fc5.i386.rpm

O alien gera um pacote .deb com o mesmo nome do pacote original, que pode ser instalado usando o dpkg, como em:

# dpkg -i nessusclient_1.0.0.RC5-1_i386.deb

O NessusClient é aberto usando o comando “NessusClient” (que você executa usando sua conta de usuário e não como root). Entretanto, por instalar uma versão para outra distribuição, ele reclamou da falta das bibliotecas “libssl.so.6” e “libcrypto.so.6”. Na verdade, ambas estavam disponíveis, porém com nomes diferentes. Acessando o diretório “/usr/lib” vi que existiam os ” libssl.so.0.9.8″ e ” libcrypto.so.0.9.8″, de forma que precisei apenas criar dois links, apontando para eles:

# cd /usr/lib
# ln -s libcrypto.so.0.9.8 libcrypto.so.6
# ln -s libssl.so.0.9.8 libssl.so.6

A partir daí, o NessusClient passou a abrir corretamente:

$ NessusClient

A interface desta versão é bem diferente da usada no cliente que acompanhava o Nessus 2.x, mas o funcionamento é basicamente o mesmo. Comece clicando no botão “Connect” para abrir a conexão com o servidor. Se estiver rodando-o na mesma máquina, use “localhost” como endereço, caso contrário, forneça o IP correto da máquina onde o servidor está ativo:

Da primeira vez que se conectar, ele perguntará sobre o certificado do servidor. Ele (certificado) permite que você verifique a autenticidade do servidor onde está se conectando, evitando a possibilidade de que alguém o tenha substituído por outra máquina.

Ao usar servidores Nessus remotos, você pode usar certificados de autenticidade para melhorar a segurança. Nesse caso, use o comando nessus-mkcert-client (no servidor):

# /opt/nessus/bin/nessus-mkcert-client

Ao terminar o processo, ele salva o certificado gerado em uma pasta temporária, como em:

Your client certificates are in /tmp/nessus-mkcert.9904
You will have to copy them by hand

Dentro da pasta, você encontra um arquivo “.pem” com o nome do usuário criado, como em “cert_nessuswx_joao.pem”. Para usar este certificado, você deve copiá-lo para a pasta “/opt/nessus/com/nessus/CA/” (do cliente). Na hora de se conectar usando o NessusClient, marque a opção “Autentication by certificate” e indique a localização do arquivo.

Note que o uso do certificado apenas melhora a segurança da comunicação entre o servidor Nessus e o cliente. É uma medida saudável para os paranóicos de plantão. đŸ™‚

Uma vez conectado ao servidor Nessus, você pode definir diversas opções dentro da aba “Global Settings”. Dentro dela, algumas opções interessantes (disponíveis dentro da aba “General”) são:

Port range: O default do Nessus é escanear apenas as portas de 1 a 1024, o que resulta em testes relativamente rápidos, mas que deixam passar serviços escondidos em portas altas. Para que ele escaneie todas as portas, mude para “1-65535”. Note que isso torna o teste muito mais demorado, pois ele precisa enviar um pacote TCP e outro UDP para cada uma das portas, para só então executar os testes adicionais nas portas abertas.

Number of hosts to test at the same time: Esta opção determina o número de hosts que serão verificados simultaneamente durante o teste. O default para esta opção são 20 hosts, o que é adequado para situações onde você use um micro de configuração modesta para executar o teste dentro da rede local. Aumentar o número faz com que o Nessus consuma mais recursos do servidor e mais banda da rede, o que não é muito interessante caso o teste seja realizado durante o expediente.

Number of checks to perform at the same time: Esta opção determina o número de testes simultâneos em cada um dos micros escaneados. Muitos dos testes realizados pelo Nessus são demorados, porém, geram pouco tráfego de rede. Aumentar o número de testes simultâneos é uma boa forma de acelerar o teste caso sua rede tenha poucos micros.

Note que é aberta uma instância do scanner para cada host e para cada teste. Ou seja, com 100 hosts e 4 testes simultâneos em cada um, podem ser abertas até 400 instâncias, o que consumirá quase 500 MB de memória do servidor. Se você está rodando o servidor em uma máquina de configuração modesta, ou está usando sua máquina de trabalho e não deseja que ela fique muito lenta durante o teste, reduza os números.

Optimize the test: Esta opção torna o teste do Nessus mais “inteligente”. Baseado em informações de testes anteriores, o scanner evita usar testes demorados, que tenham baixa probabilidade de revelar novas vulnerabilidades. Ativar esta opção, torna o teste muito mais rápido, se executado repetidamente, mas abre uma pequena possibilidade de algumas vulnerabilidades mais incomuns não serem descobertas.

Safe checks: Alguns sistemas antigos possuem brechas de segurança que podem causar travamentos. Máquinas com o Windows 95 sem atualizações de segurança, por exemplo, são vulneráveis ao famoso “ping da morte”, um pacote ICMP defeituoso, que trava o sistema. Ativando esta opção, o Nessus deixa de realizar os testes que podem levar a travamentos das máquinas, ou de outros dispositivos da rede, como roteadores e modems ADSL.

Designate hosts by their MAC address: Ativando esta opção, os hosts são identificados pelo endereço MAC no relatório do teste, ao invés de pelo endereço IP. Isso pode ser útil em redes onde os clientes são configurados via DHCP.

Na aba “Plugins” você tem acesso à configuração dos plugins, que são scripts responsáveis por detectar vulnerabilidades específicas. Por exemplo, ao detectar que a porta “45234” está aberta, o Nessus primeiro tenta identificar qual servidor está ativo, executando um conjunto de testes. Se for detectado um servidor Apache, por exemplo, serão usados os plugins que detectam vulnerabilidades em servidores web.

O Nessus inclui um número assustador de plugins, divididos em categorias. Ao marcar a opção “Safe checks” (na aba general), são automaticamente desativados os plugins potencialmente perigosos, mas você pode reativar todos clicando no “Enable all”.

Naturalmente, novas brechas de segurança são descobertas todos os dias, por isso é necessário atualizar os plugins periodicamente. Para isso, use o comando “/opt/nessus/bin/nessus-fetch”, informando o código fornecido no e-mail de confirmação do registro, como em:

# /opt/nessus/bin/nessus-fetch --register FFBB-382E-3990-D3DA-2BFC

A partir daí, os plugins são atualizados automaticamente, uma vez por dia. Se preferir desativar a atualização automática, edite o arquivo “/opt/nessus/etc/nessus/nessusd.conf”, substituindo a linha “auto_update = yes” por “auto_update = no”.

Os plugins são os componentes mais importantes do Nessus. São eles que o diferenciam de um portscan genérico, como o Nmap. O portscan detecta que uma determinada porta está aberta e qual servidor está sendo usado, mas são os plugins que informam que está sendo usada uma versão com a vulnerabilidade X, que pode ser corrigida com a atualização Y.

As atualizações gratuitas são fornecidas com um delay de 7 dias, o que dificulta seu uso profissional (7 dias dentro do ramo de segurança é um tempo muito longo, durante o qual brechas são corrigidas e novas surgem). Para ter acesso às atualizações em tempo real, você precisa assinar o plano comercial.

Depois de ajustar as opções gerais, clique na opção “File > Scan Assistant” para definir a faixa de endereços que será escaneada. A primeira tarefa é definir nomes de identificação do teste nas abas “Task” e “Scope”.

Depois vem o que interessa, a definição dos alvos na aba “Targets”. Você pode tanto lançar o teste contra um IP isolado quanto contra uma faixa inteira de endereços. Neste caso, indique o endereço da rede seguido pela máscara, como em “192.168.1.0/24” (o 24 indica a máscara de sub-rede, no padrão CIDR), ou um intervalo de endereços, como em “192.168.1.2-253”. Clicando no “Executar” o teste é finalmente lançado:

Uma novidade em relação às versões anteriores é que agora você pode definir várias faixas diferentes e criar uma configuração independente para cada uma. Você pode, por exemplo, ter uma configuração para o teste contra hosts da rede local e outra já engatilhada para testar periodicamente o servidor que hospeda seu site, por exemplo. Cada uma permite definir faixas de portas e configurações diferentes. Para lançar um teste já pré-configurado, selecione-o na lista da esquerda e clique no “Scope > Executar”.

Como comentei, o teste do Nessus é feito em duas partes. A primeira é o portscan, onde ele utiliza o Nmap, combinado com alguns testes adicionais para descobrir quais portas estão abertas em cada host. A partir daí, entram em ação os plugins, que testam cada porta em busca de vulnerabilidades conhecidas.

Concluído o teste, ele exibe uma lista com as vulnerabilidades encontradas em cada PC. Existem três níveis de alerta; o primeiro e mais grave tem o símbolo de uma luz vermelha e indica uma brecha de segurança em um servidor ativo na máquina. No screenshot, por exemplo, temos uma instalação bastante desatualizada do Windows XP, com diversas brechas de segurança, entre elas uma vulnerabilidade no protocolo SMB (responsável pelo compartilhamento de arquivos), que permite travar a máquina remotamente e duas vulnerabilidades graves, que permitem executar código e obter acesso à máquina:

Veja que, além de apontar o problema, o Nessus oferece uma descrição detalhada da vulnerabilidade e aponta uma solução. Na maioria dos casos, o problema é corrigido simplesmente instalando as atualizações de segurança ou atualizando para a versão mais recente. Em casos em que o problema é gerado por erros de configuração, ele quase sempre fornece dicas de como corrigi-lo.

O teste do Nessus permite também identificar serviços indesejados, que podem ser desativados ou ter suas portas bloqueadas no firewall, além de avisar sobre qualquer backdoor que tenha sido instalado sem seu conhecimento.

Continuando, o segundo nível é um alerta de que um serviço potencialmente inseguro está ativo em uma determinada porta do sistema, como, por exemplo, um servidor Telnet ou XDMCP. Neste caso, não foi encontrada nenhuma vulnerabilidade específica, mas o fato de o serviço ser fundamentalmente inseguro já representa uma brecha de segurança. Tanto o Telnet quanto o XDMCP transmitem dados de forma não encriptada, o que permite que alguém mal intencionado possa sniffar a rede, capturando os dados transmitidos (incluindo as senhas dos usuários). Ambos devem ser usados apenas dentro da rede local.

O terceiro nível de alerta tem o símbolo de uma luz. Estes são apenas lembretes de que existe um servidor ativo na porta indicada, mas sem que fosse detectada qualquer brecha de segurança.

Como disse, em muitos casos o Nessus ajuda também a detectar erros de configuração, que podem ser perigosos. Por exemplo, este é um aviso de segurança, que mostra um servidor dedicado com o servidor DNS aberto para consultas a outros domínios:

Todo servidor web trabalha em conjunto com um servidor DNS, que responde pelos domínios dos sites hospedados. Embora não seja por si só uma brecha de segurança, esta configuração faz com que o DNS se transforme em um servidor “público”, que faz a resolução de qualquer domínio solicitado, assim como os servidores DNS dos provedores de acesso. Isso abre brecha para ataques de “DNS poisoning”, onde um cliente externo insere uma entrada inválida no cache do DNS, fazendo com que ele responda a algumas das consultas com endereços IPs incorretos, além de abrir uma pequena possibilidade de que o servidor seja usado como auxiliar em ataques DoS contra outros servidores.

O próprio Nessus dá a dica de como corrigir o problema. Pesquisando no Google sobre a opção “allow-recursion” que ele sugere, você chega facilmente à artigos que sugerem a inclusão das quatro linhas abaixo no final do arquivo “/etc/bind/named.conf“:

options {
directory "/var/named";
recursion no;
};

Elas fazem com que o servidor DNS responda apenas pelos domínios sobre os quais tem autoridade (ou seja, os domínios dos sites hospedados no servidor), corrigindo o problema. Executando o teste novamente, o Nessus continua detectando que a porta 53 está aberta, mas não acusa mais a falha.

Concluindo, os relatórios gerados pelo Nessus podem ser salvos em diversos formatos, incluindo html, latex e PDF, um recurso extremamente interessante na hora de apresentar os resultados e explicar os problemas para outras pessoas.

Para isso, selecione o relatório que será exportado no menu da esquerda e use a opção “Report > Export”. Para que o suporte à geração de arquivos PDF funcione, você deve ter instalado o pacote “htmldoc”, disponível via apt-get:

# apt-get install htmldoc

Naturalmente, assim como você pode utilizar o Nessus para detectar e tapar brechas de segurança, outras pessoas podem utilizá-lo para detectar vulnerabilidades na sua rede e lançar ataques. Hoje em dia, a variedade de scripts e ferramentas gráficas prontas que exploram vulnerabilidades é tão grande que você pode encontrar algum exploit fácil de usar para praticamente qualquer vulnerabilidade que você possa encontrar. Basta saber fazer pesquisas no Google.

Estes exploits prontos são o grande perigo, pois não requerem nenhum tipo de prática ou habilidade para serem usados. Basta indicar o IP a ser atacado e pronto. Ou seja, aquele garoto com quem você brigou no chat pode muito bem fazer um estrago na sua rede caso algum serviço ativo no seu servidor possua alguma vulnerabilidade grave. É importante resolver o problema antes que alguém o faça por você.

Gerar o relatório do Nessus é só o primeiro passo. Se você administra um servidor, é importante acompanhar sites especializados em notícias relacionadas à segurança, como o http://lwn.net e o http://www.linuxsecurity.com. A maioria das distribuições oferecem boletins por e-mail que avisam quando novas atualizações de segurança estão disponíveis.

Lembre-se de que, apesar das notícias de brechas e atualizações serem sempre muito freqüentes, você só precisa se preocupar com os servidores que você mantém ativos na sua máquina. Se você mantém apenas o SSH e o FreeNX, por exemplo, não precisa se preocupar com as atualizações do Apache e do Sendmail.

Além dos servidores, clientes de e-mail e navegadores (entre outras categorias de programas) também costumam receber atualizações de segurança com uma certa freqüência. Estes programas clientes não podem ser atacados diretamente, ou seja, ninguém poderá explorar um buffer overflow no Firefox (por exemplo) apenas por ele estar instalado; seria necessário que você acessasse alguma página contendo o script malicioso. É aí que entram os ataques de engenharia social, como no caso dos e-mails com textos que tentam levá-lo a clicar em um link ou ao executar um arquivo anexado.

Sobre o Autor

Redes Sociais:

Deixe seu comentĂ¡rio

X