O Nmap também possui a possibilidade de uso de Scripts, chamado: Nmap Scripting Engine
Este modo estende o uso da ferramente para algo além de mapear redes e enumeração de serviços, ele aplica funções de Bruteforce, ataques DoS e
até mesmo, descoberta de vulnerabilidades.
Os Scripts podem ser escritos e compartilhados por qualquer usuário no objetivo de automatizar as tarefas diárias.
A linguagem utilizada é a
Lua, pequena e flexível,
geralmente utilizada para expandir funções de programas e jogos. Este artigo não mostrará como desenvolver os Scripts, somente como eles são
utilizados.
Os Scripts, por padrão, ficam no diretório "/usr/local/share/nmap/scripts", com a extensão ".nse".
Para uma melhor organização, os Scrips foram divididos em 12 categorias, sendo:
- Categorias:
- Auth: Scripts voltados para tentativa de autenticação, ou Bypass da mesma;
- Broadcast: Realiza um scan de Broadcast na rede atrás de Hosts não listados por scans normais;
- Brute: Usam técnicas de Bruteforce para realizar autenticação de serviços;
- Default: São os scripts padrões do Nmap, utilizado com a opção -sC ou --scripts=default. As opções serão retratadas abaixo;
- Discovery: Esses scripts realizam varreduras de descobrimento na rede, como cabeçalhos HTML, detalhes do serviço SAMBA etc;
- DoS: Scripts utilizados para forçar a queda do alvo;
- External: Utilizam aplicações de terceiros, como consultas ao banco de dados do whois;
- Fuzzer: Envia pacotes com dados randômicos para o alvo, a procura de bugs e vulnerabilidades;
- Intrusive: Não são considerados seguros pois podem derrubar o alvo ou invadi-lo;
- Malware: Procura no alvo malwares ou backdoors;
- Safe: São considerados scrips que não derrubam serviços, não utilizam toda a banda e não gera nenhum risco ao alvo;
- Version: Scripts para detectar versões de serviços específicos, como o Skype. Só podem ser usados cada o tipo de scan -sV for requerido;
- Vuln: Usados para procurar vulnerabilidades. Só são gerados relatórios se elas são encontradas.
Além das categorias para organização dos Scripts, também há a separação de quando o Script é executado, chamado de fases, são elas:
- Fases:
- Prerule scripts: São executados antes do Nmap recolher qualquer informação sobre o alvo;
- Host scripts: Ocorre durante o processo de scaning, logo depois do scan de portas, serviços e sistema operacional;
- Service scripts: São executados em serviços específicos no host;
- Postrule scripts: Estes Scripts rodam depois que todo a varredura for feita. Geralmente auxiliam na formatação de relatórios.
Vamos botar a mão na massa, e ver quais são os comandos utilizados para executar Scripts com o Nmap.
- Comandos:
- -sC: Executa os scripts da categoria default. É equivalente a --scripts=default.
- --script <nome | categoria | diretório>: É o comando mais complexo. Nele, você pode selecionar os scripts por nome, categoria ou um
diretório alternativo. Os valores são separados por vírgulas, parênteses e também por operadores booleanos 'not', 'or' ou 'and', que devem ser usados
entre aspas para evitar interpretação do shell. Pode ser usado também * (asterisco), para representar todos os valores.
Para usarmos todos os Scripts da categoria de DoS, usamos: --script dos
Se quisermos os Scripts da categoria 'safe' e o 'ftp-anon', usamos: --script safe,ftp-anon
Para utilização de todos os Scripts da categoria 'auth', menos o 'ftp-anon', usamos: --scripts "(auth) and not ftp-anon"
- --script-args <arg=valor>: É utilizado para uso de argumentos dentro do Scritp. Pode-se separar os argumentos com vírgulas, e caso aja um
espaço em branco, deve ser utilizado aspas.
Os argumentos disponíveis podem ser localizados no código do Scripts dentro do registro chamado "nmap.registry.args", ou na descrição.
Por exemplo, o 'ftp-anon' disponibiliza dois arguementos para limitar as tentativas de usuários e senhas, 'userlimit' e 'passlimit', respectivamente.
Podemos utilizá-los assim: --script ftp-anon --script-args userlimit=100,passlimit=100
- --script-help <nome | categoria | diretório>: Mostra um texto de ajuda para um script específico, categoria inteira ou Script de diretório
alternativo.
Seu uso é simples, para exibir ajuda de um script específico e a categoria de DoS: --script-help ftp-anon,dos
- --script-trace: Se ativo mostra informações como protocolo, código, alvo e dados transmitidos.
- --script-updatedb: Atualiza o banco de Scripts do Nmap, assim como suas categorias.
Exemplos:
nmap --scripts whois 192.168.1.20
$ nmap --scripts auth,brute 192.168.1.20
$ nmap --scripts "(ftp-*) and vuln" 192.168.1.20
$ nmap --script ftp-anon --script-args userlimit=100,passlimit=100 192.168.1.20
Conclusão
That's all folks!
Claro que nem todos os comandos e funcionalidades da ferramenta foram abordados, mas você pode ter uma visão mais ampla com a leitura do livro
Exames de Rede com NMAP, que possui uma ótima tradução.
O site do
Nmap, possui algumas partes do livro e outros documentos, os quais serviram de referência para a
construção deste artigo, além da
Security List, onde usuários podem trocar informações e resolver os possíveis
problemas.
Não deixe de visitar também a área de
Security Tools, onde há um ranking com as melhores ferramentas para
segurança.
Esse artigo foi previamente publicado no meu blog, o
Metasecurity, visitem lá também.