Atualmente estou trabalhando em um aplicativo que é capaz de conduzir envenenamento por ARP para se tornar o homem no meio e fazer alguma filtragem inteligente. Vou explicar o problema em detalhes, em etapas, para que vocês saibam o que está acontecendo.
Eu tenho 4 hosts, ou seja:
- A -
192.168.1.1
- B -
192.168.1.2
- C -
192.168.1.3
- D -
192.168.1.4
O host A é o homem no meio para que todo o tráfego dentro da rede seja redirecionado para ele.
Digamos que o Host B deseje fazer ping no Host C, mas como o host A é o MITM, o ping será redirecionado para o host A. Meu aplicativo no host A deve ser capaz de encaminhar o pacote de ping para o host C ).
No entanto, o aplicativo pode decidir determinados pacotes que deseja encaminhar.
Por exemplo, se o Host B quiser FTP para Host C desta vez, eu gostaria que o host A mangle com o endereço IP de destino para os pacotes, de modo que os pacotes do host B realmente fossem para o host D (apenas um exemplo, a conexão ftp pode não funcionar, ok)
A idéia básica é que o aplicativo é capaz de redirecionar o tráfego dependendo do protocolo.
É aí que entra o problema, não tenho certeza de como posso fazer isso. Eu li no iptables e parece que (me corrija se eu estiver errado), iptables é capaz de mangle com o endereço de destino dos pacotes com funções de pré-roteamento.
Eu também fiz algumas pesquisas em um módulo específico chamado libnetfilter_queue (nfqueue) que parece ser capaz de mangle com pacotes também, embora eu não saiba exatamente como.
Alguém pode me aconselhar sobre qual é a abordagem correta que devo seguir? Se possível, você pode fornecer alguns exemplos que serão capazes de resolver o problema no cenário acima?