terça-feira, 8 de junho de 2010

Fragmentação de pacotes de IP

Uma característica do TCP/IP bastante utilizada em ataques é a fragmentação de pacotes. Seja para dificultar a detecção de ataques ou para realizar a negação de serviços, essa característica faz parte do arsenal de técnicas de ataques.


A fragmentação de pacotes está relacionada à Maximum Transfer Unit (MTU), que especifica a quantidade máxima de dados que podem passar em um pacote por um meio físico da rede. Caso um pacote tenha tamanho superior ao suportado pelo meio físico da rede, esse é fragmentado, ou seja, dividio. Por exemplo, a rede Ethernet limita a transferência a 1500 octetos de dados, enquanto a FDDI permite 4470 octetos de dados por pacote. Com isso, um pacote que parta de uma rede FDDI (com 4470 octetos) e passe por uma rede Ethernet (com 1500 octetos) é dividido em quatro fragmentos com 1500 octetos cada um, que é o tamanho suportado pela rede Ethernet.

Os fragmentos resultantes trafegam pela rede e, quando chegam ao seu destino final, são reagrupados, com base em offsets, reconstituindo, assim, o pacote original. Todo esse processo de fragmentação e reagrupamento (desfragmentação) é realizado de modo automático e transparente para nós usuários, de acordo com a definição do protocolo IP.

A possibilidade de ataques que exploram a fragmentação de pacotes IP está relacionada ao modo como a fragmentação e o reagrupamento são implementados. Tipicamente, os sistemas não tentam processar o pacote até que todos os fragmentos sejam recebidos e reagrupados. Isso cria a possibilidade de ocorrer um overflow (estouro) na pilha TCP quando há o reagrupamento de pacotes maiores que o permitido, ou seja, pacotes maiores podem ser criados para forçar o estouro da pilha. O resultado disso são problemas como o travamento do sistema, caracterizando ataques do tipo Denial-of-Service, que comprometem a disponibilidade de recursos.

A fragmentação de pacotes foi explorada em ataques, inicialmente no fim de 1996 pelo Ping o'Death. O ataque consistia no envio de pacotes ICMP Echo Request, o ping, com tamanho de 65535 bytes, que é maior do que o normal. Esse tamanho fazia com que diversos sistemas travassem devido à sobrecarga do buffer da pilha TCP/IP, que não era capaz de reagrupar um pacote tão grande. O ping foi empregado inicialmente devido à sua facilidade de uso, porém outros pacotes IP grandes, sejam eles TCP (Teardrop) ou UDP, podem causar esse mesmo tipo de problema.

O problema existiu, na realidade devido a erros de implementação da pilha TCP/IP em sistemas operacionais e em equipamentos de redes. Por isso, atualmente, os sistemas já corrigiram esse problema por meio de atualizações e instalações de patches. Porém a fragmentação e o reagrupamento podem ser utilizadas para ataques mais sofisticados com o intuito de driblar firewalls ou sistemas de detecção de intrusão (IDS). Isso acontece porque a fragmentação e o reagrupamento ocorrem somente entre as pontas, o que faz com que o firewall, o roteador ou o IDS não realizem a desfragmentação, já que são elementos que estão entre dois hosts que se comunicam. A fragmentação é usada, por exemplo, como um método de scanning, como o usado pelo nmap, que envia pacotes de scanning fragmentados, de modo que sua detecção de firewall ou pelo IDS torna-se mais difícil.

1 comentários:

Interessante.
Esta não é uma área em que tenho elevado conhecimento mas tenho muita vontade de me dedicar um tempo.
O funcionamento do POD é bem simples e, creio, a correção também deve ter sido.
Você disse:

"Porém a fragmentação e o reagrupamento podem ser utilizadas para ataques mais sofisticados com o intuito de driblar firewalls ou sistemas de detecção de intrusão (IDS)."

Tens alguns exeplos de ataques que utilizam a fragmentação como base de sua atuação?

Parabéns pelo post.

Postar um comentário

Gostou da esbórnia de hoje ? Comentem.

Twitter Delicious Facebook Digg Stumbleupon Favorites More