53 - DNS
Wichtige DNS-Records
DNS-Records sind Einträge, die Informationen über die Beziehung zwischen Domainnamen und IP-Adressen enthalten. Hier sind die wichtigsten:
A
Gibt die IPv4-Adresse der Domain zurück.
AAAA
Gibt die IPv6-Adresse der Domain zurück.
MX
Mail Exchange: Zeigt den zuständigen Mailserver für die Domain.
NS
Gibt die Nameserver der Domain zurück.
TXT
Enthält beliebige Textinformationen, z.B. SPF und DMARC für E-Mail-Sicherheit.
CNAME
Canonical Name: Alias für einen anderen Domainnamen.
PTR
Reverse Lookup: Konvertiert IP-Adressen in Domainnamen.
SOA
Start of Authority: Informationen über die DNS-Zone und den Administrator.
named.conf.local
, named.conf.options
, named.conf.log
(Bind9 Konfiguration)
named.conf.local
, named.conf.options
, named.conf.log
(Bind9 Konfiguration)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:$ cat /etc/bind/named.conf.local zone "domain.com" { type master; file "/etc/bind/db.domain.com"; allow-update { key rndc-key; }; };
named.conf.options
: Beinhaltet globale Optionen, die für alle Zonen gelten, z.B. DNS-Caching, Weiterleitungen.$ cat /etc/bind/named.conf.options options { directory "/var/cache/bind"; allow-query { any; }; # Ermöglicht Anfragen von allen Hosts recursion no; # Verhindert rekursive Anfragen };
named.conf.log
: Enthält Logging-Einstellungen für DNS-Anfragen, Fehler und Ereignisse.logging { channel default_log { file "/var/log/named/default.log" versions 3 size 5m; severity dynamic; print-time yes; }; category default { default_log; }; };
Gefährliche Einstellungen (Dangerous Settings)
Unsichere Einstellungen können ein DNS-Server angreifbar machen. Einige Beispiele für riskante Konfigurationen:
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:
zone "domain.com" {
type master;
file "/etc/bind/db.domain.com";
allow-transfer { any; }; # Riskant! Jeder kann die Zone übertragen.
};
Footprinting des Dienstes (Footprinting the Service)
1. dig
(DNS Query)
dig
(DNS Query)NS-Abfrage: Fragt die Nameserver einer Domain ab.
$ dig ns example.com ;; ANSWER SECTION: example.com. 172800 IN NS ns1.example.com.
ANY-Abfrage: Zeigt alle verfügbaren DNS-Records (sofern der Server es erlaubt).
$ dig any example.com
Version des DNS-Servers abfragen: Abfragen der DNS-Server-Version (CHAOS query):
$ dig CH TXT version.bind @dns.example.com
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
:
$ 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
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:
$ 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
Hier sehen wir:
Interne Servernamen wie
dc1
,vpn
,mail1
undws1
, 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
gobuster
Um Subdomains zu finden, kann gobuster
eine Wortliste gegen den DNS-Server verwenden:
Beispiel für Bruteforce von Subdomains mit
gobuster
:$ gobuster dns -d example.com -w /path/to/subdomains.txt -i
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
für umfassende DNS-Reconnaissancednsenum
ist ein Tool, das Zonentransfer, Subdomain-Bruteforcing und DNS-Abfragen kombiniert:
Beispiel:
$ dnsenum --dnsserver 8.8.8.8 --enum example.com
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:
$ gobuster dns -d example.com -w /path/to/subdomains.txt -i
Found: mail.example.com -> 192.168.1.1
Found: dev.example.com -> 192.168.1.2
Found: vpn.example.com -> 192.168.1.3
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:
$ dnsenum --dnsserver 8.8.8.8 --enum -f /path/to/subdomains.txt example.com
Host's addresses:
__________________
example.com. 172800 IN NS ns1.example.com.
Found: www.example.com -> 192.168.1.10
Found: mail.example.com -> 192.168.1.11
Found: dev.example.com -> 192.168.1.12
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
hosts
-DateiManchmal 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:
bashCopy code$ sudo nano /etc/hosts
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:
luaCopy code10.129.42.195 app.inlanefreight.local 10.129.42.195 dev.inlanefreight.local
Speichern und Schließen:
Linux/Unix/Mac: Speichere mit
CTRL + O
, bestätige mitEnter
, und schließe mitCTRL + X
.Windows: Speichere die Datei und schließe den Editor.
Überprüfen: Prüfe, ob die Änderungen funktionieren:
bashCopy code$ ping app.inlanefreight.local
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“.
Zusammenfassung der Tools und Techniken:
dig
DNS-Abfragen, Zonentransfer, Version abfragen
$ dig any example.com
dnsenum
Automatische DNS-Enumeration, Subdomains
$ dnsenum --enum example.com
gobuster
Subdomain-Bruteforcing
$ gobuster dns -d example.com -w subdomains.txt
nmap
Subdomain-Bruteforcing, Zonentransfer
$ nmap --script dns-brute example.com
host
Schnelle DNS-Abfragen
$ host -t ns example.com
/etc/hosts
DNS Eintrag lokal für Virtual hosts
$ nano /etc/hosts
Last updated