Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
dnsdiag — Toolset per misurazione DNS, risoluzione dei problemi e audit di sicurezza | Kitploit
Strumenti/GitHubGitHub/farrokhi/dnsdiag
RicognizioneMappatura della ReteAnalisi delle VulnerabilitàRaccolta InformazioniSicurezza di ReteAnalisi DNSTop in Analisi DNS n.1
GitHubfarrokhi/dnsdiag

dnsdiag

Toolset per misurazione DNS, risoluzione dei problemi e audit di sicurezza

1.1k111546 giorni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Vedi Repository
Sito web
[![PyPI](https://img.shields.io/pypi/v/dnsdiag.svg?maxAge=8600)](https://pypi.python.org/pypi/dnsdiag/) [![PyPI](https://img.shields.io/pypi/l/dnsdiag.svg?maxAge=8600)]() [![Downloads](https://static.pepy.tech/personalized-badge/dnsdiag?period=total&units=international_system&left_color=grey&right_color=blue&left_text=PyPi%20Downloads)](https://pepy.tech/project/dnsdiag) [![Downloads](https://static.pepy.tech/badge/dnsdiag/month)](https://pepy.tech/project/dnsdiag) [![PyPI](https://img.shields.io/pypi/pyversions/dnsdiag.svg?maxAge=8600)]() [![Docker Pulls](https://img.shields.io/docker/pulls/farrokhi/dnsdiag)](https://hub.docker.com/r/farrokhi/dnsdiag) [![GitHub stars](https://img.shields.io/github/stars/farrokhi/dnsdiag.svg?style=social&label=Star&maxAge=8600)](https://github.com/farrokhi/dnsdiag/stargazers) 

Set di strumenti per la misurazione, la risoluzione dei problemi e l'audit di sicurezza del DNS
===============================================================

Ti sei mai chiesto se il tuo ISP sta [intercettando il tuo traffico
DNS](https://medium.com/decentralize-today/is-your-isp-hijacking-your-dns-traffic-f3eb7ccb0ee7)?
Hai notato comportamenti insoliti nelle tue risposte DNS, o sei stato reindirizzato a
un indirizzo sbagliato e hai sospettato che qualcosa non andasse con il tuo DNS? Offriamo una
suite di strumenti per eseguire audit di base sulle tue richieste e risposte DNS, aiutandoti
a garantire che il tuo DNS funzioni come previsto.

Con `dnsping`, puoi misurare il tempo di risposta di qualsiasi server DNS per query
arbitrarie. Simile alla normale utility ping, dnsping offre funzionalità
comparabili per le richieste DNS, aiutandoti a monitorare la reattività del server.

Puoi anche tracciare il percorso della tua richiesta DNS fino alla sua destinazione usando
`dnstraceroute`, verificando che non venga reindirizzata o intercettata. Confrontando le query DNS inviate allo stesso server, `dnstraceroute` ti permette di
osservare eventuali differenze nei percorsi seguiti, avvisandoti di possibili problemi.


`dnseval` valuta più resolver DNS per aiutarti a scegliere il miglior resolver DNS
per la tua rete. Sebbene sia consigliato utilizzare il tuo resolver DNS per evitare
di dipendere da resolver DNS di terze parti, `dnseval` può assisterti nella selezione del
resolver DNS ottimale quando necessario. Ti consente di confrontare i server DNS in base
alle prestazioni (latenza) e all'affidabilità (perdita di pacchetti), offrendoti una visione completa per un processo decisionale informato.


# Installazione

Ci sono diversi modi per utilizzare questo set di strumenti, anche se consigliamo di eseguirlo
direttamente dal codice sorgente per la massima flessibilità e controllo. L'esecuzione dal
sorgente o l'installazione con pip richiede Python 3.11 o versioni successive.

## Codice sorgente

1. Clona il repository git e installa le dipendenze:

```
git clone https://github.com/farrokhi/dnsdiag.git
cd dnsdiag
pip3 install -r requirements.txt
```

2. In alternativa, puoi installare il pacchetto usando pip:

```
pip3 install dnsdiag
```

## Utilizzo di uv (consigliato)

[uv](https://docs.astral.sh/uv/) è un gestore di pacchetti Python veloce che può eseguire strumenti direttamente senza installazione:

```bash
# Esegui dnsping direttamente senza installazione
uvx --from dnsdiag dnsping google.com

# Esegui con opzioni specifiche
uvx --from dnsdiag dnsping -c 5 --tls -s 8.8.8.8 example.com

# Esegui dnstraceroute
uvx --from dnsdiag dnstraceroute cloudflare.com

# Esegui dnseval
uvx --from dnsdiag dnseval -f public-servers.txt github.com
```

Per installare dnsdiag in modo permanente:

```bash
# Installa gli strumenti dnsdiag
uv tool install dnsdiag

# Aggiorna all'ultima versione
uv tool upgrade dnsdiag
```

## Pacchetto binario

Di tanto in tanto, vengono rilasciati pacchetti binari per Windows, Mac OS X e Linux. Puoi scaricare l'ultima release dalla [pagina delle release](https://github.com/farrokhi/dnsdiag/releases).

### Piattaforme supportate

I binari precompilati sono disponibili per:

- Linux (x86_64, ARM64)
- macOS (Intel, Apple Silicon)
- Windows (x86_64)

Windows ARM64 non è attualmente supportato a causa di dipendenze di build che richiedono toolchain di compilazione native non prontamente disponibili. Se utilizzi Windows su ARM, puoi eseguire dnsdiag usando Windows Subsystem for Linux (WSL2) o installarlo direttamente dal sorgente.

## Docker

Se preferisci non installare `dnsdiag` sulla tua macchina locale, puoi usare
l'immagine Docker per eseguire gli strumenti in un ambiente containerizzato. Ad esempio:

```
docker run --network host -it --rm farrokhi/dnsdiag dnsping.py
```

# dnsping

`dnsping` ti permette di fare "ping" a un resolver DNS inviando una query DNS arbitraria più volte. Per un elenco completo delle opzioni da riga di comando supportate, usa `--help`. Ecco alcune opzioni chiave:

- Usa `--tcp`, `--tls`, `--doh`, `--quic` o `--http3` per selezionare il protocollo di trasporto (il predefinito è UDP). Queste opzioni sono mutuamente esclusive; è possibile specificare un solo protocollo per comando.
- Usa `--flags` per visualizzare i flag di risposta, inclusi i flag EDNS, per ogni risposta.
- Usa `--dnssec` per richiedere la validazione DNSSEC, se disponibile.
- I messaggi Extended DNS Error ([RFC 8914](https://www.rfc-editor.org/rfc/rfc8914)) vengono visualizzati automaticamente quando presenti.
- Usa `--nsid` per visualizzare il Name Server Identifier (NSID) se disponibile ([RFC 5001](https://www.rfc-editor.org/rfc/rfc5001)).
- Usa `--ecs` per includere le informazioni EDNS Client Subnet per l'ottimizzazione del routing geografico.
- Usa `--cookie` per visualizzare i DNS cookie ([RFC 7873](https://www.rfc-editor.org/rfc/rfc7873)) quando presenti nelle risposte.

```shell
./dnsping.py -c 5 --dnssec --flags --tls -t AAAA -s 8.8.8.8 brokendnssec.net
```

```
dnsping.py DNS: 8.8.8.8:853, hostname: brokendnssec.net, proto: TLS, class: IN, type: AAAA, flags: [RD]
75  bytes from 8.8.8.8: seq=1   time=73.703 ms  SERVFAIL [QR RD RA -- DO] [EDE:10("For brokendnssec.net/soa")]
75  bytes from 8.8.8.8: seq=2   time=69.523 ms  SERVFAIL [QR RD RA -- DO] [EDE:10("For brokendnssec.net/soa")]
75  bytes from 8.8.8.8: seq=3   time=58.058 ms  SERVFAIL [QR RD RA -- DO] [EDE:10("For brokendnssec.net/soa")]
75  bytes from 8.8.8.8: seq=4   time=54.235 ms  SERVFAIL [QR RD RA -- DO] [EDE:10("For brokendnssec.net/soa")]
75  bytes from 8.8.8.8: seq=5   time=57.806 ms  SERVFAIL [QR RD RA -- DO] [EDE:10("For brokendnssec.net/soa")]

--- 8.8.8.8 dnsping statistics ---
5 requests transmitted, 5 responses received, 0% lost
min=54.235 ms, avg=22.665 ms, max=69.523 ms, stddev=38.202 ms
```

`dnsping` fornisce anche statistiche come i tempi di risposta minimo, massimo e medio,
insieme al jitter (deviazione standard) e alla perdita di pacchetti.

Ecco alcuni casi d'uso interessanti per `dnsping`:

- Confrontare i tempi di risposta tra diversi protocolli di trasporto (ad es., UDP vs. DoH).
- Valutare l'affidabilità del tuo server DNS misurando jitter e perdita di pacchetti.
- Misurare i tempi di risposta con DNSSEC abilitato usando il flag `--dnssec`.
- Testare il comportamento di EDNS Client Subnet per risposte basate sulla geolocalizzazione:

```shell
./dnsping.py -c 3 --ecs 203.0.113.0/24 -s 94.140.14.14 google.com
```

```
dnsping.py DNS: 94.140.14.14:53, hostname: google.com, proto: UDP, class: IN, type: A, flags: [RD]
66  bytes from 94.140.14.14: seq=1   time=31.407 ms  NOERROR [ECS:203.0.113.0/24/24]
66  bytes from 94.140.14.14: seq=2   time=29.156 ms  NOERROR [ECS:203.0.113.0/24/24]
66  bytes from 94.140.14.14: seq=3   time=30.892 ms  NOERROR [ECS:203.0.113.0/24/24]

--- 94.140.14.14 dnsping statistics ---
3 requests transmitted, 3 responses received, 0% lost
min=29.156 ms, avg=30.485 ms, max=31.407 ms, stddev=1.176 ms
```

- Identificare i server DNS usando l'opzione NSID:

```shell
./dnsping.py -c 2 --nsid -s 8.8.8.8 google.com
```

```
dnsping.py DNS: 8.8.8.8:53, hostname: google.com, proto: UDP, class: IN, type: A, flags: [RD]
68  bytes from 8.8.8.8: seq=1   time=36.399 ms  NOERROR [NSID:gpdns-ams]
68  bytes from 8.8.8.8: seq=2   time=32.156 ms  NOERROR [NSID:gpdns-ams]

--- 8.8.8.8 dnsping statistics ---
2 requests transmitted, 2 responses received, 0% lost
min=32.156 ms, avg=34.278 ms, max=36.399 ms, stddev=2.122 ms
```

- Testare i DNS cookie per una maggiore sicurezza e ottimizzazione della cache:

```shell
./dnsping.py -c 2 --cookie -s anyns.pch.net quad9.net
```

```
dnsping.py DNS: anyns.pch.net:53, hostname: quad9.net, proto: UDP, class: IN, type: A, flags: [RD]
82  bytes from anyns.pch.net: seq=1   time=30.552  ms  NOERROR [COOKIE:27f609c017bb2ec4ea70de5c68eec3fc39f6a53ee49c55f8]
82  bytes from anyns.pch.net: seq=2   time=24.794  ms  NOERROR [COOKIE:719631dd9fcce722d3ac859b68eec3fd2e5430b5c8a7f8cf]

--- anyns.pch.net dnsping statistics ---
2 requests transmitted, 2 responses received, 0% lost
min=24.794 ms, avg=27.673 ms, max=30.552 ms, stddev=4.072 ms
```

## Interpretazione dei flag DNSSEC e relativi alla sicurezza

Quando si utilizzano `--dnssec` e `--flags`, `dnsping` espone campi del protocollo DNS
direttamente rilevanti per la validazione della sicurezza DNS. Questi valori indicano se un
resolver è in grado di validare DNSSEC e se una risposta è stata verificata con successo.

Flag comuni:

- **DO (DNSSEC OK)**  
  Indica che il client sta richiedendo record relativi a DNSSEC. La sua presenza
  mostra che il resolver supporta le query DNSSEC.

- **AD (Authenticated Data)**  
  Impostato dai resolver che validano quando la risposta è stata validata
  crittograficamente usando DNSSEC. Questo è un forte segnale che la validazione DNSSEC è attiva
  e ha avuto successo.

Pattern tipici:

| Risultato | Significato |
|-------|--------|
| `NOERROR` con flag `AD` | Validazione DNSSEC riuscita |
| `SERVFAIL` con flag `DO` | Validazione DNSSEC fallita (spesso a causa di firme non valide o errata configurazione) |
| Nessun flag `AD` presente | Il resolver non esegue la validazione DNSSEC |

Gli Extended DNS Errors (EDE, RFC 8914) forniscono informazioni diagnostiche aggiuntive quando
la validazione DNSSEC fallisce. Ad esempio:

- **EDE:10** – *DNSSEC Bogus* (dati DNSSEC non validi o corrotti)
- **EDE:6** – *DNSSEC Signature Expired*
- **EDE:7** – *DNSSEC Signature Not Yet Valid*

Questi indicatori rendono `dnsping` utile non solo per i test di prestazioni, ma anche
per validare se i resolver applicano correttamente DNSSEC e per diagnosticare
problemi di deployment DNSSEC.

# dnstraceroute

`dnstraceroute` è un'utility che traccia il percorso delle tue richieste DNS fino alla loro
destinazione. Potresti volerlo confrontare con il tuo traceroute di rete effettivo per
assicurarti che il tuo traffico DNS non venga instradato attraverso percorsi indesiderati.

`dnstraceroute` supporta più protocolli di trasporto (mutuamente esclusivi):
- UDP (predefinito) - Query DNS tradizionali
- TCP (`--tcp`) - DNS over TCP
- DoQ (`--quic`) - DNS over QUIC (supportato da AdGuard DNS)
- DoH3 (`--http3`) - DNS over HTTP/3 (supportato da Google DNS e Cloudflare)

```shell
./dnstraceroute.py --expert --asn -C -t A -s 8.8.4.4 facebook.com
```

Puoi anche testare protocolli DNS moderni:

```shell
# Testa DNS over QUIC con AdGuard DNS
./dnstraceroute.py --quic -s 94.140.14.14 -c 3 google.com

# Testa DNS over HTTP/3 con Google DNS
./dnstraceroute.py --http3 -s 8.8.8.8 -c 3 google.com
```

```
dnstraceroute.py DNS: 8.8.4.4:53, hostname: facebook.com, rdatatype: A
1	192.168.0.1 (192.168.0.1) 1 ms
2	192.168.28.177 (192.168.28.177) 4 ms
3	192.168.0.1 (192.168.0.1) 693 ms
4	172.19.4.17 (172.19.4.17) 3 ms
5	dns.google (8.8.4.4) [AS15169 GOOGLE, US] 8 ms

=== Expert Hints ===
 [*] public DNS server is next to a private IP address (possible hijacking)
```

Usare il flag `--expert` con `dnstraceroute` abiliterà la visualizzazione di suggerimenti
esperti, incluse avvertenze su potenziali dirottamenti del traffico DNS.

# dnseval
`dnseval` è un'utility di ping in blocco che invia query DNS arbitrarie a una lista
specificata di server DNS, permettendoti di confrontare i loro tempi di risposta
simultaneamente.

Puoi usare `dnseval` per valutare i tempi di risposta tra diversi protocolli di trasporto,
inclusi UDP (predefinito), TCP, DoT (DNS over TLS), DoH (DNS over
HTTPS), DoQ (DNS over QUIC) e DoH3 (DNS over HTTP/3) usando rispettivamente i flag `--tcp`,
`--tls`, `--doh`, `--quic` e `--http3`. Queste opzioni di protocollo sono mutuamente esclusive; se ne può specificare solo una per comando.

## Riepilogo del supporto ai protocolli

| Strumento | UDP | TCP | TLS (DoT) | DoH | DoQ | DoH3 |
|------|-----|-----|-----------|-----|-----|------|
| `dnsping` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| `dnstraceroute` | ✓ | ✓ | - | - | ✓ | ✓ |
| `dnseval` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |

*DoQ: DNS over QUIC, DoH3: DNS over HTTP/3*

```shell
./dnseval.py --skip-warmup --dnssec -c10 -f public-servers.txt ripe.net
```

```
server                   avg(ms)  min(ms)  max(ms)  stddev(ms)  lost(%)  ttl      flags                      response
---------------------------------------------------------------------------------------------------------------------
1.0.0.1                  29.01    14.15    45.36    8.60        %0       300      QR -- -- RD RA AD -- DO     NOERROR
1.1.1.1                  23.90    18.14    42.07    7.83        %0       300      QR -- -- RD RA AD -- DO     NOERROR
1.0.0.2                  25.90    21.36    31.58    4.26        %0       300      QR -- -- RD RA AD -- DO     NOERROR
1.1.1.2                  22.68    18.36    32.15    3.96        %0       300      QR -- -- RD RA AD -- DO     NOERROR
1.0.0.3                  22.53    18.98    32.52    3.94        %0       300      QR -- -- RD RA AD -- DO     NOERROR
1.1.1.3                  21.70    20.25    22.97    0.77        %0       299      QR -- -- RD RA AD -- DO     NOERROR
2606:4700:4700::1001     21.70    19.13    27.50    2.28        %0       299      QR -- -- RD RA AD -- DO     NOERROR
2606:4700:4700::1111     22.63    20.42    30.18    3.13        %0       299      QR -- -- RD RA AD -- DO     NOERROR
2606:4700:4700::1002     24.97    20.89    44.63    7.16        %0       299      QR -- -- RD RA AD -- DO     NOERROR
2606:4700:4700::1112     23.24    21.37    25.87    1.48        %0       298      QR -- -- RD RA AD -- DO     NOERROR
2606:4700:4700::1003     21.68    19.28    24.88    1.65        %0       298      QR -- -- RD RA AD -- DO     NOERROR
2606:4700:4700::1113     22.61    19.86    26.09    1.73        %0       299      QR -- -- RD RA AD -- DO     NOERROR
195.46.39.39             25.56    16.42    55.37    15.37       %0       300      QR -- -- RD RA -- -- --     NOERROR
195.46.39.40             19.08    16.51    23.86    2.24        %0       300      QR -- -- RD RA -- -- --     NOERROR
2a05:d014:939:3300::39   0.00     0.00     0.00     0.00        %100     N/A      -- -- -- -- -- -- -- --     No Response
2a05:d014:939:3300::40   0.00     0.00     0.00     0.00        %100     N/A      -- -- -- -- -- -- -- --     No Response
208.67.220.220           30.60    14.54    120.64   31.88       %0       300      QR -- -- RD RA AD -- DO     NOERROR
208.67.222.222           21.78    17.42    36.45    6.06        %0       50       QR -- -- RD RA AD -- DO     NOERROR
2620:0:ccc::2            29.48    19.23    98.29    24.22       %0       299      QR -- -- RD RA AD -- DO     NOERROR
2620:0:ccd::2            22.36    17.90    30.18    3.98        %0       299      QR -- -- RD RA AD -- DO     NOERROR
216.146.35.35            172.53   114.46   360.87   71.47       %0       299      QR -- -- RD RA AD -- DO     NOERROR
216.146.36.36            187.36   118.21   324.32   59.08       %0       110      QR -- -- RD RA AD -- DO     NOERROR
209.244.0.3              46.49    25.23    115.86   28.19       %0       300      QR -- -- RD RA -- -- DO     NOERROR
209.244.0.4              58.33    28.09    109.18   29.20       %0       299      QR -- -- RD RA -- -- DO     NOERROR
4.2.2.1                  64.58    30.21    86.79    30.19       %25      299      QR -- -- RD RA -- -- DO     NOERROR
4.2.2.2                  40.54    22.69    74.80    20.76       %0       70       QR -- -- RD RA -- -- DO     NOERROR
4.2.2.3                  90.62    90.62    90.62    0.00        %50      70       QR -- -- RD RA -- -- DO     NOERROR
4.2.2.4                  31.53    23.80    70.93    14.51       %0       294      QR -- -- RD RA -- -- DO     NOERROR
4.2.2.5                  24.11    24.05    24.18    0.09        %33      294      QR -- -- RD RA -- -- DO     NOERROR
80.80.80.80              0.00     0.00     0.00     0.00        %100     N/A      -- -- -- -- -- -- -- --     No Response
80.80.81.81              0.00     0.00     0.00     0.00        %100     N/A      -- -- -- -- -- -- -- --     No Response
8.8.4.4                  28.35    20.85    39.14    7.24        %0       300      QR -- -- RD RA AD -- DO     NOERROR
8.8.8.8                  21.22    16.22    24.93    2.39        %0       299      QR -- -- RD RA AD -- DO     NOERROR
```

Puoi anche salvare i risultati in formato JSONL per ulteriori elaborazioni. Ogni riga nel file di output è un oggetto JSON valido contenente i risultati completi della misurazione per un server DNS.

```shell
./dnseval.py -c 5 -j results.jsonl -f public-servers.txt example.com
```

L'output può essere analizzato riga per riga con strumenti JSON standard come `jq`.

```shell
cat results.jsonl | jq -r 'select(.data.r_lost_percent == 0) | .data.resolver'
```

### Autore

Babak Farrokhi 

- github: [github.com/farrokhi](https://github.com/farrokhi/)
- website: [farrokhi.net](https://farrokhi.net/)
- mastodon: [@[email protected]](https://unix.family/@farrokhi)
- twitter: [@farrokhi](https://twitter.com/farrokhi)


### Licenza

dnsdiag è rilasciato sotto licenza BSD a 2 clausole.
Scarica lo strumento