Backport-sårbarhed i RouterOS sætter hundredtusindvis af enheder i fare

Backport-sårbarhed i RouterOS sætter hundredtusindvis af enheder i fare

Muligheden for at fjernnedgradere enheder baseret på RouterOS (Mikrotik) sætter hundredtusindvis af netværksenheder i fare. Sårbarheden er forbundet med forgiftning af DNS-cachen i Winbox-protokollen og giver dig mulighed for at indlæse forældet (med en standardnulstilling af adgangskode) eller ændret firmware på enheden.

Backport-sårbarhed i RouterOS sætter hundredtusindvis af enheder i fare

Sårbarhedsdetaljer

RouterOS-terminalen understøtter resolve-kommandoen til DNS-opslag.

Backport-sårbarhed i RouterOS sætter hundredtusindvis af enheder i fare

Denne anmodning håndteres af en binær kaldet resolver. Resolver er en af ​​mange binære filer, der forbinder til RouterOS's Winbox-protokol. På et højt niveau kan "meddelelser", der sendes til Winbox-porten, dirigeres til forskellige binære filer i RouterOS baseret på et array-baseret nummereringsskema.

Som standard har RouterOS DNS-serverfunktionen deaktiveret.

Backport-sårbarhed i RouterOS sætter hundredtusindvis af enheder i fare

Men selv når serverfunktionen er deaktiveret, bevarer routeren sin egen DNS-cache.

Backport-sårbarhed i RouterOS sætter hundredtusindvis af enheder i fare

Når vi laver en anmodning ved at bruge winbox_dns_request for eksempel eksempel.com, cachelagrer routeren resultatet.

Backport-sårbarhed i RouterOS sætter hundredtusindvis af enheder i fare

Da vi kan angive den DNS-server, som anmodningen skal gå igennem, er det trivielt at indtaste forkerte adresser. For eksempel kan du konfigurere en DNS-serverimplementering fra Philip Klausaltid at svare med en A-record indeholdende 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()

Hvis du nu søger på example.com ved hjælp af Winbox, kan du se, at routerens DNS-cache er forgiftet.

Backport-sårbarhed i RouterOS sætter hundredtusindvis af enheder i fare

Forgiftning eksempel.com er selvfølgelig ikke særlig nyttig, da routeren faktisk ikke vil bruge den. Routeren skal dog have adgang til upgrade.mikrotik.com, cloud.mikrotik.com, cloud2.mikrotik.com og download.mikrotik.com. Og takket være en anden fejl er det muligt at forgifte dem alle på én 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()

Routeren anmoder om én tilladelse, og vi giver fem tilbage. Routeren cacher ikke alle disse svar korrekt.

Backport-sårbarhed i RouterOS sætter hundredtusindvis af enheder i fare

Dette angreb er naturligvis også nyttigt, hvis routeren fungerer som en DNS-server, da det tillader, at routerens klienter bliver angrebet.

Dette angreb giver dig også mulighed for at udnytte en mere alvorlig sårbarhed: nedgradere eller backportere versionen af ​​RouterOS. Angriberen genskaber logikken i opdateringsserveren, inklusive ændringsloggen, og tvinger RouterOS til at opfatte den forældede (sårbare) version som aktuel. Faren her ligger i, at når versionen er "opdateret", nulstilles administratoradgangskoden til standardværdien - en angriber kan logge ind på systemet med en tom adgangskode!


Angrebet fungerer ganske godt, på trods af det forfatter implementerer flere vektorer, inklusive dem, der er relateret til indlejring af en bagdør i firmwaren, men dette er allerede en overflødig teknik, og dens brug til illegitime formål er ulovlig.

beskyttelse

Blot at deaktivere Winbox giver dig mulighed for at beskytte dig selv mod disse angreb. På trods af bekvemmeligheden ved administration via Winbox er det bedre at bruge SSH-protokollen.

Kilde: www.habr.com

Tilføj en kommentar