
Un pratico servizio DNS scritto in Go per aiutare nel rilevamento di diversi tipi di vulnerabilità cieche. Monitora il server di un penetration tester per interazioni DNS out-of-band e invia notifiche di lookup tramite Slack.
Un comodo servizio DNS scritto in Go per aiutare nel rilevamento di diversi tipi di vulnerabilità blind. Monitora il server di un penetration tester per interazioni DNS out-of-band e invia notifiche con i dettagli della richiesta ricevuta tramite Slack. DNSObserver può aiutarti a trovare bug come blind OS command injection, blind SQLi, blind XXE e molti altri!

Per una panoramica più dettagliata e le istruzioni di configurazione, vedi:
https://www.allysonomalley.com/2020/05/22/dnsobserver/
Cosa ti servirà:
Se non hai già un VPS pronto all'uso, crea un nuovo VPS Linux con il tuo fornitore preferito. Prendi nota del suo indirizzo IP pubblico.
Registra un nuovo nome di dominio con il tuo registrar preferito - qualsiasi registrar va bene purché permetta di impostare name server personalizzati e glue record.
Vai nelle impostazioni DNS del tuo nuovo dominio e trova la sezione 'glue record'. Aggiungi due voci qui, una per ogni nuovo name server, e fornisci a entrambe l'indirizzo IP pubblico del tuo VPS.
Successivamente, cambia i name server predefiniti in:
ns1.<YOUR-DOMAIN>
ns2.<YOUR-DOMAIN>
Accedi via SSH al tuo VPS ed esegui questi passaggi:
Installa Go se non lo hai già. Le istruzioni di installazione si trovano qui
Assicurati che le porte DNS predefinite siano aperte - 53/UDP e 53/TCP. Esegui:
sudo ufw allow 53/udp
sudo ufw allow 53/tcp
Ottieni DNSObserver e le sue dipendenze:
go get github.com/allyomalley/dnsobserver/...
Ci sono due argomenti obbligatori e due argomenti opzionali:
dominio [OBBLIGATORIO]
Il tuo nuovo nome di dominio.
ip [OBBLIGATORIO]
L'indirizzo IP pubblico del tuo VPS.
webhook [Opzionale]
Se desideri ricevere notifiche, fornisci l'URL del tuo webhook Slack. Riceverai notifiche per qualsiasi lookup del tuo nome di dominio o per qualsiasi sottodominio del tuo dominio (ho escluso le notifiche per query su altri domini apex e per i tuoi name server personalizzati per evitare notifiche eccessive o casuali). Se non fornisci un webhook, le interazioni verranno registrate sull'output standard. Le istruzioni per la configurazione del webhook si trovano qui.
recordsFile [Opzionale]
Per impostazione predefinita, DNSObserver risponderà solo con una risposta alle query per il tuo nome di dominio o per uno dei suoi name server. Per qualsiasi altro host, ti notificherà comunque l'interazione (purché sia il tuo dominio o un sottodominio), ma restituirà una risposta vuota. Se desideri che DNSObserver risponda ai lookup A per determinati host con un indirizzo, puoi modificare il file config.yml incluso in questo progetto o crearne uno tuo basato su questo modello:
a_records:
- hostname: ""
ip: ""
- hostname: ""
ip: ""
Attualmente, lo strumento utilizza solo record A - in futuro potrei aggiungere CNAME, AAAA, ecc). Ecco un esempio di file di record personalizzato completo:
a_records:
- hostname: "google.com"
ip: "1.2.3.4"
- hostname: "github.com"
ip: "5.6.7.8"
Queste impostazioni significano che voglio rispondere alle query per 'google.com' con '1.2.3.4' e alle query per 'github.com' con '5.6.7.8'.
Ora siamo pronti per iniziare ad ascoltare! Se vuoi poter fare altro lavoro sul tuo VPS mentre DNSObserver è in esecuzione, avvia prima una nuova sessione tmux.
Per la configurazione standard, passa gli argomenti obbligatori e il tuo webhook:
dnsobserver --domain example.com --ip 11.22.33.44 --webhook https://hooks.slack.com/services/XXX/XXX/XXX
Per ottenere quanto sopra, ma includere anche alcune risposte personalizzate per lookup A, aggiungi l'argomento per il tuo file di record:
dnsobserver --domain example.com --ip 11.22.33.44 --webhook https://hooks.slack.com/services/XXX/XXX/XXX --recordsFile my_records.yml
Supponendo che tu abbia impostato tutto correttamente, DNSObserver dovrebbe ora essere in esecuzione. Per confermare che funzioni, apri un terminale sul tuo desktop ed esegui un lookup del tuo nuovo dominio ('example.com' in questa demo):
dig example.com
Ora dovresti ricevere una notifica Slack con i dettagli della richiesta!