Ping - O que há por trás?

Você tem ideia de quantas vezes já 'pingou' em um dispositivo? O Ping é um comando básico em uma rede utilizado todos
os dias, mesmo por usuários que não possuem conhecimento técnico algum. Mas, o que realmente acontece atrás das
cortinas, quando 'pingamos' uma máquina?

[ Hits: 11.737 ]

Por: Jonatas Baldin em 13/04/2012 | Blog: http://metasecurity.blogspot.com.br/


O que há por trás do Ping?



'Ei cara, 'pinga' aquela máquina ali, pra ver se ela tá na rede'.

O Ping foi criado por Mike Muuss, para diagnosticar a conectividade entre dois dispositivos e seus possíveis erros dentro de uma rede.

Ele faz parte da camada de Aplicação do modelo OSI, e utiliza o protocolo ICMP, que está situado na camada de Rede.

O protocolo ICMP é definido dentro da RCF 792, e utilizado para gerar relatórios de erros de conectividade entre dispositivos. Cada erro possui um identificador único, que varia de 0 à 255.

Os três principais são:
  • ICMP TYPE 0 - ECHO REPLY: Esta é a resposta quando um Host está na rede. Como se o dispositivo dissesse: 'Ei cara, estou aqui!'.
  • ICMP TYPE 3 - DESTINATION UNREACHABLE: Esta é a resposta quando um Host não consegue ser alcançado. Pode haver problemas no caminho até ele, ou no dispositivo em si.
  • ICMP TYPE 8 - ECHO REQUEST: Esta é basicamente uma pergunta, onde um dispositivo diz: 'Ei cara, você está aí?'.

Você pode consultar todos os tipos no site da IANA.

Agora, voltando ao Ping, você tem uma ideia do que ele faz? É simples.

Ele envia um ECHO REQUEST pelo protocolo ICMP, até o dispositivo de destino nos retornar um determinado tipo de resposta. Se estiver tudo ok, será um ECHO REPLY, se não, poderá ser um DESTINATION UNREACHABLE ou qualquer outro que defina o problema na conexão.

Além do mais, o Ping apresenta diversos parâmetros em sua sintaxe, os mais comuns são:

# ping -c 5 -s 2048 <destino>

Onde:
  • -c : Determina quantos pacotes ECHO REQUESTS são enviados.
  • -s : Determina o tamanho em Bytes de cada pacote, sendo o padrão com 32 Bytes.

Vamos analisar uma requisição feita pelo Ping, dentro de uma rede local:

# ping -c 4 192.168.1.7
PING 192.168.1.7 (192.168.1.7) 56(84) bytes of data.
64 bytes from 192.168.1.7: icmp_seq=1 ttl=64 time=0.626 ms
64 bytes from 192.168.1.7: icmp_seq=2 ttl=64 time=0.495 ms
64 bytes from 192.168.1.7: icmp_seq=3 ttl=64 time=0.497 ms
64 bytes from 192.168.1.7: icmp_seq=4 ttl=64 time=0.433 ms
//até aqui podemos observar a sequência dos pacotes, o Time To Live e tempo de duração.

--- 192.168.1.7 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2997ms
rtt min/avg/max/mdev = 0.433/0.512/0.626/0.075 ms
//estatísicas gerais, quantidade de pacotes transmisitos, recebidos, percentagem e duração.

'Não tá pingando! A máquina está ligada na rede, o cabo está plugado, mas não está pingando!'.

É, isso pode acontecer.

Desde 2003, diversos provedores começaram a estabelecer regras de bloqueio ao pacote ICMP ECHO REQUEST para prevenir WORMS, possíveis ataques de crackers e até mesmo, a técnica chamada 'Ping of Death', onde uma série de Pings com tamanho de 65,536 eram enviados ao alvo, causando a negação de serviço do mesmo.

Um exemplo, é uma regra simples no IPtables, que realiza esse tipo de filtragem:

# iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

Se 'pingarmos' uma máquina que possui esta filtragem, o destino não responderá a nenhum pacote, e todos serão perdidos.

* Mas, sempre há uma luz no fim do túnel!

Podemos utilizar o NMap para realizar um Scan neste mesmo Host, sem utilizar o protocolo ICMP.

# nmap -sP -P0 <destino>

Onde:
  • -sP : É um Scan do tipo simples.
  • -P0 : Não realiza o Ping.

Assim burlamos a regra do IPtables e conseguimos descobrir que o Host está ativo na rede.

Aqui foi mostrado uma visão, um pouco mais aprofundada, do que é o Ping. Claro que, conforme vamos avançando, tudo se torna mais complexo.

Previamente publicado em: metasecurity.blogspot.com.br

   

Páginas do artigo
   1. O que há por trás do Ping?
Outros artigos deste autor

Ultimate Nmap

Leitura recomendada

Escrevendo em discos sem sistemas de arquivos

Metasploit Exploitation

Teste de Intrusão com Metasploit

Implementação de NIDS com EasyIDS

FproxyAdmin - Gerenciador WEB do Proxy

  
Comentários
[1] Comentário enviado por d4rkz em 14/04/2012 - 08:39h

Ótimo artigo.

[2] Comentário enviado por removido em 14/04/2012 - 11:20h

Excelente artigo, simples, mas esclarecedor!

[3] Comentário enviado por tonyrecife em 14/04/2012 - 16:03h

Será que não existe nenhuma ferramenta que evite o scaneamento pelo NMAP?
Pelo que sei o NMAP informa se está ativo, as portas abertas e outras cositas mais .....

[4] Comentário enviado por zeta em 16/04/2012 - 21:06h

Muito bom, gostei desse artigo. É sempre bom estarmos informados, principalmente qdo se trata de Informática.

[5] Comentário enviado por ricardoolonca em 18/04/2012 - 08:33h

Para testar se a máquina está na rede, o mais correto é usar dois comandos.

1- ping ip_da_estação. Se pingar, e máquina esté na rede. Se não pingar, é necessário usar um segundo comando:

2- arp -na | grep ip_da_estação. Se trouxer o endereço mac, então o alvo está ativo, mas um firewall pode estar bloqueando o icmp.

Abaixo dou um exemplo em que a máquina alvo está ativa na rde, mas bloqueando o ping.

ricardo@desktop:~$ ping -c 1 172.20.1.145
PING 172.20.1.145 (172.20.1.145) 56(84) bytes of data.

--- 172.20.1.145 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

ricardo@desktop:~$ arp -na | grep 172.20.1.145
? (172.20.1.145) em 00:25:90:2b:35:de [ether] em br0
ricardo@desktop:~$

[6] Comentário enviado por jonatas.baldin em 18/04/2012 - 14:49h

tonyrecife:
Como o scan do Nmap trabalha com flags (SYN, ACK, RST etc) você pode usar regras de Iptables para tratar essas flags e impedir o scan.

maionesebr:
Muito bom, não tinha pensando em consultas na tabela ARP, valeu :D

[7] Comentário enviado por leoberbert em 22/04/2012 - 01:27h

Jonatas,

Muito bom o artigo. Como ja foi dito acima, simples porém direto :)

[]'s

[8] Comentário enviado por lleandro2012 em 13/06/2012 - 21:32h

Muito bom mesmo...Gostei do artigo.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts