segunda-feira, 29 de setembro de 2008

O Nmap

Bom dia!! (estou quase morrendo de gripe aqui.. mas blz!!)

Hoje falarei um pouco sobre o Portscan Nmap. Acho que a maioria das pessoas que mexem ou já mexeram um pouco com redes já ouviram falar do próprio. Criado por Gordon Lyon o Nmap passou a ser indispensável para Administradores de Redes.

Melhor eu parar de falação e mostrar logo o que ele faz! =)

Para instalar o nmap no Ubuntu é bem simples.

$ sudo aptitude install nmap

Com o nmap já instalado vamos brincar um pouco com ele. =P

Entre como root e digite:

#nmap localhost

!#$@!#! o que aconteceu??? :)

O nmap mostrou quantas portas fechadas o seu sistema possui (1707 closed ports), e mais abaixo a parte mais importante.

PORT: Mostra o número da porta/protocolo. Ex.: 80/tcp.
STATE: Mostra o estado da porta. Ex.: Open (Aberta).
SERVICE: Mostra o serviço que está utilizando determinada porta. Ex.: http.

Incrível não?! =D isso não é nada...

Vamos agora "nmapear" outro computador da rede. Consegue fazer sozinho?! Creio que sim!

# nmap 192.168.1.2

192.168.1.2 é apenas um exemplo, pode-se por qualquer ip.

O que aconteceu de diferente?? Bom.. praticamente nada; listou o número de portas fechadas, as abertas, mostrou os serviços e tudo mais e uma informaçãozinha nova. O MAC Address.

@!#!@$%, o nmap é muito %$#$. Sim.. e isso num foi nem 5% do que ele é capaz de fazer. Então vamos continuar!!!

Se você escrever apenas:

# nmap

Irá aparecer todas as opções que o nmap possui. Não vou explicar todas pois ficaria aqui um mês mostrando detalhadamente cada uma. Então irei mostrar as principais.

Vamos incrimentar um pouco mais nossa pesquisa com o prefixo -sV.

# nmap -sV 192.168.1.2

Com o prefixo -sV vocês podem notar uma nova coluna com o nome de VERSION.
Agora a gente tem mais clareza do que está sendo operado em determinada porta =) Ex.: PORT: 80/tcp STATE: open SERVICE: http VERSION: apache httpd

#&%#$#$!!!! Oo

Com esse prefixo você pode notar que demora um pouco mais para mostrar o resultado da pesquisa porém o nível de informação é muito maior. Como podemos ver à cima a porta 80 do computador 192.168.1.2 está aberta com o serviço http que o Apache está executando.

Podemos também executar toda uma faixa de endereço. Por exemplo:

# nmap 192.168.1.1-254

Excelente não?? :) você também pode usar o prefixo -sV pra rastrear essa faixa de endereço sem problemas também.

Outro prefixo legal também de se utilizar é o -O. O que ele faz?? Usando esse prefixo a gente pode ver o sistema operacional que cada máquina está utilizando, se é Windows, Linux, MacOS. O nmap ainda não é muito bom para distinguir qual versão do Windows, Linux ou MacOS está utilizando, mas já ajuda bem.

Então vamos lá:

# nmap -O localhost

Escaneei minha maquina para ver qual SO estou útilizando, tive a seguinte resposta:

Running: Linux 2.6.X
OS details: Linux 2.6.17 - 2.6.18

Como disse, ele ainda num é muito eficiente em mostrar qual versão do GNU/Linux estou utilizando.

Outro prefixo muito útilizado pelos espertinhos de plantão é o -sS. O que essa coisa de prefixo faz?? Bem simples... Se o computador que nós estamos "nmapeando" tiver algum detector de intrusões (SNORT ou qualquer outro) é muito fácil dele saber que estamos nmapeando o computador. O prefixo -sS tenta fazer com que isso não aconteça.
Operando neste modo o nmap envia um pacote SYN para cada porta alvo e espera ver se recebe algum pacote ACK de confirmação sem, entretanto, responder com o segundo pacote ACK, o qual abriria conexão.

Como usar então? Igual os outros.

# nmap -sS endereço_da_maquina

Vale comentar que esses prefixos podem ser útlizados juntos sem problemas. Por exemplo:

Quero saber qual SO está rodando a máquina "x" e também desejo saber detalhadamente a versão de cada aplicativo que está usando determinadas portas, isso tudo tentando fazer com que nenhum IDS me pegue, isso tudo em uma pesquisa só.

# nmap -sS -sV -O endereço_da_maquina

@$@!$! de nmap!!! hauiha! Realmente...!

Podemos também escanear por pacotes UDP. Extremamente simples também, basta por-mos o prefixo -sU.
Pacotes UDP são rápidos se direcionados para máquinas Windows. Ex.:

# nmap -sU endereço_da_maquina

Por padrão o nmap escaneia um conjunto de 1661 portas, que incluem as mais útilizadas. Um procedimento que Administradores de Redes utilizam é esconder a porta SSH em portas mais altas.
Mas e agora?? Como faço para escanear as outras portas se o nmap escaneia apenas um conjunto de 1661 portas???

Elementar meu caro Watson!!

É por isso que existe o prefixo -p!! =DD

Com ele você pode determinar uma porta específica como uma faixa de portas. Ex.:

# nmap -p 5150 endereço_da_maquina

Neste caso estamos escaneando a porta 5150 para ver como ela está.

# nmap -p 5000-6000 endereço_da_maquina

Neste caso estamos escaneando uma faixa de portas que começa na 5000 e vai até a 6000.

Vale ressaltar que scans feitos em rede interna são muito mais rápidos do que os scans feitos em rede externa, então caso tente escanear alguma rede externa e você ver que está demorando, isso é comum!! :)

Bom... creio ter passado os prefixos mais útilizados do nmap... e espero que todos tenham aprendido muito bem!

**Desenvolvi um script em C++ caso queiram automatizar um pouco o nmap. Para baixa-lo acesse o link abaixo:

Download Nmap Script v1.0

Quaisquer dúvidas sabem o que fazer né?! Podem comentar!! =)

Obrigado e Abraços.

Um comentário:

Unknown disse...

Boua markin, vlw, vc me ajudou bastante hehehehehe