Lidar com Registros DNS Wildcard no Gobuster

Beginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como usar o Gobuster de forma eficaz para enumeração de subdomínios DNS, com foco particular no tratamento de registros DNS wildcard. Registros DNS wildcard podem frequentemente levar a um grande número de falsos positivos em varreduras de subdomínios, dificultando a identificação de subdomínios legítimos. O Gobuster fornece uma flag --wildcard que ajuda a filtrar essas respostas, garantindo resultados mais limpos e precisos. Você identificará um domínio com um registro wildcard, observará o impacto de uma varredura padrão e, em seguida, usará a flag --wildcard para ver a diferença.

Identificar um Domínio com um Registro DNS Wildcard

Nesta etapa, você identificará um domínio que utiliza um registro DNS wildcard. Um registro DNS wildcard (*.example.com) significa que qualquer subdomínio que não possua um registro DNS específico será resolvido para um endereço IP predefinido. Isso pode causar problemas durante a enumeração de subdomínios, pois muitos subdomínios inexistentes parecerão ser resolvidos, levando a falsos positivos.

Usaremos o dig para consultar um subdomínio inexistente para o nosso domínio alvo wildcard.labex.io para confirmar seu comportamento wildcard.

Primeiro, vamos verificar o conteúdo do nosso arquivo de domínio alvo:

cat ~/project/target_domain.txt

Você deverá ver wildcard.labex.io como saída.

Agora, vamos consultar um subdomínio inexistente, por exemplo, nonexistent.wildcard.labex.io, usando dig. Se ele for resolvido para um endereço IP, isso indica que um registro wildcard está em vigor.

dig nonexistent.wildcard.labex.io

Observe a ANSWER SECTION na saída. Se você vir um endereço IP para nonexistent.wildcard.labex.io, isso confirma a presença de um registro DNS wildcard.

; <<>> DiG 9.18.1-1ubuntu1.7-Ubuntu <<>> nonexistent.wildcard.labex.io
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12345
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;nonexistent.wildcard.labex.io. IN      A

;; ANSWER SECTION:
nonexistent.wildcard.labex.io. 300 IN   A       192.0.2.123  ## Example IP, will vary

;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Mon Jan 01 12:00:00 UTC 2023
;; MSG SIZE  rcvd: 78

A presença de uma ANSWER SECTION para um subdomínio claramente inexistente confirma que wildcard.labex.io possui um registro DNS wildcard.

Executar uma Varredura DNS Padrão e Observar Falsos Positivos

Nesta etapa, você realizará uma varredura padrão de enumeração de subdomínios DNS em wildcard.labex.io usando o Gobuster sem qualquer filtragem de wildcard. Isso demonstrará como os registros DNS wildcard podem levar a numerosos falsos positivos, dificultando a distinção entre subdomínios legítimos e aqueles resolvidos pelo wildcard.

Usaremos o comando gobuster dns com a flag -d para o domínio e a flag -w para nossa wordlist.

gobuster dns -d wildcard.labex.io -w ~/project/wordlist.txt

Observe a saída. Você provavelmente verá que quase todas as entradas da sua wordlist são resolvidas para um endereço IP, mesmo que não seja um subdomínio "real". Isso ocorre porque o registro DNS wildcard captura todas essas consultas e as resolve.

Gobuster v3.6
by OJ <oj@zerokopter.com>
[+] Url: wildcard.labex.io
[+] Threads: 10
[+] Wordlist: /home/labex/project/wordlist.txt
[+] Timeout: 10s
[+] User Agent: gobuster/3.6
2023/01/01 12:00:00 Starting gobuster
Found: test.wildcard.labex.io (192.0.2.123)
Found: dev.wildcard.labex.io (192.0.2.123)
Found: www.wildcard.labex.io (192.0.2.123)
Found: mail.wildcard.labex.io (192.0.2.123)
Found: blog.wildcard.labex.io (192.0.2.123)
Found: admin.wildcard.labex.io (192.0.2.123)
Found: api.wildcard.labex.io (192.0.2.123)
Found: cdn.wildcard.labex.io (192.0.2.123)
Found: ftp.wildcard.labex.io (192.0.2.123)
Found: vpn.wildcard.labex.io (192.0.2.123)
2023/01/01 12:00:05 Finished

Como você pode ver, todas as entradas da wordlist foram "encontradas", o que é enganoso devido ao registro DNS wildcard. Isso destaca o problema de falsos positivos na enumeração de subdomínios.

Reexecutar a Varredura com a Flag --wildcard

Nesta etapa, você reexecutará a varredura Gobuster DNS, mas desta vez incluirá a flag --wildcard. Essa flag instrui o Gobuster a realizar uma verificação inicial de registros DNS wildcard e, em seguida, filtrar quaisquer resultados subsequentes que sejam resolvidos para o mesmo endereço IP do wildcard. Isso reduz significativamente os falsos positivos e fornece uma saída muito mais limpa.

Execute o comando Gobuster novamente, adicionando a flag --wildcard:

gobuster dns -d wildcard.labex.io -w ~/project/wordlist.txt --wildcard

Preste muita atenção à saída. Você deverá notar que o Gobuster primeiro identifica o IP do wildcard e, em seguida, procede para filtrar os resultados que correspondem a ele.

Gobuster v3.6
by OJ <oj@zerokopter.com>
[+] Url: wildcard.labex.io
[+] Threads: 10
[+] Wordlist: /home/labex/project/wordlist.txt
[+] Timeout: 10s
[+] User Agent: gobuster/3.6
[+] Wildcard DNS detected. Filtering responses for 192.0.2.123 ## Example IP
2023/01/01 12:00:00 Starting gobuster
2023/01/01 12:00:05 Finished

Note a linha [+] Wildcard DNS detected. Filtering responses for 192.0.2.123. Isso indica que o Gobuster identificou com sucesso o IP do wildcard e agora está filtrando ativamente os resultados que são resolvidos para ele. Neste exemplo específico, como todos os subdomínios são resolvidos para o IP do wildcard, você pode não ver nenhuma entrada "Found", o que é o comportamento correto para um domínio com uma configuração wildcard completa e sem subdomínios legítimos em sua wordlist.

Observar Como o Gobuster Filtra Respostas Wildcard

Nesta etapa, vamos nos aprofundar em como a flag --wildcard do Gobuster funciona, observando seu comportamento com um cenário ligeiramente modificado. Embora nosso exemplo anterior tenha mostrado uma filtragem completa, é importante entender o mecanismo. O Gobuster primeiro consulta um subdomínio aleatório e inexistente (por exemplo, randomstring.yourdomain.com). Se essa consulta for resolvida para um endereço IP, o Gobuster considerará esse endereço IP como o IP do wildcard. Qualquer subdomínio subsequente encontrado durante a enumeração que seja resolvido para este mesmo IP do wildcard será filtrado. Apenas subdomínios resolvidos para um endereço IP diferente serão reportados.

Para ilustrar isso, vamos imaginar que nosso domínio wildcard.labex.io também tivesse um subdomínio legítimo www.wildcard.labex.io apontando para um endereço IP diferente. Se fosse esse o caso, o Gobuster ainda filtraria todas as outras entradas wildcard, mas reportaria www.wildcard.labex.io.

Para fins deste laboratório, como wildcard.labex.io está configurado para que todos os subdomínios sejam resolvidos para o mesmo IP wildcard, a saída da etapa anterior (onde nenhum subdomínio foi "encontrado") é o comportamento esperado e correto, demonstrando a filtragem eficaz.

Vamos reexecutar o comando e focar na linha de saída inicial que confirma a detecção do wildcard:

gobuster dns -d wildcard.labex.io -w ~/project/wordlist.txt --wildcard

A linha chave a ser observada é: [+] Wildcard DNS detected. Filtering responses for <IP_ADDRESS>. Isso confirma que o Gobuster identificou o IP do wildcard e está ativamente usando-o para filtrar resultados.

Gobuster v3.6
by OJ <oj@zerokopter.com>
[+] Url: wildcard.labex.io
[+] Threads: 10
[+] Wordlist: /home/labex/project/wordlist.txt
[+] Timeout: 10s
[+] User Agent: gobuster/3.6
[+] Wildcard DNS detected. Filtering responses for 192.0.2.123 ## Example IP
2023/01/01 12:00:00 Starting gobuster
2023/01/01 12:00:05 Finished

Esta etapa reforça o entendimento de que a flag --wildcard do Gobuster é crucial para obter resultados precisos de enumeração de subdomínios em domínios com registros DNS wildcard.

Analisar os Resultados Mais Limpos e Precisos

Nesta etapa final, você analisará a diferença entre os resultados obtidos da varredura Gobuster padrão e a varredura realizada com a flag --wildcard. O objetivo é apreciar como a flag --wildcard fornece resultados mais limpos e precisos, eliminando falsos positivos.

Lembre-se da saída da Etapa 2 (sem --wildcard):
Cada entrada da wordlist foi reportada como "Found", embora estivessem apenas sendo resolvidas devido ao registro DNS wildcard. Essa saída é ruidosa e torna impossível identificar subdomínios realmente existentes.

Lembre-se da saída das Etapas 3 e 4 (com --wildcard):
O Gobuster declarou explicitamente [+] Wildcard DNS detected. Filtering responses for <IP_ADDRESS>. Em nosso caso específico, como todos os subdomínios são resolvidos para o IP do wildcard, nenhuma entrada "Found" foi reportada. Este é o resultado correto e preciso, indicando que nenhum dos subdomínios em nossa wordlist é legítimo e resolve para um endereço IP único.

Se houvesse subdomínios legítimos (por exemplo, www.wildcard.labex.io resolvendo para um IP diferente do wildcard), eles teriam sido listados na saída ao usar a flag --wildcard. Isso demonstra o poder da flag em distinguir subdomínios reais de entradas wildcard.

A flag --wildcard é essencial para uma enumeração de subdomínios eficiente e precisa, especialmente ao lidar com wordlists grandes e domínios que utilizam extensivamente registros DNS wildcard. Ela economiza tempo ao reduzir a necessidade de filtragem manual de falsos positivos e garante que seus esforços de enumeração estejam focados em subdomínios verdadeiramente relevantes.

Você aprendeu com sucesso como identificar registros DNS wildcard e usar a flag --wildcard do Gobuster para obter resultados precisos de enumeração de subdomínios.

Resumo

Neste laboratório, você adquiriu experiência prática no manuseio de registros DNS wildcard durante a enumeração de subdomínios usando o Gobuster. Você aprendeu a identificar domínios com registros wildcard, observou como as varreduras padrão produzem falsos positivos e, o mais importante, dominou o uso da flag --wildcard para filtrar esses resultados enganosos. Essa habilidade é crucial para qualquer pessoa que realize reconhecimento ou testes de penetração, pois garante a precisão e a eficiência do seu processo de descoberta de subdomínios. Ao aplicar a flag --wildcard, você pode se concentrar em subdomínios legítimos, economizando tempo e recursos valiosos.