Vulscan é um módulo que aprimora o nmap para um scanner de vulnerabilidades. A opção -sV do nmap permite a detecção de versão por serviço que é usada para determinar possíveis falhas de acordo com o produto identificado. Os dados são consultados em uma versão offline do VulDB.
Instale os arquivos na seguinte pasta de instalação do Nmap:
Nmapscriptsvulscan*
Clone o repositório GitHub assim:
git clone https://github.com/scipag/vulscan scipag_vulscan
ln -s `pwd`/scipag_vulscan /usr/share/nmap/scripts/vulscan
Você deve executar o seguinte comando mínimo para iniciar uma verificação de vulnerabilidade simples:
nmap -sV --script=vulscan/vulscan.nse www.example.com
Existem os seguintes bancos de dados pré-instalados disponíveis no momento:
Você pode executar o vulscan com o seguinte argumento para usar um único banco de dados:
--script-args vulscandb=your_own_database
Também é possível criar e referenciar seus próprios bancos de dados. Isso requer a criação de um arquivo de banco de dados, que possui a seguinte estrutura:
<id>;<title>
Basta executar o vulscan como faria, referindo-se a um dos bancos de dados pré-entregues. Sinta-se à vontade para compartilhar seu próprio banco de dados e conexão de vulnerabilidade comigo, para adicioná-lo ao repositório oficial.
Os bancos de dados de vulnerabilidades são atualizados e montados regularmente. Para oferecer suporte às vulnerabilidades divulgadas mais recentemente, mantenha seus bancos de dados de vulnerabilidades locais atualizados.
Para atualizar automaticamente os bancos de dados, basta definir as permissões de execução para o arquivo update.sh
e executá-lo:
chmod 744 update.sh
./update.sh
Se você deseja atualizar manualmente seus bancos de dados, acesse o seguinte site e baixe estes arquivos:
Copie os arquivos para sua pasta vulscan:
/vulscan/
Se a detecção de versão for capaz de identificar a versão do software e o banco de dados de vulnerabilidade fornecer tais detalhes, esses dados também serão correspondidos.
Desativar esse recurso pode introduzir falsos positivos, mas também eliminar falsos negativos e aumentar ligeiramente o desempenho. Se você quiser desabilitar a correspondência de versão adicional, use o seguinte argumento:
--script-args vulscanversiondetection=0
A detecção de versão do vulscan é tão boa quanto a detecção de versão do Nmap e as entradas do banco de dados de vulnerabilidade. Alguns bancos de dados não fornecem informações conclusivas sobre a versão, o que pode levar a muitos falsos positivos (como pode ser visto nos servidores Apache).
O script está tentando identificar apenas as melhores correspondências. Se nenhuma correspondência positiva for encontrada, a melhor correspondência possível (pode ser um falso positivo) será exibida.
Se você quiser mostrar todas as correspondências, o que pode introduzir muitos falsos positivos, mas pode ser útil para investigações adicionais, use o seguinte argumento:
--script-args vulscanshowall=1
O modo interativo ajuda a substituir os resultados da detecção de versão para cada porta. Use o seguinte argumento para ativar o modo interativo:
--script-args vulscaninteractive=1
Todos os resultados correspondentes são impressos um por linha. O layout padrão para isso é:
[{id}] {title}n
É possível utilizar outra estrutura de relatório pré-definida com o seguinte argumento:
--script-args vulscanoutput=details
--script-args vulscanoutput=listid
--script-args vulscanoutput=listlink
--script-args vulscanoutput=listtitle
Você pode impor sua própria estrutura de relatório usando o seguinte argumento (alguns exemplos):
--script-args vulscanoutput='{link}n{title}nn'
--script-args vulscanoutput='ID: {id} - Title: {title} ({matches})n'
--script-args vulscanoutput='{id} | {product} | {version}n'
São suportados os seguintes elementos para um modelo de relatório dinâmico:
Cada banco de dados padrão vem com uma URL e um link, que é usado durante a verificação e pode ser acessado como {link} no modelo de relatório personalizado. Para usar links de banco de dados personalizados, use o seguinte argumento:
--script-args "vulscandblink=http://example.org/{id}"
Tenha em mente que esse tipo de verificação de vulnerabilidade derivada depende muito da confiança na detecção da versão do nmap, da quantidade de vulnerabilidades documentadas e da precisão da correspondência de padrões. A existência de falhas potenciais não é verificada com técnicas adicionais de varredura ou exploração.