hacktricks/network-services-pentesting/pentesting-dns.md

21 KiB

53 - Pentesting DNS

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

DragonJAR Security Conference é um evento internacional de cibersegurança com mais de uma década que será realizado em 7 e 8 de setembro de 2023 em Bogotá, Colômbia. É um evento de grande conteúdo técnico onde as últimas pesquisas em espanhol são apresentadas, atraindo hackers e pesquisadores de todo o mundo.
Registre-se agora no link abaixo e não perca esta grande conferência!:

{% embed url="https://www.dragonjarcon.org/" %}

Informações Básicas

O Sistema de Nomes de Domínio (DNS) é a lista telefônica da Internet. Os humanos acessam informações on-line por meio de nomes de domínio, como nytimes.com ou espn.com. Os navegadores da web interagem por meio de endereços de Protocolo de Internet (IP). O DNS traduz nomes de domínio em endereços IP para que os navegadores possam carregar recursos da Internet.
A partir daqui (https://www.cloudflare.com/learning/dns/what-is-dns/).

Porta padrão: 53

PORT     STATE SERVICE  REASON
53/tcp   open  domain  Microsoft DNS 6.1.7601 (1DB15D39) (Windows Server 2008 R2 SP1)
5353/udp open  zeroconf udp-response
53/udp   open  domain  Microsoft DNS 6.1.7601 (1DB15D39) (Windows Server 2008 R2 SP1)

Diferentes Servidores DNS

Informações de https://academy.hackthebox.com/module/112/section/1069

Tipo de Servidor Descrição
Servidor Raiz DNS Os servidores raiz do DNS são responsáveis pelos domínios de nível superior (TLD). Como última instância, eles só são solicitados se o servidor de nomes não responder. Assim, um servidor raiz é uma interface central entre usuários e conteúdo na Internet, pois ele vincula domínio e endereço IP. A Corporação da Internet para Atribuição de Nomes e Números (ICANN) coordena o trabalho dos servidores de nome raiz. Existem 13 desses servidores raiz em todo o mundo.
Servidor de Nomes Autoritativo Servidores de nomes autoritativos possuem autoridade para uma zona específica. Eles respondem apenas a consultas de sua área de responsabilidade, e suas informações são vinculativas. Se um servidor de nomes autoritativo não puder responder à consulta de um cliente, o servidor de nome raiz assume nesse ponto.
Servidor de Nomes Não Autoritativo Servidores de nomes não autoritativos não são responsáveis por uma zona DNS específica. Em vez disso, eles coletam informações sobre zonas DNS específicas por conta própria, o que é feito usando consultas DNS recursivas ou iterativas.
Servidor DNS de Cache Servidores DNS de cache armazenam em cache informações de outros servidores de nomes por um período especificado. O servidor de nomes autoritativo determina a duração deste armazenamento.
Servidor de Encaminhamento Servidores de encaminhamento executam apenas uma função: eles encaminham consultas DNS para outro servidor DNS.
Resolvedor Resolvedores não são servidores DNS autoritativos, mas realizam a resolução de nomes localmente no computador ou roteador.

Enumeração

Banner Grabbing

O DNS não tem um "banner" para ser capturado. O equivalente mais próximo é uma consulta mágica para version.bind. CHAOS TXT, que funcionará na maioria dos servidores BIND.
Você pode realizar essa consulta usando dig:

dig version.bind CHAOS TXT @DNS

Se isso não funcionar, você pode usar técnicas de fingerprinting para determinar a versão do servidor remoto -- a ferramenta fpdns é uma opção para isso, mas existem outras.

Você também pode obter o banner com um script do nmap:

--script dns-nsid

Qualquer registro

O registro ANY solicitará ao servidor DNS que retorne todas as entradas disponíveis que ele está disposto a divulgar.

dig any victim.com @<DNS_IP>

Transferência de Zona

Este procedimento é abreviado como Transferência de Zona Completa Assíncrona (AXFR).

dig axfr @<DNS_IP> #Try zone transfer without domain
dig axfr @<DNS_IP> <DOMAIN> #Try zone transfer guessing the domain
fierce --domain <DOMAIN> --dns-servers <DNS_IP> #Will try toperform a zone transfer against every authoritative name server and if this doesn'twork, will launch a dictionary attack

Sure, what else can I help you with?

dig ANY @<DNS_IP> <DOMAIN>     #Any information
dig A @<DNS_IP> <DOMAIN>       #Regular DNS request
dig AAAA @<DNS_IP> <DOMAIN>    #IPv6 DNS request
dig TXT @<DNS_IP> <DOMAIN>     #Information
dig MX @<DNS_IP> <DOMAIN>      #Emails related
dig NS @<DNS_IP> <DOMAIN>      #DNS that resolves that name
dig -x 192.168.0.2 @<DNS_IP>   #Reverse lookup
dig -x 2a00:1450:400c:c06::93 @<DNS_IP> #reverse IPv6 lookup

#Use [-p PORT]  or  -6 (to use ivp6 address of dns)

Usando nslookup

nslookup
> SERVER <IP_DNS> #Select dns server
> 127.0.0.1 #Reverse lookup of 127.0.0.1, maybe...
> <IP_MACHINE> #Reverse lookup of a machine, maybe...

Módulos úteis do Metasploit

auxiliary/gather/enum_dns #Perform enumeration actions

Scripts úteis do nmap

#Perform enumeration actions
nmap -n --script "(default and *dns*) or fcrdns or dns-srv-enum or dns-random-txid or dns-random-srcport" <IP>

DNS - Força Bruta Reversa

dnsrecon -r 127.0.0.0/24 -n <IP_DNS>  #DNS reverse of all of the addresses
dnsrecon -r 127.0.1.0/24 -n <IP_DNS>  #DNS reverse of all of the addresses
dnsrecon -r <IP_DNS>/24 -n <IP_DNS>   #DNS reverse of all of the addresses
dnsrecon -d active.htb -a -n <IP_DNS> #Zone transfer

{% hint style="info" %} Se você conseguir encontrar subdomínios que resolvem para endereços IP internos, deve tentar realizar um reverse dns BF para os NSs do domínio solicitando esse intervalo de IP. {% endhint %}

Outra ferramenta para fazer isso: https://github.com/amine7536/reverse-scan

Você pode consultar intervalos de IP reversos em https://bgp.he.net/net/205.166.76.0/24#_dns (essa ferramenta também é útil com BGP).

DNS - Subdomains BF

dnsenum --dnsserver <IP_DNS> --enum -p 0 -s 0 -o subdomains.txt -f subdomains-1000.txt <DOMAIN>
dnsrecon -D subdomains-1000.txt -d <DOMAIN> -n <IP_DNS>
dnscan -d <domain> -r -w subdomains-1000.txt #Bruteforce subdomains in recursive way, https://github.com/rbsec/dnscan

Servidores Active Directory

dig -t _gc._tcp.lab.domain.com
dig -t _ldap._tcp.lab.domain.com
dig -t _kerberos._tcp.lab.domain.com
dig -t _kpasswd._tcp.lab.domain.com
nmap --script dns-srv-enum --script-args "dns-srv-enum.domain='domain.com'"

DNSSec

DNSSec (Domain Name System Security Extensions) é uma extensão de segurança para o protocolo DNS que adiciona autenticação e integridade aos registros DNS. Ele protege contra ataques de envenenamento de cache DNS e garante que os dados DNS sejam autênticos e não tenham sido modificados durante a transmissão. O DNSSec usa criptografia de chave pública para assinar digitalmente registros DNS e verificar sua autenticidade. Ele também fornece proteção contra ataques de negação de serviço (DoS) que visam sobrecarregar servidores DNS com solicitações falsas.

 #Query paypal subdomains to ns3.isc-sns.info
 nmap -sSU -p53 --script dns-nsec-enum --script-args dns-nsec-enum.domains=paypal.com ns3.isc-sns.info

IPv6

Força bruta usando solicitações "AAAA" para coletar os endereços IPv6 dos subdomínios.

dnsdict6 -s -t <domain>

Bruteforce de DNS reverso usando endereços IPv6

O DNS reverso é um processo que envolve a resolução de um endereço IP em um nome de domínio. O processo de bruteforce de DNS reverso é semelhante ao bruteforce de DNS normal, mas em vez de tentar resolver nomes de domínio em endereços IP, tentamos resolver endereços IP em nomes de domínio.

O processo de bruteforce de DNS reverso em endereços IPv6 é semelhante ao processo em endereços IPv4. A diferença é que os endereços IPv6 são muito mais longos e complexos do que os endereços IPv4. Isso significa que o processo de bruteforce pode levar mais tempo e exigir mais recursos.

Para realizar um bruteforce de DNS reverso em endereços IPv6, podemos usar ferramentas como o dnsrevenum6 ou o ipv6-toolkit. Essas ferramentas permitem que você especifique um intervalo de endereços IPv6 para bruteforce e, em seguida, tentem resolver cada endereço em um nome de domínio.

É importante lembrar que o bruteforce de DNS reverso pode ser ilegal e deve ser realizado apenas com permissão explícita do proprietário do sistema ou rede que está sendo testado. Além disso, o uso de ferramentas de bruteforce pode ser detectado pelos sistemas de segurança e resultar em bloqueio ou outras medidas de segurança.

dnsrevenum6 pri.authdns.ripe.net 2001:67c:2e8::/48 #Will use the dns pri.authdns.ripe.net

DNS Recursion DDoS

Se a recursão DNS estiver habilitada, um invasor pode falsificar a origem no pacote UDP para fazer com que o DNS envie a resposta para o servidor da vítima. Um invasor pode abusar dos tipos de registro ANY ou DNSSEC pois eles costumam ter as maiores respostas.
A maneira de verificar se um DNS suporta recursão é consultar um nome de domínio e verificar se a flag "ra" (recursão disponível) está na resposta:

dig google.com A @<IP>

Não disponível:

Disponível:

A Conferência de Segurança DragonJAR é um evento internacional de cibersegurança com mais de uma década de existência que será realizada nos dias 7 e 8 de setembro de 2023 em Bogotá, Colômbia. É um evento com grande conteúdo técnico onde são apresentadas as últimas pesquisas em espanhol que atraem hackers e pesquisadores de todo o mundo.
Registre-se agora no seguinte link e não perca esta grande conferência!:

{% embed url="https://www.dragonjarcon.org/" %}

E-mail para conta inexistente

Do livro: Network Security Assessment (3ª edição)

Simplesmente enviar uma mensagem de e-mail para um endereço inexistente em um domínio-alvo muitas vezes revela informações úteis da rede interna através de uma notificação de não entrega (NDN).

Generating server: noa.nintendo.com

blah@nintendo.com
#550 5.1.1 RESOLVER.ADR.RecipNotFound; not found ##

Original message headers:

Received: from ONERDEDGE02.one.nintendo.com (10.13.20.35) by
 onerdexch08.one.nintendo.com (10.13.30.39) with Microsoft SMTP Server (TLS)
 id 14.3.174.1; Sat, 26 Apr 2014 16:52:22 -0700
Received: from barracuda.noa.nintendo.com (205.166.76.35) by
 ONERDEDGE02.one.nintendo.com (10.13.20.35) with Microsoft SMTP Server (TLS)
 id 14.3.174.1; Sat, 26 Apr 2014 16:51:22 -0700
X-ASG-Debug-ID: 1398556333-0614671716199b0d0001-zOQ9WJ
Received: from gateway05.websitewelcome.com (gateway05.websitewelcome.com  [69.93.154.37]) by 
barracuda.noa.nintendo.com with ESMTP id xVNPkwaqGgdyH5Ag for <blah@nintendo.com>; Sat, 
26 Apr 2014 16:52:13 -0700 (PDT)
X-Barracuda-Envelope-From: chris@example.org
X-Barracuda-Apparent-Source-IP: 69.93.154.37

Os seguintes dados neste transcrição são úteis:

  • Nomes de host internos, endereços IP e layout de subdomínio
  • O servidor de e-mail está executando o Microsoft Exchange Server 2010 SP3
  • Um dispositivo da Barracuda Networks é usado para realizar filtragem de conteúdo

Arquivos de configuração

host.conf
/etc/resolv.conf
/etc/bind/named.conf
/etc/bind/named.conf.local
/etc/bind/named.conf.options
/etc/bind/named.conf.log
/etc/bind/*

Configurações perigosas ao configurar um servidor Bind:

Opção Descrição
allow-query Define quais hosts têm permissão para enviar solicitações ao servidor DNS.
allow-recursion Define quais hosts têm permissão para enviar solicitações recursivas ao servidor DNS.
allow-transfer Define quais hosts têm permissão para receber transferências de zona do servidor DNS.
zone-statistics Coleta dados estatísticos das zonas.

Comandos Automáticos HackTricks

Protocol_Name: DNS    #Protocol Abbreviation if there is one.
Port_Number:  53     #Comma separated if there is more than one.
Protocol_Description: Domain Name Service        #Protocol Abbreviation Spelled out

Entry_1:
  Name: Notes
  Description: Notes for DNS
  Note: |
    #These are the commands I run every time I see an open DNS port

    dnsrecon -r 127.0.0.0/24 -n {IP} -d {Domain_Name}
    dnsrecon -r 127.0.1.0/24 -n {IP} -d {Domain_Name}
    dnsrecon -r {Network}{CIDR} -n {IP} -d {Domain_Name}
    dig axfr @{IP}
    dig axfr {Domain_Name} @{IP}
    nslookup
        SERVER {IP}
        127.0.0.1
        {IP}
        Domain_Name
        exit

    https://book.hacktricks.xyz/pentesting/pentesting-dns

Entry_2:
  Name: Banner Grab
  Description: Grab DNS Banner
  Command: dig version.bind CHAOS TXT @DNS

Entry_3:
  Name: Nmap Vuln Scan
  Description: Scan for Vulnerabilities with Nmap
  Command: nmap -n --script "(default and *dns*) or fcrdns or dns-srv-enum or dns-random-txid or dns-random-srcport" {IP}

Entry_4:
  Name: Zone Transfer
  Description: Three attempts at forcing a zone transfer
  Command: dig axfr @{IP} && dix axfr @{IP} {Domain_Name} && fierce --dns-servers {IP} --domain {Domain_Name}


Entry_5:
  Name: Active Directory
  Description: Eunuerate a DC via DNS
  Command: dig -t _gc._{Domain_Name} && dig -t _ldap._{Domain_Name} && dig -t _kerberos._{Domain_Name} && dig -t _kpasswd._{Domain_Name} && nmap --script dns-srv-enum --script-args "dns-srv-enum.domain={Domain_Name}"
  
Entry_6:
  Name: consolesless mfs enumeration
  Description: DNS enumeration without the need to run msfconsole
  Note: sourced from https://github.com/carlospolop/legion
  Command: msfconsole -q -x 'use auxiliary/scanner/dns/dns_amp; set RHOSTS {IP}; set RPORT 53; run; exit' && msfconsole -q -x 'use auxiliary/gather/enum_dns; set RHOSTS {IP}; set RPORT 53; run; exit' 

A Conferência de Segurança DragonJAR é um evento internacional de cibersegurança com mais de uma década de existência que será realizada nos dias 7 e 8 de setembro de 2023 em Bogotá, Colômbia. É um evento com grande conteúdo técnico onde são apresentadas as últimas pesquisas em espanhol que atraem hackers e pesquisadores de todo o mundo.
Registre-se agora no seguinte link e não perca esta grande conferência!:

{% embed url="https://www.dragonjarcon.org/" %}

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥