nrk.no

Denne lille dingsen kan låse opp bilen din

Kategori: Sikkerhet

Denne lille datamaskinen koster $30 å bygge, og er i stand til å låse opp de fleste moderne biler. Foto: Samy Kamkar.

Samy Kamkar har utviklet en liten maskin som kan låse opp de fleste moderne biler med et enkelt tastetrykk.

Vi er på DEFCON, verdens største hackerkonferanse, og et av de store temaene i år er bilsikkerhet.

Etter at det for noen uker siden ble avslørt at nyere biler fra Fiat Chrysler-konsernet kan hackes over nettet, venter DEFCONs deltakere spent på hva som blir den neste avsløringen.

Samy Kamkar, et navn mange kanskje kjenner igjen fra MySpace-viruset Samy, har nå laget en liten dings som er i stand til å låse opp de fleste moderne biler.

For å forstå hvordan han gjør det, er det nødvendig å ha litt bakgrunnskunnskap om hva som skjer når du trykker på “lås opp”-knappen på bilnøkkelen din. Heng på de neste fem avsnittene:

Bilen og bilnøkkelen din kommuniserer over en ganske lav radiofrekvens, i Europa går dette vanligvis på 433 Mhz-båndet. Når du trykker på knappen på nøkkelen, sender nøkkelen en kode til bilen. De fleste bilprodusentene benytter seg av rullerende koder, som ikke er så fryktelig ulikt hvordan BankID fungerer.

Hver gang du trykker på nøkkelen, sender den en kode som er ulik den forrige. Bilen og nøkkelen er programmert med en felles kodereferanse som gjør det mulig å for bilen å verifisere at tallkoden som sendes, faktisk kommer fra riktig nøkkel. Når denne transaksjonen har funnet sted, er den sendte koden oppbrukt – hvis den sendes på nytt, blir den avslått av bilen.

I sin presentasjon på DEFCON forklarer Samy Kamkar hvordan lett tilgjengelige produkter lar deg åpne de fleste moderne biler. Foto: Henrik Lied/NRKbeta
I sin presentasjon på DEFCON forklarer Samy Kamkar hvordan lett tilgjengelige produkter lar deg åpne de fleste moderne biler. Foto: Henrik Lied/NRKbeta

En måte man enkelt kan omgå denne sikkerhetsbarrieren på, er å “ta opp” signalet fra nøkkelen mens bilen er utenfor rekkevidde. Dette gjøres ved å bruke en programvare-definert radio (software defined radio), som er en radio som er i stand til å lytte på en vilkårlig radiofrekvens. Hvis man da stiller denne radioen inn på nøkkelens frekvens, og trykker på nøkkelen, har man i praksis tatt opp koden som kreves for å låse opp bilen.

Mange av disse radioene, som for eksempel HackRF, er to-veis, og er dermed i stand til å også sende radiosignaler.

NRKbeta testet dette tidligere i år på redaktør Marius Arnesens Volkswagen Caddy. Marius trykket på nøkkelen i kontorlokalet, og undertegnede lyttet på frekvensen med en HackRF. Bilen hadde dermed ikke fått med seg koden, som betyr at den fortsatt var gyldig. Etterpå tok vi med oss HackRF-radioen og en datamaskin i nærheten av bilen, og spilte av koden vi tidligere hadde tatt opp. Og resultatet? Bilen låste seg selvfølgelig opp.

NRKbeta hacket seg inn i bilen til redaktør Marius Arnesen ved å ta opp kodesignalet fra bilnøkkelen.
NRKbeta hacket seg inn i bilen til redaktør Marius Arnesen ved å ta opp kodesignalet fra bilnøkkelen.

Og det er nettopp denne svakheten Samy Kamkar utnytter med sin dings, som heter RollJam. Det geniale bak RollJam er at den inneholder to radioer: Den ene sender et støysignal, som gjør at bilen ikke mottar koden fra nøkkelen, selv om den er innenfor rekkevidde. Den andre radioen filtrerer bort støyen til den første radioen, og plukker opp kodesignalet sendt fra nøkkelen.

Og det er nok ganske konvensjonell menneskelig adferd å trykke på nøkkelen én gang til hvis bilen ikke låste seg opp ved første trykk. Da slår RollJam inn: Når RollJam merker at det sendes en ny kode, sender RollJam den første koden videre til bilen, og lagrer den siste.

Dette gjør RollJam for å omgå en sikkerhetsbarriere i nøkkelsystemet, som invaliderer alle eldre koder når den har mottatt en ny.

I sitt foredrag her på DEFCON sier Samy Kamkar at han har testet RollJam på en rekke biler, og hevder at produktet tilsynelatende fungerer på mer eller mindre samtlige moderne biler.

Kamkar har ingen planer om å frigi RollJam som et kommersielt produkt, men sier at delene for å bygge enheten koster rundt 35 amerikanske dollar, eller 300 kroner. Oppskriften ligger fritt tilgjengelig på nettet.

27 kommentarer

  1. Jeg prøvde å søke på nettet etter Samy Kamkar Roll Jam, og fant for ut at dette er journalist-mat ;D
    De tre første sidene var kun treff fra media-sider som alle skrev så og si det samme…

    Uansett så har dette vært kjent ganske lenge.
    Her er en litt mer i dybden artikkel fra i fjor av spencerwhyte.
    spencerwhyte.blogspot.ca/2014/03/delay-attack-jam-intercept-and-replay.html?m=1

    Hva Kamkar bruker er egentlig det samme, men i stedet for pc, så bruker han en teensy ser det ut til som mikroprosessor (kan kanskje også bruke arduino, eller atmel/pic). Samt en rfm01/12b for 433 mhz bandet.
    433mhz brukes vel fordi det ikke er lisens på den (i Norge har vi også 868mhz som enkelte bruker i stedet).

    Jeg leste testen deres med HackRF, og mja jeg forstår ikke helt hvorfor dere brukte denne enheten. Dere kunne jo ha klart dere fint med en rfm01 og RTL-SDR som til sammen kommer på ca $20. Med en HackRF så kan du jo gjøre ganske mye skade siden den er så ‘åpen’ også.
    Se f.eks. denne fra i fjor:
    wired.com/2014/08/this-hackers-radio-can-fry-your-hair-dryer/

    I Gone in Sixty Seconds (2000) benytter de seg jo av det samme knepet for å stjele en av bilene 😉

    Svar på denne kommentaren

  2. Om alle kodar invaliderest når den, eller ein seinare kode, vert mottatt, må det vel bety at det er ei rekke med kodar med ein start og slut, og ikkje ein sirkel (altså er ordet «rullere» – å gå i sirkel – brukt litt feil). Da må det vel vere teoretisk muleg å «bruke opp» koderekka, slik at nøkkelen ikkje lenger fungerer? Dessutan aukar det vel sjansen ein del for å treffe ein gyldig kode på slump. Nokon som veit kor mange kodar ein bil kan motta i sekundet og om han har ei grense før han nektar deg å prøve meir (ala PIN-kode eller tastelås på mobil)?

    Svar på denne kommentaren

    • O Norman (svar til Jakob KS)

      Bruk ‘nå’ som kodeverdi – det brukes aldri opp. (‘Nå’ krypteres/hashes før den sendes ut.)

  3. «Replay», som beskrives her, er lett å beskytte seg mot – og det gjør også BankID. Hvis «nøkkelen» (brikka) har ei enkel klokke, gjerne en sekund-teller, som er synkron med ei klokke i låsen (bilen), kan nøkkelen sende ut tidspunktet krypert med en hemmelig nøkkel. Låsen ser på sin klokke, krypterer tidspunktet med samme hemmelige nøkkel, og sammenligner med det den har mottatt. Hvis de er like er det ikke avspilling av en gammel nøkkel. (Teknisk sett er det ikke snakk om ordinær kryptering, men en ‘hash’-operasjon, ofte kalt ‘envegs-kryptering’)

    Moderne klokker er svært stabile, og når først de to klokkene har blitt synkroniserte, vil de «gå i takt» svært lenge. Nøkler som er med i alt fra sprengkulde til steikende sommerhete kan gli litt ut, så hvis koden er gal bør låsen prøve hva som ville vært riktig kode for ett og to sekunder siden, og ett og to sekunder senere. Hivs den finner den mottatte koden blant disse, kan den resynkronisere sin klokke tilsvarende. Hvis låsen må gå mer enn noen få sekunder tilbake i tid for å finne riktig nøkkel, kan den se på det som er ‘replay’-forsøk.

    Jeg er forbauset over at ikke dette er benyttet i bil-nøklene! Har du først elektronikken for å sende ut koder trådløst er det 99,99% sannsynlighet for at du har alt som skal til for å telle sekunder, også! (Med ørlitegrann komplikasjon ved skifte av batteri i nøkkelen, men man klarer batteriskifte helt greit i andre systemer med tilsvarende funksjoner.)
    (Min egen bil er fra ordovicium, og har rent mekanisk nøkkel, så jeg har ikke praktisk erfaring med elektroniske bilnøkler.)

    I BankID må du ikke somle altfor lenge med å taste inn koden – da er den ikke gyldig lenger, selv om den ikke har vært brukt før. Fordi BankID involverer en manuell operasjon, inntasting, må mottakeren (banken) være forberedt på å gå tilbake diverse sekunder i tid fra når koden mottas, til det tidspunktet da brukeren trykket knappen på brikken, for å finne den rette koden. Banken kan registrere hvor langt bakover den «typisk» må gå, og ta det som utgangspunkt, slik at f.eks. svaksynte eller eldre som alltid bruker lang tid på å få tastet inn koden får litt mer tid på seg til det. BankID godtar også samme kode bare én eneste gang, så selv om «utløpstiden» er relativt lang, kan den ikke brukes på nytt innenfor denne utløpstiden. Du kunne f.eks. kikke over skulderen på en som logger inn ‘lovlig’, og så umiddelbart prøve fra en annen PC å logge inn med samme kode – det går ikke. (Men det virker som om BankIDs klokke ikke teller sekunder, men minst 10-sekunder, kanskje minutter – om du trykker på knappen på nytt hender det du får samme kode to, eller sågar tre ganger.)

    Med en bilnøkkel der det ikke er noen kode som skal tastes inn kan man ha adskillig sneverere marginer på hva som er «riktig» tidspunkt.

    Svar på denne kommentaren

    • Olav Gjerde (svar til O Norman)

      Det er ikke sikkert nok for biler. Som nevnt i eksempelet så kan du «ta opp» flere koder(også låse bilen opp med den første nøkkelen du fanget.) Så om noen låser,åpner,åpner,låser bilen så kan en «hacker» låse den opp igjen rett etterpå.

      Dataen som sendes fra senderen må krypteres og bruke en Initialization vector(IV) som er ansvarlig for at samme data som sendes alltid er helt tilfeldig. Også må en form for tovegs kommunikasjon med validering i tillegg. Mer kan leses her: en.wikipedia.org/wiki/Replay_attack

    • Det ser jo ikke ut som biler har elementær beskyttelse mot det, engang! Så hvordan kan du si at det «ikke er sikkert nok for biler», når det jeg påpeker er en beskyttelse biler åpenbart ikke har, men som jeg etterlyser?

      Hvis du har sekund-oppløsning på klokka, er sjansen sub-mikroskopisk for at du skal klare å få nøkkelen til å generere en kode som ikke oppfanges av låsen (slik at den blir svartelistet som «brukt»), og samtidig, innenfor samme sekund eller to, få avspilt den, slik at den låser opp bilen. Hvis du har tilgang til nøkkelen har du ikke bruk for noen replay! Har du det ikke, men «avlytter» en nøkkel, når den brukes utenfor låsens «hørevidde», hvor stor er da sjansene for at du har kommet i nærheten av bilen innen et sekund eller to? Og hvor stor er sjansene for at bilens eier er i nærheten av bilen når det skjer, innenfor det ene sekundet eller to?

      For å være ærlig: Jeg tror ikke du helt forstod hvilken beskyttelse tidsstempler ville tilføre, og jeg tror ikke du forstod at det ikke er til stede i dagens system, dersom det som beskrives i artikkelen er korrekt. Det kan ikke være til stede dersom artikkelen gir korrekt beskrivelse!

    • Jan Inge (svar til O Norman)

      Strengt tatt er det vel ikke BankID som sjekker engangskoden, men utstederbanken. Så dette kan variere en del mellom bankene.

      Klokker benyttes nok ikke da de ville mer enn halvert batterilevetiden for en gjennomsnittlig nøkkel, og ikke er de stabile nok til å kunne gjøre ett slikt angrep noe særlig vanskeligere heller.

      Det er mange år siden det ble vanlig med toveiskommunikasjon mellom bil og nøkkel. Svakhetene ved slik gammeldags kringkastning av koder (rullerende eller ikke) har nok vært kjent så lenge disse har vært i bruk, men å implementere krypto på små idiotiske fjernkontroller var nok ikke tilstrekkelig billig på 90-tallet. Dette ble vel sett på som godt nok da, og blir nok det av mange produsenter av forskjellig møkk enda. SDR er heller ikke nødvendig for å utføre ett slikt angrep.

      Ett mer aktuelt problem er «keyless» systemer (hvor det ikke er nødvendig å trykke på noen knapp), som fortsatt er svakt for videresending av meldinger. Har du to tyver som samarbeider kan en plassere seg ved en bil samtidig som den andre sporer opp eieren (f.eks. i heisen på ett parkeringshus). Biler utstyrt med slike systemer har gjerne også en knapp på dashbordet for å starte bilen. Grunnet sikkerhet vil heller ikke motoren stoppe om det ikke lenger er mulig å kommunisere med nøkkelen.

    • Marius Grannæs (svar til Jan Inge)

      En klokke av den nødvendige typen trekker omtrent 1uA. Så med et CR2030 f.eks har du et tiår med det samme batteriet.

    • Inkludert oscillator? Jeg er imponert om du får krystall og kondensatorer til å forsyne seg med mindre enn 1 μA hver.

      Ellers er det vel ikke så vanlig med CR2032 i fjernkontroller av typen som omtales her. Typisk brukes mindre batterier, med rundt halvparten av kapasiteten i forhold til denne størrelsen mener jeg. Men jeg har lagt merke til at CR2032 er vanlig i større nøkler som brukes i keyless systemer (hvor transponder og mer strøm benyttes).

      Uansett har du problemet med at krystalloscillatorer driver for mye til at dette kan gi noen særlig gevinst. Og den dagen du faktisk må bytte batteri i en nøkkel vil du også få en liten ekstra jobb (lykke til med å huske oppskriften på hvordan dette skal gjøres om det er 3-10 år mellom hver gang).

    • Marius Grannæs (svar til Jan Inge)

      1uA er faktisk i overkant. Det finnes kretser som er betydelig lavere enn det. Jeg jobber med EFM32, og den har 900nA med krystalloscillator inkludert all avkobling osv. Neste generasjon er betydelig lavere enn det igjen. Dedikerte transceivere er også en god del lavere (eksempelvis Si4010)

      CR2032 er ganske stor, men et mindre batteri endrer ikke mye på størrelsesforholdet. Når du faktisk sender med 0dBm eller noe slikt kommer du til å trekke flere milliampere i noen millisekunder, så det strømtrekket kommer uansett til å dominere.

  4. Marius Grannæs

    Jeg var også på Defcon i år 🙂

    Slidesene til Samy ligger her: samy.pl/defcon2015/2015-defcon.pdf De går litt mer i detalj (de første 50 sidene omhandler riktignok garasjeportåpnere).

    Løsningen ligger enten i å bruke tid (litt kjipt fordi du må holde klokkene i synk – ekstreme temperaturer kan få klokker til å drifte fra hverandre). Eller begynne å bruke tovveis kommunikasjon. Det siste er nok mye lettere å faktisk implementere. Transceiverkretser som kan gjøre dette koster bare noen cent mer, og vil gjøre sikkerheten mye bedre.

    Svar på denne kommentaren

  5. Pål Brynhildsen

    Ja, her er det sikkert mye riktig om hvordan «stjele» et radiosignal for så å låse opp bilen. Og, merk sist nevnte; Låse opp bilen. Alt dette for kun å få låst opp en bil?

    Bilen får du jo ikke med deg – uansett dings. Da dukker behovet for nøkkel opp, alternativt noe brutalt verktøy og ny dings som gir seg ut for å være transponderen som sitter i nøkkelen.

    Er du først ute i uærlige ærend er det vel bedre med stein, de er til og med gratis. Har du uflaks går alarmen, men det gjør jo ikke noe. Ingen som reagerer på en bilalarm som uler.

    Det du har lyst på inne i bilen går fort og ta – Gone in 3 Seconds 😉

    Svar på denne kommentaren

    • Akkurat samme tenkte jeg. Så mye styr for å få låst opp en spesifikk bil. Hadde det vært så lukrativt å komme seg inn i låste biler så hadde gammeldags bilinnbrudd vha. en stein vært mye mer vanlig.

    • Fredrik Kilander (svar til Martin)

      Men om man ser bort fra innbruddstyver, og beveger seg over til industrispionasje, kidnapping, utpressing osv, så er dette plutselig veldig aktuelt. Hvis en med onde hensikter kan komme seg inn i bilen din og sitte der i mørket til du setter deg inn uten at du ante noe som helst? Eller gjøre noe annet med bilen din?

      Se denne videoen fra DEFCON for noen år siden med en kar som driver med «red team» sikkerhetsarbeide (14 min 19 sek ut i videoen):
      youtu.be/JsVtHqICeKE?t=14m19s

    • Sette fokus på bil er egentlig ikke det mest dramatiske.
      Ja, du kan åpne bilen og ta med deg alt som er inni, uten at noen rundt deg forstår at du stjeler ting (noe du ikke kan gjøre med en stein).
      Men det virkelig store er jo garasjedører, og samtidig kunne åpne bilen.
      Sent en kveld kan du åpne garasjedøren, låse opp bilen, laste alt av verdi i bilen, sette den i fri og trille den ut. Her står din venn klar til å slepe deg bort.

      Dere har nå tømt hele garasjen, og tatt med dere bilen uten å lage stort med lyd som vil vekke folk.

      Hvordan forklarer du dette til forsikringsselskapet !?

  6. Men dette burde også bety at om jeg trykker «åpne» på min bilnøkkel 10 ganger inne i stua så vil jeg ikke kunne få låst opp bilen når jeg kommer ut da den venter på de 10 kodene som er brukt i stua.

    Svar på denne kommentaren

    • d.o. (svar til Geir)

      I det minste bruk litt tid til å gå gjennom materialet i saken.

      Som det er nå så vil én mottaker godta kodene:
      a1, a2, a3, a4, a5, a6

      Hvis du sender feil nøkkel f.eks. b2, skjer ingenting.

      Hvis én reell bruker sender nøkkel a1 og a2 og disse mottas, så vil ikke noen andre kunne bruke a1 og a2, disse er brukt opp.
      Rekkefølgen nøkkelene mottas spiller ingen rolle, siden de kun blir validert med samme algoritme som senderen brukte for å generere de.
      Med andre ord så kan du f.eks. åpne med a1, a2, a7, a8, a3, a9 …
      Det er her jammeren kommer inn. Hvis du blokkerer den reelle brukerens sending av a3, a4, a5, a6, så kan du selv bruke disse når det enn skulle passe deg.
      Senderen er allerede på a7, og vil aldri sende a3-6 igjen.
      Du sitter altså nå med 4 muligheter til å sende en akseptert kode.

      For å svare på din kommentar.
      Nei, bilen vil åpnes siden rekkefølgen ikke spiller noen rolle.
      Avhengig av forhold så kan det jo hende at noen signaler ikke nådde frem, selv uten en jammer til stedet. Så viss det hadde virket som du mener, så ville vi sett veldig ofte folk som er låst ute av sin egen bil, selv med det originale nøkkelen.
      (For ikke å snakke om at vi ville hørt flere bilalarmer, siden noen nye biler går rett på alarm hvis du prøver å låse opp døren med nøkkel i stedet for trykkeren.)

    • Marius Grannæs (svar til d.o.)

      Jeg tror ikke det er riktig. Har du brukt a5 vil ikke bilen akseptere a1-a4. Den vil kun akseptere høyere koder. Det er derfor det er viktig med jamming steget.

    • Har fått sjansen til å teste på flere systemer nå, og noen av dem virket som du forklarte.
      Altså:
      sender a1 – ok
      sender a2 – ok
      sender a3 – jammet, så når ikke fram
      sender a4 – ok
      prøver å sende a3 – ingenting skjer

      Men dette virket på disse systemene:
      sender a1 – ok
      sender a2 – ok
      sender a3 – jammet, så når ikke fram
      sender a4 – jammet, og resender a3 i stedet
      prøver å sende a4 igjen og det virker

  7. Advarer Tesla-eiere mot avansert nøkkelangrep

    […] En rekke biler fra de aller fleste bilprodusenter er sårbar for denne typen angrep. Eldre bilmodeller kan være enda enklere å stjele, siden signalet fra nøkkelen i mange tilfeller kan tas opp og spilles av på et senere tidspunkt. […]

    Svar på denne kommentaren

Legg igjen en kommentar til O Norman Avbryt svar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *. Les vår personvernserklæring for informasjon om hvilke data vi lagrer om deg som kommenterer.