A forma mais simplista de executar uma varredura utilizando o Nmap e o NSE, é executar a ferramenta somente com o parâmetros referente ao NSE, a saber "-sC", sobre o alvo especificado.
Esta varredura utiliza as opções padrão, tanto para a descoberta de hosts quanto para a varredura de portas:
nmap -sC scanme.nmap.org
Esta varredura verifica se o alvo está ativo na rede utilizando o método de descoberta padrão, faz a varredura de portas utilizando o método de varredura padrão e executa os scripts classificados na categoria padrão. O resultado esperado de uma varredura como esta é:
- Verificação de atividade do alvo na rede;
- Listagem de portas abertas, fechadas e filtradas associadas ao nome do serviço que tradicionalmente utiliza cada porta, caso o alvo esteja ativo;
- E saídas dos scripts que tiveram suas condições de execução satisfeitas e, por isto, foram executados pelo NSE.
Isto quer dizer, que se um determinado serviço estiver sendo provido em uma porta diferente da que tradicionalmente é utilizada, o Nmap fornecerá uma resposta incorreta sobre o serviço. Isto quer dizer que, por exemplo, se um servidor SSH, que tradicionalmente utiliza a porta 22, for configurado para prover o serviço na porta 80, tradicionalmente utilizada por servidores HTTP, nesta varredura o Nmap detectará um servidor HTTP e não um SSH, como esperado. Para resolver este problema, é necessário incluir na varredura a detecção de versões de serviços.
Na seção "Classificação dos Scripts", é discutido do que consiste a categoria padrão e quais são as categorias de scripts e como eles são classificados nas mesmas. As questões referentes ao método de descoberta de hosts, de varredura de portas e de detecção de versões de serviços, foram tratadas no primeiro artigo da série,
Mapeamento de Redes com Nmap.
Classificação dos scripts
Os scripts disponibilizados pelo NSE são classificados quanto às categorias e ao tipo. As categorias dizem respeito à natureza da funcionalidade desempenhada e os tipos, à fase da varredura em que devem ser executados, isto é, as categorias classificam os scripts pelo que eles fazem e os tipos, pelo momento em que o mesmos são executados durante uma varredura.
Vale frisar, que um script pode ser classificado em mais de uma categoria e mais de um tipo, inclusive operando de maneira distinta nos diferentes momentos de execução. A listagem abaixo descreve cada categoria especificada no
Portal NSEDoc de Referência do NSE:
- auth → Relacionados à mecanismos de autenticação e credenciais de acesso;
- broadcast → Fazem descoberta de hosts não listados como alvos através do envio de pacotes broadcast;
- brute → Visam descobrir credenciais de acesso através de ataques de dicionário;
- default → É a categoria padrão, em que os scripts devem fornecer respostas rápidas, concisas e confiáveis, além de serem pouco intrusivos, de fornecerem informações úteis para a maior parte dos usuários e de não estressarem o alvo a ponto de ser detectado por seus administradores como um ataque;
- discovery → Visam descobrir ativamente mais informações sobre o alvo;
- dos → Tentam causar indisponibilidade do alvo, ao provocar erros no lado do servidor;
- exploit → Exploram uma dada vulnerabilidade conhecida;
- external → Fazem consultas legítimas a recursos de terceiros, não listados como alvos;
- fuzzer → Enviam pacotes contendo aleatórios ou inesperados pela aplicação servidor visando descobrir bugs e vulnerabilidades;
- intrusive →: Representam considerável risco de provocar erros no lado do servidor, utilizar uma quantidade significativa de recursos ou estressar o alvo a ponto de ser detectado por seus administradores como um ataque;
- malware → Detectam remotamente se o alvo está infectado com um dado malware;
- safe → Representam pouco risco e não devem causar erros no lado do servidor, utilizar muitos recursos ou explorar brechas de segurança;
- version → Estendem a funcionalidade de detecção de versão do Nmap;
- vuln → Verificam se há uma dada vulnerabilidade conhecida no alvo.
O NSE somente seleciona um script para execução sobre o alvo da varredura, caso certas condições pré-determinadas sejam atendidas. Estas condições são especificadas por regras que estão vinculadas ao tipo de script.
A listagem abaixo descreve cada uma destas regras que definem os tipos de script, conforme especificado na documentação oficial do
Nmap Scripting Engine:
- prerule → São executados apenas uma vez, antes de todas as fases de varredura do Nmap, quando ainda não há informações a respeito dos alvos, e realizam tarefas que não dependem da especificação de alvos, como o envio de pacotes broadcast, por exemplo;
- hostrule → São executados durante as fases de varredura do Nmap e são invocados apenas uma vez para cada um dos alvos especificados que forem detectados como ativos;
- portrule → São executados durante as fases de varredura do Nmap e são invocados uma vez para cada instância detectada de um dado serviço encontrado em alvos detectados como ativos;
- postrule → São executados apenas uma vez, depois de todas as fases de varredura do Nmap e da execução de todos os outros scripts do NSE e são usados, principalmente, para formatar a saída do Nmap segundo uma regra pré-definida.
O que define se o script será executado, é o tipo da regra e o conteúdo da regra em si. A regra é definida pelo desenvolvedor do script e pode estipular casos em que o script não deve ser executado, como a ausência da definição de determinados parâmetros, nível de privilégios do usuário que executou a varredura, até o resultado de outros scripts.