Ads 468x60px

5 de abril de 2012

Usando o Nmap para scanear portas

Ola pessoas, em um post anterior vimos como usar o netcat para escanear uma rede, infelizmente ele é somente um quebra-galho e não da grande suporte nesse quesito, agora iremos verificar uma ferramenta que realmente tem essa função e ajuda e muito a verificar as portas abertas em uma rede, e coletar mais informações sobre ela.Ele é port scanner muito utilizado e bem completo atualmente é o Nmap port scanner que realiza uma verificação bem detalha nas portas, serviços, sistema operacional, localidade, etc, da máquina alvo, ele se encontra em:


/usr/local/share/nmap/

O nmap também possui uma documentação muito boa, que pode ser lida no link abaixo:


Diferente de alguns port scanner que tradicionalmente agrupam todas as portas nos estados aberto ou fechado, o Nmap é muito mais completo nesse quisito. Ele divide as portas em seis estados: aberto (open), fechado (closed), filtrado (filtered), não filtrado (unfiltered), open|filtered, ou closed|filtered.

Os seis estados de porta reconhecidos pelo Nmap
Aberto (open)
Uma aplicação está ativamente aceitando conexões TCP ou pacotes UDP nesta porta. Encontrar esse estado é freqüentemente o objetivo principal de um escaneamento de portas. Pessoas conscientes sobre a segurança sabem que cada porta aberta é um convite para um ataque. Invasores e profissionais de avaliação de segurança querem explorar as portas abertas, enquanto os administradores tentam fechar ou proteger com firewalls sem bloquear usuários legítimos.

Portas abertas são também interessantes para scans não relacionados à segurança, pois mostram os serviços disponíveis para utilização na rede.



Fechado (closed)
Uma porta fechada está acessível (ela recebe e responde a pacotes de sondagens do Nmap), mas não há nenhuma aplicação ouvindo nela. Elas podem ser úteis para mostrar que um host está ativo em um determinado endereço IP (descoberta de hosts, ou scan usando ping), e como parte de uma deteção de SO. Pelo fato de portas fechadas serem alcançáveis, pode valer a pena escanear mais tarde no caso de alguma delas abrir. Os administradores deveriam considerar o bloqueio dessas portas com um firewall. Então elas apareceriam no estado filtrado, discutido a seguir.

Filtrado (filtered)
O Nmap não consegue determinar se a porta está aberta porque uma filtragem de pacotes impede que as sondagens alcancem a porta. A filtragem poderia ser de um dispositivo firewall dedicado, regras de roteador, ou um software de firewall baseado em host. Essas portas frustram os atacantes pois elas fornecem poucas informações. às vezes elas respondem com mensagens de erro ICMP tais como as do tipo 3 código 13 (destino inalcançável: comunicação proibida administrativamente), mas os filtros que simplesmente descartam pacotes sem responder são bem mais comuns. Isso força o Nmap a tentar diversas vezes só para o caso de a sondagem ter sido descartada por congestionamento da rede ao invés de filtragem. Isso reduz a velocidade do scan dramaticamente.

não filtrado (unfiltered)
O estado não-filtrado significa que uma porta está acessível, mas que o Nmap é incapaz de determinar se ela está aberta ou fechada. Apenas o scan ACK, que é usado para mapear conjuntos de regras de firewall, classifica portas com este estado. Escanear portas não-filtradas com outros tipos de scan, tal como scan Window, scan Syn, ou scan FIN, podem ajudar a responder se a porta está aberta.

open|filtered
O Nmap coloca portas neste estado quando é incapaz de determinar se uma porta está aberta ou filtrada. Isso acontece para tipos de scan onde as portas abertas não dão nenhuma resposta. A falta de resposta também pode significar que um filtro de pacotes descartou a sondagem ou qualquer resposta que ela tenha provocado. Portanto não sabe-se com certeza se a porta está aberta ou se está sendo filtrada. Os scans UDP, IP Protocol, FIN, Null, e Xmas classificam portas desta forma.

closed|filtered
Este estado é usado quando o Nmap é incapaz de determinar se uma porta está fechada ou filtrada. É apenas usado para o scan IPID Idle scan.

Prática
Vamos usar o nmap sem flag nenhuma para olharmos sua saída:

nmap 192.168.254.254

Podemos determinar quais portas queremos scanner a fim de parametrizar o scanner.

nmap -p 1-65535 192.168.254.64

-p: para dizer as portas
1-65535: o range de portas que estão sendo escaneadas.


O nmap associa a porta com o serviço, ele consegue realizar isso através de seu arquivo de configuração encontrado em:

/usr/local/share/nmap/nmap-services

Em caso tenha algum retorno de serviço não encontrado como esse:

BT ~ # nmap-p 1-65535 192.168.0.110
Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2006-10-28 16:28 GMT
Interesting ports on 192.168.0.110:
Not shown: 65517 closed ports
PORT STATE SERVICE
21/tcp open ftp
25/tcp open smtp
80/tcp open http
119/tcp open nntp
135/tcp open msrpc
139/tcp open netbios-ssn
443/tcp open https
445/tcp open microsoft-ds
563/tcp open snews
1025/tcp open NFS-or-IIS
1026/tcp open LSA-or-nterm
1027/tcp open IIS
1755/tcp open wms
3372/tcp open msdtc
6666/tcp open irc-serv
8328/tcp open unknown
30001/tcp open unknown
50203/tcp open unknown
MAC Address: 00:0C:29:C6:B3:23 (VMware)
Nmap finished: 1 IP address (1 host up) scanned in 3.627 seconds

O “Unknowm”  serve para indicar que não foi possível associar o serviço a porta para corrigir basta editar o arquivo de portas padrão do nmap para colocar o possível serviço que está de escuta nessa porta.
Também podemos realizar um scanner na rede toda utilizando alguns coringas.

ex:
nmap -p 139 192.168.254.*

Colocamos a mascara de rede e ao final o “*” para indicar todos os ips, também colocamos a porta 139 que por padrão é a porta de netbios.
Podemos formatar a saída do comando com a opção -oG que é o formato "greppable":
ex:
Nmap-p 139 -oG 139.txt 192.168.0.*
Host: 192.168.0.1 () Ports: 139/open/tcp//netbios-ssn///
Host: 192.168.0.3 () Ports: 139/open/tcp//netbios-ssn///
Host: 192.168.0.10 () Ports: 139/closed/tcp//netbios-ssn///
Host: 192.168.0.75 () Ports: 139/open/tcp//netbios-ssn///
Host: 192.168.0.110 () Ports: 139/open/tcp//netbios-ssn///
Host: 192.168.0.143 () Ports: 139/closed/tcp//netbios-ssn///
Host: 192.168.0.157 () Ports: 139/open/tcp//netbios-ssn///
Nmap run completed at Sat Oct 28 16:49:55 2006 -- 256 IP addresses (7 hosts up) scanned in
17.646 seconds

Uma opção muito boa do nmap é a “-O” que serve para identificar o possível sistema operacional rodando na maquina alvo.
Ex:
nmap -O 192.168.254.254

Também podemos especificar ao nmap um arquivo com os ips da rede para ele escanear com a opção “-iL”.
Ex:
nmap -O -iL 139-ips.txt -oG 139-os.txt
cat 139-os.txt |grep open|cut -d":" -f4
Microsoft Windows 2003 Server SP1 Seq Index
Microsoft Windows 2003 Server, 2003 Server SP1 or XP Pro SP2 Seq Index
Windows 2000 Professional or Advanced Server, or Windows XP Seq Index
Windows 2000 Professional or Advanced Server, or Windows XP Seq Index
Linux 2.4.0 - 2.5.20 Seq Index

Também podemos identificar as versões dos serviços rodando com a opção “-sV”.
ex:
nmap -sV 192.168.254.110

Esse foi o nmap espero que ajudem vocês no dia-a-dia.




1 comentários: