Konferens DEFCON 27. Din bil är min bil. Del 2

Konferens DEFCON 27. Din bil är min bil. Del 1

I slutet av videon hörde du ett klick - det här är upplåsningen av det mekaniska rattlåset, som vi inte kan kringgå med elektronik. Man måste använda något mekaniskt, bryta låscylindern för hand eller göra något liknande, vilket jag inte tänkte göra med hennes bil. All firmware som visas i dessa videor kommer att finnas tillgänglig på GitHub efter mitt föredrag, så gå bara till URL:en på bilden och ladda ner OpenRemoteStart-filen.

Låt oss prata om exakt vad som händer när vi lägger till internet i det här systemet, för det måste vara bra för oss, eller hur? Jag köpte som sagt en fjärrlarmkontrollmodul som heter MyCar. Den finns i olika modifieringar, jag hade Linkr LT-1-modellen.

Konferens DEFCON 27. Din bil är min bil. Del 2

MyCar är bara ett varumärke och sådana moduler säljs under namnen Linkr LT-1, MyCar KIA, Visions MyCar, Carlink (CL6), etc. Som det visar sig har KIA-återförsäljare i Kanada sedan ett tag nu installerat detta system, eller åtminstone en app som heter MyCar KIA, på sina bilar. Intressant nog är den här appen inte längre tillgänglig för nedladdning på AppStore. Jag vill också notera att jag valde Fortin- och MyCar-produkter, men enligt användarrecensioner på tematiska forum för frilansbillarm, beter sig andra system inte bättre och har liknande problem.

Jag har en viktig fråga: Varför säljer eftermarknadens billarmsmarknad en produkt med säkerhetsproblem och ingen bryr sig? Därför, om någon av er är intresserad av fjärrstartsystem, var uppmärksam på ett par viktiga omständigheter. För det första, som jag nämnde tidigare, om DS-systemet inte är korrekt installerat på en bil med manuell växellåda, är det mycket möjligt att efter att ha startat motorn på distans, kommer bilen helt enkelt att köra utan förare om någon växel är inkopplad i växellådan . Det är riktigt farligt. Den andra faran är att om någon parkerar en bil i ett anslutande garage och av misstag slår på motorn på distans, kan de kvävas av den ansamlade kolmonoxiden. Så om du har ett CO-system och ett anslutet garage, bör du definitivt ha kolmonoxiddetektorer.

Om du använder DS-system, försök aldrig starta din bils motor utan att veta exakt var den är, eftersom konsekvenserna kan bli katastrofala.

MyCar-enheten, en liten svart låda med två ledningar som kommer ut ur den, har 8 portar, varav två är dedikerade till felsökningsgränssnittet. Att ansluta till detta gränssnitt visade att enheten kör Linux, vilket tillverkaren är tyst om. Det är lätt att komma in i firmware-skalet med oelinux 123-lösenordet, men du kan använda AE Engine utan att logga in, vilket låter dig ange AT-kommandon från kommandoraden, inklusive kommandot för att ändra IP-adressen för enheten med vilken denna modul kommunicerar.

Konferens DEFCON 27. Din bil är min bil. Del 2

Om vi ​​tittar på raderna nedan kan vi se IP-adressen till servern från vilken MyCar-modulen tar emot firmwareuppdateringar. Enheten är utrustad med en L-port, som låter dig "lyssna" på kommandon som tas emot av modulen. Genom att använda AE Engine och ändra IP-adressen för den ihopparade enheten kunde jag fastställa att den här enheten kommunicerar med DS med det okrypterade UDP-protokollet.

Jag har inte undersökt det så mycket, men jag tycker att det är ett ganska viktigt och intressant faktum. Om du är intresserad av mer information om den här enheten, ta en titt på den här bilden - den visar en strömförsörjningsspänning på 3,3V, en dataöverföringshastighet på 115200 baud, en serveradress för uppdatering av firmware, ett root-lösenord och en länk till bruksanvisningen.

Konferens DEFCON 27. Din bil är min bil. Del 2

Enheten kan "tolerera" högre matningsspänningar.

Det är som sagt ganska kallt här. Ungefär en månad efter att jag gav det här systemet till min flickvän, bestämde jag mig för att ta ut enheten ur bilen och ge den en bra körning. Faktum är att jag hela den här månaden har drivit bort tankar om sårbarheten hos den här enheten. De förutspådde temperaturer ner till -30F° för nästa vecka, så jag var tvungen att skynda mig. Jag kopplade till skalet och fick det att fungera, men eftersom mobilmottagningen i mitt hemlabb inte är särskilt bra, bestämde jag mig för att arbeta med boxen på en annan dator. FTDI-enheten jag använder har en kort sladd, så jag hittade en längre, satte in den i DS-enheten, kopplade in den till datorn och så fort jag slog på strömmen började min enhet att röka!

Lärdomen att dra av detta är: om du hackar hårdvara, ha en reservenhet redo! Min flickvän uttryckte berättelsens moral så här: Om din partner är en hacker, låt honom inte leka med dina julklappar! Låt oss nu titta på programvaran, jag tror att ingenting kommer att ryka här.

Konferens DEFCON 27. Din bil är min bil. Del 2

Jag startade en man-in-the-middle-proxy, inaktiverade SSL-verifiering på min telefon och såg vilken trafik appen skickade till backend. När jag registrerade mig märkte jag att systemet tog min e-postadress och skickade den till webbtjänsten för att säkerställa att adressen var kopplad till ett befintligt konto. Det är intressant att systemet använde grundläggande autentisering eftersom jag inte hade skapat ett konto än. Jag visste inte vad jag skulle göra med den här informationen, så jag skrev bara ner den i en anteckningsbok och gick vidare. Jag skapade mitt konto och loggade in, och det första applikationen gör när jag loggar in är att ringa en webbtjänst för att verifiera den aktuella användaren. Så jag ringde helt enkelt den här webbservern med de referenser jag hade sett tidigare, som användes för att kontrollera om min e-postadress fanns, och fick Mycar Admin-åtkomst som svar.

Konferens DEFCON 27. Din bil är min bil. Del 2

Jag tvivlade på att detta var ett riktigt systemadministratörskonto eftersom det, trots att det lät högt, hade låga privilegier. När allt kommer omkring känner vi alla sådana här människor.

Därför skapar jag en annan begäran - EngineStart-kommandot, för att starta bilen från det här kontot, klicka på "Skicka", ta emot kommandostatusen som svar - "200 OK", och efter cirka tre sekunder börjar min bil att röra sig.

Konferens DEFCON 27. Din bil är min bil. Del 2

Som det visar sig var Mycar Admin-kontot verkligen ett administratörskonto hårdkodat i mobilappen. Men det är inte allt. På en av de tidigare bilderna såg du en sådan sak som en API-nyckel. Återigen, från att övervaka min falska proxyservertrafik, lärde jag mig att dessa API-nycklar kan användas i stället för ett användarnamn och lösenord. Om du använder "API" som användarnamn och en av dessa nycklar kan du autentisera användaren.

Konferens DEFCON 27. Din bil är min bil. Del 2

Så jag kopierade innehållet på "APIKey"-raden, klistrade in det i lösenordsraden i POST-applikationen och klickade på knappen "Skicka".

Konferens DEFCON 27. Din bil är min bil. Del 2

Det fungerade dock inte och jag kunde inte komma på varför under långa 5 minuter. Till slut gick det upp för mig att jag glömde att ta bort citattecken och kommatecken i den kopierade API-nyckeln, vilket är vad jag fick höra: "Du gjorde ett misstag i SQL-syntaxen." Det blev klart för mig att du helt enkelt kunde använda en grundläggande SQL-injektion för att kringgå hela inloggningsprocessen och bli administratör eller vilken användare du ville. Jag tror inte att någon någonsin har försökt stjäla en bil med SQL-injektion, så låt oss prova det.

Konferens DEFCON 27. Din bil är min bil. Del 2

Konferens DEFCON 27. Din bil är min bil. Del 2

I allmänhet loggade jag in på mitt konto, klickade på "Skicka" och fick statusen "200 OK" som svar. Den här gången tänkte jag spela in en video. Det är lite mörkt eftersom jag filmade sent på kvällen från mitt kontorsfönster. Så, jag skriver in kommandot, och du ser genom fönstret att bilens strålkastare blinkar på gården nedanför. Först är deras ljus svagt, men sedan börjar strålkastarna lysa med full effekt - det här är motorn som startar. Så jag startade bilen med SQL-injektion (publikens applåder).

Men det är inte allt. SQL-injektion kan användas inte bara för auktorisering, utan också för att ersätta andra parametrar som URL, frågesträngskroppsparametrar, etc. Faktum är att det här systemet använder SQL-injektioner överallt. När vi tittar på felmeddelandena kan vi se att det vi anger som lösenord jämförs direkt med lösenordskolumnen i databasen.

Konferens DEFCON 27. Din bil är min bil. Del 2

Det betyder att de använder vanliga textlösenord i SQL-injektion. Som de säger, "det här är inte alls bra, och till och med mycket dåligt!" Men nog om SQL, låt oss se vad mer du kan göra för att fjärrstarta din bil. Du skickar helt enkelt kommandot "EngineStart" och som svar får du en heltalsidentifierare som representerar identifieraren för detta kommando, i detta fall är det ID = 3. Genom att känna till identifieraren kan du "dra" en tjänst som kommer att rapportera statusen för detta kommando.

Konferens DEFCON 27. Din bil är min bil. Del 2

Så genom att öka eller minska ID-värdet "drar" jag statusen för alla kommandon som någonsin har skickats på det systemet.

Konferens DEFCON 27. Din bil är min bil. Del 2

Det finns dock inget speciellt intressant med det, och jag undrar om det finns en direkt hänvisning till ett objekt här som jag kan använda för att starta min bil. Så jag körde kommandot "EngineStart" som en legitim användare från mitt konto och försökte sedan ringa det via en annan användares konto, som inte borde ha tillgång till systemet. Som svar fick jag ett felmeddelande: "Detta konto är inte i kontexten för hierarkin." Så det här hacket kanske inte fungerar. Men om du tittar på detta API kommer du att se att det duplicerar information - användarens e-postadress är mappad till deras konto-ID.

Konferens DEFCON 27. Din bil är min bil. Del 2

Om du utvecklar ett API eller hackar ett API kan den typ av dubblering av information vi ser i den här webbadressen vara en källa till fel. I det här fallet kan API-buggar visa sig på fyra olika sätt.

Konferens DEFCON 27. Din bil är min bil. Del 2

Om du tittar på fall 2 och 3, med rött skiss, kan du se direkta referenser till objektet. I båda fallen kontrollerar inte systemet om du är behörig att utföra kommandot. Jag provade fall 2 och det fungerade inte, hur är det med fall 3? Här behöver vi bara byta ut konto-ID:t för USER_EMAIL i webbadressen eftersom det är direkt relaterat till konto-ID:t ACCOUNT_ID. Tidigare använde vi offrets konto-ID, men nu använder vi angriparens konto. Så jag använde hackarens konto-ID och offrets enhets-ID, skickade kommandot och förväntades få kommandostatusen "200 OK" och fick kontroll över MyCar-appen.
Så med tre olika attackvektorer kunde vi göra allt som en legitim användare av applikationen kunde göra. Det betyder att du kan hitta vilken bil som helst i staden, ställa in dess märke och modell i applikationen och sedan fjärrlåsa upp bilen och starta den. Vi kan stänga av eller sätta på larmet, göra ändringar i bilens servicemeny och kontrollera status för valfritt kommando. Och allt detta kan göras på tre olika sätt.

Konferens DEFCON 27. Din bil är min bil. Del 2

Det är uppenbart att MyCar-utvecklarna på något sätt försökte fixa systembuggarna. Så när det gäller hårdkodade lösenord lägger de helt enkelt en omvänd proxy framför applikationen för att dölja de referenser som används för auktorisering. Problemet är att omvända proxyservrar inte är magiska och kan inte fixa alla problem. De lagrade SQL-injektionen i en tredjepartstjänst så att jag även utan lösenord kan använda den genom användarverifieringsproceduren.

Konferens DEFCON 27. Din bil är min bil. Del 2

Jag bestämde mig för att ta en närmare titt på URL-strukturen. Du kanske har märkt att alla adresser som används av systemet innehåller m2m. När jag bestämde mig för att detta var någon typ av intern interaktion för auktoriseringsmekanismen i MyCar-applikationen skrev jag in dessa brev i Google och upptäckte webbplatsen M2M Suite. Det enda du kan göra när du ser det här formuläret är att sätta ett par enstaka citat där och se vad som händer. Det som kommer att hända är att du får önskad SQL-injektion (publikens applåder).

Konferens DEFCON 27. Din bil är min bil. Del 2

Konferens DEFCON 27. Din bil är min bil. Del 2

Och detta kommer flera månader efter att utvecklarna rapporterade ett problem med SQL-injektion. Om en app har problem som detta måste det åtgärdas så snart som möjligt, men som ni ser har utvecklarna inte gjort någonting. Jag tycker att den här typen av ignorering av användare är stötande.

MyCar-modulen har en GPS-enhet så att den kan spåra platsen för din bil och visa den i applikationen. Men, som det visade sig, lagrar de inte bara den aktuella platsen för bilarna. De lagrar en jäkla massa information, mycket mer än vad som behövs för att hålla koll på en bils aktuella plats. I mitt fall, under 13 dagars användning av applikationen, samlade de lite mindre än två tusen geolokaliseringspunkter för de platser som min bil besökte. Integritetspolicyn för MyCar-utvecklarföretaget säger inte ett ord om sådan insamling av information.

Det blir dock ännu värre. Du kan hävda att detta bara är en bieffekt av implementeringen av platstjänsten. Men grejen är att istället för att bara skapa en lista över platser som din bil går till, använder de ett annat API som analyserar denna data och bestämmer de platser som din bil går till oftast. Återigen, såvitt jag vet, finns det ingen antydan om en sådan funktion i integritetspolicyn. Kanske är detta inte så förvånande eftersom jag efter massor av sökning hittade MyCars moderbolag som heter Procon Analytics, gick till deras hemsida och besökte FAQ-sektionen. Här stötte jag på frågan: "Hur säkerställer du datasäkerhet?" Företagets svar var: ”Till skillnad från publika moln som konkurrerar om prioritet inom datalagring, använder Procon Analytics sitt eget virtuella moln, som används uteslutande för användare av vår applikation och är skyddat från störningar från andra användare. Detta är en speciell molnmiljö med en hög grad av säkerhet, vilket säkerställer enkel tillgänglighet och snabb serviceleverans. Genom att samarbeta med Procon Analytics kan du vara säker på att din data är säkert skyddad." Jag vet inte ens vad jag ska säga om detta...

Konferens DEFCON 27. Din bil är min bil. Del 2

Om du går in på deras Facebook-sida kan du få reda på ännu mer intressanta saker. Här skriver de helt enkelt: "Det är viktigt att skydda information om ditt fordon!" Tja, jag kan bara hålla med om ett sådant påstående.

Så, tillbaka till frågan jag började med: "Hur händer detta och hur kan det undvikas"? Och ännu viktigare, hur kan vi som gemenskap förhindra att detta händer?

Detta avslutar min rapport, men jag kommer fortfarande att kunna svara på ett par frågor (publikens applåder).

Frågar du om de fixat allt? Vid det här laget tror jag att de har fixat alla buggar som jag rapporterade till dem, med undantag för de integritetspolicyfel som jag nämnde i slutet av föredraget. Senast jag kollade det var allt oförändrat. På frågan om jag kan redigera parametrarna för bilens elektroniska motorstyrenhet (ECU) på liknande sätt, kommer jag att svara att min uppgift var att redigera bilens parametrar endast i MyCar-applikationen. Den lagrar en digital representation av fordonet som redigeras genom direkt objektåtkomst, SQL-injektion eller annan attackvektor.

Den sista frågan är: har jag ett nyckellöst motorstartsystem i min bil med "Start"-knappen och hur är läget med rattlåset i det här fallet? Mitt svar är att MyCar har en sådan knapp, så detta system har inget rattlås. Jag misstänker att om du installerar det här systemet kommer du definitivt inte att kunna lita på rattlåset.

Några annonser 🙂

Tack för att du stannar hos oss. Gillar du våra artiklar? Vill du se mer intressant innehåll? Stöd oss ​​genom att lägga en beställning eller rekommendera till vänner, moln VPS för utvecklare från $4.99, en unik analog av ingångsservrar, som uppfanns av oss för dig: Hela sanningen om VPS (KVM) E5-2697 v3 (6 kärnor) 10GB DDR4 480GB SSD 1Gbps från $19 eller hur delar man en server? (tillgänglig med RAID1 och RAID10, upp till 24 kärnor och upp till 40 GB DDR4).

Dell R730xd 2 gånger billigare i Equinix Tier IV datacenter i Amsterdam? Bara här 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV från $199 i Nederländerna! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - från $99! Läs om Hur man bygger infrastructure corp. klass med användning av Dell R730xd E5-2650 v4-servrar värda 9000 XNUMX euro för en slant?

Källa: will.com

Lägg en kommentar