
एक नियमित अभिव्यक्ति-आधारित पायथन MITM DNS सर्वर जो DNS रीबाइंडिंग हमलों के लिए समर्थन रखता है।
अपडेट 4/14/2020 - Python 2 समर्थन हटाया गया और कोड Python3 में बदल दिया गया
अब राउंड-रॉबिन और बेहतर विकल्पों के साथ!
बग्स: @crypt0s - ट्विटर
[email protected] - ईमेल
एक पायथन रेगुलर एक्सप्रेशन-आधारित DNS सर्वर!
USAGE:
./fakedns.py [-h] -c Config path [-i interface IP address] [--rebind]
dns.conf को निम्नलिखित तरीके से सेट किया जाना चाहिए:
[RECORD TYPE CODE] [python regular expression] [answer] [rebind answer]
उत्तर एक ip पता या स्ट्रिंग self हो सकता है,
self सिंटैक्स शुगर आपकी वर्तमान मशीन के स्थानीय ip पते में अनुवादित हो जाएगा, जैसे 192.168.1.100।
यदि कोई मिलान नहीं होता है, तो DNS सर्वर आपकी स्थानीय मशीन पर जो भी DNS सर्वर सेट है, उसका उपयोग करके अनुरोध को हल करने का प्रयास करेगा और अनुरोधकर्ता की ओर से उस सर्वर पर अनुरोध को प्रॉक्सी करेगा।
- A
- TXT
- AAAA
- PTR
- SOA
- MX
- CNAME
- DNS रिबाइंडिंग का समर्थन करता है
- राउंड-रॉबिन का समर्थन करता है
राउंड-रॉबिन नियम लागू किए गए हैं। हर बार जब कोई क्लाइंट किसी मिलान नियम का अनुरोध करता है, तो FakeDNS नियम में प्रदान की गई IP की सूची में से अगला IP प्रदान करेगा।
IP की सूची को अल्पविराम से अलग किया जाता है।
उदाहरण के लिए:
A robin.net 1.2.3.4,1.1.1.1,2.2.2.2
यह robin.net के लिए एक राउंड-रॉबिन नियम है जो 1.2.3.4, 1.1.1.1, और 2.2.2.2 की ओर इशारा करते हुए प्रतिक्रियाएँ प्रदान करेगा, और हर बार जब कोई क्लाइंट robin.net प्रविष्टि के लिए अनुरोध करता है तो उस क्रम में पुनरावृत्ति करेगा।
नोट : ये IP क्लाइंट को प्रतिक्रिया में सूची के रूप में शामिल नहीं किए जाते हैं - उन्हें प्रतिक्रिया में केवल एक ही IP मिलता है (इसे बाद में बदला जा सकता है)
FakeDNS रिबाइंडिंग नियमों का समर्थन करता है, जिसका मूल रूप से अर्थ है कि सर्वर एक क्लाइंट से एक डोमेन के लिए एक निश्चित संख्या में अनुरोध स्वीकार करता है जब तक कि एक सीमा (डिफ़ॉल्ट 1 अनुरोध) न हो जाए और फिर IP पते को दूसरे में बदल देता है।
उदाहरण के लिए:
A rebind.net 1.1.1.1 10%4.5.6.7
इसका अर्थ है कि हमारे पास rebind.net के लिए एक A रिकॉर्ड है जो पहले 10 प्रयासों के लिए 1.1.1.1 का मूल्यांकन करता है। 11वें अनुरोध पर, जो क्लाइंट पहले ही 10 अनुरोध कर चुका है, FakeDNS दूसरा ip, 4.5.6.7 प्रदान करना शुरू कर देता है।
आप यहाँ पतों की एक सूची का उपयोग कर सकते हैं और FakeDNS उन्हें आपके लिए राउंड-रॉबिन करेगा, ठीक वैसे ही जैसे "नियमित" नियम में।
(अतिरिक्त चरणों के बिना केवल लोकलहोस्ट)
मैंने Docker में FakeDNS का परीक्षण/विकास करने में बहुत सफलता पाई है क्योंकि यह आधुनिक Ubuntu इंस्टॉल पर मूल रूप से चलाने की तुलना में आसान है, जिसमें पहले से ही पोर्ट 53 पर अपनी DNS सेवाएँ चल रही हैं।
यदि आप इसे आज़माना चाहते हैं, तो आप इन चरणों का पालन करके बिना अधिक मेहनत के कर सकते हैं:
यह मानते हुए कि आप FakeDns निर्देशिका के अंदर हैं: sudo docker run --interactive --tty --volume \pwd`:/opt/FakeDns -p 5353:53/udp python:3.8 /opt/FakeDns/fakedns.py -c /opt/FakeDns/dns.conf.example। और परीक्षण करने के लिए आप nslookup -port=5353 testrule.test 127.0.0.1चला सकते हैं जो आपके पहले अनुरोध पर1.1.1.1` लौटाना चाहिए
या, यदि आप docker-compose का उपयोग करना चाहते हैं, तो बस docker-compose up चलाएँ और उसी परीक्षण का उपयोग करें जैसा ऊपर बताया गया है।