Transcript
Page 1: OpenVas O farejador de vulnerabilidades OpenVASlnm.com.br/images/uploads/pdf_aberto/LM_67_34_39_06_capa_openvas.pdf · que, normalmente, poderiam es-tar inacessíveis pela rede (como

34 http://www.linuxmagazine.com.br

CA

PA

OpenVas

O farejador de vulnerabilidades OpenVASExperimente o explorador de falhas OpenVAS, um fork GPL da ferramenta de busca de vulnerabilidades Nessus.por Tim Brown e Geoff Galitz

A internet vem se tornando cada vez mais perigosa, sempre com novas ameaças e ataques

cada vez mais sofisticados. Assim

como a maioria dos profissionais de segurança, já vimos vários esquemas elaborados para subtrair dinheiro e informações de empresas. Para ajudar

a descobrir essas ameaças e lidar com elas, dependemos muito do Software Livre. Uma das ferramentas de segu-rança mais popular é o buscador de vulnerabilidades Nessus, da Tenable Network Security [1], usado por mui-tos para procurar pontos vulneráveis em redes de clientes.

A decisão da Tenable de alterar a licença do Nessus para uso comer-cial foi vista com muita frustração pelos profissionais de segurança. O anúncio final, feito no Slashdot em outubro de 2005, de que o Nes-sus teria o código fechado fez Tim

Quadro 1: Preferências de plugin avançadas

Na área Advanced Plugin Preferences, é possível passar mais parâmetros para os módulos configurados anteriormente. Por exemplo, é possível ativar pacotes fragmentados, varreduras NULL e muitos outros parâmetros especí-ficos do Nmap, caso o Nmap seja selecionado como varredor de portas. No geral, quando configurações adicionais são necessárias para qualquer mó-dulo específico do OpenVAS, a seção Advanced Plugin Preferences é o lugar para se encontrar respostas.

Page 2: OpenVas O farejador de vulnerabilidades OpenVASlnm.com.br/images/uploads/pdf_aberto/LM_67_34_39_06_capa_openvas.pdf · que, normalmente, poderiam es-tar inacessíveis pela rede (como

35

| CAPAOpenVAS

Linux Magazine #67 | Junho de 2010

Brown tomar a atitude de lançar um fork. O resultado desse esforço é o OpenVAS [2], um fork livre do buscador de vulnerabilidade Nessus, licenciado predominantemente sob a licença GPL.

Hoje, o OpenVAS possui uma comunidade crescente, com contri-buições de indivíduos e corporações de todo o mundo. O projeto Open-VAS é membro da Software in the Public Interest (Software de Interesse Público), uma organização sem fins lucrativos dedicada a ajudar no desen-volvimento do Software Livre. Uma recente e bem sucedida conferência dos desenvolvedores contou com 16 participantes de quatro continentes, e foram enviadas mais de 13.000 ve-rificações de vulnerabilidades para o repositório SVN público do projeto.

Este artigo descreve o projeto OpenVAS e mostra como usá-lo para acessar os sistemas de segurança da sua rede.

Arquitetura do OpenVASAssim como o Nessus, o OpenVAS segue o modelo cliente-servidor. Um componente do servidor é responsável pelo agendamento e pela execução de buscas, e o cliente é usado para configurar essas buscas e acessar os resultados. O servidor normalmente é instalado em um servidor Linux ou Unix, e o cliente é normalmen-te executado a partir da estação de trabalho do administrador. O clien-te deve estar conectado ao servidor durante toda a duração da busca; no entanto, alguns desenvolvedo-res estão trabalhando agora em um novo componente que irá suportar interfaces mais RESTful.

A Autoridade de Atribuição de Nú-meros da Internet (IANA) atribuiu oficialmente a porta TCP 9390 ao OpenVAS. O programa é um projeto voltado para a segurança, e a conexão do cliente OpenVAS a essa porta é

sempre tunelada por SSL com cifras fortes para garantir que apenas o u-suário determinado acesse os dados gerados pelo OpenVAS.

InstalaçãoO OpenVAS está disponível na forma de pacotes binários para a maioria das distribuições Linux e é possível obtê-lo em repositórios de terceiros ou baixá-lo diretamente do site do OpenVAS.Algumas distribuições GNU/Li-nux trazem versões incompatíveis do servidor e do cliente. A versão 1 do cliente não é compatível com a versão 2 do servidor. Tenha isso em mente quando for instalar as

versões do repositório da sua distri-buição padrão.

Caso prefira compilar o código, ele está disponível no site do Open-VAS [2] – no tarball padrão ou por SVN anônimo. A compilação não é difícil, mas é necessário compilar os módulos openvas-libraries antes. Certifique-se de satisfazer as seguin-tes dependências para a compilação: 2gpgme-devel, gcrypt-devel, gnutls-devel, glib2, glib2-devel, glib2-data, e Gtk+ 2.x (para o cliente Gtk).

O próximo passo é incluir o pri-meiro usuário no OpenVAS. O ser-vidor OpenVAS implementa contas de usuários independentemente do sistema operacional (há planos

Figura 2 Diferentes opções de varredura e seus efeitos.

Figura 1 Seção de configuração geral.

Page 3: OpenVas O farejador de vulnerabilidades OpenVASlnm.com.br/images/uploads/pdf_aberto/LM_67_34_39_06_capa_openvas.pdf · que, normalmente, poderiam es-tar inacessíveis pela rede (como

36 http://www.linuxmagazine.com.br

CAPA | OpenVAS

para incluir suporte a LDAP em uma versão futura). Para adicionar um usuário, basta executar o script openvas-useradd:

# openvas-adduser fulano

E as regras serão solicitadas junto com as informações do usuário. Es-sas regras permitem especificar quais nós o usuário do OpenVAS pode ou não varrer em busca de vulnerabili-dades. Esse recurso protege alguns sistemas sensíveis contra varreduras sem a supervisão necessária.

A sintaxe para as regras é:

accept|deny ip/máscara

default accept/deny

Por exemplo:

accept 192.168.1.0/24default deny

Essas regras permitem ao usuá-rio varrer todos os sistemas na rede 192.168.1.0/24, mas nega acesso a qualquer outra rede. As configura-ções do usuário ficam no diretório /var/lib/openvas/users.

InícioComo veremos mais adiante neste artigo, o OpenVAS utiliza plugins para definir cenários de varredura. Para atualizar esses plugins, basta executar o seguinte comando:

# openvas-nvt-sync

Se este comando for execu-tado regularmente, seus plugins permanecerão atualizados. Caso contrário, o buscador deixará esca-par novas vulnerabilidades. Após executar openvas-nvt-sync, reinicie o servidor.

Se a instalação tiver sido feita por meio de um pacote binário, utilize o comando service para iniciar o servidor. Caso tenha sido instalado a partir dAs fontes, inicie o servidor com o comando:

CAMINHO_DO_SERVIDOR/openvasd -D

ConfiguraçãoO OpenVAS oferece muitas op-ções de configuração (figura 1), mas a maioria delas possui padrões conservadores que preservam o desempenho e melhoram a fun-cionalidade. Algumas das opções mais importantes são: Port Range: essa opção configura

a faixa de portas a ser varrida pelo servidor OpenVAS. O padrão é varrer apenas as portas definidas no arquivo openvas-services, que contém todas as portas usadas normalmente, com exceção de algumas no final da faixa. Para abranger todas as portas, especi-fique 1-65535. Varrer um núme-ro menor de portas, incluindo apenas a faixa padrão, irá ace-lerar o processo, mas é possível deixar escapar algum malware do tipo daemon de backdoor em uma porta alta;

Hosts to test concurrently: essa opção estabelece o número de hosts que podem ser varridos em paralelo, o que tem o efeito de limitar a carga sobre o servidor OpenVAS;

Checks to perform concurrently: essa opção determina o número de testes concomitantes que pode ser executado em um único alvo por vez;

Safe Checks: essa opção instrui o OpenVAS a confiar em ban-ners em vez de fazer uma che-cagem potencialmente invasiva do serviço alvo. Desabilitar os Safe Checks pode resultar em serviços indisponíveis para o servidor ou usuário (figura 2). Uma boa ideia seria fazer uma checagem regular com os Safe Checks habilitado e, depois, desabilitá-lo para varreduras adicionais. Por exemplo, se a varredura do OpenVAS estiver agendada para ser realizada to-das as terças-feiras, a da primeira

Figura 3 Adição de uma nova credencial de acesso local com o Credentials Manager.

Figura 4 Login no servidor OpenVAS.

Page 4: OpenVas O farejador de vulnerabilidades OpenVASlnm.com.br/images/uploads/pdf_aberto/LM_67_34_39_06_capa_openvas.pdf · que, normalmente, poderiam es-tar inacessíveis pela rede (como

37

| CAPAOpenVAS

Linux Magazine #67 | Junho de 2010

terça deve ser feita com os safe checks desabilitados, e os admi-nistradores devem estar presen-tes para responder a qualquer problema potencial;

Port scanner: há a possibilidade de escolher diferentes opções de portas para a varredura. As op-ções vão de simples tentativas de conexões TCP (o OpenVAS TCP scanner) até outras mais so-fisticadas, como os SYN scans ou IKE scans. O primeiro exemplo detecta portas sem completar o procedimento de reconheci-mento TCP. O segundo é feito para localizar pontos de conexão IPSec, VPNs e similares.

O OpenVAS possui várias outras opções. Seu site traz mais informa-ções sobre ajustes na configuração para seu ambiente.

Credenciais locaisExecutar uma varredura com as configurações padrão leva a uma varredura puramente remota. É possível obter diversas informações úteis desta maneira, mas as confi-gurações padrão transformam o OpenVAS em um mero buscador de portas. Tirar vantagem da capa-cidade de checagem local fornece resultados mais precisos. A checa-gem local permite que o OpenVAS determine o estado dos aplicativos que, normalmente, poderiam es-tar inacessíveis pela rede (como o Wireshark), mas que, mesmo assim, podem estar vulneráveis. A checagem local também ajuda a localizar aplicativos vulneráveis que podem estar sendo executados no sistema sem que se saiba.

As versões 2.0.2 e posteriores do cliente OpenVAS possuem a con-veniente ferramenta Credentials Manager, que usa credenciais de acesso local para varrer sistemas alvo (figura 3). Chaves SSH são criadas no formato RSA PKCS#8 para ha-

Listagem 1: Criando um plugin NASL

01 desc = “Microsoft IIS FTPd NLST stack overflow0203 O serviço Microsoft IIS FTPd pode ser vulnerável a um estouro de pilha

04 pelo comando NLST. No Microsoft IIS 5.x, esta vulnerabilidade pode ser

05 usada para ganhar acesso remoto ao SISTEMA inteiro, e no IIS 6.x ela

06 resulta numa negação de serviço. Embora esta falha seja acionável só

07 por usuários autenticados com direito de escrita no servidor FTP, esta

08 verificação determina se usuários anônimos possuem o acesso de escrita

09 necessário para dispará-la sem autenticação.1011 Nas seguitnes plataformas, recomendamos reduzir o problema da12 seguinte forma:1314 Microsoft IIS 5.x15 Microsoft IIS 6.x1617 Recomendamos reduzir o problema da seguinte forma:1819 Filtrar o tráfego recebido na porta 21/tcp para somente máquinas da gerência.

20 Considere remover os diretórios graváveis por ‘anonymous’2122 Solução:23 Não conhecemos nenhuma solução aprovada por um fornecedor atualmente.

2425 Veja também:26 http://www.securityfocus.com/bid/361892728 Risk factor: High”;2930 if (description)31 {32 script_id(100952);33 script_cve_id(“CVE-2009-3023”);34 name = “Microsoft IIS FTPd NLST stack overflow”;35 script_name(name);36 script_description(desc);37 summary = “Determines whether Microsoft IIS FTPd is accessible and whether anonymous users have write access”;

38 script_summary(summary);39 script_category(ACT_GATHER_INFO);40 family = “FTP”;41 script_family(family);42 copyright = “(c) Tim Brown, 2009”;43 script_copyright(copyright);44 script_dependencie(“find_service.nes”, “secpod_ftp_anonymous. nasl”, “ftp_writeable_directories.nasl”);

45 script_require_keys(“ftp/writeable_dir”);46 script_require_ports(“Services/ftp”, 21);47 exit(0);48 }4950 include (“ftp_func.inc”);5152 port = 21;53 if (!get_port_state(port))

Page 5: OpenVas O farejador de vulnerabilidades OpenVASlnm.com.br/images/uploads/pdf_aberto/LM_67_34_39_06_capa_openvas.pdf · que, normalmente, poderiam es-tar inacessíveis pela rede (como

38 http://www.linuxmagazine.com.br

CAPA | OpenVAS

ver compatibilidade entre diferentes implementações de SSH.

Uma vez criadas, as chaves podem ser facilmente instaladas em sistemas alvo por meio de pacotes RPM ou DEB criados pelo assistente. A loca-lização dos pacotes é definida duran-te o procedimento de criação. Um instalador Windows que também é criado prepara os alvos de varredura do Windows com um usuário local baseado em SMB.

Quem comecem os trabalhosQuando o sistema estiver configura-do, é hora de executar uma varredura iniciando o Cliente OpenVAS. Uma caixa de diálogo pede o login do u-suário (figura 4). Caso seja o primeiro

login, pode haver uma solicitação para salvar o certificado SSL. Neste ponto, o cliente também irá checar novos plugins e novas dependências de plugins do servidor.

Depois, crie uma nova tarefa chamada Test Scans. Uma tarefa é equivalente a um grupo lógico. Esse agrupamento é completamente abstrato – a tarefa pode referir-se a uma rede cliente, no caso de uma consultoria, ou a um grupo de nodes dentro de uma rede local ou remo-ta, no caso de um administrador de sistemas domésticos.O passo seguinte é criar um novo escopo chamado Internal Testing. O escopo é definido dentro do con-texto de uma tarefa. Um escopo é equivalente a um perfil. Por exem-plo, um escopo pode incluir todos

os nós Linux ou todos os nós AIX. O escopo também pode se equi-parar a serviços, tais como todas as máqui-nas executando dae-mons SSH ou serviços SMB (escopos e tarefas são totalmente abstra-tos. No momento, o

OpenVAS não oferece meios para criação automática de um escopo e uma tarefa a partir de varreduras anteriores ou modelos).Quando tudo estiver pronto, é hora de executar a primeira varredura. Primeiramente, escolha as opções desejadas, com a varredura de portas preferidas e credenciais de acesso do alvo, e então execute-a clicando no botão Execute. A varredura se inicia neste ponto. O cliente abrirá uma janela de informação com o status atual da varredura e a verificação da porta (figura 5).Quando tudo acabar, um relatório irá destacar o número de questões com prioridades alta, moderada e baixa (figura 6). O cliente também pode exportar o relatório em vários formatos, incluindo HTML, XML e PDF.

Validação dos resultadosAssim como em qualquer processo automatizado que não tenha sido ajustado, o perigo de falsos positivos se revela nas primeiras varreduras do OpenVAS. A equipe técnica deve analisar cada questão para determi-nar se é um caso de falso positivo. Essa análise consiste, normalmen-te, na verificação do fato de que o serviço relatado está mesmo sendo executado em uma porta aberta e se está respondendo. Às vezes, o falso positivo é resultado de algu-ma modificação local do software feita pela equipe, como quando os fornecedores fazem backport de patches em uma versão suportada de um pacote. Se possível, o modo mais rápido de validar os resultados é comparando a versão do software em execução no sistema remoto às versões listadas em vários bancos de dados de vulnerabilidade.

Se os resultados parecerem válidos, o próximo passo seria simplesmente

Listagem 1: Continuação

54 {55 exit(0);56 }57 if(!get_kb_item(“ftp/writeable_dir”))58 {59 exit(0);60 }61 banner = get_ftp_banner(port);62 if (!banner) {63 exit(0);64 }65 if (“Microsoft FTP Service (Version 5.0)” >< banner){66 security_hole(port);67 }68 else69 {70 if (“Microsoft FTP Service” >< banner){71 security_warning(port);72 }73 }

Figura 5 O OpenVAS mostra o progresso da varredura.

Page 6: OpenVas O farejador de vulnerabilidades OpenVASlnm.com.br/images/uploads/pdf_aberto/LM_67_34_39_06_capa_openvas.pdf · que, normalmente, poderiam es-tar inacessíveis pela rede (como

39

| CAPAOpenVAS

Linux Magazine #67 | Junho de 2010

confiar no OpenVAS e seguir as reco-mendações dadas no relatório, o que poderia acarretar o cancelamento de um serviço ou servidor. No entanto, dependendo da sua curiosidade, é possível recriar o problema manu-almente para compreender melhor seu contexto.

Novos plugins com o NASLComo o Nessus, o OpenVAS per-mite a criação de seus próprios plugins para verificações de segu-rança customizadas com a Nessus Attack Scripting Language (NASL – Linguagem de Script de Ataque do Nessus). Veja o Guia de Referên-cia do NASL, disponível online [3], para maiores informações sobre o NASL. A listagem 1 mostra alguns dos recursos básicos para se traba-lhar com o NASL.

Na listagem 1, o bloco de des-crição contém metadados sobre o plugin, incluindo uma descrição da vulnerabilidade, detalhes sobre a categoria do plugin e informa-ções sobre quaisquer dependências que o plugin possa ter. Nesse caso, é possível perceber que a checagem é destinada ao CVE-2009-3023, um estouro de pilha que foi relatado no servidor FTP IIS da Microsoft.

Abaixo do bloco de descrição, há uma definição da checagem em si. Como é possível ver, o script exami-na se a porta especificada está aberta e chama a base de conhecimento interna para garantir que um dire-tório com permissão de escrita seja detectado pelo plugin de dependên-cia ftp_writeable_directories.nasl. Se for o caso, o script se conecta à

porta e busca o banner FTP. Assim que obtiver o banner, ele o compara a versões sabidamente vulneráveis e faz os relatórios necessários. A veri-ficação sabe que a versão 5.0 é vul-nerável, portanto, irá reportar uma brecha nesse caso, mas, em outros em que o servidor FTP da Microsoft estiver sendo executado, é emitido um aviso.

O código da listagem 1 é uma análise razoavelmente simples de um script NASL. A NASL é uma linguagem de domínio específico com várias funções específicas de segurança. Alguns questionaram a decisão da Tenable de implementar uma linguagem totalmente nova, mas a NASL foi desenvolvida para ser segura e oferecer as ferramentas necessárias para verificar até vul-nerabilidades bem complexas. A linguagem NASL inclui funções já prontas para montagem de pacotes, captura de pacotes e muitas outras tarefas úteis. n

Gostou do artigo?Queremos ouvir sua opinião. Fale conosco em [email protected]

Este artigo no nosso site: http://lnm.com.br/article/3525

Mais informações

[1] Nessus: http://www.nessus.org/nessus/

[2] OpenVAS: http://www.openvas.org/

[3] Guia de Referência da NASL: http://www.virtualblueness.net/nasl.html

Sobre o autor

Geoff Galitz está na área de sistemas Unix há 18 anos. Gosta de escrever e ensinar.

Tim Brown trabalha como consultor sênior de segurança da informação em Port-cullis há cinco anos.

Figura 6 O relatório inicial, com um incidente expandido no visor.


Recommended