[!CAUTION]
Ce dépôt n'est plus maintenu, visitez https://github.com/sadreck/SnitchDNS pour la dernière version.
SnitchDNS
SnitchDNS est un serveur DNS piloté par base de données avec une interface Web, écrit en Python et Twisted, qui facilite l'administration DNS en appliquant instantanément toutes les modifications de configuration sans redémarrer aucun service système.
L'une de ses principales fonctionnalités est l'enregistrement de toutes les requêtes DNS, permettant la découverte des points de terminaison du trafic réseau. Il peut également être utilisé pour implémenter des jetons canari, car il prend en charge les notifications par e-mail, web push, Slack et Teams. Les red teamers peuvent également utiliser SnitchDNS pour surveiller les domaines de phishing destinés aux sandbox, s'intégrer aux solutions SIEM, restreindre les réponses à des plages IP spécifiques, exfiltrer des données via un tunnel DNS et des domaines fourre-tout, et plus encore.
Dépendances
Installation
Assurez-vous d'installer en utilisant git plutôt qu'en téléchargeant le dépôt manuellement.
Documentation
Pour la documentation générale, voir ici
Captures d'écran
Pour les captures d'écran, voir ici
Fonctionnalités de base
- Piloté par base de données.
- Les modifications sont répercutées immédiatement sur chaque requête DNS.
- SGBD supportés :
- SQLite
- MySQL / MariaDB
- Postgres
- Serveur DNS
- Prise en charge des enregistrements DNS courants.
A, AAAA, AFSDB, CNAME, DNAME, HINFO, MX, NAPTR, NS, PTR, RP, SOA, SPF, SRV, SSHFP, TSIG, TXT.
- Domaines fourre-tout.
- Capacité de correspondre à n'importe quel sous-domaine (quelle que soit la profondeur) avec un domaine parent spécifique, par exemple *.hello.example.com.
- Transfert des enregistrements non correspondants.
- Fonctionnalité pour intercepter des requêtes spécifiques (par exemple uniquement
A et CNAME) et transférer tous les autres enregistrements à un serveur DNS tiers (par exemple Google).
- Correspondance par expression régulière.
- Étiquettes et alias.
- Règles IP
- Configurer des règles d'autorisation/blocage par domaine.
- Notifications. Recevoir une notification lorsqu'un domaine est résolu, via :
- E-mail
- Web Push
- Slack
- Microsoft Teams
- Gestion des utilisateurs
- Support multi-utilisateur
- Chaque utilisateur reçoit son propre sous-domaine à utiliser.
- Support LDAP/RADIUS
- Authentification à deux facteurs
- Gestion de la complexité des mots de passe
- Journalisation
- Toutes les requêtes DNS sont enregistrées, qu'elles aient été mises en correspondance ou non.
- Journalisation CSV pour l'intégration SIEM.
- API Swagger 2.0
- Déploiement
- Scripts Ansible pour Ubuntu 18.04 / 20.04
- Docker
- Support CLI pour la gestion des zones, des enregistrements, des utilisateurs et des paramètres.
Cas d'utilisation
SnitchDNS peut être utilisé pour :
- Un serveur DNS de transfert - Vous permettant de surveiller toutes les requêtes via une interface Web.
- Équipes rouges - Mettre en œuvre des restrictions IP pour bloquer les sandbox, surveiller les résolutions de domaines de phishing et les e-mails, et restreindre l'accès à des plages IP connues.
- Tunnel DNS - Enregistrer toutes les requêtes DNS et exfiltrer des données.
- Défi DNS Let's Encrypt, en utilisant l'API ou l'interface CLI.
- Blocage de publicités.
- Jetons canari.
- Intégration avec des solutions SIEM.
Pour plus de détails sur les scénarios, veuillez consulter le Document des cas d'utilisation
Limitations
- SnitchDNS fonctionne actuellement en un seul thread, il peut donc ne pas convenir aux environnements avec des centaines de requêtes DNS par minute.
Contribuer
Si vous souhaitez contribuer avec des pull requests, des demandes de fonctionnalités et des rapports de bugs, n'hésitez pas à soumettre un problème (surtout avant de commencer à écrire du code).
Sécurité
Si vous identifiez des vulnérabilités de sécurité dans SnitchDNS, pour le moment veuillez me contacter sur Twitter - @sadreck
Crédits
Interface utilisateur
Développement
- Lambros Zannettos | @_C960_ - Pour son aide dans la rédaction du Dockerfile.