Backport sÄrbarhet i RouterOS hotar hundratusentals enheter

Backport sÄrbarhet i RouterOS hotar hundratusentals enheter

Möjligheten att fjÀrrnedgradera enheter baserade pÄ RouterOS (Mikrotik) hotar hundratusentals nÀtverksenheter. SÄrbarheten Àr kopplad till förgiftning av DNS-cachen för Winbox-protokollet och möjliggör uppladdning av en förÄldrad (med ÄterstÀllning av lösenordet till "standard") eller modifierad firmware till enheten.

Backport sÄrbarhet i RouterOS hotar hundratusentals enheter

Detaljer om sÄrbarheten

RouterOS-terminalen stöder resolution-kommandot för att söka DNS.

Backport sÄrbarhet i RouterOS hotar hundratusentals enheter

Denna begÀran behandlas av en binÀr fil som heter resolver. Resolver Àr en av mÄnga binÀra filer som Àr kopplade till Winbox-protokollet i RouterOS. PÄ en hög nivÄ kan "meddelanden" som skickas till Winbox-porten routas till olika binÀra filer i RouterOS baserat pÄ en array-baserad numreringsschema.

Som standard Àr DNS-serverfunktionen avstÀngd i RouterOS.

Backport sÄrbarhet i RouterOS hotar hundratusentals enheter

Men Àven med DNS-serverfunktionen avstÀngd, stödjer routern sin egen DNS-cache.

Backport sÄrbarhet i RouterOS hotar hundratusentals enheter

NÀr vi gör en begÀran med winbox_dns_request, till exempel example.com, kommer routern att cacha resultatet.

Backport sÄrbarhet i RouterOS hotar hundratusentals enheter

Eftersom vi kan specificera den DNS-server som begÀran ska gÄ igenom Àr det trivalt att ange felaktiga adresser. Till exempel kan man konfigurera DNS-serverimplementationen av Filip Klaus, för att alltid svara med en A-post som innehÄller IP-adressen 192.168.88.250.

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("---- Svar:n", reply)
    return reply.pack()

Nu om man söker efter example.com med Winbox kan man se att routerns DNS-cache Àr förgiftad.

Backport sÄrbarhet i RouterOS hotar hundratusentals enheter

SjÀlvklart Àr förgiftning av example.com inte sÀrskilt anvÀndbart, eftersom routern faktiskt inte kommer att anvÀnda det. Men routern behöver kommunicera med upgrade.mikrotik.com, cloud.mikrotik.com, cloud2.mikrotik.com och download.mikrotik.com. Och tack vare en annan bugg finns det möjlighet att förgifta dem alla pÄ en gÄng.

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("---- Svar:n", reply)
    return reply.pack()

Routern begÀr ett tillstÄnd, men vi ger tillbaka fem. Routern cachar felaktigt alla dessa svar.

Backport sÄrbarhet i RouterOS hotar hundratusentals enheter

Det Àr uppenbart att denna attack ocksÄ Àr anvÀndbar om routern fungerar som DNS-server, eftersom den gör det möjligt att attackera routerns klienter.

Dessutom gör denna attack det möjligt att utnyttja en mer allvarlig sĂ„rbarhet: att genomföra en nedgradering eller bakĂ„tportering av versionen av RouterOS. Angriparen Ă„terskapar logiken för uppdateringsservern, inklusive changelog, och fĂ„r RouterOS att uppfatta en förĂ„ldrad (sĂ„rbar) version som aktuell. Gefaren hĂ€r ligger i att vid "uppdatering" av versionen Ă„terstĂ€lls administratörens lösenord till standardvĂ€rdet – en illavarslande kan fĂ„ tillgĂ„ng till systemet med ett tomt lösenord!

Spela video

Attacken fungerar helt, trots att författaren implementerar ytterligare flera vektorer, som ocksÄ inkluderar inbÀddning av en baksida i firmware, men det Àr redan en överflödig teknik och att anvÀnda den för illegitima ÀndamÄl Àr olagligt.

Skydd

En enkel avstÀngning av Winbox gör det möjligt att skydda sig mot dessa attacker. Trots bekvÀmligheten med administration via Winbox Àr det bÀttre att anvÀnda SSH-protokollet.

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster