
PolarDNS एक विशेष प्राधिकृत DNS सर्वर है जो पैनेट्रेशन परीक्षण और भेद्यता अनुसंधान के लिए उपयुक्त है।
PolarDNS एक विशेष प्राधिकृत DNS सर्वर है जो Python 3.x में लिखा गया है, जिसे मूल रूप से सर्वर-पक्ष से DNS पुनरावर्ती समाधानकर्ताओं के सुरक्षा परीक्षण के लिए एक उपकरण के रूप में विकसित किया गया था।
_
PolarDNS का उपयोग निम्नलिखित के परीक्षण के लिए किया जा सकता है:
यह UDP और TCP दोनों प्रोटोकॉल का समर्थन करता है, और यह संचालक को DNS प्रोटोकॉल परत पर पूर्ण नियंत्रण देता है।
PolarDNS सर्वर कई प्रकार की गैर-मानक और गैर-अनुपालन DNS प्रतिक्रियाएँ उत्पन्न कर सकता है, जो RFC विशिष्टताओं का उल्लंघन करती हैं, जिसमें अत्यधिक असामान्य और विकृत DNS प्रतिक्रियाएँ शामिल हैं।
यह निम्नलिखित के लिए उपयोगी हो सकता है:
PolarDNS को स्थापित करने के तीन उपलब्ध तरीके हैं।
PolarDNS को Python 3.11 या नए संस्करण की आवश्यकता है और इसकी कोई अतिरिक्त निर्भरता नहीं है।
PolarDNS को स्थापित करने और चलाने का यह सबसे आसान तरीका है:
pip install polardns
polardns
आप रिपॉजिटरी को क्लोन करके सीधे PolarDNS चला सकते हैं:
git clone https://github.com/oryxlabs/PolarDNS.git
cd PolarDNS
python polardns.py
यह विधि अनुशंसित है यदि आप कोड को डीबग या संशोधित करने, या नई सुविधाएँ जोड़ने की योजना बनाते हैं।
आप Docker कंटेनर में भी PolarDNS चला सकते हैं:
docker run -p 53:53/tcp -p 53:53/udp oryxlabs/polardns
PolarDNS सर्वर polardns/polardns.toml कॉन्फ़िगरेशन फ़ाइल के माध्यम से कॉन्फ़िगर करने योग्य है।
PolarDNS प्रारंभ करने पर, आपको निम्नलिखित के समान आउटपुट देखना चाहिए:
python polardns.py
1741599804.9039893 | PolarDNS v1.6.1 server starting up
1741599804.9039893 | Using '/path/to/your/polardns/polardns.toml' config file
1741599804.9039893 | Starting listener at tcp://0.0.0.0:53
1741599804.9039893 | Starting listener at udp://0.0.0.0:53
यह इंगित करता है कि सर्वर चालू और चल रहा है।
डिफ़ॉल्ट रूप से, सर्वर सभी इंटरफ़ेस पर UDP और TCP पोर्ट 53 (0.0.0.0:53) पर सुनना शुरू करता है, DNS प्रश्नों का उत्तर देने के लिए तैयार होता है।
आप निम्नलिखित नमूना प्रश्न पूछकर स्थानीय रूप से इसका परीक्षण कर सकते हैं, जो हमेशा कुछ न कुछ हल करना चाहिए।
UDP मोड में पूछें:
dig always.yourdomain.com @127.0.0.1
TCP मोड में पूछें:
dig always.yourdomain.com @127.0.0.1 +tcp
आपको 2.3.4.5 IP पते के साथ एक A रिकॉर्ड प्राप्त करना चाहिए, ठीक इस स्क्रीनशॉट की तरह:
यह इंगित करता है कि सर्वर ठीक से काम कर रहा है।
PolarDNS सर्वर से कुछ हल करने के लिए कहकर, आप मूल रूप से उसे निर्देश दे रहे हैं कि उसे आपको कैसे प्रतिक्रिया देनी चाहिए। इसका मतलब है कि आप (क्लाइंट) PolarDNS सर्वर को बताते हैं कि उसे आपके लिए किस प्रकार की प्रतिक्रिया उत्पन्न करनी चाहिए।
उदाहरण के लिए, निम्नलिखित प्रश्न पर विचार करें:
dig always.ttl2000000000.slp1500.yourdomain.com @127.0.0.1
आपको फिर से 2.3.4.5 IP पते के साथ एक A रिकॉर्ड प्राप्त करना चाहिए, लेकिन इस बार TTL मान 2,000,000,000 (63.4 वर्ष) और 1.5 सेकंड की देरी के बाद:
उपरोक्त उदाहरण में, हमने always मूल सुविधा (जो हमेशा कुछ न कुछ हल करती है) का उपयोग किया है, और TTL मान को समायोजित करने के लिए ttl संशोधक तथा प्रतिक्रिया भेजने से पहले प्रतीक्षा करने के लिए slp संशोधक को संयोजित किया है।
PolarDNS में निम्नलिखित मुख्य कार्यक्षमताएँ हैं:
वर्तमान में 70 से अधिक विभिन्न सुविधाएँ और 19 प्रतिक्रिया संशोधक लागू किए गए हैं। विभिन्न सुविधाओं का उपयोग करके और उन्हें विभिन्न प्रतिक्रिया संशोधकों के साथ संयोजित करके, किसी दी गई प्रतिक्रिया के अनगिनत रूप उत्पन्न करना संभव है।
सभी लागू सुविधाओं और प्रतिक्रिया संशोधकों का शामिल कैटलॉग देखें।
यह PolarDNS को अत्यधिक असामान्य, असामान्य और यहाँ तक कि विकृत DNS प्रतिक्रियाएँ उत्पन्न करने की क्षमता देता है, जिससे संचालक यह देख सकता है कि प्राप्त करने वाला पक्ष ऐसी स्थितियों को कैसे संभालता है और क्या प्राप्त करने वाला पक्ष तकनीकी रूप से मजबूत और परिपक्व है।
PolarDNS द्वारा उत्पन्न की जा सकने वाली DNS प्रतिक्रियाओं के कुछ उदाहरणों में शामिल हैं:
ये विभिन्न भेद्यताओं की खोज का कारण बन सकते हैं जैसे:
अधिक विस्तार, कई और उदाहरण और उपयोग-मामलों के लिए BlackHat MEA 2023 प्रस्तुतियाँ (BONUS स्लाइड्स सहित) देखें।
पुनरावर्ती DNS सर्वरों का परीक्षण शुरू करने के लिए आपको जो कुछ चाहिए, उसका एक उच्च-स्तरीय अवलोकन यहाँ दिया गया है।
example123.com।polardns/polardns.toml कॉन्फ़िगरेशन फ़ाइल संपादित करें और अपने डोमेन नाम और नेमसर्वर IP पतों को तदनुसार बदलें - दोनों पर समान कॉन्फ़िगरेशन।अब आपका बुनियादी ढाँचा आपकी पसंद के किसी भी पुनरावर्ती DNS समाधानकर्ता के परीक्षण के लिए तैयार होना चाहिए।
किसी लक्ष्य DNS पुनरावर्ती समाधानकर्ता का परीक्षण शुरू करने के लिए, आपको अपने प्रश्नों को लक्ष्य DNS समाधानकर्ता पर लक्षित करना होगा, उदा.
dig always.example123.com @<TARGET-RESOLVER-IP>
उदाहरण के लिए, CloudFlare सार्वजनिक DNS का परीक्षण करने के लिए:
dig always.example123.com @1.1.1.1
समाधान के दौरान, लक्ष्य DNS समाधानकर्ता आपके प्रश्न को हल करने के लिए आपके प्राधिकृत PolarDNS नेमसर्वर (आपके example123.com परीक्षण डोमेन का प्रबंधन) से संपर्क करेगा।
आपके PolarDNS सर्वरों में से एक लक्ष्य DNS समाधानकर्ता को उत्तर देगा। समाधानकर्ता PolarDNS से प्रतिक्रिया प्राप्त करेगा, पार्स करेगा और संसाधित करेगा। उसके बाद, वह अंतिम उत्तर आपको (क्लाइंट) लौटाएगा।
यहाँ परीक्षण प्रक्रिया का एक दृश्य अवलोकन दिया गया है:

DNS समाधानकर्ता को अपने example123.com डोमेन के अंतर्गत विभिन्न उपडोमेन हल करने का निर्देश देकर, आप DNS समाधानकर्ता के व्यवहार का प्रभावी ढंग से परीक्षण कर सकते हैं और देख सकते हैं कि वह विभिन्न अप्रत्याशित स्थितियों (प्रतिक्रियाओं) को कैसे संभालता है।
उदाहरण के लिए, यह कैसे संभालता है जब उसे कोई विकृत DNS प्रतिक्रिया, एक इंजेक्ट किया गया रिकॉर्ड, या अवैध वर्णों वाला रिकॉर्ड प्राप्त होता है, और अंततः वह आपको, क्लाइंट को किस प्रकार का उत्तर भेजता है?
PolarDNS को एक व्यापक एंड-टू-एंड (E2E) DNS सर्वर परीक्षण सूट चलाने के लिए विभिन्न DNS समाधानकर्ताओं के साथ एकीकृत किया जा सकता है।
यह एकीकरण GitHub Actions द्वारा संचालित है, जिसमें निम्नलिखित छह DNS समाधानकर्ताओं के लिए संदर्भ टेम्पलेट (वर्कफ़्लो) वर्तमान में उपलब्ध हैं:
जब कोई GitHub Action ट्रिगर होता है (जैसे, कमिट पर या मैन्युअल रूप से), वर्कफ़्लो निम्नलिखित चरण करते हैं:
अपने स्वयं के E2E परीक्षण जोड़ने के लिए, बस उन्हें test-e2e/ निर्देशिका में रखें।
पूर्ण-विशेषताओं वाले DNS सर्वर E2E परीक्षण सूट की तलाश है? [email protected] पर संपर्क करें।
PolarDNS में नई सुविधाएँ जोड़ना वास्तव में नए DNS मुद्दों की खोज के लिए आवश्यक है। और PolarDNS के साथ, आप इसे अपेक्षाकृत आसानी से कर सकते हैं।
PolarDNS आपको बिना अपना स्वयं का DNS सर्वर बनाए, जल्दी से एक नई सुविधा जोड़ने, अपने विचारों को आज़माने, या PoC विकसित करने की अनुमति देता है। आपको बस Python कोड को समझने की क्षमता और DNS प्रोटोकॉल के साथ प्रयोग करने की जिज्ञासा चाहिए।
आरंभ करने के लिए एक विस्तृत, चरण-दर-चरण योगदान मार्गदर्शिका है। वहाँ, आप न केवल नई सुविधाएँ जोड़ने का तरीका पाएंगे, बल्कि PolarDNS को डीबग करने, मुद्दे प्रस्तुत करने, विचार साझा करने और बहुत कुछ करने का तरीका भी पाएंगे।
यहाँ कुछ उत्कृष्ट संसाधन हैं जो PolarDNS के साथ खेलते समय उपयोगी हैं।
DNS प्रोटोकॉल से संबंधित लिंक:
DNS सर्वर:
PolarDNS में योगदान देने वाले सभी लोगों का धन्यवाद! ❤️