Reverse Engineering des Verkehrs auf dem CAN-Bus



Rohes CAN-



Bussignal Der CAN- Bus (Controller Area Network) ist in der Automobilindustrie zum Standard geworden: Alle Neuwagen müssen CAN unterstützen (seit 2001 in Europa und seit 2008 in den USA). Neben Autos wird CAN in einer Vielzahl anderer Geräte eingesetzt. Hersteller von Diagnosegeräten für CAN bewerben ihre Verwendung neben verschiedenen Automobilausrüstungen in Motorrädern, Gabelstaplern, Schiffen, Minenzügen, Badekapazitäten, unbemannten Flugzeugen usw. Mal sehen, was CAN ist.



In Fahrzeugen werden mehrere CANs verwendet. In Ford Focus gibt es beispielsweise vier solcher Reifen - drei Hochgeschwindigkeitsreifen (500 kbps) zur Steuerung von Motor, Bremsen, Armaturenbrett usw. und einen Niedriggeschwindigkeitsreifen (125 kbps) zur Steuerung von Türen, Scheinwerfern, Airbags, Audiosystemen, Klimaanlagen und allem andere Dinge. Durch die Verbindung mit CAN können Sie Signale von jedem Gerät im Auto simulieren. Steuern Sie beispielsweise die Klimaanlage über die Anwendung am Telefon oder drehen Sie den Kilometerzähler auf, ohne das Auto zu bewegen. Durch Anschließen an den Arduino-Bus und das Relais können Sie eine zusätzliche Parkkamera vom Armaturenbrett aus steuern . Auch selbstfahrende Startups wie VoyageBeginnen Sie mit dem Prototyping, indem Sie in einem normalen Serienauto eine Verbindung zu CAN herstellen und lernen, Signale von den Pedalen und dem Lenkrad zu simulieren.



Für die Verbindung mit CAN in einem Auto befindet sich normalerweise ein OBD-II-Anschluss (On-Board Diagnostics) in der Nähe des Lenkrads.



Bild



OBD2-USB-Adapter zum Anschließen eines Computers an CAN kosten ab 5 US-Dollar und ermöglichen es Ihnen, den gesamten Verkehr im Auto zu verfolgen. Manchmal ist der OBD-II-Anschluss durch eine "Hardware-Firewall" geschützt, mit der Sie Pakete von Geräten empfangen können, die an den CAN angeschlossen sind, aber keine Pakete an den Bus zurücksenden können. In diesem Fall reicht es aus, den Stecker abzuschrauben und stattdessen an die CAN-Drähte anzuschließen.







Jedes auf dem CAN-Bus übertragene Paket besteht aus der Sendegeräte-ID (11 oder 29 Bit) und bis zu 8 Bytes übertragener Daten. Der Verkehr, der beim Einschalten der Zündung durch den Bus fließt, sieht ungefähr so ​​aus:







Es gibt viele Tools zur Analyse des CAN-Verkehrs, sowohl kommerziell als auch OpenSource. Das can-utils- Paket für Linux enthält ein Dienstprogramm cansniffer, das für jede CAN-ID nur das zuletzt gesendete Paket anzeigt und es Ihnen somit ermöglicht, Änderungen der Messwerte jedes Sensors auf dem Bus zu verfolgen:







Für das Reverse Engineering des CAN-Verkehrs haben singapurische Forscher, von deren Bericht ich diese Spur genommen habe, das Armaturenbrett des Versuchsautos auf Video aufgezeichnet und dann die Änderungen auf dem Armaturenbrett mit den gleichzeitigen Änderungen des Verkehrs korreliert. Nachdem sie auf diese Weise die CAN-ID des Geschwindigkeitssensors und das Format der von ihm übertragenen Daten bestimmt hatten, lernten sie, seine Pakete zu "fälschen" und falsche Messwerte an den Tachometer und den Drehzahlmesser zu übertragen.



Es versteht sich, dass parallel zur Übertragung von "gefälschten" Paketen weiterhin echte Signale vom Geschwindigkeitssensor über den Bus übertragen werden. Damit der Drehzahlmesser vorgefertigte Messwerte anzeigen kann, muss die Übertragung realer Messwerte auf dem Bus überwacht und auf irgendeine Weise unterdrückt werden. Beispielsweise wird der Bus unmittelbar nach dem Erkennen der Übertragung der CAN-ID des Geschwindigkeitssensors durch Kurzschließen der Datenleitungen physisch "gedämpft". Eine einfachere, rein softwaremethode zur Unterdrückung realer Messwerte besteht darin, "gefälschte" Pakete unmittelbar nach ihrer Übertragung zu übertragen, während der Drehzahlmesser noch keine Zeit zum Reagieren hatte. Das folgende einfache Shell-Skript überwacht beispielsweise die Übertragung mit CAN ID = 0x0C9 und unmittelbar danach die Übertragung des hergestellten Pakets mit dem Dienstprogramm cansendvon denselben can-utils:



candump can0 | grep "0C9" | während Zeile lesen; do cansend can0 0C9 # 8021C0071B101000; erledigt



Obwohl alle Geräte im Auto mit CAN verbunden sind, werden nicht alle Funktionen über CAN gesteuert. Beispielsweise werden im Ford Escape Signale über den Grad des Betätigens der Gas- und Bremspedale an CAN übertragen. Diese Signale werden jedoch nur von der ABS-Einheit verwendet, während die Gas- und Bremsaktuatoren unter Umgehung von CAN direkt mit den Pedalen verbunden sind.



Aus Sicherheitsgründen ist im Bericht der Singapurer keine Sicherheitslücke zu sehen, da für die Übertragung „gefälschter“ CAN-Pakete ein physischer Zugriff auf den Bus erforderlich ist. Darüber hinaus können Pakete mit einer Prüfsumme geschützt werden - beispielsweise muss bei Toyota-Fahrzeugen das letzte Byte jedes Pakets benötigt werdengleich der Summe aller vorherigen (Modulo 256). Darüber hinaus verwendet Toyota die Empfängerfilterung, um sich vor unerwünschten Paketen zu schützen. Beispielsweise werden Lenkungsdrehungen von mehr als 5% des aktuellen Werts ignoriert.



Trotzdem gelang es Sicherheitsforschern, Fernzugriff auf CAN zu erhalten: erstens auf kurze Distanz - durch Sicherheitslücken in einem Bluetooth-Modul, das mit demselben Bus verbunden ist; und dannüber das Mobilfunknetz von Sprint, über das SUVs mehrerer amerikanischer Hersteller Verkehrsdaten erhielten. Forscher, die das Abfangen der Kontrolle eines Jeep Cherokee aus einer Entfernung von mehreren Kilometern demonstrierten, erhielten von der Defense Advanced Research Projects Agency (DARPA) eine Belohnung von 80.000 US-Dollar. Seitdem haben viele Autohersteller ihre eigenen Kopfgeldprogramme angekündigt, die Auszahlungen von 1.500 USD oder mehr für jede entdeckte Sicherheitslücke versprechen. Durch das Reverse Engineering des Verkehrs auf dem CAN-Bus können Sie Ihrem Auto nicht nur neue Möglichkeiten hinzufügen, sondern auch Ihren Geldbeutel erheblich auffüllen.






All Articles