# 53 - Pentesting DNS
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
* Travaillez-vous dans une entreprise de **cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
[**DragonJAR Security Conference est un événement international de cybersécurité**](https://www.dragonjarcon.org/) avec plus d'une décennie qui se tiendra les 7 et 8 septembre 2023 à Bogotá, en Colombie. C'est un événement de contenu technique de haut niveau où les dernières recherches en espagnol sont présentées, attirant des hackers et des chercheurs du monde entier.\
Inscrivez-vous dès maintenant sur le lien suivant et ne manquez pas cette grande conférence !:
{% embed url="https://www.dragonjarcon.org/" %}
## **Informations de base**
Le système de noms de domaine (DNS) est l'annuaire téléphonique d'Internet. Les humains accèdent aux informations en ligne via des noms de domaine, comme nytimes.com ou espn.com. Les navigateurs Web interagissent via des adresses de protocole Internet (IP). DNS traduit les noms de domaine en [adresses IP](https://www.cloudflare.com/learning/dns/glossary/what-is-my-ip-address/) afin que les navigateurs puissent charger les ressources Internet.\
À partir de [ici](https://www.cloudflare.com/learning/dns/what-is-dns/).
**Port par défaut :** 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)
```
### Différents serveurs DNS
Information de [https://academy.hackthebox.com/module/112/section/1069](https://academy.hackthebox.com/module/112/section/1069)
| **Type de serveur** | **Description** |
| ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Serveur racine DNS` | Les serveurs racine du DNS sont responsables des domaines de premier niveau (`TLD`). En tant que dernière instance, ils ne sont demandés que si le serveur de noms ne répond pas. Ainsi, un serveur racine est une interface centrale entre les utilisateurs et le contenu sur Internet, car il relie le domaine et l'adresse IP. La [Corporation pour l'attribution des noms et des numéros sur Internet](https://www.icann.org/) (`ICANN`) coordonne le travail des serveurs de noms racine. Il y a `13` de ces serveurs racine dans le monde. |
| `Serveur de noms autoritaires` | Les serveurs de noms autoritaires ont l'autorité sur une zone particulière. Ils ne répondent qu'aux requêtes de leur zone de responsabilité, et leurs informations sont contraignantes. Si un serveur de noms autoritaire ne peut pas répondre à la requête d'un client, le serveur de noms racine prend le relais à ce moment-là. |
| `Serveur de noms non autoritaires` | Les serveurs de noms non autoritaires ne sont pas responsables d'une zone DNS particulière. Au lieu de cela, ils collectent eux-mêmes des informations sur des zones DNS spécifiques, ce qui est fait à l'aide d'une requête DNS récursive ou itérative. |
| `Serveur DNS de mise en cache` | Les serveurs DNS de mise en cache mettent en cache des informations provenant d'autres serveurs de noms pour une période spécifiée. Le serveur de noms autoritaire détermine la durée de ce stockage. |
| `Serveur de transfert` | Les serveurs de transfert ne remplissent qu'une seule fonction : ils transfèrent les requêtes DNS vers un autre serveur DNS. |
| `Résolveur` | Les résolveurs ne sont pas des serveurs DNS autoritaires mais effectuent une résolution de noms localement dans l'ordinateur ou le routeur. |
## Énumération
### **Banner Grabbing**
DNS n'a pas de "bannière" à saisir. L'équivalent le plus proche est une requête magique pour `version.bind. CHAOS TXT` qui fonctionnera sur la plupart des serveurs de noms BIND.\
Vous pouvez effectuer cette requête en utilisant `dig`:
```bash
dig version.bind CHAOS TXT @DNS
```
Si cela ne fonctionne pas, vous pouvez utiliser des techniques de reconnaissance d'empreintes pour déterminer la version du serveur distant -- l'outil [`fpdns`](https://github.com/kirei/fpdns) est une option pour cela, mais il en existe d'autres.
Vous pouvez également récupérer la bannière avec un script **nmap** :
```
--script dns-nsid
```
### **Tout enregistrement**
L'enregistrement **ANY** demandera au serveur DNS de **retourner** toutes les **entrées** disponibles qu'il est prêt à **divulguer**.
```bash
dig any victim.com @
```
### **Transfert de zone**
Cette procédure est abrégée `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
```
Sure, what additional information do you need?
```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)
```
#### Utilisation de 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...
```
### Modules utiles de Metasploit
```bash
auxiliary/gather/enum_dns #Perform enumeration actions
```
### Scripts nmap utiles
#### dns-brute
Le script `dns-brute` est utilisé pour effectuer une attaque de force brute sur les enregistrements DNS. Il peut être utilisé pour trouver des sous-domaines et des enregistrements DNS cachés.
#### dns-cache-snoop
Le script `dns-cache-snoop` est utilisé pour effectuer une attaque de type cache poisoning sur les serveurs DNS. Il peut être utilisé pour obtenir des informations sur les enregistrements DNS et les sous-domaines.
#### dns-zone-transfer
Le script `dns-zone-transfer` est utilisé pour effectuer une attaque de transfert de zone DNS. Il peut être utilisé pour obtenir une liste complète des enregistrements DNS pour un domaine donné.
#### dns-random-srcport
Le script `dns-random-srcport` est utilisé pour effectuer une attaque de type port source aléatoire sur les serveurs DNS. Il peut être utilisé pour contourner les pare-feu et les systèmes de détection d'intrusion.
#### dns-recursion
Le script `dns-recursion` est utilisé pour tester la récursivité des serveurs DNS. Il peut être utilisé pour déterminer si un serveur DNS est configuré pour répondre aux requêtes de récursivité.
#### dns-service-discovery
Le script `dns-service-discovery` est utilisé pour découvrir les services DNS sur un réseau. Il peut être utilisé pour identifier les serveurs DNS et les enregistrements DNS sur un réseau donné.
```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
### DNS - Force brute inversé
```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" %}
Si vous êtes capable de trouver des sous-domaines résolvant à des adresses IP internes, vous devriez essayer d'effectuer une recherche inversée DNS sur les serveurs de noms du domaine en demandant cette plage d'adresses IP.
{% endhint %}
Un autre outil pour le faire : [https://github.com/amine7536/reverse-scan](https://github.com/amine7536/reverse-scan)
Vous pouvez interroger les plages d'adresses IP inverses sur [https://bgp.he.net/net/205.166.76.0/24#\_dns](https://bgp.he.net/net/205.166.76.0/24#\_dns) (cet outil est également utile avec BGP).
### DNS - Recherche de sous-domaines 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
```
### Serveurs 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) est une extension de sécurité pour le protocole DNS qui permet de garantir l'authenticité et l'intégrité des données DNS. DNSSec utilise des signatures numériques pour vérifier l'origine des données DNS et s'assurer qu'elles n'ont pas été altérées en transit. Les attaquants peuvent exploiter les vulnérabilités de DNSSec pour effectuer des attaques de type "cache poisoning" ou "man-in-the-middle". Les testeurs de pénétration peuvent utiliser des outils tels que dnssec-tools pour évaluer la sécurité de l'implémentation DNSSec d'un système.
```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
Force brute en utilisant des requêtes "AAAA" pour collecter les adresses IPv6 des sous-domaines.
```bash
dnsdict6 -s -t
```
# Bruteforce reverse DNS en utilisant des adresses IPv6
Le bruteforce de reverse DNS est une technique courante utilisée pour découvrir des informations sur les adresses IP. Cette technique peut être utilisée pour découvrir des noms de domaine associés à des adresses IPv6.
## Étape 1: Générer une liste de noms de domaine
La première étape consiste à générer une liste de noms de domaine possibles. Vous pouvez utiliser des outils tels que `cewl` ou `crunch` pour générer une liste de mots-clés qui peuvent être utilisés pour générer des noms de domaine.
## Étape 2: Utiliser `nslookup` pour vérifier les noms de domaine
La deuxième étape consiste à utiliser `nslookup` pour vérifier si les noms de domaine générés sont valides. Vous pouvez utiliser la commande suivante pour vérifier un nom de domaine:
```
nslookup -type=PTR
```
Si le nom de domaine est valide, `nslookup` renverra le nom de domaine associé à l'adresse IPv6.
## Étape 3: Automatiser le processus
Le processus de bruteforce peut être automatisé en utilisant des scripts tels que `dnsrevenum6` ou `ipv6-toolkit`. Ces scripts peuvent être utilisés pour générer une liste de noms de domaine possibles et vérifier automatiquement si les noms de domaine sont valides en utilisant `nslookup`.
## Conclusion
Le bruteforce de reverse DNS peut être une technique efficace pour découvrir des informations sur les adresses IPv6. Cependant, il est important de noter que cette technique peut être considérée comme une attaque et peut être illégale sans autorisation préalable.
```bash
dnsrevenum6 pri.authdns.ripe.net 2001:67c:2e8::/48 #Will use the dns pri.authdns.ripe.net
```
### DNS Recursion DDoS
Si la **récursivité DNS est activée**, un attaquant pourrait **usurper** l'**origine** du paquet UDP afin de faire **envoyer la réponse DNS au serveur victime**. Un attaquant pourrait abuser des types d'enregistrements **ANY** ou **DNSSEC** car ils ont tendance à avoir des réponses plus importantes.\
La façon de **vérifier** si un DNS prend en charge la **récursivité** est de consulter un nom de domaine et de **vérifier** si le drapeau "ra" (_récursivité disponible_) est présent dans la réponse :
```bash
dig google.com A @
```
**Non disponible**:
![](<../.gitbook/assets/image (275).png>)
**Disponible**:
![](<../.gitbook/assets/image (276).png>)
[**DragonJAR Security Conference est un événement international de cybersécurité**](https://www.dragonjarcon.org/) qui a plus d'une décennie et qui se tiendra les 7 et 8 septembre 2023 à Bogotá, en Colombie. C'est un événement de contenu technique élevé où les dernières recherches en espagnol sont présentées, attirant des hackers et des chercheurs du monde entier.\
Inscrivez-vous dès maintenant sur le lien suivant et ne manquez pas cette grande conférence!:
{% embed url="https://www.dragonjarcon.org/" %}
### Envoi de courrier à une adresse inexistante
Extrait du livre: Network Security Assessment (3ème édition)
Le simple fait d'envoyer un message électronique à une adresse inexistante sur un domaine cible révèle souvent des informations utiles sur le réseau interne grâce à une notification de non-livraison (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 ; 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
```
Les données suivantes dans cette transcription sont utiles :
* Noms d'hôtes internes, adresses IP et disposition des sous-domaines
* Le serveur de messagerie utilise Microsoft Exchange Server 2010 SP3
* Un dispositif Barracuda Networks est utilisé pour effectuer la filtrage de contenu
## Fichiers de configuration
```
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/*
```
Paramètres dangereux lors de la configuration d'un serveur Bind:
| **Option** | **Description** |
| ----------------- | ------------------------------------------------------------------------------ |
| `allow-query` | Définit les hôtes autorisés à envoyer des requêtes au serveur DNS. |
| `allow-recursion` | Définit les hôtes autorisés à envoyer des requêtes récursives au serveur DNS. |
| `allow-transfer` | Définit les hôtes autorisés à recevoir des transferts de zone depuis le serveur DNS. |
| `zone-statistics` | Collecte des données statistiques sur les zones. |
## Commandes automatiques 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'
```
[**DragonJAR Security Conference est un événement international de cybersécurité**](https://www.dragonjarcon.org/) qui a plus d'une décennie et qui se tiendra les 7 et 8 septembre 2023 à Bogotá, en Colombie. C'est un événement de contenu technique important où les dernières recherches en espagnol sont présentées, attirant des hackers et des chercheurs du monde entier.\
Inscrivez-vous dès maintenant sur le lien suivant et ne manquez pas cette grande conférence !:
{% embed url="https://www.dragonjarcon.org/" %}
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
* **Travaillez-vous dans une entreprise de cybersécurité ?** Voulez-vous voir votre entreprise annoncée dans HackTricks ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) **groupe Discord** ou le [**groupe telegram**](https://t.me/peass) ou **suivez-moi** sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).