A “usurpação de endereço IP” (em inglês spoofing IP) é uma técnica que consiste em substituir o endereço IP do remetente de um pacote IP pelo endereço IP de uma outra máquina.
Esta técnica permite assim a um pirata enviar pacotes anonimamente. Não se trata de uma mudança de endereço IP, mas de um disfarce do endereço IP a nível dos pacotes emitidos.
Assim, alguns tendem a assimilar a utilização de um proxy (que permite mascarar de certa maneira o endereço IP) com o spoofing IP. Contudo, o proxy apenas retransmite os pacotes. Assim ainda que o endereço aparentemente esteja mascarado, um pirata pode facilmente ser reencontrado graças ao ficheiro de registos do proxy.
A técnica da usurpação de endereço IP pode permitir a um pirata de passar pacotes numa uma rede sem que estes sejam interceptados pelo sistema de filtragem de pacotes (firewalls).
Com efeito, um sistema firewall funciona, na maior parte do tempo, graças a regras de filtragem que indicam os endereços IP autorizados a comunicar com as máquinas internas à rede.
Assim, um pacote spoofado com o endereço IP de uma máquina interna parecerá provir da rede interna e será retransmitido à máquina alvo, enquanto um pacote que contém um endereço IP externo será rejeitado automaticamente pelo firewall.
Contudo, o protocolo TCP (protocolo que assegura principalmente o transporte fiável de dados na Internet) assenta em relações de autenticação e de aprovação entre as máquinas de uma rede, o que significa que, para aceitar o pacote, o destinatário deve anteriormente acusar recepção junto do emissor, este último deve de novo acusar recepção do aviso de recepção.
Na Internet, as informações circulam graças ao protocolo IP, que assegura a introdução dos dados em estruturas chamadas pacotes (ou mais exactamente datagrama IP). Eis a estrutura de um datagrama :
Usurpar um endereço IP consiste em alterar o campo fonte a fim de simular um datagrama que provém doutro endereço IP. Contudo, na Internet, os pacotes são transportados geralmente pelo protocolo TCP, que assegura uma transmissão dita “fiável”.
Antes de aceitar um pacote, uma máquina deve acusar recepção deste junto da máquina emissora, e esperar que esta última confirma a boa recepção da acusação.
O protocolo TCP é um dos principais protocolos da camada transporte do modelo TCP/IP. Permite, ao nível das aplicações, gerir os dados em proveniência (ou com destino) da camada inferior do modelo (quer dizer, o protocolo IP).
O protocolo TCP permite assegurar a transferência dos dados de maneira fiável, embora utilize o protocolo IP (que não integra nenhum controlo de entrega de datagrama) graças a um sistema de avisos de recepção (ACK) que permitem ao cliente e ao servidor assegurar-se da boa recepção mútua dos dados.
As datagramas IP introduzem pacotes TCP (chamados segmentos), cuja estrutura é aqui apresentada:
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
| Porta Fonte | Porta destino | ||||||||||||||||||||||||||||||
|
Número de ordem | |||||||||||||||||||||||||||||||
|
Número de aviso de recepção | |||||||||||||||||||||||||||||||
|
Desfasamento dados |
reservado | URG | ACK | PSH | RST | SYN | FIN |
Janela | |||||||||||||||||||||||
|
Soma de controlo |
Ponteiro de emergência | ||||||||||||||||||||||||||||||
| Opções | |||||||||||||||||||||||||||||||
|
Dados | |||||||||||||||||||||||||||||||
Aquando da emissão de um segmento, um número de ordem (chamado também número de sequência) é associado, e uma troca de segmentos que contêm campos específicos (chamados bandeiras, em ingleses flags) permite sincronizar o cliente e o servidor.
Este diálogo (chamado aperto de mãos em três tempos) permite iniciar a comunicação, desenrola-se em três tempos, como a sua denominação o indica:
No âmbito de um ataque por usurpação de endereço IP, o atacante não tem nenhuma informação de retorno porque as respostas da máquina alvo vão para outra máquina da rede (fala-se então de ataque às cegas), em inglês blind attack).
Além disso, a máquina “spoofada” priva o hacker de qualquer tentativa de conexão, porque envia sistematicamente uma bandeira RST à máquina alvo. O trabalho do pirata consiste então em invalidar a máquina spoofada tornando-a incontactável durante toda a duração do ataque.
Quando a máquina spoofada está invalidada, a máquina alvo espera um pacote que contém o aviso de recepção e o bom número de sequência. Todo o trabalho do pirata consiste então “em adivinhar” o número de sequência a retornar ao servidor para que a relação de confiança seja estabelecida.
Para isso, os piratas utilizam geralmente a fonte routing, quer dizer que utilizam o campo opção da rubrica IP a fim de indicar uma estrada de regresso específica para o pacote. Assim, graças ao sniffing, o pirata será capaz de ler o conteúdo das tramas de regresso…
Assim, conhecendo o último número de sequência emitido, o pirata estabelece estatísticas relativas à sua incrementação e envia avisos de recepção até obter o bom número de sequência.