Sei sulla pagina 1di 9

19/12/12

Utilizando o Nmap Scripting Engine (NSE) [Artigo]

Utilizando o Nmap Scripting Engine (NSE)


Autor: Bruno Salgado <brunosalgado at gmail.com>
Data: 12/12/2012
Introduo
Neste artigo, o foco no Nmap Scripting Engine (NSE), uma funcionalidade poderosa e flexvel do Nmap,
que permite a execuo de scripts a fim de automatizar tarefas variadas.
O NSE distribudo com o Nmap, junto com um conjunto de scripts maior a cada nova verso, e pode ser
obtido atravs do site oficial:
http://nmap.org.
Informaes adicionais s apresentadas neste artigo podem ser encontradas em:
Documentao oficial do Nmap
Documentao oficial do NSE
Portal NSEDoc de Referncia do NSE
Livro de autoria do prprio Fyodor, dedicado ferramenta (Nmap Network Scanning. Gordon
"Fyodor" Lyon, Insecure.com LCC Publishings. ISBN: 978-0979958717), que inclusive, tem uma
verso traduzida em portugus (pt-BR) - Exame de Redes com NMAP. Gordon "Fyodor" Lyon,
Editora Cincia Moderna. ISBN: 978-8573938654.
Parte deste livro est disponvel gratuitamente na Internet para leitura e consulta:
http://nmap.org/book/toc.html
Vale mencionar que o captulo do livro referente ao NSE faz parte do contedo disponibilizado.
Nos exemplos de alvos apresentados neste artigo, so utilizados apenas faixas de endereos IP privados
definidos na RFC 1918, a saber:
10.0.0.0/8;
172.16.0.0/12;
192.168.0.0/16.
E o endereo scanme.nmap.org, que um host preparado pelos prprios desenvolvedores da ferramenta
para receber este tipo de varredura.
Os leitores so encorajados a no executar varreduras sobre qualquer ativo que no seja de sua propriedade
www.v iv aolinux.com.br/artigos/impressora.php?codigo=13992

1/9

Utilizando o Nmap Scripting Engine (NSE) [Artigo]

ou, que se tenha autorizao formal para isso.

Sobre o Nmap Scripting Engine


Este artigo faz parte de uma srie de artigos redigidos sobre a ferramenta livre e de cdigo 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 tcnicas de descoberta de hosts, de varredura de portas, de deteco
de verses de servios e de identificao de sistema operacional.

Como descrito anteriormente, o NSE uma funcionalidade poderosa do Nmap, verstil e flexvel, que
permite a seus usurios desenvolver e compartilhar scripts simples e integr-los s varreduras tradicionais do
Nmap, a fim de automatizar tarefas variadas.
Os usurios podem somente utilizar os scripts disponibilizados junto com o Nmap, modificar scripts existentes
ou ainda desenvolver seus prprios scripts personalizados que atendam s suas necessidades.
O NSE foi desenvolvido inicialmente com o objetivo de melhorar a descoberta de rede, incluir mtodos mais
sofisticados de deteco de verses e permitir a identificao de vulnerabilidades.
Em sua verso atual, alm destas funes, o NSE capaz de detectar:
backdoors;
explorar vulnerabilidades;
realizar ataques de dicionrio e de negao de servio;
detectar malwares remotamente;
entre outros.
Por se tratar de uma ferramenta to verstil, possvel que surjam ainda scripts aplicveis em novas situaes
no previstas pelos desenvolvedores e mantenedores do Nmap.
Os scripts executados pelo NSE so escritos na linguagem de script Lua. A linguagem Lua foi criada em
1993 no Laboratrio de Tecnologia em Computao Grfica da Pontifcia Universidade Catlica do Rio de
Janeiro - TecGraf/PUC-Rio e continua em desenvolvimento ativo ainda hoje.
Lua uma linguagem extensvel, segura e portvel, muito usada e j bastante depurada, alm disto
considerada uma linguagem fcil 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
documentao da linguagem, uma distribuio completa, com cdigo fonte, manual e binrios para algumas
plataformas cabem confortavelmente em um disquete).
Atualmente, Lua bastante usada no desenvolvimento de jogos, figurando em ttulos como "World of
www.v iv aolinux.com.br/artigos/impressora.php?codigo=13992

2/9

19/12/12

Utilizando o Nmap Scripting Engine (NSE) [Artigo]

Warcraft" e "Crysis", e mais recentemente, em ferramentas de segurana, como o Nmap, naturalmente, o


Wireshark e o Snort 3.0.
O manual de referncia oficial da linguagem Lua so os livros:
Programming in Lua No momento da redao deste artigo, na segunda edio [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 edio do livro Programming in Lua est disponvel gratuitamente na Internet:
http://www.lua.org/pil, bem como a edio atual do Lua 5.1 Reference Manual, que inclusive tem uma verso
em portugus:
http://www.lua.org/manual/5.1/pt/
importante frisar que no necessrio nenhum conhecimento de programao para executar os scripts
prontos, distribudos com o Nmap. Entretanto, caso deseje desenvolver ou modificar scripts, alm das
bibliotecas padro do Lua, o Nmap fornece diversas outras prontas para tratar requisies de diversos
protocolos, mdulos para ataques de dicionrio e manipulao de wordlists, suporte para tratar transaes
SSL, entre muitas outras facilidades.
Estas facilidades auxiliam os desenvolvedores, de forma que, mesmo que este se considere um programador
mediano, seja possvel desenvolver scripts para o NSE.
Outro adendo importante, que os scripts executados pelo NSE no so isolados em Sandboxes de
nenhuma espcie. Ento, evite utilizar scripts cuja procedncia no 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 cdigo arbitrrio em seu sistema operacional.
Em 2010, o prprio Fyodor, juntamente com o desenvolvedor de scripts David Fifield, apresentaram
palestras no DEFCON 18 e no BlackHat 10 sobre o NSE. Os vdeos destas palestras encontram-se
disponveis na pgina oficial do Nmap.
Estas palestras tiveram como ttulo: Mastering the Nmap Scripting Engine e mostraram uma introduo ao
uso do NSE e ao desenvolvimento de scripts e tambm estudos de caso onde ao NSE foi utilizado.

Quickstart - Classificao dos scripts


A forma mais simplista de executar uma varredura utilizando o Nmap e o NSE, executar a ferramenta
somente com o parmetros referente ao NSE, a saber "-sC", sobre o alvo especificado.
Esta varredura utiliza as opes padro, tanto para a descoberta de hosts quanto para a varredura de portas:
$ nmap -sC scanme.nmap.org
www.v iv aolinux.com.br/artigos/impressora.php?codigo=13992

3/9

19/12/12

Utilizando o Nmap Scripting Engine (NSE) [Artigo]

Esta varredura verifica se o alvo est ativo na rede utilizando o mtodo de descoberta padro, faz a varredura
de portas utilizando o mtodo de varredura padro e executa os scripts classificados na categoria padro. O
resultado esperado de uma varredura como esta :
Verificao de atividade do alvo na rede;
Listagem de portas abertas, fechadas e filtradas associadas ao nome do servio que tradicionalmente
utiliza cada porta, caso o alvo esteja ativo;
E sadas dos scripts que tiveram suas condies de execuo satisfeitas e, por isto, foram executados
pelo NSE.
Isto quer dizer, que se um determinado servio estiver sendo provido em uma porta diferente da que
tradicionalmente utilizada, o Nmap fornecer uma resposta incorreta sobre o servio. Isto quer dizer que,
por exemplo, se um servidor SSH, que tradicionalmente utiliza a porta 22, for configurado para prover o
servio na porta 80, tradicionalmente utilizada por servidores HTTP, nesta varredura o Nmap detectar um
servidor HTTP e no um SSH, como esperado. Para resolver este problema, necessrio incluir na
varredura a deteco de verses de servios.
Na seo "Classificao dos Scripts", discutido do que consiste a categoria padro e quais so as
categorias de scripts e como eles so classificados nas mesmas. As questes referentes ao mtodo de
descoberta de hosts, de varredura de portas e de deteco de verses de servios, foram tratadas no
primeiro artigo da srie, Mapeamento de Redes com Nmap.

Classificao dos scripts


Os scripts disponibilizados pelo NSE so 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 so 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 execuo. A listagem abaixo descreve cada
categoria especificada no Portal NSEDoc de Referncia do NSE:
auth Relacionados mecanismos de autenticao e credenciais de acesso;
broadcast Fazem descoberta de hosts no listados como alvos atravs do envio de pacotes
broadcast;
brute Visam descobrir credenciais de acesso atravs de ataques de dicionrio;
default a categoria padro, em que os scripts devem fornecer respostas rpidas, concisas e
confiveis, alm de serem pouco intrusivos, de fornecerem informaes teis para a maior parte dos
usurios e de no estressarem o alvo a ponto de ser detectado por seus administradores como um
ataque;
discovery Visam descobrir ativamente mais informaes 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 legtimas a recursos de terceiros, no listados como alvos;
fuzzer Enviam pacotes contendo aleatrios ou inesperados pela aplicao servidor visando
www.v iv aolinux.com.br/artigos/impressora.php?codigo=13992

4/9

19/12/12

Utilizando o Nmap Scripting Engine (NSE) [Artigo]

descobrir bugs e vulnerabilidades;


intrusive : Representam considervel 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 no devem causar erros no lado do servidor, utilizar muitos
recursos ou explorar brechas de segurana;
version Estendem a funcionalidade de deteco de verso do Nmap;
vuln Verificam se h uma dada vulnerabilidade conhecida no alvo.
O NSE somente seleciona um script para execuo sobre o alvo da varredura, caso certas condies prdeterminadas sejam atendidas. Estas condies so especificadas por regras que esto vinculadas ao tipo de
script.
A listagem abaixo descreve cada uma destas regras que definem os tipos de script, conforme especificado na
documentao oficial do Nmap Scripting Engine:
prerule So executados apenas uma vez, antes de todas as fases de varredura do Nmap, quando
ainda no h informaes a respeito dos alvos, e realizam tarefas que no dependem da especificao
de alvos, como o envio de pacotes broadcast, por exemplo;
hostrule So executados durante as fases de varredura do Nmap e so invocados apenas uma vez
para cada um dos alvos especificados que forem detectados como ativos;
portrule So executados durante as fases de varredura do Nmap e so invocados uma vez para
cada instncia detectada de um dado servio encontrado em alvos detectados como ativos;
postrule So executados apenas uma vez, depois de todas as fases de varredura do Nmap e da
execuo de todos os outros scripts do NSE e so usados, principalmente, para formatar a sada do
Nmap segundo uma regra pr-definida.
O que define se o script ser executado, o tipo da regra e o contedo da regra em si. A regra definida
pelo desenvolvedor do script e pode estipular casos em que o script no deve ser executado, como a
ausncia da definio de determinados parmetros, nvel de privilgios do usurio que executou a varredura,
at o resultado de outros scripts.

Scripts e sintaxe - Parmetros

Dependncias de scripts e sintaxe de uso do


Nmap Scripting Engine
O NSE oferece tambm um esquema de dependncias de scripts que utilizando para estabelecer a ordem
em que os scripts sero executados.
Este esquema til em situaes em que um script pode se beneficiar em utilizar a sada de um outro script.
Entretanto, apesar do que o nome sugere, caso a dependncia de um script no seja executada, este script
www.v iv aolinux.com.br/artigos/impressora.php?codigo=13992

5/9

Utilizando o Nmap Scripting Engine (NSE) [Artigo]

poder ser executado mesmo assim.


Um exemplo claro do funcionamento deste esquema, so os scripts da categoria "brute". Muitos scripts tm
como dependncias scripts da categoria brute, pois, se alguma credencial for obtida por um script desta
categoria, esta credencial certamente ser til para outros scripts.
Assim, ao relacion-lo como dependncia, fica garantido que o script de dependncia ser executado antes, e
a sua sada ser repassada, melhorando ainda mais os resultados obtidos na execuo do segundo script.
Existem diversas maneiras distintas de executar o NSE. Duas delas "-sC" e "-A", executam somente os
scripts da categoria padro, que agora sabemos que chama-se "default".
A opo "-A" representa a varredura agressiva do Nmap e equivale s opes "-sC -sV -O --traceroute".
Neste caso, o NSE tambm executa a categoria de scripts padro e o Nmap ativa tambm a deteco de
verses de servios e a identificao de sistema operacional, que foram tratadas no primeiro artigo da srie
"Mapeamento de Redes com Nmap" [1], e tambm a opo que traa a rota de transmisso dos pacotes.
Alm destas, o NSE tambm pode ser executado a partir da opo "--script", sendo esta a opo que pode
ser configurada para executar scripts de outras categorias, alm da padro. Esta opo usada obedecendo
a seguinte sintaxe:
--script script|categoria|diretrio|expresso|all[,script|categoria|diretrio|expresso]

Se a opo "--script" for usada com a categoria "default", o NSE comporta-se da mesma maneira que com
as opes "-sC" e "-A". Assim, os comandos abaixo so equivalentes e o NSE executa somente os scripts da
categoria padro:
$ nmap -A scanme.nmap.org
$ nmap -sC -sV -O --traceroute scanme.nmap.org
$ nmap --script "default" -sV -O --traceroute scanme.nmap.org
A opo "--script" pode ser usada com nomes de scripts completos, nomes de categorias, nomes de
diretrios, expresses ou a string "all". O NSE busca por scripts identificados pela extenso ".nse", que
atendam s condies passadas no subdiretrio "scripts" dos seguintes diretrios: o parmetro da opo "-datadir", o contedo das variveis "$NMAPDIR" e "NMAPDATADIR", aquele que contm o binrio do
Nmap seguido de "../share/nmap", "~/.nmap" e o atual.
Quando o NSE executado com nomes de scripts completos, seguido ou no da extenso ".nse", o NSE
busca por script com o nome de arquivo passado e o executa se suas condies de execuo forem
satisfeitas.
Segue abaixo exemplos de varreduras que chamam um nico script:
$ nmap --script "http-methods" scanme.nmap.org
$ nmap --script "dhcp-discovery,dns-zone-transfer,whois" scanme.nmap.org
Quando o NSE executado com nomes de categorias, o NSE busca todos os scripts pertencentes quela
categoria e os executa se suas condies de execuo forem satisfeitas.
www.v iv aolinux.com.br/artigos/impressora.php?codigo=13992

6/9

19/12/12

Utilizando o Nmap Scripting Engine (NSE) [Artigo]

Segue abaixo exemplos de varreduras que chamam categorias:


$ nmap --script "default" scanme.nmap.org
$ nmap --script "auth,discovery,safe" 10.0.0.0/24
Quando o NSE executado com nomes de diretrios, o NSE busca todos os scripts armazenados no
diretrio referido e os executa se suas condies de execuo forem satisfeitas.
Segue abaixo exemplos de varreduras que chamam scripts armazenados em um diretrio:
$ nmap --script "./custom_scripts" 172.16.0.0/28
$ nmap --script "/tmp/scripts,/usr/share/nmap/scripts" 10.0.0.0/24
Quando o NSE executado com a string "all", o NSE executa todos os scripts que encontrar se suas
condies execuo forem satisfeitas.
Segue abaixo um exemplo de varredura que chama todos os scripts:
$ nmap --script "all" 10.0.0.1
Quando o NSE executado com uma expresso, o NSE busca todos os scripts referenciados pela
expresso e os executa se suas condies execuo forem satisfeitas. Expresses podem conter caracteres
coringas (Wildcards) no estilo de Scripts Bash, parnteses que definem escopos e os operadores lgicos
"and", "or" e "not":
$ nmap --script "http-* and ssh-* and not intrusive" scanme.nmap.org
$ nmap --script "intrusive and (brute or dos or exploit) and not (default or safe)" 178.16.0.1

Passando parmetros para scripts


possvel passar argumentos para os scripts executados com o NSE atravs da opo "--script-args". Os
argumentos so passados em uma lista separada por vrgulas no formato "chave=valor". A listagem de
argumentos aceitos por cada script pode ser acessada diretamente na documentao de cada script no Portal
NSEDoc de Referncia do NSE [5].
Os argumentos pode afetar apenas um ou todos os scripts executados. Quando um argumento deve afetar
apenas um script, este deve ser passado usando a sintaxe "nome_script.chave=valor" ou, para passar mais de
um argumento "nome_script={ chave1=valor1,chave2=valor2}".
Quando o argumento deve afetar todos os scripts executados, basta passar "chave=valor" que todos os
scripts que aceitam o argumento "chave" o utilizaro. Seguem abaixo exemplos de varredura utilizando o NSE
com passagem de parmetros:
$ nmap --script 'brute' --script-args 'user="foo",pass="bar"' 10.0.0.0/24
$ nmap --script 'safe' --script-args 'domain="alvo.com", smtp.domain= "alvomail.com"' 192.168.0.1
$ nmap --script 'brute' --script-args 'smtp-brute={userdb=user2.txt,passdb=pass2.txt},
www.v iv aolinux.com.br/artigos/impressora.php?codigo=13992

7/9

19/12/12

Utilizando o Nmap Scripting Engine (NSE) [Artigo]

userdb=user1.txt,passdb=pass1.txt' 172.16.0.1
Tambm possvel passar parmetros em um arquivo texto atravs da opo "--script-args-file". Para utilizar
esta opo, os parmetros devem ser escritos da mesma forma que seriam na modalidade passada na linha
de comando e estar separados por vrgulas ou quebras de linha.

Concluso
O Nmap Scripting Engine uma funcionalidade do Nmap que inclui varredura tradicional do Nmap
diversas funcionalidades que permitem interrogar hosts na rede de maneira mais flexvel e verstil.
Este artigo discutiu as funcionalidades principais oferecidas pelo NSE, no entanto, ainda h muitas outras
funcionalidades do Nmap que no foram se quer mencionadas, como:
Opes de controle de desempenho;
Opes de evaso de firewalls/IDS/IPS;
Opes de spoofing;
E muitas outras.
O leitor encorajado a buscar mais informaes na Documentao Oficial do Nmap e do NSE, no livro
oficial e outras fontes, como os webinars NMAP -- Software Livre para Explorao de Rede e Auditorias de
Segurana e Teste de Invaso com o Nmap Scripting Engine, da Clavis.
* Vale mencionar que, apesar de no haver legislao especifica que tipifique como crime o ato de executar
varreduras de qualquer tipo em redes de qualquer espcie, o objetivo deste artigo no incentivar aos
leitores a fazer varreduras aleatrias em redes que no so de sua propriedade ou que no se tenha
autorizao para faz-lo. E sim, informar quanto a que tipo de informao relevante pode ser extrada destas
varreduras e como estas podem ajudar em auditorias teste de invaso, depurao de firewalls ou
administrao de servidores etc.
Veja o primeiro artigo desta srie em:
Mapeamento de Redes com Nmap www.blog.clavis.com.br
Por: Henrique Soares e Rafael Ferreira
Instrutores da Academia Clavis Segurana da Informao www.blog.clavis.com.br

http://www.vivaolinux.com.br/artigo/Utilizando-o-Nmap-Scripting-Engine-NSE
Voltar para o site
www.v iv aolinux.com.br/artigos/impressora.php?codigo=13992

8/9

19/12/12

Utilizando o Nmap Scripting Engine (NSE) [Artigo]

www.v iv aolinux.com.br/artigos/impressora.php?codigo=13992

9/9

Potrebbero piacerti anche