# 53 - Pentesting DNS
Impara l'hacking AWS da zero a eroe con htARTE (Esperto Red Team AWS di HackTricks)! Altri modi per supportare HackTricks: * Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family) * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
**Configurazione immediatamente disponibile per valutazione delle vulnerabilità e penetration testing**. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla segnalazione. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per restituire loro del tempo per approfondire, aprire shell e divertirsi. {% embed url="https://pentest-tools.com/" %} ## **Informazioni di Base** Il **Domain Name System (DNS)** funge da directory di Internet, consentendo agli utenti di accedere ai siti web attraverso **nomi di dominio facili da ricordare** come google.com o facebook.com, invece degli indirizzi numerici del Protocollo Internet (IP). Traducendo i nomi di dominio in indirizzi IP, il DNS garantisce che i browser web possano caricare rapidamente le risorse Internet, semplificando il modo in cui navighiamo nel mondo online. **Porta predefinita:** 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) ``` ### Diversi Server DNS * **Server Radice DNS**: Questi si trovano in cima alla gerarchia DNS, gestendo i domini di primo livello e intervenendo solo se i server di livello inferiore non rispondono. La Internet Corporation for Assigned Names and Numbers (**ICANN**) sovraintende alla loro operatività, con un conteggio globale di 13. * **Server Autoritativi**: Questi server hanno l'ultima parola per le query nelle loro zone designate, offrendo risposte definitive. Se non riescono a fornire una risposta, la query viene inoltrata ai server radice. * **Server Non Autoritativi**: Senza proprietà sulle zone DNS, questi server raccolgono informazioni di dominio tramite query ad altri server. * **Server DNS di Cache**: Questo tipo di server memorizza le risposte alle query precedenti per un determinato periodo al fine di velocizzare i tempi di risposta per le richieste future, con la durata della cache dettata dal server autoritativo. * **Server di Inoltro**: Svolgendo un ruolo diretto, i server di inoltro inoltrano semplicemente le query a un altro server. * **Resolver**: Integrati all'interno di computer o router, i resolver eseguono la risoluzione dei nomi a livello locale e non sono considerati autoritativi. ## Enumerazione ### **Banner Grabbing** Non ci sono banner nei DNS ma puoi acquisire la query magica per `version.bind. CHAOS TXT` che funzionerà sulla maggior parte dei server BIND.\ Puoi eseguire questa query utilizzando `dig`: ```bash dig version.bind CHAOS TXT @DNS ``` Inoltre, lo strumento [`fpdns`](https://github.com/kirei/fpdns) può anche identificare le impronte del server. È anche possibile acquisire il banner anche con uno script di **nmap**: ``` --script dns-nsid ``` ### **Qualsiasi record** Il record **ANY** chiederà al server DNS di **restituire** tutte le **voci** disponibili che **è disposto a divulgare**. ```bash dig any victim.com @ ``` ### **Trasferimento di zona** Questa procedura è abbreviata come `Asynchronous Full Transfer Zone` (`AXFR`). ```bash dig axfr @ #Try zone transfer without domain dig axfr @ #Try zone transfer guessing the domain fierce --domain --dns-servers #Will try toperform a zone transfer against every authoritative name server and if this doesn'twork, will launch a dictionary attack ``` ### Ulteriori informazioni ```bash dig ANY @ #Any information dig A @ #Regular DNS request dig AAAA @ #IPv6 DNS request dig TXT @ #Information dig MX @ #Emails related dig NS @ #DNS that resolves that name dig -x 192.168.0.2 @ #Reverse lookup dig -x 2a00:1450:400c:c06::93 @ #reverse IPv6 lookup #Use [-p PORT] or -6 (to use ivp6 address of dns) ``` #### Automazione ```bash for sub in $(cat );do dig $sub. @ | grep -v ';\|SOA' | sed -r '/^\s*$/d' | grep $sub | tee -a subdomains.txt;done dnsenum --dnsserver --enum -p 0 -s 0 -o subdomains.txt -f ``` #### Utilizzo di nslookup ```bash nslookup > SERVER #Select dns server > 127.0.0.1 #Reverse lookup of 127.0.0.1, maybe... > #Reverse lookup of a machine, maybe... ``` ### Moduli utili di Metasploit ```bash auxiliary/gather/enum_dns #Perform enumeration actions ``` ### Script nmap utili ```bash #Perform enumeration actions nmap -n --script "(default and *dns*) or fcrdns or dns-srv-enum or dns-random-txid or dns-random-srcport" ``` ### DNS - Reverse BF ```bash dnsrecon -r 127.0.0.0/24 -n #DNS reverse of all of the addresses dnsrecon -r 127.0.1.0/24 -n #DNS reverse of all of the addresses dnsrecon -r /24 -n #DNS reverse of all of the addresses dnsrecon -d active.htb -a -n #Zone transfer ``` {% hint style="info" %} Se riesci a trovare sottodomini che risolvono a indirizzi IP interni, dovresti provare a eseguire un reverse dns BF ai NSs del dominio chiedendo quel intervallo di IP. {% endhint %} Un altro strumento per farlo: [https://github.com/amine7536/reverse-scan](https://github.com/amine7536/reverse-scan) Puoi interrogare intervalli IP inversi su [https://bgp.he.net/net/205.166.76.0/24#\_dns](https://bgp.he.net/net/205.166.76.0/24#\_dns) (questo strumento è anche utile con BGP). ### DNS - Subdomains BF ```bash dnsenum --dnsserver --enum -p 0 -s 0 -o subdomains.txt -f subdomains-1000.txt dnsrecon -D subdomains-1000.txt -d -n dnscan -d -r -w subdomains-1000.txt #Bruteforce subdomains in recursive way, https://github.com/rbsec/dnscan ``` ### Server Active Directory ```bash 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 nslookup -type=srv _kerberos._tcp. nslookup -type=srv _kerberos._tcp.domain.com nmap --script dns-srv-enum --script-args "dns-srv-enum.domain='domain.com'" ``` ### DNSSec ```bash #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 Forzare la ricerca utilizzando richieste "AAAA" per raccogliere gli indirizzi IPv6 dei sottodomini. ```bash dnsdict6 -s -t ``` ## Bruteforce reverse DNS in using IPv6 addresses ### Introduction In IPv6, reverse DNS lookup is done using the `ip6.arpa` domain. To bruteforce reverse DNS in IPv6 addresses, you can use tools like `dnsrecon` or `dnsenum`. ### Steps to bruteforce reverse DNS in IPv6 addresses 1. **Generate IPv6 addresses**: Use a tool like `ipv6gen` to generate a list of IPv6 addresses to bruteforce. 2. **Perform reverse DNS lookup**: Use `dnsrecon` or `dnsenum` to perform reverse DNS lookup on the generated IPv6 addresses. 3. **Analyzing results**: Analyze the results to identify any misconfigurations or potential security issues in the reverse DNS records. ### Conclusion Bruteforcing reverse DNS in IPv6 addresses can help identify misconfigurations or security vulnerabilities in the DNS setup. It is important to perform this test regularly to ensure the security of your network. ```bash dnsrevenum6 pri.authdns.ripe.net 2001:67c:2e8::/48 #Will use the dns pri.authdns.ripe.net ``` ### Attacco DDoS alla Ricorsione DNS Se la **ricorsione DNS è abilitata**, un attaccante potrebbe **spoofare** l'**origine** del pacchetto UDP per far sì che il **DNS invii la risposta al server vittima**. Un attaccante potrebbe sfruttare i tipi di record **ANY** o **DNSSEC** poiché solitamente generano risposte più grandi.\ Il modo per **verificare** se un DNS supporta la **ricorsione** è interrogare un nome di dominio e **controllare** se il **flag "ra"** (_ricorsione disponibile_) è presente nella risposta: ```bash dig google.com A @ ``` **Non disponibile**: ![](<../.gitbook/assets/image (275).png>) **Disponibile**: ![](<../.gitbook/assets/image (276).png>)
**Configurazione immediatamente disponibile per valutazione delle vulnerabilità e test di penetrazione**. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla generazione di report. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per permettere loro di dedicarsi a scavare più a fondo, aprire shell e divertirsi. {% embed url="https://pentest-tools.com/" %} ### Email a un account inesistente Attraverso l'esame di una notifica di mancata consegna (NDN) scatenata da un'email inviata a un indirizzo non valido all'interno di un dominio target, spesso vengono rivelati dettagli preziosi sulla rete interna. Il rapporto di mancata consegna fornito include informazioni come: * Il server generatore è stato identificato come `server.example.com`. * È stata restituita una notifica di errore per `user@example.com` con il codice di errore `#550 5.1.1 RESOLVER.ADR.RecipNotFound; non trovato`. * Gli indirizzi IP interni e i nomi host sono stati rivelati negli header del messaggio originale. ```markdown The original message headers were modified for anonymity and now present randomized data: Generating server: server.example.com user@example.com #550 5.1.1 RESOLVER.ADR.RecipNotFound; not found ## Original message headers: Received: from MAILSERVER01.domain.example.com (192.168.1.1) by mailserver02.domain.example.com (192.168.2.2) with Microsoft SMTP Server (TLS) id 14.3.174.1; Mon, 25 May 2015 14:52:22 -0700 Received: from filter.example.com (203.0.113.1) by MAILSERVER01.domain.example.com (192.168.1.1) with Microsoft SMTP Server (TLS) id 14.3.174.1; Mon, 25 May 2015 14:51:22 -0700 X-ASG-Debug-ID: 1432576343-0614671716190e0d0001-zOQ9WJ Received: from gateway.domainhost.com (gateway.domainhost.com [198.51.100.37]) by filter.example.com with ESMTP id xVNPkwaqGgdyH5Ag for user@example.com; Mon, 25 May 2015 14:52:13 -0700 (PDT) X-Envelope-From: sender@anotherdomain.org X-Apparent-Source-IP: 198.51.100.37 ``` ## File di configurazione ``` 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/* ``` ### Impostazioni pericolose durante la configurazione di un server Bind: | **Opzione** | **Descrizione** | | ----------------- | ------------------------------------------------------------------------------ | | `allow-query` | Definisce quali host sono autorizzati a inviare richieste al server DNS. | | `allow-recursion` | Definisce quali host sono autorizzati a inviare richieste ricorsive al server DNS. | | `allow-transfer` | Definisce quali host sono autorizzati a ricevere trasferimenti di zona dal server DNS. | | `zone-statistics` | Raccoglie dati statistici delle zone. | ## Riferimenti * [https://www.myrasecurity.com/en/knowledge-hub/dns/](https://www.myrasecurity.com/en/knowledge-hub/dns/) * Libro: **Network Security Assessment 3rd edition** ## Comandi Automatici di 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' ```
**Configurazione immediatamente disponibile per valutazione delle vulnerabilità e test di penetrazione**. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla generazione di report. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per permettere loro di approfondire, ottenere shell e divertirsi. {% embed url="https://pentest-tools.com/" %}
Impara l'hacking di AWS da zero a eroe con htARTE (Esperto Red Team AWS di HackTricks)! Altri modi per supportare HackTricks: * Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione esclusiva di [**NFT**](https://opensea.io/collection/the-peass-family) * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di github.