Backport-sårbarhet i RouterOS setter hundretusenvis av enheter i fare

Backport-sårbarhet i RouterOS setter hundretusenvis av enheter i fare

Muligheten til å eksternt nedgradere enheter basert på RouterOS (Mikrotik) setter hundretusenvis av nettverksenheter i fare. Sårbarheten er assosiert med forgiftning av DNS-cachen til Winbox-protokollen og lar deg laste utdatert (med standard tilbakestilling av passord) eller modifisert fastvare på enheten.

Backport-sårbarhet i RouterOS setter hundretusenvis av enheter i fare

Sårbarhetsdetaljer

RouterOS-terminalen støtter resolve-kommandoen for DNS-oppslag.

Backport-sårbarhet i RouterOS setter hundretusenvis av enheter i fare

Denne forespørselen håndteres av en binær kalt resolver. Resolver er en av mange binære filer som kobles til RouterOS sin Winbox-protokoll. På et høyt nivå kan "meldinger" sendt til Winbox-porten rutes til forskjellige binærfiler i RouterOS basert på et array-basert nummereringsskjema.

Som standard har RouterOS DNS-serverfunksjonen deaktivert.

Backport-sårbarhet i RouterOS setter hundretusenvis av enheter i fare

Men selv når serverfunksjonen er deaktivert, opprettholder ruteren sin egen DNS-cache.

Backport-sårbarhet i RouterOS setter hundretusenvis av enheter i fare

Når vi gjør en forespørsel ved å bruke winbox_dns_request for eksempel example.com, vil ruteren cache resultatet.

Backport-sårbarhet i RouterOS setter hundretusenvis av enheter i fare

Siden vi kan spesifisere DNS-serveren som forespørselen skal gå gjennom, er det trivielt å angi feil adresser. For eksempel kan du konfigurere en DNS-serverimplementering fra Philip Klauså alltid svare med en A-post som inneholder 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("---- Reply:n", reply)
    return reply.pack()

Nå hvis du søker for eksempel.com ved hjelp av Winbox, kan du se at ruterens DNS-cache er forgiftet.

Backport-sårbarhet i RouterOS setter hundretusenvis av enheter i fare

Selvfølgelig er poisoning example.com ikke veldig nyttig siden ruteren faktisk ikke vil bruke den. Ruteren må imidlertid ha tilgang til upgrade.mikrotik.com, cloud.mikrotik.com, cloud2.mikrotik.com og download.mikrotik.com. Og takket være en annen feil, er det mulig å forgifte dem alle på en gang.

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()

Ruteren ber om én tillatelse, og vi gir fem tilbake. Ruteren cacher ikke alle disse svarene riktig.

Backport-sårbarhet i RouterOS setter hundretusenvis av enheter i fare

Selvfølgelig er dette angrepet også nyttig hvis ruteren fungerer som en DNS-server, siden det lar klienter til ruteren bli angrepet.

Dette angrepet lar deg også utnytte en mer alvorlig sårbarhet: nedgrader eller backporter versjonen av RouterOS. Angriperen gjenskaper logikken til oppdateringsserveren, inkludert endringsloggen, og tvinger RouterOS til å oppfatte den utdaterte (sårbare) versjonen som gjeldende. Faren her ligger i det faktum at når versjonen er "oppdatert", tilbakestilles administratorpassordet til standardverdien - en angriper kan logge på systemet med et tomt passord!


Angrepet fungerer ganske bra, til tross for det forfatteren implementerer flere vektorer, inkludert de som er relatert til bygge inn en bakdør i fastvaren, men dette er allerede en overflødig teknikk, og bruken av den til illegitime formål er ulovlig.

beskyttelse

Bare å deaktivere Winbox lar deg beskytte deg mot disse angrepene. Til tross for bekvemmeligheten av administrasjon via Winbox, er det bedre å bruke SSH-protokollen.

Kilde: www.habr.com

Legg til en kommentar