Bind9 ist der am häufigsten verwendete DNS-Server auf Linux-Systemen. Die Konfigurationsdateien sind in Abschnitte unterteilt, um den DNS-Dienst flexibel zu verwalten.
named.conf.local: Definiert die DNS-Zonen und erlaubt lokale Konfigurationen. Beispiel:
named.conf.options: Beinhaltet globale Optionen, die für alle Zonen gelten, z.B. DNS-Caching, Weiterleitungen.
$cat/etc/bind/named.conf.optionsoptions{directory"/var/cache/bind";allow-query{any; };# Ermöglicht Anfragen von allen Hostsrecursionno;# Verhindert rekursive Anfragen};
named.conf.log: Enthält Logging-Einstellungen für DNS-Anfragen, Fehler und Ereignisse.
Unsichere Einstellungen können ein DNS-Server angreifbar machen. Einige Beispiele für riskante Konfigurationen:
Option
Beschreibung
allow-query
Definiert, welche Hosts Anfragen an den DNS-Server senden dürfen.
allow-recursion
Ermöglicht rekursive Anfragen, die bei falscher Konfiguration missbraucht werden können.
allow-transfer
Erlaubt Zonentransfers (AXFR). Wenn dies nicht auf vertrauenswürdige Hosts eingeschränkt ist, können Angreifer die gesamte Zone abrufen.
Beispiel einer riskanten Konfiguration, die erlaubt, dass jeder Zonentransfers durchführen kann:
Footprinting des Dienstes (Footprinting the Service)
1. dig (DNS Query)
NS-Abfrage: Fragt die Nameserver einer Domain ab.
ANY-Abfrage: Zeigt alle verfügbaren DNS-Records (sofern der Server es erlaubt).
Version des DNS-Servers abfragen: Abfragen der DNS-Server-Version (CHAOS query):
2. Zonentransfer (AXFR)
Öffentliche Zonen: Diese enthalten Informationen, die für die allgemeine Nutzung und Erreichbarkeit im Internet bestimmt sind, wie die IP-Adressen für öffentliche Web- und Mailserver.
Interne Zonen: Diese enthalten Informationen über interne Systeme und Dienste, die nicht für das öffentliche Internet zugänglich sein sollen. Zum Beispiel könnte eine interne Zone Details über interne Datenbankserver, Active Directory-Server oder VPN-Endpunkte enthalten.
Externer Zonentransfer
Ein Zonentransfer einer öffentlichen Zone zeigt in der Regel weniger kritische Informationen, da diese öffentlich zugänglich sein müssen. Hier ein Beispiel für einen erfolgreichen Zonentransfer von inlanefreight.htb:
In diesem Fall sehen wir:
Den SOA-Record, der Informationen über die DNS-Zone enthält.
TXT-Records, die SPF-Einstellungen und andere Informationen zeigen.
NS- und A-Records, die Nameserver und IP-Adressen der öffentlichen Dienste anzeigen.
Interner Zonentransfer
Ein Zonentransfer für eine interne Zone offenbart oft viel mehr Informationen, die nicht für die Öffentlichkeit gedacht sind. Dies kann kritische interne Server und IP-Adressen anzeigen:
Hier sehen wir:
Interne Servernamen wie dc1, vpn, mail1 und ws1, die möglicherweise interne Dienste wie Active Directory, VPN oder Webserver betreiben.
Interne IP-Adressen, die in der Regel nicht öffentlich zugänglich sind.
Diese Art von Informationen ist für Angreifer besonders wertvoll, da sie eine Karte der internen Netzwerkinfrastruktur darstellen und Angriffsvektoren aufzeigen.
3. Subdomain-Bruteforcing mit gobuster
Um Subdomains zu finden, kann gobuster eine Wortliste gegen den DNS-Server verwenden:
Beispiel für Bruteforce von Subdomains mit gobuster:
Dieser Befehl versucht, Subdomains zu finden, indem er die subdomains.txt Liste durchläuft und die gefundenen Einträge anzeigt.
4. dnsenum für umfassende DNS-Reconnaissance
dnsenum ist ein Tool, das Zonentransfer, Subdomain-Bruteforcing und DNS-Abfragen kombiniert:
Beispiel:
Dieses Tool zeigt Nameserver, Mailserver und führt Subdomain-Bruteforcing durch.
5. Bruteforcing DNS Subdomaina
1. Subdomain-Bruteforcing mit Gobuster
Falls gobuster bereits installiert ist, kannst du direkt eine Subdomain-Suche starten.
Gobuster DNS-Bruteforcing
Verwende den folgenden Befehl, um eine Domain wie example.com auf Subdomains zu überprüfen:
Erklärung:
-d example.com: Die Domain, die du überprüfen möchtest.
-w /path/to/subdomains.txt: Pfad zur Subdomain-Wortliste, z.B. aus SecLists.
-i: Zeigt nur gültige Ergebnisse an, indem leere oder ungültige Antworten ignoriert werden.
2. DNS-Bruteforcing mit DNSenum
Falls dnsenum installiert ist, kannst du es verwenden, um ebenfalls Subdomains zu brute-forcen und weitere DNS-Informationen abzurufen.
DNSenum DNS-Bruteforcing
Der folgende Befehl führt eine DNS-Enumeration inklusive Brute-Forcing von Subdomains durch:
Erklärung:
--dnsserver 8.8.8.8: Der DNS-Server, an den die Anfragen gesendet werden (hier Google DNS).
--enum: Führe eine vollständige DNS-Enumeration durch.
-f /path/to/subdomains.txt: Pfad zur Wortliste, die Subdomains enthält.
example.com: Die Ziel-Domain.
Anpassung der hosts-Datei
Manchmal ist es notwendig, die hosts-Datei anzupassen, um lokale Domainnamen für CTFs aufzulösen. So kannst du dies tun:
Datei Öffnen:
Linux/Unix/Mac:
Windows: Öffne C:\Windows\System32\drivers\etc\hosts mit Administratorrechten.
Einträge Hinzufügen: Füge eine Zeile hinzu, um eine Domain auf eine IP-Adresse zu zeigen. Zum Beispiel:
Speichern und Schließen:
Linux/Unix/Mac: Speichere mit CTRL + O, bestätige mit Enter, und schließe mit CTRL + X.
Windows: Speichere die Datei und schließe den Editor.
Überprüfen: Prüfe, ob die Änderungen funktionieren:
So stellst du sicher, dass dein System die Domain korrekt auf die Ziel-IP verweist. Entferne die Einträge nach dem CTF, um die Datei zu „reseten“.
$ dig axfr inlanefreight.htb @10.129.14.128
;; global options: +cmd
inlanefreight.htb. 604800 IN SOA inlanefreight.htb. root.inlanefreight.htb. 2 604800 86400 2419200 604800
inlanefreight.htb. 604800 IN TXT "v=spf1 include:mailgun.org include:_spf.google.com ..."
inlanefreight.htb. 604800 IN NS ns.inlanefreight.htb.
internal.inlanefreight.htb. 604800 IN A 10.129.1.6
app.inlanefreight.htb. 604800 IN A 10.129.18.15
ns.inlanefreight.htb. 604800 IN A 10.129.34.136
;; Query time: 4 msec
;; SERVER: 10.129.14.128#53(10.129.14.128)
;; XFR size: 9 records
$ dig axfr internal.inlanefreight.htb @10.129.14.128
;; global options: +cmd
internal.inlanefreight.htb. 604800 IN SOA inlanefreight.htb. root.inlanefreight.htb. 2 604800 86400 2419200 604800
internal.inlanefreight.htb. 604800 IN TXT "MS=ms97310371"
internal.inlanefreight.htb. 604800 IN NS ns.inlanefreight.htb.
dc1.internal.inlanefreight.htb. 604800 IN A 10.129.34.16
vpn.internal.inlanefreight.htb. 604800 IN A 10.129.1.6
ws1.internal.inlanefreight.htb. 604800 IN A 10.129.1.34
mail1.internal.inlanefreight.htb. 604800 IN A 10.129.18.200
$ gobuster dns -d example.com -w /path/to/subdomains.txt -i