[!CAUTION]
Questo repository non è più mantenuto, visita https://github.com/sadreck/SnitchDNS per l'ultima versione.
SnitchDNS
SnitchDNS è un server DNS basato su database con interfaccia web, scritto in Python e Twisted, che semplifica l'amministrazione DNS applicando istantaneamente tutte le modifiche alla configurazione senza riavviare alcun servizio di sistema.
Una delle sue caratteristiche principali è la registrazione di tutte le query DNS, consentendo la scoperta degli endpoint del traffico di rete; può essere utilizzato anche per implementare token canarino, poiché supporta notifiche via e-mail, web push, Slack e Teams. I Red teamer possono inoltre usare SnitchDNS per monitorare domini di phishing alla ricerca di sandbox, integrarsi con soluzioni SIEM, limitare le risposte a specifici intervalli IP, esfiltrare dati tramite un tunnel DNS e domini catch-all, e altro ancora.
Dipendenze
Installazione
Assicurati di installare usando git e non scaricando il repository manualmente.
Documentazione
Per la documentazione generale vedi qui
Screenshot
Per gli screenshot vedi qui
Caratteristiche di base
- Basato su database.
- Le modifiche si riflettono immediatamente su ogni richiesta DNS.
- DBMS supportati:
- SQLite
- MySQL / MariaDB
- Postgres
- Server DNS
- Supporto per i record DNS comuni.
A, AAAA, AFSDB, CNAME, DNAME, HINFO, MX, NAPTR, NS, PTR, RP, SOA, SPF, SRV, SSHFP, TSIG, TXT.
- Domini catch-all.
- Possibilità di associare qualsiasi sottodominio (a qualsiasi profondità) a un dominio genitore specifico, ad esempio *.hello.example.com.
- Inoltro di record non corrispondenti.
- Funzionalità per intercettare query specifiche (es. solo
A e CNAME) e inoltrare tutti gli altri record a un server DNS di terze parti (es. Google).
- Corrispondenza tramite espressioni regolari.
- Tag e alias.
- Regole IP
- Configura regole di autorizzazione/blocco per dominio.
- Notifiche. Ricevi una notifica quando un dominio viene risolto, tramite:
- E-mail
- Web Push
- Slack
- Microsoft Teams
- Gestione utenti
- Supporto multi-utente
- Ogni utente riceve il proprio sottodominio da utilizzare.
- Supporto LDAP/RADIUS
- Autenticazione a due fattori
- Gestione della complessità delle password
- Registrazione (logging)
- Tutte le query DNS vengono registrate, siano esse corrisposte o meno.
- Registrazione CSV per l'integrazione con SIEM.
- API Swagger 2.0
- Distribuzione
- Script Ansible per Ubuntu 18.04 / 20.04
- Docker
- Supporto CLI per la gestione di zone, record, utenti e impostazioni.
- Esportazione/Importazione CSV
Casi d'uso
SnitchDNS può essere utilizzato per:
- Un server di inoltro DNS - Permette di monitorare tutte le richieste tramite un'interfaccia web.
- Red Team - Implementare restrizioni IP per bloccare le sandbox, monitorare le risoluzioni dei domini di phishing e le e-mail, e limitare l'accesso a intervalli IP noti.
- Tunnel DNS - Registrare tutte le richieste DNS ed esfiltrare dati.
- Sfida DNS di Let's Encrypt, utilizzando l'API o l'interfaccia CLI.
- Blocco pubblicità.
- Token canarino.
- Integrazione con soluzioni SIEM.
Per maggiori dettagli sugli scenari, consulta il Documento sui casi d'uso
Limitazioni
- SnitchDNS attualmente funziona a thread singolo, pertanto potrebbe non essere adatto ad ambienti con centinaia di richieste DNS al minuto.
Contribuire
Se desideri contribuire con pull request, richieste di funzionalità o segnalazioni di bug, sentiti libero di aprire un issue (soprattutto prima di iniziare a scrivere codice).
Sicurezza
Se identifichi vulnerabilità di sicurezza in SnitchDNS, per il momento contattami su Twitter - @sadreck
Crediti
Interfaccia utente
Sviluppo
- Lambros Zannettos | @_C960_ - Per il suo aiuto nella scrittura del Dockerfile.