Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
gopassivedns — नेटवर्क-आधारित निष्क्रिय DNS लॉगर जो लाइव ट्रैफिक या pcap फ़ाइलों से DNS क्वेरी कैप्चर और लॉग करता है, SIEM और खतरा खुफिया प्लेटफ़ॉर्म के साथ एकीकरण के लिए JSON आउटपुट करता है। | Kitploit
उपकरण/GitHubGitHub/phillipmartin/gopassivedns
पैकेट स्निफिंग और विश्लेषणजानकारी एकत्र करनानेटवर्क सुरक्षाखतरा खुफियाDNS विश्लेषण
GitHubphillipmartin/gopassivedns

gopassivedns

नेटवर्क-आधारित निष्क्रिय DNS लॉगर जो लाइव ट्रैफिक या pcap फ़ाइलों से DNS क्वेरी कैप्चर और लॉग करता है, SIEM और खतरा खुफिया प्लेटफ़ॉर्म के साथ एकीकरण के लिए JSON आउटपुट करता है।

रिपॉजिटरी देखें
12624667 महीने पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

Coverage Status Build Status

gopassivedns

गो में नेटवर्क-आधारित DNS लॉगिंग

सारांश

एक नेटवर्क-कैप्चर आधारित DNS लॉगर, जो https://github.com/gamelinux/passivedns से प्रेरित है। यह libpcap और पैकेट प्रोसेसिंग से निपटने के लिए gopacket का उपयोग करता है। यह JSON लॉग आउटपुट करता है। यह उन वातावरणों में उच्च मात्रा में क्वेरी कैप्चर से निपटने के लिए है जहाँ एक से लेकर सैकड़ों DNS रिज़ॉल्वर हों।

PassiveDNS (gamelinux) का उपयोग क्यों न करें?

यह एक अच्छा विकल्प है। मैंने इसे इसलिए बनाया क्योंकि मेरा मानना है कि बड़ी मात्रा में अविश्वसनीय डेटा को कई खराब दस्तावेजित किनारे के मामलों (edge cases) के साथ संसाधित करने जैसे कार्यों को मेमोरी भ्रष्टाचार-शैली के हमलों को रोकने के लिए एक प्रबंधित रनटाइम द्वारा नियंत्रित किया जाना चाहिए। मैंने कई संगठनों में PassiveDNS तैनात किया है, और मैंने gopassivedns को कुछ विशिष्ट कठिनाइयों को हल करने के लिए बनाया जो मैंने देखीं: मुझे बहुत सारे स्थानों को इंस्ट्रूमेंट करने की आवश्यकता थी, मुझे बहुत सारे लुकअप को संभालने के लिए स्टोरेज लेयर को स्केल करने की आवश्यकता थी, और मैं DNS के सभी किनारे के मामलों के आसपास अच्छी कवरेज वाला एक परीक्षण सूट चाहता था।

Bro (या कोई अन्य DNS लॉगिंग आईडीएस) का उपयोग क्यों न करें?

यह भी एक अच्छा विकल्प है। Bro जैसी प्रणालियाँ आमतौर पर नेटवर्क एग्रेस (network egresses) पर तैनात की जाती हैं, जिसका परिणाम यह होता है कि लुकअप का वास्तविक स्रोत आपके रिकर्सिव रिज़ॉल्वर के पीछे छिप जाता है। इसका मतलब है कि आपको आमतौर पर Bro को तैनात करना होता है और रिज़ॉल्वर क्वेरी लॉगिंग (यदि संभव हो) करनी होती है, और दोनों के लॉग को एक केंद्रीय लॉगिंग सिस्टम में एकीकृत करना होता है ताकि किसी लुकअप को क्लाइंट तक ट्रैक किया जा सके। gopassivedns को आपके रिज़ॉल्वर पर बिना किसी रिज़ॉल्वर कॉन्फ़िगरेशन परिवर्तन के और/या आपके नेटवर्क एग्रेस पर तैनात करने, एक विश्वसनीय प्रोटोकॉल के माध्यम से केंद्रीय रूप से लॉग करने और किसी भी लॉग सिस्टम में आसानी से पार्स करने के लिए डिज़ाइन किया गया था।

केवल रिज़ॉल्वर क्वेरी लॉगिंग का उपयोग क्यों न करें?

क्वेरी लॉगिंग के लिए रिज़ॉल्वर का समर्थन, जिसमें प्रश्न और उत्तर दोनों शामिल हैं, सबसे अच्छे रूप में खराब है। सबसे अधिक तैनात DNS सर्वरों में से एक, BIND, इसका बिल्कुल समर्थन नहीं करता है। अन्य, जैसे Windows DNS, में वास्तव में भयानक लॉग प्रारूप हैं। इसके अतिरिक्त, नेटवर्क-आधारित लॉगिंग आपके क्लाइंट से सीधे दूरस्थ सर्वर (जैसे Google DNS) को भेजे गए क्वेरी को पकड़ लेगी।

उपयोग

कॉन्फ़िगरेशन विकल्पों को पर्यावरण चर (environment variables), एक .env फ़ाइल में या कमांड लाइन पर निर्दिष्ट किया जा सकता है। प्राथमिकता कमांड लाइन फ़्लैग्स, .env फ़ाइल और अंत में पर्यावरण में पहले से परिभाषित चर है। कॉन्फ़िगरेशन विकल्प नीचे दिए गए हैं

  • -dev [device] कैप्चर के लिए नेटवर्क डिवाइस (ENV: PDNS_DEV)
  • -fluentd_socket [socket] मैसेजपैक प्रारूप में लॉगिंग के लिए उपयोग किए जाने वाले Fluentd यूनिक्स सॉकेट का पथ (ENV: PDNS_FLUENTD_SOCKET)
  • -bpf [bpf filter] कैप्चर के लिए BPF फ़िल्टर (डिफ़ॉल्ट: port 53) (ENV: PDNS_BPF)
  • -pcap [file] प्रक्रिया करने के लिए pcap फ़ाइल (ENV: PDNS_PCAP_FILE)
  • -logfile [file] DNS लुकअप के लिए लॉग फ़ाइल (केवल छोटी तैनाती या डीबगिंग के लिए सुझाया गया) (ENV: PDNS_LOG_FILE)
  • -logMaxAge रोटेशन से पहले लॉग फ़ाइल की अधिकतम आयु, दिनों में (डिफ़ॉल्ट: 28) (ENV: PDNS_LOG_AGE)
  • -logMaxBackups रोटेशन के बाद रखी गई फ़ाइलों की अधिकतम संख्या (डिफ़ॉल्ट: 3) (ENV: PDNS_LOG_BACKUP)
  • -logMaxSize रोटेशन से पहले लॉग फ़ाइल का अधिकतम आकार, MB में (डिफ़ॉल्ट: 100) (ENV: PDNS_LOG_SIZE)
  • -quiet DNS लुकअप को STDOUT पर लॉग न करें (ENV: PDNS_QUIET)
  • -debug STDOUT पर डीबग लॉगिंग सक्षम करें (ENV: PDNS_DEBUG)
  • -gc_age [num] वह आयु जिस पर अधूरे कनेक्शनों को कचरा संग्रहित किया जाना चाहिए (डिफ़ॉल्ट: -1m) (ENV: PDNS_GC_AGE)
  • -gc_interval [num] अंतराल जिस पर कनेक्शन तालिका पर GC चलना चाहिए (डिफ़ॉल्ट: 3m) (ENV: PDNS_GC_INTERVAL)
  • -kafka_brokers [brokers] काफ़्का ब्रोकरों की अल्पविराम-पृथक सूची (ENV: PDNS_KAFKA_PEERS)
  • -kafka_topic [topic] लॉगिंग के लिए काफ़्का विषय (ENV: PDNS_KAFKA_TOPIC)
  • -cpuprofile [file] CPU प्रोफाइलिंग सक्षम करें (ENV: PDNS_PROFILE_FILE)
  • -numprocs [num] पैकेट डेटा पार्स करने के लिए उपयोग किए जाने वाले goroutines की संख्या (डिफ़ॉल्ट: 8) (ENV: PDNS_THREADS)
  • -pfring पैकेट कैप्चर के लिए PF_RING का उपयोग करें (ENV: PDNS_PFRING)
  • -statsd_host आपके statsd सर्वर का होस्ट और पोर्ट (जैसे localhost:8125) (ENV: PDNS_STATSD_HOST)
  • -statsd_interval statsd को भेजने के बीच का अंतराल, सेकंड में (ENV: PDNS_STATSD_INTERVAL)
  • -statsd_prefix उपयोग करने के लिए मीट्रिक नाम उपसर्ग (डिफ़ॉल्ट: gopassivedns) (ENV: PDNS_STATSD_PREFIX)
  • -snaplen [int] pcap बफर के लिए उपयोग किया जाने वाला snaplen
  • -name सांख्यिकी और लॉग संदेशों में उपयोग के लिए इस सेंसर का नाम (डिफ़ॉल्ट रूप से होस्टनाम) (ENV: PDNS_NAME)
  • -syslog_facility syslog सुविधा (ENV: PDNS_SYSLOG_FACILITY)
  • -syslog_priority syslog प्राथमिकता (ENV: PDNS_SYSLOG_PRIORITY)

आपको -dev या -pcap में से किसी एक की आपूर्ति करनी होगी।

goroutines और मानक daemonize प्रक्रिया (https://github.com/golang/go/issues/227) के साथ ज्ञात समस्याएँ हैं, इसलिए मैं दृढ़ता से अनुशंसा करता हूँ कि आप इस प्रक्रिया को सिस्टम टूल्स का उपयोग करके डेमॉन के रूप में चलाने के लिए यहाँ वर्णित विधियों में से एक का उपयोग करें: http://stackoverflow.com/questions/10067295/how-to-start-a-go-program-as-a-daemon-in-ubuntu

यदि आप syslog लॉगिंग का उपयोग करना चुनते हैं, तो हम golang के "log/syslog" का उपयोग करते हैं, जिसके लिए syslog के साथ संचार करने के लिए उपयोग किए जाने वाले यूनिक्स सॉकेट को /dev/log, /var/run/log या /var/run/syslog में से किसी एक पर होना आवश्यक है।

तैनाती गाइड

मैं इसे कहाँ तैनात करूँ?

आपके पास 3 विकल्प हैं: इसे अपने रिज़ॉल्वर पर तैनात करें या अपने गेटवे पर या दोनों पर। अपने रिज़ॉल्वर पर तैनात करना अच्छा है क्योंकि आपको उस क्लाइंट का IP पता मिलेगा जिसने मूल अनुरोध भेजा था। आप अनुरोध के अपस्ट्रीम चरण (रिज़ॉल्वर से श्रृंखला में अगले रिज़ॉल्वर तक) भी देख सकते हैं, जब तक आप उस चरण को अनदेखा करने के लिए अपने BPF फ़िल्टर को ट्यून नहीं करते। अपने गेटवे पर तैनात करने का मतलब है कि आप क्लाइंट -> आंतरिक रिज़ॉल्वर चरण नहीं देखते हैं, इसलिए किसी अनुरोध को किसी विशिष्ट क्लाइंट से जोड़ना कठिन हो सकता है। दूसरी ओर, आप उन अनुरोधों को देखेंगे जो आपके आंतरिक रिज़ॉल्वर को बायपास करते हैं। बेशक, आप रिज़ॉल्वर से उसके द्वारा उपयोग किए जाने वाले किसी भी अपस्ट्रीम रिज़ॉल्वर को भेजे गए क्वेरी भी देखेंगे। एक आदर्श दुनिया में, मैं इस उपकरण को अपने प्रत्येक आंतरिक रिज़ॉल्वर पर और अपने गेटवे पर एक टैप (tap) पर तैनात करूँगा। आंतरिक रिज़ॉल्वर में एक BPF फ़िल्टर होगा जो क्वेरी के अपस्ट्रीम चरण को अनदेखा करता है, और गेटवे कुछ भी अनदेखा नहीं करेगा।

मैं परिणामों के साथ क्या करूँ?

अभी, मैं लॉग को elasticsearch क्लस्टर में भेजने के लिए logstash का उपयोग करने की सलाह दूँगा। सभी लॉग JSON हैं, इसलिए यह काफी आसान होना चाहिए। मैं दीर्घकालिक भंडारण और सामूहिक विश्लेषण के लिए HDFS जैसी किसी चीज़ का उपयोग करने का भी सुझाव दूँगा। DNS क्वेरी आंतरिक डेटा का एक अद्भुत स्रोत हैं!

बिल्ड और इंस्टॉल करें

  • इस रेपो को क्लोन करें
  • libpcap, libpcap-dev इंस्टॉल करें
  • 'go get'
  • 'go build -o gopassivedns' (-o वास्तव में केवल सावधानी के लिए है, यह मानते हुए कि आपने रेपो क्लोन किया है, आपको इसकी आवश्यकता नहीं होनी चाहिए)
  • 'cp gopassivedns /some/path/to/gopassivedns'
टूल डाउनलोड करें