
Um serviço DNS útil escrito em Go para auxiliar na detecção de vários tipos de vulnerabilidades cegas. Ele monitora o servidor de um pentester em busca de interações DNS fora de banda e envia notificações de consulta via Slack.
Um serviço DNS prático escrito em Go para auxiliar na detecção de vários tipos de vulnerabilidades cegas. Ele monitora o servidor de um pentester para interações DNS fora da banda e envia notificações com os detalhes da requisição recebida via Slack. O DNSObserver pode ajudar você a encontrar bugs como injeção cega de comandos no SO, SQLi cego, XXE cego e muito mais!

Para uma visão geral mais detalhada e instruções de configuração, veja:
https://www.allysonomalley.com/2020/05/22/dnsobserver/
O que você vai precisar:
Se você ainda não tem um VPS pronto para uso, crie um novo VPS Linux com seu provedor preferido. Anote seu endereço IP público.
Registre um novo nome de domínio com seu registrador preferido - qualquer registrador deve funcionar, desde que permita configurar servidores de nomes personalizados e registros glue.
Acesse as configurações de DNS do seu novo domínio e encontre a seção 'registro glue'. Adicione duas entradas aqui, uma para cada novo servidor de nomes, e forneça ambas com o endereço IP público do seu VPS.
Em seguida, altere os servidores de nomes padrão para:
ns1.<YOUR-DOMAIN>
ns2.<YOUR-DOMAIN>
Conecte-se via SSH ao seu VPS e execute estas etapas:
Instale o Go se ainda não o tiver. As instruções de instalação podem ser encontradas aqui
Certifique-se de que as portas DNS padrão estejam abertas - 53/UDP e 53/TCP. Execute:
sudo ufw allow 53/udp
sudo ufw allow 53/tcp
Obtenha o DNSObserver e suas dependências:
go get github.com/allyomalley/dnsobserver/...
Há dois argumentos obrigatórios e dois argumentos opcionais:
domain [OBRIGATÓRIO]
O nome do seu novo domínio.
ip [OBRIGATÓRIO]
O endereço IP público do seu VPS.
webhook [Opcional]
Se você deseja receber notificações, forneça a URL do webhook do Slack. Você será notificado de qualquer consulta ao seu nome de domínio ou a qualquer subdomínio do seu domínio (excluí notificações para consultas de outros domínios de ápice e para seus servidores de nomes personalizados para evitar notificações excessivas ou aleatórias). Se você não fornecer um webhook, as interações serão registradas na saída padrão. As instruções de configuração do webhook podem ser encontradas aqui.
recordsFile [Opcional]
Por padrão, o DNSObserver responderá apenas com uma resposta a consultas para seu nome de domínio ou para qualquer um de seus servidores de nomes. Para qualquer outro host, ele ainda notificará você sobre a interação (desde que seja seu domínio ou um subdomínio), mas enviará uma resposta vazia. Se você quiser que o DNSObserver responda a consultas A para determinados hosts com um endereço, você pode editar o arquivo config.yml incluído neste projeto ou criar o seu próprio baseado neste modelo:
a_records:
- hostname: ""
ip: ""
- hostname: ""
ip: ""
Atualmente, a ferramenta usa apenas registros A - no futuro posso adicionar CNAME, AAAA, etc). Aqui está um exemplo de um arquivo de registros personalizados completo:
a_records:
- hostname: "google.com"
ip: "1.2.3.4"
- hostname: "github.com"
ip: "5.6.7.8"
Essas configurações significam que desejo responder a consultas para 'google.com' com '1.2.3.4' e consultas para 'github.com' com '5.6.7.8'.
Agora estamos prontos para começar a ouvir! Se você quiser poder fazer outros trabalhos no seu VPS enquanto o DNSObserver é executado, inicie uma nova sessão tmux primeiro.
Para a configuração padrão, passe os argumentos obrigatórios e seu webhook:
dnsobserver --domain example.com --ip 11.22.33.44 --webhook https://hooks.slack.com/services/XXX/XXX/XXX
Para fazer o acima, mas também incluir algumas respostas de consulta A personalizadas, adicione o argumento para seu arquivo de registros:
dnsobserver --domain example.com --ip 11.22.33.44 --webhook https://hooks.slack.com/services/XXX/XXX/XXX --recordsFile my_records.yml
Supondo que você configurou tudo corretamente, o DNSObserver agora deve estar em execução. Para confirmar se está funcionando, abra um terminal em seu desktop e faça uma consulta ao seu novo domínio ('example.com' nesta demonstração):
dig example.com
Você deve agora receber uma notificação do Slack com os detalhes da requisição!