
PolarDNS è un server DNS autorevole specializzato, adatto per test di penetrazione e ricerca di vulnerabilità.
PolarDNS è un server DNS autoritativo specializzato scritto in Python 3.x, originariamente sviluppato come strumento per il test di sicurezza dei resolver DNS ricorsivi lato server.
_
PolarDNS può essere utilizzato per testare:
Supporta sia i protocolli UDP che TCP e offre all'operatore il pieno controllo sul livello del protocollo DNS.
Il server PolarDNS può produrre una varietà di risposte DNS non standard e non conformi, risposte DNS che violano le specifiche RFC, incluse risposte DNS altamente anomale e malformate.
Ciò può essere utile per:
Sono disponibili tre metodi per installare PolarDNS.
PolarDNS richiede Python 3.11 o successivo e non ha dipendenze aggiuntive.
Questo è il modo più semplice per installare ed eseguire PolarDNS:
pip install polardns
polardns
Puoi anche clonare il repository ed eseguire PolarDNS direttamente:
git clone https://github.com/oryxlabs/PolarDNS.git
cd PolarDNS
python polardns.py
Questo metodo è consigliato se prevedi di eseguire il debug o modificare il codice, o aggiungere nuove funzionalità.
Puoi anche eseguire PolarDNS in un contenitore Docker:
docker run -p 53:53/tcp -p 53:53/udp oryxlabs/polardns
Il server PolarDNS è configurabile tramite il file di configurazione polardns/polardns.toml.
All'avvio di PolarDNS, dovresti vedere un output simile al seguente:
python polardns.py
1741599804.9039893 | PolarDNS v1.6.1 server starting up
1741599804.9039893 | Using '/path/to/your/polardns/polardns.toml' config file
1741599804.9039893 | Starting listener at tcp://0.0.0.0:53
1741599804.9039893 | Starting listener at udp://0.0.0.0:53
Questo indica che il server è attivo e funzionante.
Per impostazione predefinita, il server inizia ad ascoltare su tutte le interfacce sulla porta UDP e TCP 53 (0.0.0.0:53), pronto a rispondere alle query DNS.
Puoi testarlo localmente chiedendo la seguente query di esempio, che dovrebbe sempre risolvere a qualcosa.
Chiedi in modalità UDP:
dig always.yourdomain.com @127.0.0.1
Chiedi in modalità TCP:
dig always.yourdomain.com @127.0.0.1 +tcp
Dovresti ricevere un record A con l'indirizzo IP 2.3.4.5, come in questo screenshot:
Questo indica che il server funziona correttamente.
Chiedendo al server PolarDNS di risolvere qualcosa, gli stai essenzialmente dando istruzioni su come dovrebbe risponderti. Ciò significa che tu (il client) detti al server PolarDNS che tipo di risposta dovrebbe produrre per te.
Ad esempio, considera la seguente query:
dig always.ttl2000000000.slp1500.yourdomain.com @127.0.0.1
Dovresti ricevere nuovamente un record A con l'indirizzo IP 2.3.4.5, ma questa volta con un valore TTL di 2.000.000.000 (63,4 anni) e dopo un ritardo di 1,5 secondi:
Nell'esempio sopra, abbiamo usato la funzionalità di base always (che risolve sempre a qualcosa), combinandola con il modificatore ttl per regolare il valore TTL e il modificatore slp per attendere prima di inviare la risposta.
PolarDNS ha le seguenti funzionalità principali:
Sono attualmente implementate oltre 70 caratteristiche diverse e 19 modificatori di risposta. Utilizzando diverse caratteristiche e combinandole con diversi modificatori di risposta, è possibile produrre innumerevoli varianti di una data risposta.
Vedi il catalogo incluso di tutte le caratteristiche e modificatori di risposta implementati.
Questo conferisce a PolarDNS la capacità di produrre risposte DNS altamente insolite, anomale e persino malformate, consentendo all'operatore di vedere come la parte ricevente gestisce tali situazioni e se è tecnicamente robusta e matura.
Alcuni esempi di risposte DNS che PolarDNS può produrre includono:
Questi possono portare alla scoperta di varie vulnerabilità come:
Vedi le presentazioni BlackHat MEA 2023 (inclusi i BONUS slides) per maggiori dettagli, molti più esempi e casi d'uso.
Ecco una panoramica di alto livello di ciò di cui hai bisogno per iniziare a testare i server DNS ricorsivi.
example123.com, utilizzando il tuo registrar di domini preferito.polardns/polardns.toml su ciascuna istanza e cambia il tuo nome di dominio e gli indirizzi IP dei nameserver di conseguenza: stessa configurazione su entrambi.Ora la tua infrastruttura dovrebbe essere pronta per testare qualsiasi resolver DNS ricorsivo di tua scelta.
Per iniziare a testare un resolver DNS ricorsivo di destinazione, devi indirizzare le tue query al resolver DNS di destinazione, ad esempio:
dig always.example123.com @<TARGET-RESOLVER-IP>
Ad esempio, per testare il DNS pubblico di CloudFlare:
dig always.example123.com @1.1.1.1