Mapeamento de Redes com nmap – ferramenta de código aberto com diversas funcionalidades

O nmap (reduzido de “Network Mapper”) é uma ferramenta livre, de código aberto, utilizada para ma­peamento de redes e inclui diversas funcionalidades como: varredura de portas, detecção de versão de ser­viços, identificação remota de sistemas operacionais (OS fingerprinting), etc. Esta ferramenta foi criada por Gordon “Fyodor” Lyon, que ainda hoje participa ativamente do desenvolvimento da mesma. O nmap é uma ferramenta versátil que é muito utilizada, entre outros, em auditorias, teste de invasão, teste em firewalls e testes de conformidade.

O nmap, em geral, opera nas camadas de rede e transporte. Entretanto, também é capaz de manipular dados da camada de enlace (endereças MAC e requi­sições ARP, por exemplo) e de interpretar dados da camada de aplicação para inferir informações interes­santes a respeito de seu alvo (versões de serviços e sistemas operacionais, por exemplo).

A versão mais nova do nmap por ser obtida atra­vés do site oficial. Informações adicionais às apresentadas neste artigo podem ser encontradas na documentação oficial ou no livro de autoria do próprio Fyodor dedicado à ferramenta (Nmap Network Scanning, Gordon “Fyodor” Lyon, Insecure.com LCC Publishings. ISBN: 978­0979958717), que inclu­sive tem uma versão traduzida em português brasileiro (Exame de Redes com NMAP, Gordon “Fyodor” Lyon, Editora Ciência Moderna. ISBN: 978­8573938654). Parte deste livro está disponível gratuitamente na Internet para leitura e consulta.

Nos exemplos de alvo apresentados neste artigo, são utilizados apenas faixas de endereços IP privados definidos na RFC 1918, a saber 10.0.0.0/8, 172.16.0.0/12 e 192.168.0.0/16, e o endereço scanme.nmap.org, que é um host preparado pelos próprios desenvolvedores da ferramenta para receber este tipo de varredura. Os leitores são encorajados a não executar varreduras sobre qualquer ativo que não seja de sua propriedade ou que se tenha autorização formal para isso.

Especificação de alvos

Antes de iniciar uma varredura, seja esta muito simples ou extremamente complexa, é preciso dizer ao nmap quais são os alvos desta varredura. O nmap define como alvos válidos endereços IP, faixas de endereços IP ou nomes de domínio dispostos em lista e separados por caracteres de espaçamento (espaço, tab, nova linha, etc). Estes alvos podem ser passados como parâmetro na linha de comando ou em um ar­quivo (pela opção -iL arquivo_alvos.txt).

Assim, quando o alvo é um endereço IP único, es­te deve ser especificado como quatro números intei­ros positivos, entre 0 e 255, separados por pontos. São exemplos de endereços IP únicos: 172.28.1.101 192.168.0.1. Quando o alvo é uma faixa de endere­ços IP, este deve ser especificado com duas sintaxes distintas. A primeira delas consiste do par endereço da rede e sua máscara de sub­rede. São exemplos de pares endereço da rede e máscara de sub­rede: 10.20.0.0/16 172.16.1.32/27. A outra sintaxe aceita consiste de um endereço IP com listas de números se­parados por vírgulas ou intervalos especificados com hífen. São exemplos de endereço IP com listas de nú­meros ou intervalos: 10.0.0.0­-255 172.16.1,3,5,0-­127 (equivalente a 172.16.1.0-­127 172.16.3.0­-127 172.16.5.0-127). Finalmente, quando o alvo é um no­me de domínio, este deve ser especificado por sequências de caracteres quaisquer separadas por vír­gulas. São exemplos de nomes de domínio: scanme.nmap.org e www.seginfo.com.br.

“Quickstart”

A forma mais simplista de executar a varredura utilizando o nmap é executar a ferramenta sem parâ­metros sobre o alvo especificado. Esta varredura con­siste de todas as opções padrão tanto de descoberta quanto de varredura.

nmap scanme.nmap.org

Esta varredura verifica se o alvo está ativos na re­de utilizando o método de descoberta e faz a varredu­ra utilizando o método de varredura padrão. O resultado esperado de uma varredura como esta é:

  1. Verificação de atividade do alvo na rede; e
  2. Listagem de portas abertas, fechadas e filtradas associadas ao nome do serviço que tradicionalmente utiliza cada porta, caso o alvo esteja ativo.

Isto quer dizer que se um determinado serviço es­tiver 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 pro­ver 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.

Nas próximas seções, “Descoberta de hosts” e “Técnicas de Varredura de portas” respectivamente, é discutido do que consistem estes método de desco­berta e de varredura padrão.

Descoberta de hosts

Frequentemente, o primeiro passo de uma auditoria de segurança ou projeto de mapeamento de rede é reduzir uma grande faixa de endereços IP a uma lista de endereços de interesse. Este interesse pode variar dependendo do propósito da varredura. Em uma au­ditoria teste de invasão caixa preta, o auditor se inte­ressa por qualquer host que esteja ativo na rede, enquanto em um auditoria em aplicações web, o au­ditor se interessa somente nos hosts que provejam serviços web. Assim, para cada propósito distinto há uma forma diferente realizar a descoberta de hosts.

O nmap fornece diversas opções a fim de perso­ nalizar a descoberta de hosts para que esta se adeque aos propósitos da varredura. Estas opções serão dis­cutidas a seguir.

Primeiramente, pode ser interessante não fazer a descoberta de hosts. Isto ocorre quando a varredura compreende um único endereço alvo, ou quando já se sabe que os alvos estão ativos na rede. Para estes ca­sos, podem ser utilizadas as opções “List scan” (­-sL) ou “No Ping” (­-PN) como exemplificadas nos exemplos abaixo:

nmap -sL 10.0.0.0/24
nmap -PN 10.0.0.0/24

O “List scan” diz ao nmap que a varredura con­siste apenas em listar os alvos passados como parâ­metro, embora o nmap ainda faça uma consulta DNS (reversa, no caso de alvos especificados como ende­reços IP) sobre os alvos. Portanto no caso do “List scan” nenhuma varredura ativa é realizada sobre os alvos especificados. No caso do “No Ping”, o nmap pula a faze de descoberta completamente. Versões mais antigas do nmap apontarão a opção “P0” para o “No Ping”, mas esta opção é considerada obsoleta, apesar de ainda funcionar nas versões atuais do nmap, e, a título de curiosidade, esta opção foi modi­ficada por ser frequentemente confundida com o “IP Protocol Ping” (­-PO). No exemplo dado acima, o nmap ainda faria a varredura utilizando o método de varredura padrão sobre os alvos especificados. A única situação em que o nmap não se comportaria desta forma acontece quando os alvos especificados estão na mesma rede que o host que faz a varredura. Neste caso, o nmap faria um “ARP Ping”, ignorando a opção do “No Ping”.

Uma vez que se queira fazer uma descoberta de hosts, esta deve ser ativada com a opção “-sP”. Quando esta opção esta ativada, o nmap não realiza varreduras, mas apenas realiza a descoberta de hosts, se não houverem outras opções comandando que a varredura seja feita. Neste caso, o nmap utiliza o mé­todo de descoberta de hosts padrão, que é o “ARP Ping” (-PR) para alvos localizados na rede interna e o “ICMP Echo Ping” (-PE) para os demais.

O “ARP Ping” (-PR) é sempre o método de desco­berta de hosts escolhido pelo nmap quando o alvo en­contra­-se na mesma rede que o host de onde a ferramenta é executada. Mesmo que outro método de descoberta de host seja explicitamente especificado o nmap irá realizar o “ARP Ping” sobre endereços da rede interna. Para forçar o nmap a utilizar outro mé­todo de descoberta de hosts sobre endereços na rede interna é necessário utilizar a opção adicional “­--send-ip”. Outro adendo importante é que esta opção não funciona nos sistemas da família Microsoft Win­dows, pois os mesmo não oferecem suporte a sockets brutos (não vinculados a protocolos). Assim, consi­derando que a faixa de endereços IP 192.168.1.0/16 seja a rede interna, os comandos abaixo são equiva­lentes:

nmap -sP 192.168.1.0/16
nmap -sP -PR 192.168.1.0/16

O “ICMP Echo Ping” (-PE) é o método de desco­berta padrão para endereços que não estão localiza­dos na mesma rede que o host de onde a ferramenta é executada. Este método faz parte da família de méto­dos “ICMP Ping”, que ainda inclui os métodos “ICMP Timestamp Ping” (-PP) e “ICMP Address Mask Ping” (-­PM). Todos estes métodos funcionam de maneira semelhante, pois detectam a atividade em um host pelo envio de pacotes ICMP de diferentes ti­pos. Assim como os comandos abaixo também são equivalentes para a rede externa:

nmap -sP scanme.nmap.org
nmap -sP -PE scanme.nmap.org

Outros métodos de descoberta de hosts interessan­te são o “TCP SYN Ping” (-PS lista_de_portas) e o “UDP Ping” (-PU lista_de_portas). Estes métodos são úteis, pois alguns hosts podem não respondem re­quisições ICMP, seja por restrições no firewall ou do próprio sistema operacional. Assim, estes métodos de descoberta enviam pacotes TCP ou UDP a uma porta que pode estar aberta ou fechada. Se a porta estiver aberta, o host certamente irá responder, denunciando a atividade do host. No entanto, se a porta estiver filtrada, nenhuma resposta será enviada (bloqueada pe­lo mesmo firewall que impediu descoberta via ICMP). Assim, a desvantagem destes métodos, além de serem mais lentos que o “ARP Ping” e o “ICMP Ping”, está na escolha das portas utilizadas, pois se todas as portas escolhidas estiverem filtradas, não será possível detectá­-lo, ainda que o host esteja ativo. São exemplos de descobertas de host por “TCP SYN Ping” e “UDP Ping”:

nmap -sP -PS22,80,443 scanme.nmap.org
nmap -sP -PU53,631 scanme.nmap.org

Varredura de portas

Esta seção trata da principal funcionalidade do nmap, a varredura de portas. Mesmo quando estava em suas primeiras versões, o nmap sempre foi capaz de fazer a varredura de portas de forma rápida e efi­ciente. O nmap fornece diversos métodos para reali­zar varreduras de portas e a escolha de qual método utilizar depende do objetivo que se pretende atingir. Varreduras de portas podem ter por objetivo detectar serviços providos por um host alvo, verificar se um firewall está filtrando requisições de forma adequada ou ainda confirmar se a pilha TCP foi implementada conforme especificado na RFC 793. É importante frisar que embora hajam diversos métodos de varre­dura de portas disponíveis, só é possível utilizar um por vez. Outro adendo importante é que a maioria dos métodos de varredura de portas exige altos privi­légios de usuário. Isto é necessário, pois algums pa­cotes são veiculados por sockets brutos (não vinculados a protocolos) que exigem este tipo de pri­vilégios.

Outra parte importante na varredura de portas é a listagem de portas (-p). A listagem de portas a serem consideradas separadas por vírgulas e, assim como as faixas de endereços IP, é possível especificar faixas de portas utilizando um hífen. As podem ser associa­das a um protocolo manualmente ou automaticamen­te pelo nmap dependendo do contexto da varredura. Quando os protocolos são especificados manualmen­te, a listagem de portas é sempre precedida por uma letra que identifica o protocolo utilizado (‘T’ para TCP e ‘U’ para UDP) e quando são especificados au­tomaticamente, basta informar a listagem de portas. Também é possível se utilizar todas as portas através da opção “-p­” ou limitar por uma determinada quan­tidade de porta mais utilizadas através da opção “--top-ports qtd_portas” e se esta quantidade for 100 é possível utilizar o “Fast Scan” (-F), que é equivalente a “--top-ports 100”. Assim, são exemplos de listagem de portas: -p22­25,80,443; -pT:22,80,U:53,631.

A varredura de portas sempre é feita para cada execução do nmap, exceto para o caso do “Ping Scan” (-sP), quando é necessário escolher um método de varredura de portas para que esta seja executada. Quando nenhum método de varredura de portas é ex­plicitamente especificado, o nmap executa o “TCP SYN Scan”, caso tenha sido executado por um usuá­rio com privilégio de criar sockets brutos (não vincu­lados a protocolos), e o “TCP Connect Scan”, caso contrário.

O “TCP SYN Scan” (-sS) é considerado pelos de­senvolvedores da ferramenta como o método de var­redura de portas mais popular. Esta varredura consiste em enviar pacotes TCP com a flag SYN ati­vada para as portas alvo. Esta flag é ativada para se iniciar uma nova conexão TCP entre os hosts, no en­tanto o nmap não completa o processo de abertura da conexão (“Three­Way Handshake”, explicado na se­ção 3.4 da RFC 793) e por isto é considerado um método bem furtivo e difícil de se detectar. Nesta varredura, uma porta é considerada aberta se a res­posta recebida for um pacote com as flags SYN e ACK ativadas. Se a resposta for um pacote com a flag RST ativada a porta é classificada como fechada e se nenhuma resposta for recebida, a porta é classifi­cada como filtrada. Assim, considerando que a faixa de endereços IP 192.168.1.0/16 seja a rede interna, os comandos abaixo são equivalentes (considerando que um usuário privilegiado esta executando as varredu­ras):

nmap 192.168.1.0/16
nmap -sP -sS 192.168.1.0/16
nmap -sP -PR -sS 192.168.1.0/16

De forma semelhante, os comandos abaixo também são equivalentes para a rede externa:

nmap scanme.nmap.org
nmap -sP -sS scanme.nmap.org
nmap -sP -PE -sS scanme.nmap.org

O “TCP Connect Scan” (-sT) funciona de forma muito semelhante ao “TCP SYN Scan”. Esta varredura consiste em tentar criar conexões entre os hosts na porta alvo. Isto é feito através da execução completa do Aperto de Mão em Três Vias (“Three-Way Handshake”, explicado na seção 3.4 da RFC 793) executado pela chamada de sistema “connect()”. Este método de varredura de portas é mais lento e menos furtivo que o “TCP SYN Scan”, pois a conexão é, de fato, estabelecida, no entanto, por usar a chamada de sistema, esta varredura pode ser executar por um usuário sem privilégios. Nesta varredura, uma porta é considerada aberta se a conexão for estabelecida com sucesso. Se a conexão for rejeitada a porta é classificada como fechada e se o tempo limite para estabelecer a conexão expirar, a porta é classificada como filtrada. Assim, considerando que a faixa de endereços IP 192.168.1.0/16 seja a rede interna, os comandos abaixo são equivalentes (considerando que um usuário sem privilégios esta executando as varre­duras):

nmap 192.168.1.0/16
nmap -sP -sT 192.168.1.0/16
nmap -sP -PR -sT 192.168.1.0/16

De forma semelhante, os comandos abaixo também são equivalentes para a rede externa:

nmap scanme.nmap.org
nmap -sP -sT scanme.nmap.org
nmap -sP -PE -sT scanme.nmap.org

Outros métodos de varredura de portas sobre o protocolo TCP interessante são o “TCP ACK Scan” (-sA), “TCP NULL Scan” (-sN), o “TCP FIN Scan” (-sF) e o “TCP Xmas Scan” (-sX). Estes métodos são úteis, pois permitem explorar falhas de configuração de um firewall stateless ou roteador que filtre pacotes, que estejam dificultando uma varredura direta. Estas varreduras enviam pacotes TCP com a flag ACK ativada para o “TCP ACK Scan”, com nenhuma flag ativada para “TCP NULL Scan”, com a flag FIN ativada para o “TCP FIN Scan” e, finalmente, as flags FIN, PSH e URG ativadas para o “TCP Xmas Scan”. Estas varreduras, em geral, são executadas para agregar informação a outras varreduras já executadas, visto que nem sempre oferecem resultados confiáveis. Isto acontece, pois nem todos os sistemas operacionais implementam sua pilha TCP em conformidade com a RFC 793 e respondem de maneiras inesperadas a requisições como as utilizadas para este tipo de varredura. Outro adendo importante é que as soluções mais modernas de IDS/IPS são capazes de detectar e bloquear este tipo de varredura, tornando-as ineficazes. São exemplos deste tipo de varredura:

nmap -PN -sN -p- 172.17.16.1
nmap -sX -p21­25,53,80,443 192.168.1.0/24
nmap -sP -PP -sA --­top-ports 512 scanme.nmap.org

Existem também métodos de varredura de portas sobre outros protocolos além do TCP. A varredura sobre o protocolo UDP é chamada “UDP Scan” (-sU). Esta é a única varredura que pode ser executada simultaneamente com outras. Diferentemente das outras varreduras, um pacote UDP vazio é enviado para a porta alvo. Uma porta é considerada aberta se um pacote UDP de qualquer espécie for recebido. Se um pacote “ICMP Port Unreachable” (ICMP tipo 3, código 3) for recebido, se um pacote “ICMP Destination Unreachable” (ICMP tipo 3, qualquer código) de qualquer código diferente de 3 for recebido, a porta é classificada como filtrada e se nenhuma resposta for recebida, a porta é classificada como aberta ou filtrada. Maiores informações sobre os protocolos UDP e ICMP e seus tipos e códigos podem ser encontradas nas RFC 768, 792 e Registro de Parâmetros do ICMP disponibilizado pela IANA, respectivamente. São exemplos deste tipo de varredura:

nmap -sP -sU -­F scanme.nmap.org

Há também a varredura sobre o protocolo SCTP, chamada “SCTP INIT Scan” (-sY). O SCTP é um protocolo que combina características tanto do TCP quanto do UDP e introduz novas funcionalidades como multi­homing e multi­streaming. Maiores informações sobre o SCTP podem ser encontradas nas RFC 3286 e 4960. Quanto a varredura SCTP, ela é muito similar à “TCP SYN Scan”, pois nunca completa a associação SCTP e é relativamente furtiva e pouco intrusiva. São exemplos deste tipo de varredura:

nmap -PN -sY -p- 172.17.16.1

Detecção de serviço, versão e sistema operacional

As vulnerabilidades publicadas em entidades especializadas, em geral, são eficazes somente sobre determinadas versões de uma dada aplicação. Assim, é interessante obter uma leitura mais específica sobre um serviço detectado do que somente a porta em que este está sendo executado, uma vez que estes serviços podem ser executados em, virtualmente, qualquer porta. Sendo assim, o nmap fornece uma opção para aferir o serviço e a versão do software provendo este serviço através da opção “-sV”. Esta opção tenta obter, através do envio de pacotes construídos com este propósito, descobrir qual serviço está sendo provido de fato e sua versão aproximada. Vale ressaltar que se o nmap for compilado com suporte a OpenSSL, a ferramenta tentará aferir serviço provido e sua versão aproximada mesmo com a camada extra de criptografia. Maiores informações sobre a detecção da versão de serviços e aplicações podem ser encontradas no capítulo 7 do livro do próprio autor da ferramenta, disponibilizado gratuitamente.

nmap -sP -sS -sV --top-ports 256 scanme.nmap.org

Assim como são publicadas vulnerabilidades para serviços providos em uma rede, o mesmo é acontece com sistemas operacionais, portanto também é importante detectar qual sistema é executado por uma alvo na rede. O nmap também fornece uma opção para aferir o sistema operacional e sua versão aproximada através da opção “-O”. Esta operação também é conhecida como “OS Fingerprinting”. Esta opção tenta obter, através do envio de pacotes construídos com este propósito, descobrir qual sistema operacional está sendo executado e sua versão aproximada. Maiores informações sobre a detecção remota do sistema operacional podem ser encontradas no capítulo 8 do livro do próprio autor da ferramenta, disponibilizado gratuitamente.

nmap -sP -sS -sV -O -p- scanme.nmap.org

Conclusão

O nmap é uma ferramenta que oferece uma gama de opções úteis e é de grande valia para obtenção de informação para diversas atividades, como auditorias de segurança em geral, mapeamento de redes inteiras, teste em firewalls, etc. Este artigo discutiu apenas as funcionalidades principais, no entanto ainda há muitas outras que não foram sequer mencionadas, como: o Nmap Scripting Engine (NSE), opções de controle de desempenho, opções de evasão de firewalls/IDS/IPS, opções de spoofing, e muitas outras. O leitor é encorajado a buscar mais informações na documentação oficial, no livro oficial e outras fontes, como o Webinar #4 da Clavis sobre “NMAP – Software Livre para Exploração de Rede e Auditorias de Segurança”.

Vale mencionar que, apesar de não haver legislação especifica que tipifique como crime o ato de executar varreduras de qualquer tipo em redes de qualquer espécie, o objetivo deste artigo não é incentivar os leitores a fazer varreduras aleatórias em redes que não são de sua propriedade ou que não se tenha autorização para fazê­lo, mas informar quanto a que tipo de informação relevante pode ser extraída destas varreduras e como estas podem ajudar em auditorias teste de invasão, depuração de firewalls ou administração de servidores, etc.

Referências

Fonte: iMasters
Este artigo foi elaborado em conjunto por Rafael Ferreira, Bruno Salgado, Henrique Soares e Jarcy Azevedo

Sou bacharel em Sistemas de Informação pela Estácio de Sá (Alagoas), especialista em Gestão Estratégica da Tecnologia da Informação pela Univ. Gama Filho (UGF) e pós-graduando em Gestão da Segurança da Informação pela Univ. do Sul de Santa Catarina (UNISUL). Certificações que possuo: EC-Council CEH, CompTIA (Security+, CySA+ e Pentest+), EXIN (EHF e ISO 27001), MCSO, MCRM, ITIL v3. Tenho interesse por todas as áreas da informática, mas em especial em Gestão e Governança de TI, Segurança da Informação e Ethical Hacking.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *