Aprendendo com o nmap

ArticleCategory: [Choose a category for your article]

System Administration

AuthorImage:[Here we need a little image form you]

[Foto del Autor]

TranslationInfo:[]

original in es Danilo Lujambio
es to en Iván Rojas Aguilar
es to en Javier Palacios

en to en:Lorne Bailey

en to pt:Bruno Sousa

AboutTheAuthor:[A small biography about the author]

Abstract:[Here you write a little summary]

ArticleIllustration:[This is the title picture for your article]

[nmap]

ArticleBody:[The article body]

Porque s�o os scanners t�o importantes para a seguran�a das redes ? Basicamente, porque s�o utilit�rios essenciais para aqueles que querem atacar um sistema. A prepara��o de um ataque podia assemelhar-se a algo do g�nero :



Para um administrador de sistema preocupado com a seguran�a do sistema � importante fazer um scan � sua pr�pria rede, procurar vulnerab�lidades antes que outros o fa�am e n�o com t�o boas inten��es.

Existem v�rios utilit�rios de scan para este fim, mas o artigo s� focar� o nmap. O nmap � entre todos o scanner e utilit�rio de seguran�a mais completo.

O Nmap permite ao administrador de sistema fazer um scan �s redes para saber quais os servidores activos e os servi�os que ofere�em. Para este fim, o nmap oferece v�rias t�cnicas de scan. O artigo focar� um n�mero limitado delas, revendo (talvez ensinando ?) alguns aspectos do protocolo TCP.

A estrat�gia deste artigo ser� a de mostrar como utilizar o nmap, como habitualmente � utilizado, para obter informa��o acerca de sistemas e em paralelo, como encontrar rastos de scan no lado do alvo.

O nmap pode ser obtido a partir de www.insecure.org. Ap�s o download fa�a :

tar zxvf nmap-2.30BETA17.tgz
cd ...../nmap-2.30BETA17/
./configure
make
make install
e est� instalado.

O output do nmap �, habitualmente, uma lista "interessante" de portos (activos) na m�quina de destino, scanada. Estas portas fornecem o nome dos servi�os, o seu estado e o protocolo.

Scanando o TCP, o aperto de m�o do TCP (op��o -sT)

A forma mais simples de fazer scan com o nmap � feia com a op��o -sT. � baseada no m�todo de estabelecimento de uma liga��o no protocolo TCP, conhecida como o aperto de m�o. A sequ�ncia [1] � descrita em baixo

  1. O servidor tem de estar preparado para receber uma conex�o (utilizando, habitualmente as fun��es sockd, bind e listen)
  2. O cliente inicia uma liga��o activa - uma chamada ao connect(). Isto envia um segmento SYN ao servidor para informar acerca do n�mero de sequ�ncia inicial dos dados que o cliente enviar� durante a liga��o. O segmento SYN cont�m, usualmente um cabe�alho IP - um cabe�alho TCP e talvez algumas op��es TCP.
  3. O servidor deve conhecer o SYN, enviando um ACK e um SYN com o seu n�mero de sequ�ncia (com o mesmo pacote TCP).
  4. O cliente deve conhecer o SYN do servidor com um ACK


Este modo de scan tem duas vantagens:

mas tem uma grande desvantagem. � f�cil de detectar e de filtrar.

Seguiremos o procedimento utilizado pela op��o do nmap -sT, correndo o tcpdump na m�quina de destino, o nmap � executado na m�quina 192.168.255.50 e aponta na direc��o da m�quina house2.xxx.xxx.xxx atrav�s de uma rede Ethernet.

1) 08:24:18.393108 192.168.255.20.1024 house2.xxx.xxx.xxx.653: S 2632227152:2632227152(0) win 16060 < mss 1460,sackOK,timestamp 232602[|tcp] (DF)
2) 08:24:18.393167 house2.xxx.xxx.xxx.653 192.168.255.20.1024: R 0:0(0) ack 2632227153 win 0
3) 08:24:18.393227 192.168.255.20.1025 house2.xxx.xxx.xxx.6141: S 2644226118:2644226118(0) win 16060 < mss 1460,sackOK,timestamp 232602[|tcp] (DF)
4) 08:24:18.393258 house2.xxx.xxx.xxx.6141 192.168.255.20.1025: R 0:0(0) ack 2644226119 win 0
5) 08:24:18.453343 192.168.255.20.1298 house2.xxx.xxx.xxx.pop3: S 2640612362:2640612362(0) win 16060 < mss 1460,sackOK,timestamp 232608[|tcp] (DF)
6) 08:24:18.453542 house2.xxx.xxx.xxx.pop3 192.168.255.20.1298: S 1658259980:1658259980(0) ack 2640612363 win 16060 < mss 1460,sackOK,timestamp 243353[|tcp] (DF)
7) 08:24:18.458667 192.168.255.20.1298 house2.xxx.xxx.xxx.pop3:. ack 1 win16060<nop,nop,timestamp 232609 243353 (DF)
8) 08:24:18.461280 192.168.255.20.1298 house2.xxx.xxx.xxx.pop3: F 1:1(0) ack 1 win 16060 < nop,nop,timestamp 232609 243353 (DF)

A numera��o de linhas foi adicionada para facilitar a explica��o. A linha 1 mostra a m�quina "atacante" 192.168.255.50, a enviar um segmento SYN a partir do porto 1024 para a porta 653 da m�quina de destino house2.xxx.xxx.xxx. Podemos reconhec�-lo como um segmento SYN gra�as ao S depois do n�mero da porta (653). Isto cobre o ponto 2) do aperto de m�o, explicado anteriormente.
Na linha 2 vemos a m�quina de destino a responder com um pacote RESET (note no R depois do 1024) indicando que n�o h� nenhum processo � escuta no porto 653.
As linhas 3 e 4 s�o semelhantes �s primeiras, mas verificando se existe um processo no porto 6141 da m�quina de destino. Como n�o h� nada de novo, tamb�m responde com um RESET.
A linha 5 mostra como a m�quina 192.168.255.20 envia um segmento SYN para a porta POP3 (n�mero 110), da m�quina de destino e esta responde com um ACK aceitando o SYN e o n�mero de sequ�ncia ( A m�quina envia o n�mero de sequ�ncia da m�quina de destino, neste caso o 1658259980, e o n�mero de sequ�ncia enviada pela m�quina 192.168.255.50 adicionando 1, formando o 2640612363). Note que o pacote enviado a partir da house2 tem o bit de controlo SYN e ACK activado. Isto v�-se na linha 6 e corresponde ao ponto 3) do aperto de m�o acima.
A linha 7 mostra o reconhecimento do �ltimo pacote recebido nas m�quinas 192.168.255.50, com um segmento ACK, alcan�ando-se o ponto 4) do aperto de m�o.
A linha 8 � o fim de liga��o da m�quina 192.168.255.50, que � feito atrav�s do envio de um segmento FIN (note o F ap�s o POP3).

Esta execu��o permitiu ao nmap detectar o porto 110(pop3) da m�quina house2 est� activo naquela m�quina.

Como referido anteriormente, este modo de scan � f�cil de detectar, usando as impress�es deixadas no ficheiro /var/log/messages (contudo isto depende do modo como o syslog.conf foi configurado) a liga��o vista nas linhas 5 e 8 produziu:

May 6 08:24:01 house2 in.pop3d[205]: connect
from [email protected]


Fazendo Scan usando segmentos SYN (meio abertos, op��o -sS)

Este tipo de scan � feito pelo nmap atrav�s da op��o -sS. A t�cnica � utilizada para abrir uma "meia liga��o": enviamos um segmento SYN e se � recebido um ACK ent�o detect�mos uma porta activa na m�quina de destino e enviamos um RESET para fechar a liga��o devidamente. Se recebermos um RST em vez de um ACK, ent�o a porta scanada n�o est� activa. Este modo de scan tem o sen�o que s�o requeridos privil�gios root para ser executado. Mas a vantagem � que � dif�cil de detectar na m�quina � qual se faz o scan.

Fa�amos uma an�lise das ac��es feitas pelo nmap com esta op��o, analisando-o com o tcpdump (com numera��o de linhas, para facilitar a descri��o).

1) 22:25:45.856936 192.168.255.20.40175 house2.tau.org.ar.946: S 1292785825:1292785825(0) win 3072
2) 22:25:45.857078 house2.tau.org.ar.946 192.168.255.20.40175: R 0:0(0) ack 1292785826 win 0


As linhas 1 e 2 s�o, quase semelhantes �s linhas 1 e 2 da sec��o anteriror, excepto que um segmento SYN � visto, enviado pela m�quina 192.168.255.50 para o porto 946 da m�quina house2 e obtivemos uma resposta com um RESET porque n�o � uma porta activa.

3) 22:25:45.970365 192.168.255.20.40175 house2.tau.org.ar.pop3: S 1292785825:1292785825(0) win 3072
4) 22:25:45.976022 house2.tau.org.ar.pop3 192.168.255.20.40175: S 185944428:185944428(0) ack 1292785826 win 16080 < mss 536 (DF)
5) 22:25:45.979578 192.168.255.20.40175 house2.tau.org.ar.pop3: R 1292785826:1292785826(0) win 0

As linhas 3,4 e 5 s�o produzidas pela descoberta bem sucedida do servi�o (pop3) no porto 110 da m�quina house2. Como mencionado, o aperto de m�o n�o � completado mas quando o nmap recebe o reconhecimento de um segmento SYN (como significado do segmento ACK enviado pela house2 na linha 4), envia um segmento RESET que for�a a interrup��o da comunica��o.

Este scan na m�quina host2 n�o deixou nenhum rasto no ficheiro /var/log/messages, como mencionado anteriormente.

Scanando utilizando segmentos FIN

Este tipo de scan � baseado no facto de que portas inactivas na m�quina de destino respondem a um pacote FIN com um pacote RST. Por outro lado, portas activas, simplesmente, ignora este pacote. Assim, a lista de portas interessantes � obtida observando-se as quais n�o responderam. M�quinas correndo sistemas operativos Window$ n�o podem ser "scanadas" com este m�todo, visto n�o terem implementa��es standard do protocolo TCP.

Existem tr�s formas de operar com o nmap em situa��es semelhantes. com as op��es -sF, -sX e -sN. Analisaremos depois o comportamento da op��o -sF, efectuando uma an�lise semelhante �s sec��es anteriores.

1) 06:50:45.643718 192.168.255.20.35600 casahouse.tau.org.ar.864: F 0:0(0) win 2048
2) 06:50:45.643865 house2.tau.org.ar.864 192.168.255.20.35600: R 0:0(0) ack 0 win 0

Nas linhas 1 e 2 os segmentos FIN entregues (note no F depois do 864 na linha 1) � observado na m�quina de destino que responde com um pacote RST (note no R na linha 2 depois do 35600). O nmap conclui que a porta 864 na house2 n�o est� activa.

3) 06:50:47.933227 192.168.255.20.35600 > house2.tau.org.ar.pop3: F 0:0(0) win 2048
4) 06:50:48.251147 192.168.255.20.35601 > house2.tau.org.ar.pop3: F 0:0(0) win 2048

As linhas 3 e 4 tomam o pop3 como exemplo. Na linha 3, vemos um segmento FIN enviado, o qual n�o obt�m resposta da house2. A linha 4 foi uma surpresa, sendo provavelmente uma medida tomada pelo nmap para verificar o estado daquele porta, enviando outro segmento FIN, para assegurar que a porta n�o est� a responder. Em ambos os casos, a house2 ignorou os pacotes, mostrando ao nmap que a porta pop3 est� activa.

Funcionalidade do tcpdump que pode ajudar

Na sec��o acerca do "scan de aperto de m�o", vimos que as rastos que um scan pode deixar atr�s, e nas �ltimas sec��es vimos que as op��es de scan -sS e -sF n�o deixam impress�es digitais. Podemos utilizar o tcpdump para detectar este tipo de scan numa m�quina conectada a uma rede suscept�vel a ataques. O contra do tcpdump � que gera um enorme monte de informa��o e levanta dificuldades com o seu arquivo e an�lise. Algumas express�es s�o mostradas aqui e reagem como filtros para que a informa��o seja mais pequena e simples de analisar.

Para tornar as express�es de f�cil compreens�o, mostramos em baixo o formato de um pacote TCP [2].

TCP (RFC 793)

0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          Source Port          |        Destination Port       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         Sequence Number                       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      Acknowledgement Number                   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Offset |  Reserver |U|A|P|R|S|F|             Window            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           Checksum            |         Urgent Pointer        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                  Options                      |    Padding    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                              Data                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Vimos que o 13.� byte � onde as flags que identificam o tipo de pacote (SYN, FIN, etc) residem. Com este conhecimento e com o operador (&) podem construir-se m�scaras para detectar os bits activos, construindo express�es do tipo :
tcpdump ' tcp[13] & 7 != 0 and dst 192.168.255.20 ' > /tmp/out7

que filtram os pacotes de entrada com os bits R,S ou F activos a m�scara (a m�scara � 00000111) com 192.168.255.20 como m�quina destino (obviamente que este endere�o IP ser� pesquisado pela m�quina).

Usando

tcpdump ' tcp[13] & 1 != 0 and dst 192.168.255.20 ' > /tmp/out1

Obteremos os pacotes com o bit activo F (a m�scara � 00000001). Podia ser �til para detectar a op��o de scan do nmap -sF e com

tcpdump ' tcp[13] & 2 != 0 and dst 192.168.255.20 ' > /tmp/out2

obteremos somente os pacotes com o bit SYN activo, sendo �til para detectar scan com a op��o -sS.

Para o �ltimo tipo descrito (com a op��o -sS) existem programas espec�ficos para o detectar [3].

Conclus�o

Programas como o nmap s�o muito �teis para melhorar a seguran�a do sistema ao olhar para as redes atrav�s dos olhos de um poss�vel pirata. Mostramos as opera��es de uma pequena parte das op��es, mas espero que o ajude a compreender um pouco mais a ideia de um scanner de rede.

Bibliografia

[1] W. Richard Stevens Unix Network Programming Volume 1
[2] RFC 793
[3] ver documenta��o do nmap