
PolarDNS es un servidor DNS autoritativo especializado adecuado para pruebas de penetración e investigación de vulnerabilidades.
PolarDNS es un servidor DNS autoritativo especializado escrito en Python 3.x, desarrollado originalmente como una herramienta para pruebas de seguridad de resolutores recursivos DNS desde el lado del servidor.
_
PolarDNS se puede utilizar para probar:
Soporta tanto protocolos UDP como TCP, y otorga al operador control total sobre la capa del protocolo DNS.
El servidor PolarDNS puede producir una variedad de respuestas DNS no estándar y no conformes, respuestas DNS que violan las especificaciones RFC, incluyendo respuestas DNS altamente anormales y malformadas.
Esto puede ser útil para:
Existen tres métodos disponibles para instalar PolarDNS.
PolarDNS requiere Python 3.11 o superior y no tiene dependencias adicionales.
Esta es la forma más sencilla de instalar y ejecutar PolarDNS:
pip install polardns
polardns
También puedes clonar el repositorio y ejecutar PolarDNS directamente:
git clone https://github.com/oryxlabs/PolarDNS.git
cd PolarDNS
python polardns.py
Este método se recomienda si planeas depurar o modificar el código, o añadir nuevas funciones.
También puedes ejecutar PolarDNS en un contenedor Docker:
docker run -p 53:53/tcp -p 53:53/udp oryxlabs/polardns
El servidor PolarDNS se configura mediante el archivo de configuración polardns/polardns.toml.
Al iniciar PolarDNS, deberías ver una salida similar a la siguiente:
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
Esto indica que el servidor está en funcionamiento.
Por defecto, el servidor comienza a escuchar en todas las interfaces en el puerto UDP y TCP 53 (0.0.0.0:53), listo para responder consultas DNS.
Puedes probarlo localmente preguntando la siguiente consulta de muestra, que siempre debería resolverse a algo.
Pregunta en modo UDP:
dig always.yourdomain.com @127.0.0.1
Pregunta en modo TCP:
dig always.yourdomain.com @127.0.0.1 +tcp
Deberías recibir un registro A con la dirección IP 2.3.4.5, similar a esta captura de pantalla:
Esto indica que el servidor funciona correctamente.
Al preguntar al servidor PolarDNS que resuelva algo, esencialmente le estás dando instrucciones sobre cómo debe responderte. Esto significa que tú (el cliente) dictas al servidor PolarDNS qué tipo de respuesta debe producir para ti.
Por ejemplo, considera la siguiente consulta:
dig always.ttl2000000000.slp1500.yourdomain.com @127.0.0.1
Deberías recibir nuevamente un registro A con la dirección IP 2.3.4.5, pero esta vez con un valor TTL de 2,000,000,000 (63.4 años) y después de un retardo de 1.5 segundos:
En el ejemplo anterior, hemos utilizado la función básica always (que siempre resuelve a algo) y la hemos combinado con el modificador ttl para ajustar el valor TTL y el modificador slp para esperar antes de enviar la respuesta.
PolarDNS tiene las siguientes funcionalidades principales:
Actualmente hay más de 70 características diferentes y 19 modificadores de respuesta implementados. Al usar diferentes características y combinarlas con diferentes modificadores de respuesta, es posible producir innumerables variantes de una respuesta dada.
Consulta el catálogo incluido de todas las características y modificadores de respuesta implementados.
Esto le da a PolarDNS la capacidad de producir respuestas DNS altamente inusuales, anormales e incluso malformadas, permitiendo al operador ver cómo el lado receptor maneja tales situaciones y si el lado receptor es técnicamente robusto y maduro.
Algunos ejemplos de respuestas DNS que PolarDNS puede producir incluyen:
Estos pueden llevar al descubrimiento de diversas vulnerabilidades como:
Consulta las presentaciones de BlackHat MEA 2023 (incluyendo diapositivas BONUS) para más detalles, muchos más ejemplos y casos de uso.
Aquí hay una visión general de alto nivel de lo que necesitas para comenzar a probar servidores DNS recursivos.
example123.com, usando tu registrador de dominios favorito.polardns/polardns.toml en cada instancia y cambia tu nombre de dominio y direcciones IP de los servidores de nombres en consecuencia; misma configuración en ambas.Ahora tu infraestructura debería estar lista para probar cualquier resolutor DNS recursivo de tu elección.