53 - Pentesting DNS

Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Natychmiastowe dostępne środowisko do oceny podatności i testowania penetracyjnego. Uruchom pełne testowanie penetracyjne z dowolnego miejsca za pomocą 20+ narzędzi i funkcji, które obejmują od rozpoznania po raportowanie. Nie zastępujemy testerów penetracyjnych - rozwijamy niestandardowe narzędzia, moduły wykrywania i eksploatacji, aby umożliwić im zagłębienie się głębiej, otwieranie powłok i dobrą zabawę.

Podstawowe informacje

System nazw domenowych (DNS) pełni rolę katalogu internetu, umożliwiając użytkownikom dostęp do witryn za pomocą łatwych do zapamiętania nazw domenowych takich jak google.com lub facebook.com, zamiast numerycznych adresów protokołu internetowego (IP). Poprzez tłumaczenie nazw domenowych na adresy IP, DNS zapewnia, że przeglądarki internetowe mogą szybko ładować zasoby internetowe, upraszczając sposób, w jaki poruszamy się po świecie online.

Domyślny port: 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)

Różne serwery DNS

  • Serwery korzeniowe DNS: Są one na szczycie hierarchii DNS, zarządzając domenami najwyższego poziomu i interweniując tylko wtedy, gdy serwery niższego poziomu nie odpowiadają. Internet Corporation for Assigned Names and Numbers (ICANN) nadzoruje ich działanie, a globalna liczba wynosi 13.

  • Serwery autorytatywne: Te serwery mają ostateczne zdanie w kwestii zapytań w swoich wyznaczonych strefach, oferując jednoznaczne odpowiedzi. Jeśli nie są w stanie udzielić odpowiedzi, zapytanie jest eskalowane do serwerów korzeniowych.

  • Serwery nieautorytatywne: Nieposiadające własności nad strefami DNS, te serwery zbierają informacje o domenie poprzez zapytania do innych serwerów.

  • Serwer DNS buforujący: Ten rodzaj serwera zapamiętuje poprzednie odpowiedzi na zapytania przez określony czas, aby przyspieszyć czasy odpowiedzi na przyszłe żądania, przy czym czas buforowania jest dyktowany przez serwer autorytatywny.

  • Serwer przekierowujący: Pełniąc prostą rolę, serwery przekierowujące po prostu przekazują zapytania do innego serwera.

  • Resolver: Zintegrowany w komputerach lub routerach, resolwery wykonują lokalne rozwiązywanie nazw i nie są uważane za autorytatywne.

Wyliczanie

Pobieranie banera

W DNS nie ma banerów, ale możesz pobrać magiczne zapytanie dla version.bind. CHAOS TXT, które zadziała na większości serwerów nazw BIND. Możesz wykonać to zapytanie za pomocą dig:

dig version.bind CHAOS TXT @DNS

Ponadto narzędzie fpdns może również zidentyfikować serwer.

Możliwe jest również pobranie banera za pomocą skryptu nmap:

--script dns-nsid

Dowolny rekord

Rekord ANY spowoduje, że serwer DNS zwróci wszystkie dostępne wpisy, które jest skłonny ujawnić.

dig any victim.com @<DNS_IP>

Transfer Strefy

Ten proceder jest skrótem Asynchronous Full Transfer Zone (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

Więcej informacji

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)

Automatyzacja

for sub in $(cat <WORDLIST>);do dig $sub.<DOMAIN> @<DNS_IP> | grep -v ';\|SOA' | sed -r '/^\s*$/d' | grep $sub | tee -a subdomains.txt;done

dnsenum --dnsserver <DNS_IP> --enum -p 0 -s 0 -o subdomains.txt -f <WORDLIST> <DOMAIN>

Korzystanie z 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...

Przydatne moduły Metasploit

auxiliary/gather/enum_dns #Perform enumeration actions

Przydatne skrypty 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 - Odwrócony atak siłowy

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

Jeśli jesteś w stanie znaleźć subdomeny rozwiązujące się na adresy IP wewnętrzne, powinieneś spróbować przeprowadzić odwrócony atak siłowy DNS na serwery nazw domeny, pytając o ten zakres IP.

Inne narzędzie do tego celu: https://github.com/amine7536/reverse-scan

Możesz zapytać o odwrotne zakresy IP na https://bgp.he.net/net/205.166.76.0/24#_dns (to narzędzie jest również pomocne przy BGP).

DNS - Atak siłowy na subdomeny

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

Serwery 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

nslookup -type=srv _kerberos._tcp.<CLIENT_DOMAIN>
nslookup -type=srv _kerberos._tcp.domain.com

nmap --script dns-srv-enum --script-args "dns-srv-enum.domain='domain.com'"

DNSSec

#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

Atak brutalny za pomocą żądań "AAAA" w celu zbierania adresów IPv6 subdomen.

dnsdict6 -s -t <domain>

Przemierzaj odwrotnie DNS w użyciu adresów IPv6

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

Atak DDoS na Rekursję DNS

Jeśli rekursja DNS jest włączona, atakujący może podrobić pochodzenie w pakiecie UDP, aby sprawić, że DNS wyśle odpowiedź do serwera ofiary. Atakujący może wykorzystać rekordy ANY lub DNSSEC, ponieważ generują one większe odpowiedzi. Sposób sprawdzenia, czy DNS obsługuje rekursję, polega na zapytaniu o nazwę domeny i sprawdzeniu, czy flaga "ra" (rekursja dostępna) znajduje się w odpowiedzi:

dig google.com A @<IP>

Niedostępne:

Dostępne:

Natychmiastowe skonfigurowanie do oceny podatności i testów penetracyjnych. Uruchom pełne testy penetracyjne z dowolnego miejsca za pomocą ponad 20 narzędzi i funkcji, które obejmują działania od rozpoznania po raportowanie. Nie zastępujemy testerów penetracyjnych - rozwijamy niestandardowe narzędzia, moduły wykrywania i eksploatacji, aby umożliwić im zagłębienie się głębiej, zdobycie dostępu do systemu i dobrą zabawę.

Mail do nieistniejącego konta

Poprzez analizę powiadomienia o niemożliwości dostarczenia (NDN) wywołanego przez e-mail wysłany na nieprawidłowy adres w domenie docelowej, często ujawniane są cenne szczegóły dotyczące wewnętrznej sieci.

Przekazane raporty o niemożliwości dostarczenia zawierają informacje takie jak:

  • Generujący serwer został zidentyfikowany jako server.example.com.

  • Otrzymano powiadomienie o błędzie dla user@example.com z kodem błędu #550 5.1.1 RESOLVER.ADR.RecipNotFound; not found.

  • W oryginalnych nagłówkach wiadomości ujawnione zostały wewnętrzne adresy IP i nazwy hostów.

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

Pliki konfiguracyjne

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/*

Niebezpieczne ustawienia podczas konfigurowania serwera Bind:

Opcja

Opis

allow-query

Określa, które hosty mają zezwolenie na wysyłanie żądań do serwera DNS.

allow-recursion

Określa, które hosty mają zezwolenie na wysyłanie rekurencyjnych żądań do serwera DNS.

allow-transfer

Określa, które hosty mają zezwolenie na odbieranie transferów stref z serwera DNS.

zone-statistics

Gromadzi dane statystyczne stref.

Referencje

HackTricks Automatyczne Komendy

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'

Natychmiastowe dostępne ustawienie do oceny podatności i testów penetracyjnych. Uruchom pełny test penetracyjny z dowolnego miejsca za pomocą ponad 20 narzędzi i funkcji, które obejmują działania od rozpoznania po raportowanie. Nie zastępujemy pentesterów - tworzymy niestandardowe narzędzia, moduły wykrywania i eksploatacji, aby umożliwić im zagłębienie się głębiej, zdobycie powłok i dobrą zabawę.

Dowiedz się, jak hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Last updated