
Backdoor iptables a nível de kernel que aceita todos os pacotes com o evil bit RFC 3514 definido, desviando das regras do firewall. Inclui builds in-tree e out-of-tree para Linux.
iptable_eviliptable_evil é um backdoor muito específico para iptables que permite todos os pacotes com o evil bit ativado, independentemente das regras do firewall.
A implementação inicial está em iptable_evil.c, que adiciona uma tabela ao iptables e requer a modificação de um cabeçalho do kernel para inserir um local para ela.
A segunda implementação é uma versão modificada do módulo central ip_tables e seus dependentes para permitir todos os pacotes Evil.
Testei no kernel Linux versão 5.8.0-48, mas isso deve ser aplicável a praticamente qualquer versão do kernel com uma implementação completa do iptables.
RFC3514, publicado em 1º de abril de 2003, define o bit de ordem superior anteriormente não utilizado do campo de offset de fragmento IP como um sinalizador de segurança.
Para sistemas compatíveis com RFC, um 1 nessa posição do bit indica intenção maligna e fará com que o pacote seja bloqueado.
Por padrão, esse bit está desligado, mas pode ser ativado no seu software se você estiver montando a totalidade do seu pacote IP (como algumas ferramentas de hacking fazem), ou no kernel Linux usando este patch (espelhado neste repositório aqui).
Quando um pacote é recebido pelo kernel Linux, ele é processado pelo iptables e enviado para o espaço do usuário, rejeitado ou modificado com base nas regras configuradas.
Em particular, cada tabela iptables usa a função ipt_do_table em ip_tables.c para decidir se aceita um determinado pacote.
Eu modifiquei isso para aceitar automaticamente qualquer pacote com o evil bit ativado e pular todo o processamento adicional.
Também tentei adicionar outra tabela (iptable_evil.c) que aceitaria todos os pacotes evil e passaria os outros para as tabelas padrão para processamento, mas nunca descobri como passar os pacotes para a próxima tabela e decidi que o backdoor ipt_do_table era suficiente como prova de conceito.
Precisava fazer e documentar um projeto razoavelmente grande em segurança da computação para uma das minhas aulas, e isso pareceu uma ideia legal. Isso provavelmente é mais trabalho do que ele esperava para isso, mas ¯\_(ツ)_/¯.
A tabela evil requer modificação dos cabeçalhos do kernel, portanto, instalá-la requer executar um kernel produzido através da compilação completa da árvore.
replace-existing para a árvore de fontes do kernel, sobrescrevendo os arquivos existentes.iptable_evil.c para linux-X.Y.Z/net/ipv4/netfilterip_tables.c para linux-X.Y.Z/net/ipv4/netfilteriptables -t filter -Liptables -t evil -L (isso terá uma saída confusa, mas carregará o módulo)Isso é significativamente mais fácil e rápido, mas não suporta a tabela evil e marca o kernel como "tainted".
Deve ser possível copiar os arquivos ko produzidos por isso para outro computador com exatamente a mesma versão do kernel, mas não testei.
makermmod iptable_*rmmod ip_tablesinsmod ip_tables.koinsmod iptable_filter.koPara testar isso, você precisa reconstruir todo o seu kernel com este patch ou criar seus próprios pacotes usando uma ferramenta como Scapy.
Optei pela primeira opção porque já estava compilando o kernel para a tabela evil.
Na primeira captura de tela, bloquei todo o tráfego para esta VM no iptables, mas ainda consigo conectar via SSH porque meus pacotes têm o evil bit ativado, como mostra a segunda captura de tela.

Ao conectar na VM com backdoor a partir de uma VM que não define o evil bit, a conexão SSH eventualmente expirará.

Capturas de pacotes de conexões SSH com e sem backdoor estão na pasta docs/ deste repositório para sua consulta.
iptables_uwu de Ben Cox (principalmente para dar nomes de coisas para pesquisar): https://github.com/benjojo/iptables-uwuiptables funciona e como adicionar alvos e módulos a ele: https://inai.de/documents/Netfilter_Modules.pdf