Capture um pacote na camada MAC

Capture um pacote na camada MAC

Quero implementar uma solução de segurança semelhante ao MACsec que capture um pacote em sua totalidade (incluindo o cabeçalho MAC) em um nó de rede intermediário (por exemplo, switch baseado em Linux), execute algum processamento no pacote e, em seguida, envie-o para o nó intermediário .

Você poderia me indicar recursos apropriados que podem me ajudar a fazer isso. Atualmente estou procurando soluções que exijam modificação do driver da NIC. Existe alguma outra solução mais simples que esta? Como outros implementam o MACsec?

Observe que não pretendo simplesmente capturar um pacote usando pcap e métodos semelhantes. O que procuro é ser capaz de capturar um pacote antes que ele passe por um nó intermediário, adulterá-lo e enviá-lo ao destinatário pretendido.

Obrigado

Responder1

Se você quiser analisar o pacote conforme o kernel do Linux o recebe, você terá que escrever um driver de kernel, possivelmente até modificar o próprio kernel. Quando a interface recebe os dados, o processamento começa imediatamente. Qualquer coisa que estiver registrada para receber a próxima camada terá seu manipulador chamado. Como o cabeçalho MAC não requer muito processamento, o manipulador da camada IP é o primeiro que começa a realizar grande parte do processamento.

Se você quiser manipular o cabeçalho MAC e fazer o que quiser, terá que inseri-lo logo após o recebimento do cabeçalho MAC e antes do processamento do IP. Ou você pode escrever um driver para ser uma NIC virtual. Dessa forma, você poderá processar os dados como achar melhor. A NIC virtual veria todos os dados da mesma forma que a NIC real. Esta seria provavelmente a sua melhor aposta, já que você não quer começar a mexer no kernel e reconstruí-lo apenas para o seu próprio projeto.

Minha resposta aquifornece vários links bons para aprender sobre redes do kernel Linux. Eu também sugeriria que você escolhesse Linux Kernel Networking: Implementation and Theory, de Rami Rosen. Ótimo recurso para uma análise aprofundada da pilha de rede.

O MACSec em algum momento será implementado no kernel. O IPSec, por exemplo, mantém suas políticas de segurança no kernel enquanto um daemon de usuário monitora as conexões de túnel. Infelizmente, acredito que você terá que escrever algum nível de código do kernel para executar as ações desejadas.

Responder2

Há algum tempo eu queria brincar um pouco com pacotes de dados como camada 2, camada 3 ou camadas superiores. Encontrei uma ferramenta legal, baseada em python, para fazer isso. Esta ferramenta chama Escapar.
Você pode capturar e manipular pacotes. Ou você pode criar um filtro baseado em pacotes para sua necessidade.

informação relacionada