Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
BIND-9-Cache-Poisoning-PoC---CVE-2025-40778 — Prova de Conceito para CVE-2025-40778: envenenamento de cache DNS no BIND 9 via registros não solicitados da Seção Additional. | Kitploit
Ferramentas/GitHubGitHub/sirbuvladste/bind-9-cache-poisoning-poc---cve-2025-40778
Análise de VulnerabilidadesExploraçãoSegurança de RedeAprendizado e EducaçãoAnálise de DNSLabs e Prática
GitHubsirbuvladste/bind-9-cache-poisoning-poc---cve-2025-40778

BIND-9-Cache-Poisoning-PoC---CVE-2025-40778

Prova de Conceito para CVE-2025-40778: envenenamento de cache DNS no BIND 9 via registros não solicitados da Seção Additional.

Ver Repositório
4há 8 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

PoC de Envenenamento de Cache no BIND 9 - CVE-2025-40778

Visão Geral Conceitual

Esta vulnerabilidade permite que um atacante corrompa o cache DNS de um resolvedor BIND, forçando usuários legítimos a serem redirecionados para endereços IP maliciosos sem que eles saibam.

A lógica central do ataque:

O ataque depende da exploração da confiança. A Vítima confia no Resolvedor, e o Resolvedor (BIND) confia nas respostas que recebe dos Servidores Autoritativos. A falha existe porque o BIND processa e armazena em cache dados não solicitados fornecidos na seção ADDITIONAL de uma resposta DNS, mesmo que esses dados pertençam a um domínio completamente diferente e não solicitado.

Etapas do Ataque:

  1. A preparação: O Atacante controla um servidor DNS Autoritativo malicioso para um domínio específico (por exemplo, poc.lab). O Atacante espera que o Resolvedor alvo (BIND) consulte esse domínio.

  2. A injeção: Quando o Resolvedor consulta o servidor do Atacante por poc.lab, o Atacante responde com uma resposta legítima para poc.lab, mas inclui uma resposta não solicitada na seção ADDITIONAL para um domínio diferente (no nosso exemplo é www.hacker.com, mas poderia ser qualquer domínio legítimo, como facebook.com) apontando para um endereço IP malicioso.

  3. O envenenamento: Devido à vulnerabilidade, o Resolvedor aceita o registro "Additional" não solicitado e o armazena em seu cache. Ele não verifica se o Atacante não tem autoridade sobre o domínio não solicitado.

  • A consulta da Vítima: Quando a Vítima consulta posteriormente o Resolvedor pelo domínio não solicitado (www.hacker.com), o Resolvedor retorna o registro envenenado de seu cache, redirecionando a Vítima para o endereço IP malicioso controlado pelo Atacante.

  • [!IMPORTANT]

    Principais Conclusões deste PoC

    Ataque Indireto: A Vítima nunca se comunica diretamente com o Atacante.

    Comprometimento da Âncora de Confiança: A máquina da Vítima está funcionando corretamente; é a infraestrutura (DNS) que está mentindo.

    O Mecanismo: O exploit aproveita o processamento da seção Additional para injetar registros que nunca foram solicitados.

    [!CAUTION]

    Este PoC é apenas para fins educacionais. O uso não autorizado destas informações para comprometer sistemas é ilegal e antiético. Sempre obtenha permissão antes de testar ou explorar vulnerabilidades em qualquer rede ou sistema.

    Configuração da Infraestrutura para esta demonstração

    As seguintes máquinas virtuais (VMs) são usadas nesta demonstração:

    • VM Ubuntu 24.0.4 - BIND 9 - 192.168.174.131
    • VM Ubuntu 24.0.4 - Vítima - 192.168.174.128
    • VM Kali 2024.2 - Atacante - 192.168.174.130

    Baixar e compilar o BIND 9.21.12

    Os seguintes comandos são para a configuração do BIND 9.21.12 em um sistema baseado em Debian para demonstrar a vulnerabilidade CVE-2025-40778.

    [!NOTE] Esta demonstração usa o BIND 9.21.12, que é uma das versões afetadas por esta vulnerabilidade.

    Outras faixas conhecidas de versões afetadas incluem:

    • 9.11.0 – 9.16.50
    • 9.18.0 – 9.18.39
    • 9.20.0 – 9.20.13
    • 9.21.0 – 9.21.12

    Os seguintes comandos instalarão as dependências necessárias, baixarão o código-fonte do BIND 9.21.12, o compilarão e o instalarão em nosso sistema.

    root@kitploit:~
    sudo apt install -y build-essential pkg-config perl meson ninja-build libssl-dev libuv1-dev liburcu-dev libcap-dev liblmdb-dev libnghttp2-dev
    
    cd /usr/local/src
    
    sudo wget -O bind-9.21.12.tar.xz https://isc.mirrorservice.org/bind/9.21.12/bind-9.21.12.tar.xz
    
    sudo tar -xf bind-9.21.12.tar.xz
    
    cd bind-9.21.12
    
    sudo meson setup build --prefix=/usr/local --sysconfdir=/etc --localstatedir=/var
    
    sudo ninja -C build
    
    sudo ninja -C build install
    
    echo /usr/local/lib/x86_64-linux-gnu | sudo tee /etc/ld.so.conf.d/bind9-local.conf
    
    sudo ldconfig
    
    ldconfig -p | grep 'libdns-9.21.12' || true
    
    /usr/local/sbin/named -v
    

    Aqui está a saída esperada do último comando:

    root@kitploit:~
    > student@student:/usr/local/src/bind-9.21.12$ /usr/local/sbin/named -v
    BIND 9.21.12 (Development Release) <id:9bafc35>
    

    Usuário e Grupo + Arquivos de Configuração

    Antes de iniciar o servidor BIND, precisamos criar um usuário e um grupo dedicados para executar o serviço named:

    root@kitploit:~
    sudo groupadd --system named 2>/dev/null || true
    sudo useradd --system --no-create-home --home /nonexistent --shell /usr/sbin/nologin --gid named named 2>/dev/null || true
    

    Como esta instalação do BIND não vem com arquivos de configuração padrão, precisamos criar os diretórios necessários manualmente:

    root@kitploit:~
    sudo mkdir -p /etc/bind
    sudo mkdir -p /var/cache/bind
    sudo mkdir -p /var/log/named
    sudo mkdir -p /var/run/named
    sudo chown -R named:named /var/cache/bind /var/log/named /var/run/named
    sudo chmod 750 /var/cache/bind /var/log/named /var/run/named
    

    O próximo passo é criar o arquivo de configuração principal /etc/bind/named.conf com o conteúdo abaixo:

    root@kitploit:~
    include "/etc/bind/named.conf.options";
    include "/etc/bind/named.conf.local";
    include "/etc/bind/named.conf.logging";
    include "/etc/rndc.key";
    

    Para a configuração de opções, crie o arquivo /etc/bind/named.conf.options com o seguinte conteúdo:

    root@kitploit:~
    options {
        directory "/var/cache/bind";
    
        recursion yes;
        allow-recursion { 192.168.174.0/24; };
        allow-query     { 192.168.174.0/24; };
    
        listen-on { 192.168.174.131; 127.0.0.1; };
        listen-on-v6 { none; };
    
        dnssec-validation no;
    
        forwarders {
            1.1.1.1;
            8.8.8.8;
        };
    
        minimal-responses no;
    
        // for manual start
        pid-file "/var/run/named/named.pid";
    };
    

    Para configurar uma zona de encaminhamento (forward zone) para o domínio poc.lab encaminhar consultas para o servidor DNS do atacante em 192.168.174.130 na porta padrão 53, precisamos editar o arquivo /etc/bind/named.conf.local da seguinte forma:

    root@kitploit:~
    zone "poc.lab" {
      type forward;
      forward only;
      forwarders { 192.168.174.130; };
    };
    

    Para a configuração de logging, crie o arquivo /etc/bind/named.conf.logging contendo:

    root@kitploit:~
    logging {
      channel queries_file {
        file "/var/log/named/queries.log" versions 3 size 20m;
        severity info;
        print-time yes;
        print-category yes;
      };
    
      channel default_stderr {
        stderr;
        severity info;
        print-time yes;
        print-category yes;
      };
    
      category queries { queries_file; };
      category default { default_stderr; };
    };
    

    Por fim, precisamos configurar o RNDC:

    root@kitploit:~
    sudo /usr/local/sbin/rndc-confgen -a -c /etc/bind/rndc.key
    sudo chown root:named /etc/bind/rndc.key
    sudo chmod 640 /etc/bind/rndc.key
    

    Iniciando o Servidor BIND

    Primeiramente, precisamos garantir que a porta 53 não esteja sendo usada por nenhum outro serviço (no nosso caso, tivemos que desativar o systemd-resolved):

    root@kitploit:~
    sudo systemctl disable --now systemd-resolved || true
    sudo ss -lunp | grep ':53' || true  # To verify that port 53 is free
    

    Finalmente, podemos iniciar o servidor BIND usando o seguinte comando:

    root@kitploit:~
    sudo /usr/local/sbin/named -g -u named -c /etc/bind/named.conf
    

    [!TIP]

    Para verificar se o BIND está funcionando corretamente, podemos usar o seguinte comando:

    root@kitploit:~
    ss -lunpt | grep :53
    

    Configurando a Vítima

    Para a máquina da vítima, precisamos configurá-la para usar o servidor BIND como resolvedor DNS. Além disso, temos que desativar o systemd-resolved para evitar conflitos:

    root@kitploit:~
    sudo systemctl disable --now systemd-resolved
    

    Depois, podemos definir um servidor DNS estático usando os comandos:

    root@kitploit:~
    sudo rm -f /etc/resolv.conf
    sudo nano /etc/resolv.conf
    > nameserver 192.168.174.129
    > options timeout:1 attempts:1
    sudo chattr +i /etc/resolv.conf #block overwrites
    

    Configurando o Atacante

    Na máquina do atacante, precisamos executar o script fornecido no repositório (attacker.py).

    No nosso cenário, o atacante controla o domínio poc.lab. Quando consultado por ele ou qualquer subdomínio, ele adiciona um registro de resposta não solicitado (www.hacker.com) apontando para o seu endereço IP.

    Demonstração da Vulnerabilidade CVE-2025-40778

    Quando a vítima consulta o domínio poc.lab, o servidor BIND encaminha a solicitação para o servidor DNS do atacante. O atacante responde com um registro de resposta não solicitado que envenena o cache do servidor BIND. Quando a vítima acessar www.hacker.com, ela será redirecionada para o endereço IP do atacante em vez do legítimo.

    Aqui está uma demonstração da vítima consultando ambos os domínios:

    root@kitploit:~
    student@student:~/Desktop$ dig www.poc.lab +noall +answer
    www.poc.lab.            60      IN      A       192.168.174.99
    student@student:~/Desktop$ dig www.hacker.com +noall +answer
    www.hacker.com.         60      IN      A       192.168.174.130
    

    Como mostrado acima, a consulta DNS da vítima por www.hacker.com retorna o endereço IP do atacante (192.168.174.130).

    [!NOTE]

    Este vídeo é uma demonstração da vulnerabilidade explicada: https://drive.google.com/file/d/1PATD0tUqw8-BipfSf6TkQQfnJBvV110Z/view?usp=sharing

    Arquivos neste repositório

    • README.md - Este arquivo, contendo a explicação e os passos para reproduzir a vulnerabilidade.
    • attacker.py - Um script Python simples que é usado pelo atacante para responder a consultas DNS com registros de resposta não solicitados.
    • server.py - Uma página web simples em Flask que pode ser usada para demonstrar o redirecionamento após o envenenamento de cache DNS.
    Baixar ferramenta