Kamampuhan pikeun nurunkeun tingkat alat tina jarak jauh dumasar kana RouterOS (Mikrotik) nempatkeun ratusan rébu alat jaringan dina résiko. Kerentanan dikaitkeun sareng karacunan cache DNS tina protokol Winbox sareng ngamungkinkeun anjeun ngamuat jaman baheula (kalayan reset sandi standar) atanapi firmware anu dirobih kana alat.
Rincian kerentanan
Terminal RouterOS ngadukung paréntah ngabéréskeun pikeun milarian DNS.
Paménta ieu diurus ku binér anu disebut resolver. Resolver mangrupikeun salah sahiji seueur binér anu nyambung ka protokol Winbox RouterOS. Dina tingkat anu luhur, "pesen" anu dikirim ka port Winbox tiasa dialihkeun ka sababaraha binér dina RouterOS dumasar kana skéma panomeran dumasar-Asép Sunandar Sunarya.
Sacara standar, RouterOS ngagaduhan fitur pangladén DNS ditumpurkeun.
Sanajan kitu, sanajan fungsi server ditumpurkeun, router ngajaga cache DNS sorangan.
Nalika urang ngadamel pamundut nganggo winbox_dns_request contona conto. com, router bakal cache hasilna.
Kusabab urang tiasa netepkeun pangladén DNS anu kedah dipénta, ngalebetkeun alamat anu salah henteu penting. Salaku conto, anjeun tiasa ngonpigurasikeun palaksanaan server DNS tina
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()
Ayeuna upami anjeun milarian conto.com nganggo Winbox, anjeun tiasa ningali yén cache DNS router diracun.
Tangtosna, karacunan example.com henteu kapaké pisan sabab router henteu leres-leres ngagunakeunana. Nanging, router kedah ngaksés upgrade.mikrotik.com, cloud.mikrotik.com, cloud2.mikrotik.com sareng download.mikrotik.com. Sareng hatur nuhun kana kasalahan anu sanés, anjeun tiasa ngaracun aranjeunna sakaligus.
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 menta hiji idin, sarta kami masihan lima deui. Router henteu nyéépkeun sadaya réspon ieu kalayan leres.
Jelas, serangan ieu ogé kapaké upami router bertindak salaku server DNS, sabab ngamungkinkeun para klien tina router diserang.
Serangan ieu ogé ngamungkinkeun anjeun ngamangpaatkeun kerentanan anu langkung serius: downgrade atanapi backport versi RouterOS. Panyerang nyiptakeun deui logika server pembaruan, kalebet changelog, sareng maksa RouterOS pikeun nganggap versi anu luntur (rentan) salaku ayeuna. Bahaya di dieu aya dina kanyataan yén nalika versi "diropéa", kecap akses administrator direset kana nilai standar - panyerang tiasa asup kana sistem nganggo kecap konci kosong!
Serangan anu cukup jalan, sanajan kanyataan yén
panyalindungan
Ngan nganonaktipkeun Winbox ngamungkinkeun anjeun ngajaga diri tina serangan ieu. Sanajan genah administrasi via Winbox, eta leuwih hade migunakeun protokol SSH.
sumber: www.habr.com