28 de mar. de 2012

Esteganografia no protocolo TCP/IP


Ultimamente tenho pesquisado sobre "convert channels" ou canais de comunicações encobertos. Acabei esbarrando com uma série de artigos legais e vou resumir um pouco um dos mais importantes. Para quem quiser se aprofundar um pouco mais pode pegar os artigos na íntegra.

A esteganografia é a arte de esconder informações dentro de outras. Os exemplos mais comuns que vemos na Web são imagens com algum texto escondido em seus bits. Quando criança aposto que já brincou com aquelas tintas "invisíveis" que ao expor a luz ultravioleta se torna visível, mas somente para quem conhece o seu segredo.

Ok, podemos esconder informações em praticamente qualquer coisa? não é bem assim, mesmo nas imagens, elas ainda precisam apresentar o seu conteúdo(Foto)  e esconder os dados, para isso existem diversas técnicas entre elas o LSB(Less Significant Bit) que consiste em trocar o bit menos significante de uma informação por um bit da informação nova.

Esteganografia é legal, e muito útil quando a questão é extração de informação; Imagine o seguinte cenário: Um atacante A após a invasão bem sucedida em uma empresa X necessita extrair 1mb de senhas dos seus clientes.   Fazer o download do arquivo senhas.zip via http seria óbvio demais. Criptografia ajudaria para que os administradores não soubessem do que se trata o conteúdo da informação, mas ainda sim não encobriria os traços de uma informação sendo passada.

Imagine que agora o atacante possa criptografar e incluir estas informações em várias imagens que já estão presente no site da empresa. Ao acessar o site, e baixar as imagens, o atacante recuperará as informações sem chamar muita atenção do administrador que provavelmente só notará o fato quando perceber as alterações feitas nas imagens. Geralmente, tarde demais.

TCP/IP


Legal, mas se podemos utilizar esteganografia em Imagens, PDF's e protocolos da camada de aplicação (ex: HTTP), porque utilizar no protocolo TCP/IP? Oras, e se o servidor invadido não possua um servidor HTTP ? tráfego deste protocolo causaria muita suspeita! Utilizar protocolos da camada de aplicação necessita o conhecimento prévio de que o alvo possui essa aplicação o que as vezes nem sempre é verdade. Mas FATO É que ele possui o TCP/IP já que você está conectado.

Não pretendo entrar em detalhes de como funcionam os dois protocolos, as informações podem ser facilmente encontradas nas RFC's

Basicamente, o estudo "Embedding Convert Channels into TCP/IP (2005)" do Steven J. Murdoch e Stephen Lewis mostra onde é possível incluir informações no cabeçalho TCP e IP e como elas podem ser detectadas. Resumindo:

No protocolo IP, os campos: Type of service, Identification, Flags, Fragment Offset e Options são passíveis de injeção de dados No TCP o campo Sequence Number.

Cada um dos campos citados acima possui vantagens e desvantagens quanto a sua detecção, por exemplo no Protocolo IP, o campo "Type of service" possui 8 bits e são utilizados para indicar parâmetros do serviço para os roteadores. É possível utilizar este campo para incluir dados, mas seria facilmente detectado já que na maioria dos sistemas operacionais este campo é setado como 0(zero), vários pacotes com valores diferentes neste campo alertariam os administradores.

Vale a pena ler o artigo, cada sistema operacional implementa de maneiras diferentes cada um destes campos. O campo escolhido pelos autores para implementar um canal de comunicação encoberto foi o "TCP Sequence Number". O qual os autores alteram o seu método de geração para bypassar um modelo de segurança proposto e evitar a detecção. Como ? Imitando o modo como o sistema operacional gera os bits,  as características como aleatoriedade são primordiais para manter o canal invisível.



[Referências]
http://pt.wikipedia.org/wiki/Esteganografia
http://en.wikipedia.org/wiki/Type_of_service

Embedding Covert Channels into TCP/IP

Nenhum comentário:

Postar um comentário