Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
gopassivedns — Netzwerkbasierter passiver DNS-Logger, der DNS-Abfragen aus Live-Datenverkehr oder Pcap-Dateien erfasst und protokolliert und JSON für die Integration mit SIEM- und Threat-Intelligence-Plattformen ausgibt. | Kitploit
Tools/GitHubGitHub/phillipmartin/gopassivedns
Paket-Sniffing & AnalyseInformationsbeschaffungNetzwerksicherheitBedrohungsanalyseDNS-Analyse
GitHubphillipmartin/gopassivedns

gopassivedns

Netzwerkbasierter passiver DNS-Logger, der DNS-Abfragen aus Live-Datenverkehr oder Pcap-Dateien erfasst und protokolliert und JSON für die Integration mit SIEM- und Threat-Intelligence-Plattformen ausgibt.

Repository anzeigen
12624vor 6 MonatenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Coverage Status Build Status

gopassivedns

Netzwerkbasiertes DNS-Logging in Go

Zusammenfassung

Ein netzwerkerfassungsbasierter DNS-Logger, inspiriert von https://github.com/gamelinux/passivedns. Er verwendet gopacket für libpcap und Paketverarbeitung. Er gibt JSON-Logs aus. Er ist für die Erfassung hoher Abfragevolumina in Umgebungen mit einem bis Hunderten von DNS-Resolvern ausgelegt.

Warum nicht PassiveDNS von gamelinux verwenden?

Es ist eine gute Wahl. Ich habe dies gebaut, weil ich glaube, dass Aufgaben, die die Verarbeitung großer Mengen unvertrauter Daten mit vielen schlecht dokumentierten Randfällen beinhalten, von einer verwalteten Laufzeitumgebung gehandhabt werden sollten, um Speicherkorruptionsangriffe zu verhindern. Ich habe PassiveDNS in mehreren Organisationen eingesetzt und gopassivedns gebaut, um einige spezifische Schmerzpunkte zu lösen, die ich beobachtet habe: Ich musste viele Standorte instrumentieren, ich musste die Speicherschicht skalieren, um eine SEHR GROSSE Anzahl von Abfragen zu verarbeiten, und ich wollte eine Testsuite mit guter Abdeckung aller DNS-Randfälle.

Warum nicht Bro (oder ein anderes DNS-Logging-IDS) verwenden?

Auch eine gute Wahl. Systeme wie Bro werden in der Regel an Netzwerkausgängen eingesetzt, was zur Folge hat, dass die tatsächliche Quelle der Abfrage hinter Ihren rekursiven Resolvern verborgen wird. Das bedeutet, dass Sie in der Regel Bro bereitstellen und das Resolver-Abfrage-Logging (sofern möglich) durchführen müssen und die Logs beider Systeme in ein zentrales Logsystem integrieren müssen, um eine Abfrage zu einem Client zurückzuverfolgen. gopassivedns wurde entwickelt, um auf Ihren Resolvern ohne Konfigurationsänderungen am Resolver und/oder an Ihren Netzwerkausgängen bereitgestellt zu werden, zentral über ein zuverlässiges Protokoll zu loggen und einfach in jedes Logsystem geparst zu werden.

Warum nicht einfach das Resolver-Abfrage-Logging verwenden?

Die Unterstützung der Resolver für das Abfrage-Logging, einschließlich Frage und Antwort, ist bestenfalls lückenhaft. Einer der am meisten eingesetzten DNS-Server, BIND, unterstützt es überhaupt nicht. Andere, wie Windows DNS, haben wirklich schreckliche Logformate. Darüber hinaus erfasst netzwerkbasiertes Logging Abfragen, die direkt von Ihren Clients an entfernte Server (z. B. Google DNS) gesendet werden.

Nutzung

Konfigurationsoptionen können als Umgebungsvariablen, in einer .env-Datei oder über die Kommandozeile angegeben werden. Die Priorität ist: Kommandozeilen-Flags, .env-Datei und schließlich bereits in der Umgebung definierte Variablen. Die Konfigurationsoptionen sind wie folgt:

  • -dev [device] Netzwerkgerät für die Erfassung (ENV: PDNS_DEV)
  • -fluentd_socket [socket] Pfad zum Fluentd-Unix-Socket für das Logging im Messagepack-Format (ENV: PDNS_FLUENTD_SOCKET)
  • -bpf [bpf filter] BPF-Filter für die Erfassung (Standard: port 53) (ENV: PDNS_BPF)
  • -pcap [file] zu verarbeitende PCAP-Datei (ENV: PDNS_PCAP_FILE)
  • -logfile [file] Logdatei für DNS-Abfragen (nur für kleine Bereitstellungen oder Debugging empfohlen) (ENV: PDNS_LOG_FILE)
  • -logMaxAge Maximales Alter einer Logdatei vor der Rotation in Tagen (Standard: 28) (ENV: PDNS_LOG_AGE)
  • -logMaxBackups Maximale Anzahl der nach der Rotation aufbewahrten Dateien (Standard: 3) (ENV: PDNS_LOG_BACKUP)
  • -logMaxSize Maximale Größe einer Logdatei vor der Rotation in MB (Standard: 100) (ENV: PDNS_LOG_SIZE)
  • -quiet DNS-Abfragen nicht an STDOUT loggen (ENV: PDNS_QUIET)
  • -debug Debug-Logging an STDOUT aktivieren (ENV: PDNS_DEBUG)
  • -gc_age [num] Alter, ab dem unvollständige Verbindungen aufgeräumt werden sollen (Standard: -1m) (ENV: PDNS_GC_AGE)
  • -gc_interval [num] Intervall, in dem die Speicherbereinigung für die Verbindungstabelle ausgeführt werden soll (Standard: 3m) (ENV: PDNS_GC_INTERVAL)
  • -kafka_brokers [brokers] Kommagetrennte Liste der Kafka-Broker (ENV: PDNS_KAFKA_PEERS)
  • -kafka_topic [topic] Kafka-Topic für das Logging (ENV: PDNS_KAFKA_TOPIC)
  • -cpuprofile [file] CPU-Profiling aktivieren (ENV: PDNS_PROFILE_FILE)
  • -numprocs [num] Anzahl der Goroutinen für die Paketdaten-Analyse (Standard: 8) (ENV: PDNS_THREADS)
  • -pfring PF_RING für die Paketerfassung verwenden (ENV: PDNS_PFRING)
  • -statsd_host Host und Port Ihres Statsd-Servers (z. B. localhost:8125) (ENV: PDNS_STATSD_HOST)
  • -statsd_interval Intervall in Sekunden zwischen den Sends an statsd (ENV: PDNS_STATSD_INTERVAL)
  • -statsd_prefix Metrikname-Präfix (standardmäßig gopassivedns) (ENV: PDNS_STATSD_PREFIX)
  • -snaplen [int] Die für den PCAP-Puffer verwendete SnapLen
  • -name Der Name dieses Sensors für Statistiken und Logmeldungen (standardmäßig Hostname) (ENV: PDNS_NAME)
  • -syslog_facility Syslog-Einrichtung (ENV: PDNS_SYSLOG_FACILITY)
  • -syslog_priority Syslog-Priorität (ENV: PDNS_SYSLOG_PRIORITY)

Sie müssen entweder -dev oder -pcap angeben.

Es gibt bekannte Probleme mit Goroutinen und dem Standard-Daemonisierungsprozess (https://github.com/golang/go/issues/227), daher empfehle ich dringend, eine der hier beschriebenen Methoden zu verwenden: http://stackoverflow.com/questions/10067295/how-to-start-a-go-program-as-a-daemon-in-ubuntu, um diesen Prozess mit Systemtools als Daemon auszuführen.

Wenn Sie sich für die Verwendung von Syslog-Logging entscheiden, verwenden wir golangs "log/syslog", das einen Unix-Socket benötigt, der zur Kommunikation mit Syslog an einem der folgenden Orte sein muss: /dev/log, /var/run/log oder /var/run/syslog.

Bereitstellungsleitfaden

Wo setze ich dies ein?

Sie haben 3 Möglichkeiten: Setzen Sie es auf Ihrem/n Resolver(n) oder auf Ihrem/n Gateway(s) oder beidem ein. Die Bereitstellung auf Ihren Resolvern ist gut, da Sie die IP-Adresse des Clients erhalten, der die ursprüngliche Anfrage gesendet hat. Sie können auch das vorgelagerte Bein der Anfrage (vom Resolver zum nächsten Resolver in der Kette) sehen, es sei denn, Sie passen Ihren BPF-Filter an, um dieses Bein zu ignorieren. Die Bereitstellung auf Ihren Gateways bedeutet, dass Sie das Bein Client -> interner Resolver nicht sehen, daher kann es schwierig sein, eine Anfrage einem bestimmten Client zuzuordnen. Andererseits sehen Sie Anfragen, die Ihre internen Resolver umgehen. Sie werden natürlich auch die Abfragen sehen, die vom Resolver zu welchem vorgelagerten Resolver auch immer gesendet werden. In einer idealen Welt würde ich dieses Tool auf jedem meiner internen Resolver und auf einem Tap an meinen Gateways einsetzen. Die internen Resolver hätten einen BPF-Filter, der das vorgelagerte Bein der Abfrage ignoriert, und das Gateway würde nichts ignorieren.

Was soll ich mit den Ergebnissen tun?

Im Moment würde ich empfehlen, Logstash zu verwenden, um die Logs an einen Elasticsearch-Cluster zu senden. Alle Logs sind JSON, daher sollte dies recht einfach sein. Ich würde auch die Verwendung von etwas wie HDFS für die Langzeitspeicherung und Bulk-Analyse vorschlagen. DNS-Abfragen sind eine erstaunliche Quelle interner Daten!

Bauen und installieren

  • Klonen Sie dieses Repository
  • Installieren Sie libpcap, libpcap-dev
  • 'go get'
  • 'go build -o gopassivedns' (das -o ist eigentlich nur Vorsicht, vorausgesetzt Sie haben das Repository geklont, sollten Sie es nicht benötigen)
  • 'cp gopassivedns /some/path/to/gopassivedns'
Tool herunterladen