|
|
|
|---|---|
|
Hej! Jag skulle vilja belysa _eventuella_ säkerhetshål/problem gällande nya moderna fordon. Under en längre tid så har jag arbetat ganska mycket med att läsa ur data från OBD2 uttaget, arbetet har dock fokuserat på helt andra saker än eventuella säkerhetshål som kan finnas hos fordon utan mer allmänna saker. Ju mer jag har hållt på och arbetat med projektet ifråga så har jag inte kunna sluta förvånas över hur mycket data som det går att läsa ut, även hur mycket man kan kontrollera genom testprocedurer med mera. Jag vill dock understryka det faktum att mina teorier och tankar dock inte bara gäller BMW specifikt utan misstänker att flertalet, om inte samtliga fordonstillverkare har lika undermålig säkerhetstänk. Jag har dock inte så pass djup dokumentation som behandlar samtliga delsystem och moduler gällande enhanced PIDs, utan har arbetat med den information som jag lyckats sniffa fram över CAN genom att kopplat in en extern CAN dongle mellan OBD2 uttaget och fordonsdiagnosverktyget (både INPA och nu i senare fall autoenginuity). Mina teorier, som jag skulle vilja ha er hjälp med att kontrollera rent praktiskt är exempelvis följande. Betänk följande scenario. Man pluggar in en simpel OBD2 dongle innehållande en mikroprocessor med stöd för CAN som kan kommunicera med fordonet ifråga. När fordonets hastighet kommer upp i exempelvis 100 km/h så aktiverar man (genom OBD2 uttaget, över CAN) varningsblinkersen (FRM modulen, Hazard Warning Button). Föraren ifråga tappar nu fokus, släpper höger hand och stänger av varningsblinkeren genom att trycka på varningsblinkersknappen. I samma ögonblick som OBD2 donglen detekterar knapptryckningen (FRM modulen, Hazard Warning Light Switch) sker följande automatiskt. * ABS Precharging Pump Activation * Inlet Valve - Front Left Activation * Inlet Valve - Rear Left Activation * Outlet Valve - Front Left Activation * Outlet Valve - Rear Left Activation * Electronic Power Steering EPS motor Phase 1 (2 eller 3?) Activation * BZM SZM - Electric Steering Column Angle + Activation Så vad händer då i ovan scenario, jo vi aktiverar ABS styrenheten, startar pumpen och aktiverar vänster fram- och bakhjul så att dessa bromas, samtidigt som vi slår igång den elektriska servostyrningen (som hjälper oss att parkera autonomnt och styr för oss som har Traffic Jam assist som tillval) och höjer ratten uppått för att ytterligare ge effekt för att styra fordonet ut mot mötande körfält. Okej! Ovan scenario är inte uppbackat med varken referenser eller källor, troligtvis så är inte ens rätt moduler listade heller, men jag är relativt säker på att man kan göra väldigt många olika aktiveringar, tester och initieringar av olika sensorer och funktioner. Kanske detta också är ett worst case scenario, men vad händer om man exempelvis drar igång vindrutespolningen samtidigt som man upprepade gånger försöker inaktivera tillslag av vindrutetorkare upprepade gånger. Man kan alltså simultant kommunicera med 8 st styrenheter över CAN, utöver det så kan man anropa (teoretisk överslagsräkning i huvudet) varje enskild styrenhet med olika kommandon/förfrågningar var 50 millisekund vilket gör att man teoretiskt kan inaktivera en knappfunktion som föraren gör manuellt i princip direkt - med tanke på scenariot gällande vindrutetorkaren. Så för att omsätta teorierna till praktik så har jag en ny X5:a med det mesta i utrustningsväg som testfordon, laptop med CAN dongle med möjlighet till att läsa ut de flesta enhanced PIDs genom Autoenginuity för att sedan kunna skicka specifika CAN meddelanden genom en egensnickrad tillståndsmaskin för att att automatisera det hela. Har ni tips på idéer, vilka moduler som man eventuellt behöver kommunciera med för att kunna väcka upp dylika funktion beskrivna ovan? Det kan tyckas som en ganska krånglig och banal idé, men fundera lite kring hur många fordonsägare som åker runt med diverse Bluetooth OBD2 Donglar monterade i bilen som kommunicerar med förarens telefon genom någon tredjeparts app nerladdat från Google Play eller motsvarande, hur kan man vara säker på att just den app som man laddar ner och använder inte innehåller dylik skadlig kod, eller att nån helt random springer runt på en parkeringsplats och tar över kontrollen från en billig kina-dongle. Allt från att koda om nycklar till att helt sonika installera skadlig kod i bilen. | |
|
intressant, sitter själv å försöker få igåg min RPI till att läsa can, ligger väl något i det du säger, men i regel är väl alla BT osv lösenord på, att man måste synka de, vi sin lur tex. hur jobbar du med can? Försöker som sagt själv att få min Raspberry att kunna läsa can, lyckats halvvägs,, kan inte ställa in vilken bitrate den ska ligga på:( men sen jobbar ju can även på div olik bitrate, om jag inte minns fel? |
|
|
Det är stor skillnad på att kunna läsa ut värden och aktivera/deaktivera via OBD2. Det är praktiskt ur diagnossynpunkt att kunna aktivera/deaktivera utgångar via diagnosuttaget men det hade förvånat mig väldigt om BMW tillät dig göra det helt utan att du har identifierat dig som "verkstad", vilket INPA lär göra. Jag kan inte BMWs diagnostrafik i detalj, men de är troligen varsamma nog att dels inte tillåta vem som helst att skicka kommandon och dels att sätta villkor på när du får aktivera/deaktivera utgångar, t.ex. fordonshastighet = 0 km/h. Om du har testat så vore det kul att höra hur det gick, ovanstående är inte alls fakta men baserat på viss inblick "från andra sidan" OBD-uttaget. Dock inte på BMW, därför är jag något försiktig i mina uttalanden.. :) De lät ju onekligen funktionen att programmera ny nyckel vara lite för oskyddad. |
|
|
Jag har varit ute och filmat dagen till ära, ju mer jag hållt på med OBD2 uttaget desto mer tveksam till eventuella säkerhetslösningar blir jag. Aktivera varningsblinkers över OBD2: Aktivera vindrutespolning över OBD2: Mina första misstankar var förstås att det inte gick att aktivera detta under färd, men som ni ser i första klippet så kör jag samtidigt som jag aktiverar funktionen. Aktivering av rattvibrationer över OBD2: Att läsa av sensorer över OBD2 är lika enkelt som att aktivera funktioner enligt min mening då jag loggat transmissionsmeddelandena över CAN, det är typ tvärtom. För att fråga efter ett EPID från BMW så anropar man först aktuell modul, får svar, skickar sedan en förfrågan om sensorvärdet, modulen svarar med sensor ID och man bekräftar sedan att det är rätt värde som efterfrågas, därefter så skickar modulen ut aktuell data. Nu har jag dock inte hunnit testat att starta funktioner direkt över CAN genom min dator utan bara sniffat CAN nätverket men det ser misstänksamt lika ut måste jag säga. Återkommer ifrågan senare! Gällande CAN hastigheten så är den 500 kbit/s om du är osäker. Leker man med tanken att exempelvis skaparna till Torque Pro appen på google play inte har världens bästa säkerhetslösningar och man lyckats ladda upp en ny apk till google genom att helt enkelt bara få reda på deras google-lösenord, med automatisk uppdatering så har man teoretisk kontroll över 1-5 miljoner användare. Eftersom appen i sig används under färd så ser jag inte omöjligheten att de flesta har OBD2 dongeln inkopplad konstant, och dess funktion gissar jag endast är att överföra kommandon mellan telefonen och bilen. Nu har ju jag årsmodell 2016, vilket gör att jag inte kommer åt alla funktioner genom autoenginuity, plus att det är en 40e så jag måste välja en 2015 X5 40d istället och ibland så kraschar programmet. Jag ska sniffa lite mer CAN meddelanden när jag aktiverar rattvibrationen och se om jag kan hitta några andra kommandon för att styra ratten, sedan testa detta under färd. //K |
|
|
Intressant! Men nu startar du kommandon via INPA? Jag kan tänka mig att själva kommandot ser lika ut, men det borde ske nån sorts "inloggning" av INPA? Sen är det väl så att även om alla biltillverkare använder OBD2 för sin egen diagnos också, så är kommandona inte alls standardiserade på samma sätt som för det som läses ut. |
|
|
Jag använder mig av Autoenginuity i youtubeklippen inte INPA. Det sker ingen typ av inloggning, utan transmissionsmeddelandet som efterfrågar en funktion eller aktiverar en funktion skickas ut direkt utan någon som helst initiering eller inloggning vad jag kan se. Jag ska ta och spela in en sekvens över CAN när jag aktiverar varningsljusen och sedan kopplar ur Autoenginuity donglen och köra helt från min dator genom PEAK CAN genom att replikera transmissionsmeddeladet Självklart använder sig olika biltillverkare av olika PID's för deras egna funktioner, dom är svåra, men inte omöjliga att få tag på,det går förstås att köpa dessa genom olika föreningar exempelvis ETI (www.etools.org). Jag misstänker dock att får man tag på en specifik PID för Audi så kommer den med all säkerhet stämma överens med både Volkswagen, Seat och Skoda då dom delar teknikplattform. Samma sak med exempelvis BMW, lyckas man få reda på en viss funktion så gissar jag att denna även går att aktivera med samma kommando på alla BMW modeller som delar aktuell teknik/modul. |
|
|
Både bra och dåligt att detta lyfts. Vi hemmapulare gillar ju att allt går att göra utan vidare svårighet för vår egen skull, medan det givetvis går att använda i ont uppsåt som du säger. Jag tror du kommer uppräcka att du kan göra allt du företar dig enligt liknande beskrivning som du gav ovan utan vidare. Så vitt jag vet finns det inga spärrar, de enda jag känner till är de i gränssnittet mot bilanvändaren, vilka man ju enkelt gör sig av med via just OBD2-gränssnittet. Lycka till med dina efterforskningar, jag följer med stort intresse! |
|
|
|
|
Du måste vara en registrerad användare för att kunna göra inlägg här.
Klicka här för att registrera dig. Registreringen är gratis.
Är du redan användare? Logga in i menyn.
Klicka här för att registrera dig. Registreringen är gratis.
Är du redan användare? Logga in i menyn.