Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
gopassivedns — Enregistreur DNS passif basé sur le réseau capturant et enregistrant les requêtes DNS à partir du trafic en direct ou de fichiers pcap, produisant du JSON pour l'intégration avec les plateformes SIEM et de renseignement sur les menaces. | Kitploit
Outils/GitHubGitHub/phillipmartin/gopassivedns
Sniffing et Analyse de PaquetsCollecte d'InformationsSécurité RéseauRenseignement sur les MenacesAnalyse DNS
GitHubphillipmartin/gopassivedns

gopassivedns

Enregistreur DNS passif basé sur le réseau capturant et enregistrant les requêtes DNS à partir du trafic en direct ou de fichiers pcap, produisant du JSON pour l'intégration avec les plateformes SIEM et de renseignement sur les menaces.

Voir le dépôt
12624il y a 6 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Coverage Status Build Status

gopassivedns

Journalisation DNS basée sur le réseau en Go

Résumé

Un journaliseur DNS basé sur la capture réseau, inspiré de https://github.com/gamelinux/passivedns. Il utilise gopacket pour traiter libpcap et le traitement des paquets. Il produit des journaux au format JSON. Il est conçu pour gérer la capture de requêtes à haut volume dans des environnements comptant de un à des centaines de résolveurs DNS.

Pourquoi ne pas utiliser PassiveDNS de gamelinux ?

C'est un bon choix. J'ai construit celui-ci car je pense que les tâches impliquant le traitement de grandes quantités de données non fiables avec de nombreux cas particuliers mal documentés devraient être gérées par un runtime managé pour éviter les attaques par corruption mémoire. J'ai déployé PassiveDNS dans plusieurs organisations, et j'ai créé gopassivedns pour résoudre quelques problèmes spécifiques que j'ai observés : j'avais besoin d'instrumenter de nombreux emplacements, j'avais besoin de faire évoluer la couche de stockage pour gérer BEAUCOUP de requêtes et je voulais une suite de tests avec une bonne couverture autour de tous les cas limites DNS.

Pourquoi ne pas utiliser Bro (ou autre IDS de journalisation DNS) ?

Également un bon choix. Les systèmes comme Bro sont généralement déployés sur les sorties réseau, ce qui a pour conséquence de masquer la source réelle de la requête derrière vos résolveurs récursifs. Cela signifie que vous devez généralement déployer Bro et faire la journalisation des requêtes du résolveur (en supposant que vous le puissiez), et intégrer les journaux des deux dans un système de journalisation central pour suivre une requête jusqu'à un client. gopassivedns a été conçu pour être déployé sur vos résolveurs sans modification de configuration du résolveur et/ou sur vos sorties réseau, pour journaliser de manière centralisée via un protocole fiable et être analysé simplement dans tout système de journalisation.

Pourquoi ne pas simplement utiliser la journalisation des requêtes du résolveur ?

Le support de la journalisation des requêtes par les résolveurs, incluant à la fois la question et la réponse, est inégal au mieux. L'un des serveurs DNS les plus déployés, BIND, ne le supporte pas du tout. D'autres, comme le DNS Windows, ont des formats de journal vraiment horribles. De plus, la journalisation basée sur le réseau capturera les requêtes envoyées directement à des serveurs distants (par exemple Google DNS) depuis vos clients.

Utilisation

Les options de configuration peuvent être spécifiées en tant que variables d'environnement, dans un fichier .env ou sur la ligne de commande. La priorité est : les drapeaux de ligne de commande, le fichier .env, et enfin les variables déjà définies dans l'environnement. Les options de configuration sont les suivantes

  • -dev [périphérique] périphérique réseau pour la capture (ENV: PDNS_DEV)
  • -fluentd_socket [socket] Chemin vers le socket Unix Fluentd utilisé pour la journalisation au format messagepack (ENV: PDNS_FLUENTD_SOCKET)
  • -bpf [filtre bpf] Filtre BPF pour la capture (par défaut : port 53) (ENV: PDNS_BPF)
  • -pcap [fichier] Fichier pcap à traiter (ENV: PDNS_PCAP_FILE)
  • -logfile [fichier] Fichier journal pour les requêtes DNS (suggéré pour petit déploiement ou débogage uniquement) (ENV: PDNS_LOG_FILE)
  • -logMaxAge Âge maximal d'un fichier journal avant rotation, en jours (par défaut : 28) (ENV: PDNS_LOG_AGE)
  • -logMaxBackups Nombre maximal de fichiers conservés après rotation (par défaut : 3) (ENV: PDNS_LOG_BACKUP)
  • -logMaxSize Taille maximale du fichier journal avant rotation, en Mo (par défaut : 100) (ENV: PDNS_LOG_SIZE)
  • -quiet Ne pas journaliser les requêtes DNS vers STDOUT (ENV: PDNS_QUIET)
  • -debug Activer la journalisation de débogage vers STDOUT (ENV: PDNS_DEBUG)
  • -gc_age [num] Âge à partir duquel les connexions incomplètes doivent être nettoyées (par défaut : -1m) (ENV: PDNS_GC_AGE)
  • -gc_interval [num] Intervalle auquel le nettoyage doit s'exécuter sur la table des connexions (par défaut : 3m) (ENV: PDNS_GC_INTERVAL)
  • -kafka_brokers [courtiers] Liste séparée par des virgules des courtiers Kafka (ENV: PDNS_KAFKA_PEERS)
  • -kafka_topic [sujet] Sujet Kafka pour la journalisation (ENV: PDNS_KAFKA_TOPIC)
  • -cpuprofile [fichier] Activer le profilage CPU (ENV: PDNS_PROFILE_FILE)
  • -numprocs [num] Nombre de goroutines à utiliser pour l'analyse des données de paquets (par défaut : 8) (ENV: PDNS_THREADS)
  • -pfring Utiliser PF_RING pour la capture de paquets (ENV: PDNS_PFRING)
  • -statsd_host Hôte et port de votre serveur statsd (par exemple localhost:8125) (ENV: PDNS_STATSD_HOST)
  • -statsd_interval L'intervalle, en secondes, entre les envois à statsd (ENV: PDNS_STATSD_INTERVAL)
  • -statsd_prefix Le préfixe du nom de métrique à utiliser (par défaut, gopassivedns) (ENV: PDNS_STATSD_PREFIX)
  • -snaplen [int] La snaplen utilisée pour le tampon pcap
  • -name Le nom de ce capteur pour utilisation dans les statistiques et les messages de journal (par défaut le nom d'hôte) (ENV: PDNS_NAME)
  • -syslog_facility Facilité syslog (ENV: PDNS_SYSLOG_FACILITY)
  • -syslog_priority Priorité syslog (ENV: PDNS_SYSLOG_PRIORITY)

Vous devez fournir soit -dev soit -pcap.

Il existe des problèmes connus avec les goroutines et le processus de démonisation standard (https://github.com/golang/go/issues/227), donc je recommande fortement d'utiliser l'une des méthodes détaillées ici : http://stackoverflow.com/questions/10067295/how-to-start-a-go-program-as-a-daemon-in-ubuntu pour exécuter ce processus en tant que démon en utilisant les outils système.

Si vous choisissez d'utiliser la journalisation syslog, nous utilisons le "log/syslog" de golang qui nécessite qu'un socket Unix utilisé pour communiquer avec syslog se trouve à l'un des emplacements suivants : /dev/log, /var/run/log ou /var/run/syslog.

Guide de déploiement

Où déployer cet outil ?

Vous avez 3 choix : le déployer sur votre(vos) résolveur(s) ou le déployer sur votre(vos) passerelle(s) ou les deux. Le déployer sur vos résolveurs est intéressant car vous obtiendrez l'adresse IP du client qui a envoyé la requête originale. Vous pouvez également voir la branche montante de la requête (du résolveur au résolveur suivant dans la chaîne), à moins que vous n'ajustiez votre filtre BPF pour ignorer cette branche. Le déployer sur vos passerelles signifie que vous ne voyez pas la branche client -> résolveur interne, donc il peut être difficile de relier une requête à un client spécifique. D'un autre côté, vous verrez les requêtes qui contournent vos résolveurs internes. Vous verrez également, bien sûr, les requêtes provenant du résolveur vers le résolveur montant qu'il utilise. Dans un monde idéal, je déploierais cet outil sur chacun de mes résolveurs internes et sur une sonde sur mes passerelles. Les résolveurs internes auraient un filtre BPF tel qu'il ignore la branche montante de la requête, et la passerelle n'ignorerait rien.

Que faire des résultats ?

Pour l'instant, je recommanderais d'utiliser logstash pour acheminer les journaux vers un cluster elasticsearch. Tous les journaux sont au format JSON, donc cela devrait être assez facile. Je suggérerais également d'utiliser quelque chose comme HDFS pour le stockage à long terme et l'analyse en masse. Les requêtes DNS sont une source incroyable de données internes !

Construction et installation

  • cloner ce dépôt
  • installer libpcap, libpcap-dev
  • 'go get'
  • 'go build -o gopassivedns' (le -o est en fait simplement pour être prudent, en supposant que vous avez cloné le dépôt, vous ne devriez pas en avoir besoin)
  • 'cp gopassivedns /some/path/to/gopassivedns'
Télécharger l’outil