
PolarDNS é um servidor DNS autoritativo especializado adequado para testes de penetração e pesquisa de vulnerabilidades.
O PolarDNS é um servidor DNS autoritativo especializado escrito em Python 3.x, originalmente desenvolvido como uma ferramenta para testes de segurança de resolvedores recursivos DNS do lado do servidor.
_
O PolarDNS pode ser usado para testar:
Ele suporta os protocolos UDP e TCP, e dá ao operador controle total sobre a camada do protocolo DNS.
O servidor PolarDNS pode produzir uma variedade de respostas DNS não padronizadas e não conformes, respostas DNS que violam as especificações RFC, incluindo respostas DNS altamente anormais e malformadas.
Isso pode ser útil para:
Existem três métodos disponíveis para instalar o PolarDNS.
O PolarDNS requer Python 3.11 ou mais recente e não possui dependências adicionais.
Esta é a maneira mais fácil de instalar e executar o PolarDNS:
pip install polardns
polardns
Você também pode clonar o repositório e executar o PolarDNS diretamente:
git clone https://github.com/oryxlabs/PolarDNS.git
cd PolarDNS
python polardns.py
Este método é recomendado se você planeja depurar ou modificar o código, ou adicionar novos recursos.
Você também pode executar o PolarDNS em um contêiner Docker:
docker run -p 53:53/tcp -p 53:53/udp oryxlabs/polardns
O servidor PolarDNS é configurável através do arquivo de configuração polardns/polardns.toml.
Ao iniciar o PolarDNS, você deve ver uma saída semelhante à seguinte:
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
Isso indica que o servidor está em execução.
Por padrão, o servidor começa a escutar em todas as interfaces nas portas UDP e TCP 53 (0.0.0.0:53), pronto para responder a consultas DNS.
Você pode testá-lo localmente fazendo a seguinte consulta de exemplo, que deve sempre resolver para algo.
Consulte no modo UDP:
dig always.yourdomain.com @127.0.0.1
Consulte no modo TCP:
dig always.yourdomain.com @127.0.0.1 +tcp
Você deve receber um registro A com o endereço IP 2.3.4.5, como nesta captura de tela:
Isso indica que o servidor está funcionando corretamente.
Ao pedir ao servidor PolarDNS para resolver algo, você está essencialmente dando instruções sobre como ele deve responder a você. Isso significa que você (o cliente) dita ao servidor PolarDNS que tipo de resposta ele deve produzir para você.
Por exemplo, considere a seguinte consulta:
dig always.ttl2000000000.slp1500.yourdomain.com @127.0.0.1
Você deve receber novamente um registro A com o endereço IP 2.3.4.5, mas desta vez com um valor TTL de 2.000.000.000 (63,4 anos) e após um atraso de 1,5 segundos:
No exemplo acima, usamos o recurso básico always (que sempre resolve para algo) e o combinamos com o modificador ttl para ajustar o valor TTL e o modificador slp para esperar antes de enviar a resposta.
O PolarDNS possui as seguintes funcionalidades principais:
Existem atualmente mais de 70 recursos diferentes e 19 modificadores de resposta implementados. Usando diferentes recursos e combinando-os com diferentes modificadores de resposta, é possível produzir inúmeras variantes de uma determinada resposta.
Consulte o catálogo incluído de todos os recursos e modificadores de resposta implementados.
Isso dá ao PolarDNS a capacidade de produzir respostas DNS altamente incomuns, anormais e até mesmo malformadas, permitindo que o operador veja como o lado receptor lida com tais situações e se o lado receptor é tecnicamente robusto e maduro.
Alguns exemplos de respostas DNS que o PolarDNS pode produzir incluem:
Estes podem levar à descoberta de várias vulnerabilidades, como:
Veja as apresentações do BlackHat MEA 2023 (incluindo slides BÔNUS) para mais detalhes, muitos mais exemplos e casos de uso.
Aqui está uma visão geral de alto nível do que você precisa para começar a testar servidores DNS recursivos.
example123.com, usando seu registrador de domínio favorito.polardns/polardns.toml em cada instância e altere seu nome de domínio e endereços IP do servidor de nomes de acordo - mesma configuração em ambos.Agora sua infraestrutura deve estar pronta para testar qualquer resolvedor DNS recursivo de sua escolha.
Para começar a testar um resolvedor DNS recursivo alvo, você deve direcionar suas consultas para o resolvedor DNS alvo, por exemplo: