Pergunta

Eu tenho que escrever um programa que cheire pacotes de rede (parte 1 a parte simples).
E eu tenho que atualizar o programa (Part2) para que ele possa encerrar conexões.
Os requisitos específicos são:

Construa pacotes brutos especificando as informações da camada de link de dados e da camada de rede, incluindo endereços Mac e IP de origem e destino apropriados. Esses pacotes destinam -se a encerrar a conexão. Para fazer isso, você deve usar o Sock_raw como tipo de soquete para poder definir as informações do cabeçalho sozinho.

Alguém pode me dar algumas idéias na segunda parte?
Devo seqüestrar a sessão, aplicar um ataque do DOS a um dos usuários?

Tudo o que preciso são algumas dicas de como encerrar a conexão. Estou usando a linguagem de programação C, e esta é uma atribuição de curso para o curso de segurança.

Foi útil?

Solução

Depende do que você quer dizer com conexões encerradas. Você pode significar fornecer um ponto final para um circuito TCP ou fluxo UDP.

Ou você pode significar enviar uma primeira aceitável no meio de um fluxo TCP para indicar o final do fluxo. Para conseguir isso, você precisa conhecer o número da sequência esperado pelo outro lado, entre outras coisas.

De qualquer forma, é óbvio que você não está prestando atenção na aula. O ponto principal da tarefa, ao que parece, é mostrar que você entende o layout bruto de pacotes IP e possivelmente o TCP/UDP. Sugiro que você compre um livro sobre o assunto (sem dúvida recomendado pelo seu professor) e/ou leia a Wikipedia.

Outras dicas

Para esta tarefa, eu usaria Pypacp, que é uma biblioteca de captura e injeção de pacotes Python. O PypCap usa soquetes cru para forjar pacotes. Se, por algum motivo estranho, você for forçado a usar C, este projeto será mais difícil. Nesse caso, você deve usar o libpcap para farejar a linha e a biblioteca de soquete bruto dependerá da plataforma em que você desenvolve.

Você pode farejar a linha procurando por IDs de sequência TCP. Com base neste ID, você pode forjar um primeiro ou barbatana para quebrar um lado da conexão. A parte mais difícil tentará manter a conexão TCP usando soquetes crus. Será quase impossível manter a conexão da camada de aplicação, o HTTP seria um protocolo mais fácil de manter, mas se fosse http, seria mais fácil sequestrar o cookie.

Não posso ajudá -lo com as bibliotecas C - não o meu forte, mas parece que deveria haver algo por aí.

Mas parece que o que você está tentando fazer na Parte 2 é impedir que um DOS, não causar um!

Verifique aqui:

http://en.wikipedia.org/wiki/denial-of-service_attack

Para coisas em ataques do DOS. Como o PP diz, há vários ataques relacionados ao uso indevido de conexão, então você deseja descobrir qual é o seu agrupamento - aquele que você precisa verificar com seu professor. Por exemplo, a página do Wiki acima menciona as inundações do SYN - mas quase qualquer protocolo orientado a conexão estará em risco de um ataque que preenche o pool de conexões com muitas solicitações de conexão e nunca as fecha.

Presumo que lendo a tarefa, que seu trabalho é descobrir como corrigir isso fechando as conexões que o invasor abriu. O que significa que vocês dois precisam descobrir como o ataque funciona e depois descobrir como se recuperar.

Dica: atingir o servidor com uma enxurrada de solicitações de conexão próxima não é um ataque. Também não é tão útil, pois você não está necessariamente fechando as conexões que estão abertas. Mas o dano é causado por solicitações de conexão aberta. Veja aqui:

http://en.wikipedia.org/wiki/syn_flood

Para um exemplo.

Você pode usar o libpcap para ajudar com o pacote Sniffing. O LIBPCAP foi desenvolvido pela equipe do TCPDUMP.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top