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
dns_watchdog_windows2 — Script PowerShell che monitora il traffico DNS di Windows tramite pktmon per rilevare avvelenamento, spoofing, risposte di resolver malevoli e cambiamenti del MAC del gateway, registrando gli avvisi. | Kitploit
Strumenti/GitHubGitHub/microlaser/dns_watchdog_windows2
Strumenti DifensiviSniffing e Analisi dei PacchettiNetwork ForensicsRaccolta InformazioniSicurezza di ReteRilevamento IntrusioniAnalisi DNSRilevamento di Anomalie

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 →
GitHub
microlaser/dns_watchdog_windows2

dns_watchdog_windows2

Script PowerShell che monitora il traffico DNS di Windows tramite pktmon per rilevare avvelenamento, spoofing, risposte di resolver malevoli e cambiamenti del MAC del gateway, registrando gli avvisi.

Vedi Repository
311 giorni faNon ancora revisionato
Condividi

DNS Watchdog (Windows)

Uno script PowerShell in singolo file che monitora il traffico di rete della macchina Windows stessa alla ricerca di segnali di DNS poisoning / spoofing, utilizzando pktmon — lo strumento di cattura pacchetti integrato in Windows 10 (1809+), Windows 11 e Windows Server 2019+. Non è richiesto alcuno strumento di cattura di terze parti (Wireshark, Npcap, tcpdump).

Cattura il traffico DNS (UDP/TCP porta 53) a livello dello stack di rete del sistema operativo, il che copre sia il traffico LAN che WAN su una macchina tipica, quindi analizza i pacchetti grezzi da solo — formato binario pcapng, header Ethernet/IP/UDP/TCP e il formato dei messaggi DNS, inclusi i puntatori di compressione dei nomi — interamente in PowerShell nativo.

Una versione companion bash/tcpdump copre macOS e Linux.

Cosa rileva

SegnalePerché è importante
Risposte in conflitto alla stessa query DNSLa firma da manuale di un tentativo di poisoning: un attaccante fa correre una risposta falsificata contro quella reale, sperando che la risposta falsificata arrivi per prima e venga messa in cache.
Risposte da un server DNS che non hai mai configuratoConfrontate con Get-DnsClientServerAddress. Una risposta da un server non riconosciuto può indicare un attaccante off-path che inietta risposte.
Risposte senza una query in sospeso corrispondenteUna risposta per una domanda che il monitor non ha mai visto porre — un possibile segno di traffico iniettato/falsificato (con un periodo di grazia all'avvio per evitare falsi positivi).
Cambi dell'indirizzo MAC del gateway predefinito a metà sessioneRilevati tramite Get-NetNeighbor a ogni ciclo di cattura. L'ARP spoofing è il solito primo passo che gli attaccanti compiono per posizionarsi in vista di manomissioni DNS sulla LAN.

Ogni avviso stampa due parti:

  • [TECHNICAL] — dettaglio grezzo del pacchetto, per chi vuole indagare ulteriormente
  • [WHAT THIS MEANS] — una spiegazione in linguaggio semplice del perché è importante

Tutto l'output viene anche scritto in un file di log con timestamp.

Requisiti

  • Windows 10 (1809+), Windows 11 o Windows Server 2019+, con pktmon.exe disponibile (integrato in tutti questi)
  • Una build ragionevolmente recente — pktmon pcapng (usato per convertire le catture ai fini dell'analisi) è stato aggiunto dopo la release iniziale 1809; se manca, aggiorna Windows
  • PowerShell in esecuzione come Amministratore (la cattura pacchetti lo richiede)

Installazione

git clone https://github.com/microlaser/dns-watchdog.git
cd dns-watchdog\windows

Nessun modulo o dipendenza esterna da installare — solo lo script stesso.

Utilizzo

Da un PowerShell elevato (Amministratore):

.\dns_watchdog.ps1

Per impostazione predefinita lo script rileva automaticamente il gateway predefinito e i server DNS configurati, e cattura su tutti gli adattatori di rete (pktmon opera a livello dello stack di rete del sistema operativo, quindi copre naturalmente sia il traffico LAN che WAN senza scegliere un adattatore specifico). Interrompi il monitoraggio con Ctrl+C; un riepilogo della sessione viene stampato all'uscita.

Parametri

.\dns_watchdog.ps1 [-LogFile <path>] [-CaptureIntervalSeconds <n>] [-GraceResponses <n>] [-KeepCaptures]
ParametroDescrizione
-LogFilePercorso del log della sessione (predefinito: .\dns_watchdog_<timestamp>.log)
-CaptureIntervalSecondsDurata di ogni finestra di cattura prima che venga convertita e analizzata. Più basso = meno latenza di rilevamento, più overhead. Predefinito: 5
-GraceResponsesNumero di risposte da osservare prima che si attivino gli avvisi "nessuna query corrispondente", per evitare rumore all'avvio. Predefinito: 10
-KeepCapturesMantiene i file .etl/.pcapng di ogni finestra su disco invece di eliminarli dopo l'analisi

Sessione di esempio

=========================================================================
 DNS Watchdog (Windows) - DNS poisoning / spoofing monitor
=========================================================================
Capturing on:      all network adapters (pktmon captures at the OS networking stack,
                   which covers this host's LAN and WAN traffic together)
Default gateway:   192.168.1.1  (MAC baseline: 60-95-F8-2B-5E-78)
Configured DNS:    192.168.0.1, 192.168.1.1
Log file:          .\dns_watchdog_20260918_204725.log
...

[20:47:44.872] [ALERT] Conflicting DNS responses for the same query
  [TECHNICAL] txn=64878  query=example.com (type 28)  first_response=[AAAA:2607:f8b0:...]  conflicting_response(src=10.0.0.9)=[AAAA:dead:beef::1]
  [WHAT THIS MEANS] This machine's DNS question got two DIFFERENT answers back. Legitimate DNS servers don't normally do this. This is the textbook signature of a DNS poisoning attempt, where an attacker races a forged answer against the real one, hoping the forged one arrives first and gets cached.

Come funziona

Windows non ha un analogo diretto al piping di tcpdump in un parser testuale — l'output live della console di pktmon è byte grezzi, non righe decodificate. Quindi questo script invece:

  1. Esegue pktmon in brevi finestre rotanti (5 secondi per impostazione predefinita), catturando su .etl
  2. Converte ogni finestra in .pcapng (pktmon pcapng)
  3. Analizza direttamente il formato binario pcapng — leggendo gli Enhanced Packet Block, poi percorrendo gli header IP → UDP/TCP → messaggio DNS di ogni frame, inclusa la decodifica dei puntatori di compressione dei nomi DNS — senza librerie esterne
  4. Traccia gli ID di transazione DNS attraverso le finestre di cattura usando hashtable PowerShell native che persistono per tutta la vita del processo, segnalando conflitti e anomalie man mano che vengono visti
  5. Interroga separatamente la voce ARP del gateway a ogni ciclo per rilevare cambi dell'indirizzo MAC

Una particolarità che vale la pena conoscere: Windows cattura frequentemente i pacchetti generati localmente (in uscita) prima che l'header Ethernet venga aggiunto in alcuni checkpoint dello stack, quindi le query DNS in uscita possono arrivare come pacchetti IP nudi senza alcun framing di link-layer, mentre le risposte in entrata arrivano completamente incorniciate in Ethernet dal filo. Il parser rileva e gestisce entrambi. pktmon tende anche a riportare lo stesso pacchetto fisico più di una volta (catturato in più punti nello stack di rete); lo script deduplica le ripetizioni identiche byte per byte all'interno di ogni finestra di cattura, così un singolo pacchetto reale non genera più avvisi — una risposta realmente in conflitto/avvelenata ha contenuto diverso, quindi non è mai influenzata da questa deduplicazione.

Limitazioni

  • Questo è un monitor euristico, non una garanzia. Un singolo avviso isolato può essere un falso positivo (ad es. una VPN che cambia resolver a metà sessione, o una CDN che restituisce più IP validi). Avvisi ripetuti o raggruppati sono molto più significativi di uno isolato.
  • C'è un piccolo intervallo tra le finestre di cattura (stop → convert → restart) invece di una cattura veramente continua.
  • Le risposte DNS-over-TCP che si estendono su più segmenti TCP non vengono riassemblate — va bene per le normali risoluzioni, una vera limitazione per risposte di grandi dimensioni in stile zone-transfer.
  • La conversione pktmon pcapng richiede una build di Windows ragionevolmente recente; sistemi molto vecchi dell'era 1809 potrebbero dover ripiegare su pktmon etl2txt (non implementato qui).
  • Osserva il traffico sull'host su cui viene eseguito; non può vedere il poisoning che avviene puramente all'interno della cache di un resolver remoto prima che una risposta raggiunga mai questa macchina.

Licenza

MIT (o aggiorna per adattarla alle tue preferenze).

Scarica lo strumento