Este artigo faz parte de uma série de artigos redigidos sobre a ferramenta livre e de código aberto
Nmap (reduzido de "Network Mapper").
No primeiro artigo
Mapeamento de Redes com Nmap, foram discutidas as funcionalidades mais comuns da ferramenta, abrangendo suas principais técnicas de descoberta de hosts, de varredura de portas, de detecção de versões de serviços e de identificação de sistema operacional.
Como descrito anteriormente, o NSE é uma funcionalidade poderosa do Nmap, versátil e flexível, que permite a seus usuários desenvolver e compartilhar scripts simples e integrá-los às varreduras tradicionais do Nmap, a fim de automatizar tarefas variadas.
Os usuários podem somente utilizar os scripts disponibilizados junto com o Nmap, modificar scripts existentes ou ainda desenvolver seus próprios scripts personalizados que atendam às suas necessidades.
O NSE foi desenvolvido inicialmente com o objetivo de melhorar a descoberta de rede, incluir métodos mais sofisticados de detecção de versões e permitir a identificação de vulnerabilidades.
Em sua versão atual, além destas funções, o NSE é capaz de detectar:
- backdoors;
- explorar vulnerabilidades;
- realizar ataques de dicionário e de negação de serviço;
- detectar malwares remotamente;
- entre outros.
Por se tratar de uma ferramenta tão versátil, é possível que surjam ainda scripts aplicáveis em novas situações não previstas pelos desenvolvedores e mantenedores do Nmap.
Os scripts executados pelo NSE são escritos na linguagem de script
Lua. A linguagem
Lua foi criada em 1993 no Laboratório de Tecnologia em Computação Gráfica da Pontifícia Universidade Católica do Rio de Janeiro -
TecGraf/PUC-Rio e continua em desenvolvimento ativo ainda hoje.
Lua é uma linguagem extensível, segura e portável, muito usada e já bastante depurada, além disto é considerada uma linguagem fácil de aprender (principalmente se já se conhece outras linguagens de script, como
Perl, Python ou outras linguagens como
C/C++, Java, etc.) e pequena para embutir (segundo a documentação da linguagem, uma distribuição completa, com código fonte, manual e binários para algumas plataformas cabem confortavelmente em um disquete).
Atualmente, Lua é bastante usada no desenvolvimento de jogos, figurando em títulos como "World of Warcraft" e "Crysis", e mais recentemente, em ferramentas de segurança, como o Nmap, naturalmente, o
Wireshark e o
Snort 3.0.
O manual de referência oficial da linguagem Lua são os livros:
- Programming in Lua → No momento da redação deste artigo, na segunda edição [Programming in Lua, Second Edition. Roberto Ierusalimschy. Lua.org Publishing. ISBN: 978-8590379829].
- Lua 5.1 Reference Manual → Lua 5.1 Reference Manual. Roberto Ierusalimschy, Luiz Henrique de Figueiredo e Waldemar Celes, Lua.org Publishing. ISBN: 978-8590379836.
A primeira edição do livro
Programming in Lua está disponível gratuitamente na Internet:
http://www.lua.org/pil, bem como a edição atual do
Lua 5.1 Reference Manual, que inclusive tem uma versão em português:
É importante frisar que não é necessário nenhum conhecimento de programação para executar os scripts prontos, distribuídos com o Nmap. Entretanto, caso deseje desenvolver ou modificar scripts, além das bibliotecas padrão do Lua, o Nmap fornece diversas outras prontas para tratar requisições de diversos protocolos, módulos para ataques de dicionário e manipulação de wordlists, suporte para tratar transações SSL, entre muitas outras facilidades.
Estas facilidades auxiliam os desenvolvedores, de forma que, mesmo que este se considere um programador mediano, seja possível desenvolver scripts para o NSE.
Outro adendo importante, é que os scripts executados pelo NSE não são isolados em Sandboxes de nenhuma espécie. Então, evite utilizar scripts cuja procedência não pode ser atestada. Ainda assim, caso se queira executar scripts desenvolvidos pela comunidade, sem a auditoria da equipe do Nmap, audite-o você mesmo, pois este script pode, potencialmente, executar código arbitrário em seu sistema operacional.
Em 2010, o próprio Fyodor, juntamente com o desenvolvedor de scripts David Fifield, apresentaram palestras no DEFCON 18 e no BlackHat 10 sobre o NSE. Os vídeos destas palestras encontram-se disponíveis na página oficial do
Nmap.
Estas palestras tiveram como título:
Mastering the Nmap Scripting Engine e mostraram uma introdução ao uso do NSE e ao desenvolvimento de scripts e também estudos de caso onde ao NSE foi utilizado.