artikel:can-bus:hacking:basiswissen

Das nötige Basiswissen

Jedes Hacking beginnt damit, sich über sein Angriffsziel schlau zu machen. Zu verstehen wie es funktioniert, welchen Grundlagen es folgt. Mit diesem Wissen kann man die Datenströme analysieren und geziehlt Schwachstellen ausfindig machen und ausnutzen.

Hat man Zugang zum Bus und die Software auf dem Laptop kann es auch schon losgehen. Je nach eingesetztem Adapter muss man die Zündung des Fahrzeugs einschalten damit die Nachrichten im Scanner-Tool ankommen und angezeigt werden. Auch muss man die richtige Busgeschwindigkeit wählen. Diese ist beim Mondeo für jeden Bus fest vorgegeben. HS-CAN z.B. mit 500 kbit/s und MS- sowie MM-CAN mit 125 kbit/s.

Hat man alles richtig verbunden und eingestellt, kann man im Monitor-Modus der Scansoftware schon die ID einflatterb sehen. Eine riesige Menge sich ständig ändernder Daten… Wow, was da so los ist, ohne das man irgendwas macht.

Dieses Datenwirrwarr wollen wir nun nach und nach beleuchten. Bevor wir das tun können, müssen einige grundlegende Verfahren und Techniken der CAN Kommunikation klar sein. Diese will ich kurz erläutern. Tiefergehende Details findet man hier im Wiki oder im Internet.

Die CAN Kommunikation ist nachrichtenorientiert

Wer sich ein wenig mit Netzwerken auskennt weiss was das ist. Den anderen sei gesagt, das eine Nachricht auf dem CAN Bus nicht von einem zu einem anderen Teilnehmer übertragen wird, sondern für alle Teilnehmer gesendet wird (Broadcast Verfahren). Damit die Empfänger die relevanz für sich klären können, dient eine Nachrichten-ID (CAN-ID). Diese klassifiziert den Inhalt der Nachricht, den eigentlichen Daten. Es ist also nicht wichtig von wem eine Nachricht kommt, sondern was sie beinhaltet.

Hier haben wir bereits eine Schwachstelle im System entdeckt, denn die Empfänger/Verarbeiter (Module) können nicht unterscheiden ob die Nachricht „echt“ oder nachgemacht bzw. verändert wurde. Würden z.B. die Türmodule die Türschlösser aufgrund einer CAN Nachricht öffnen, welche normalerweise vom Zentralverriegelungsmodul gesendet wird, so können auch wir selbst diese mit einem eigenen Modul erzeugen.

Die Sache hat jedoch einen Haken: Damit der CAN Bus und die darauf laufende Kommunikation robust und stabil gegenüber Störungen ist, werden diese Nachrichten nicht nur einmal bei Bedarf oder Veränderung gesendet, sondern ständig. Der Zeitabstand ist unterschiedlich, je nachdem wie „wichtig“ eine Nachricht ist und geht von alle 10 ms (Millisekunden, also Tausendstel Sekunden) bis zu alle 10 Sekunden. Würden wir also in unserem Beispiel einfach die CAN Nachricht für „Türen auf“ einmal oder wiederholt auf den Bus legen, dann würde diese sich mit der Nachricht „Türen bleiben zu“ vom eigentlichen Zentralverriegelungsmodul „vermischen“.

Bei zeitgleicher Sendung derselben ID würde das Signal beim Empfänger als invalid ankommen, da die Prüfsumme im Datenpaket nicht stimmt. Bei zeitversetzer Sendung wäre der Empfänger verwirrt, weil er sehr schnell „Türen auf“ und „Türen zu“ im Wechsel erhielt. Die Module haben Schutzschaltungen gegen solche Busprobleme und gehen u.U. auf Störung. Auch dieses Verhalten ist ein interessanter Angriffsvektor, wäre aber hier nicht unser Ziel.

Man muss also verhindern, das die Originalnachricht an den Modulen ankommt. Entweder an einem bestimmten, oder an allen. Im ersten Fall müsste man einen CAN-Filter vor das gewünschte Empfängermodul, im zweiten Fall hinter das Sendermodul einschleifen. Dieser würde die Originalnachricht entweder garnicht durchlassen, oder nach Belieben manipulieren. Hierzu muss man aber die Einbauposition und Verkabelung genau kennen und u.U. das halbe Auto dafür zerlegen.

Logfiles im ASCII-Format erstellen

Alle nachfolgenden Methoden setzen darauf auf, das man ein Logfile eines CAN-Bus über eine definierte Zeit mit den gesuchten Ereignissen erstellt und im ASCII Format gespeichert hat. Hierin werden die CAN-IDs in hexadezimaler Schreibweise als dreistellige Codes und die Bytes, ebenfalls im Hex-Format, als zweistellige Codes symbolisiert. Diese Art von Logs kann man hervorragend mit Texteditoren, Excel oder kleinen Skripten durchsuchen.

Auch andere Daten mit denen man arbeitet, sollte man in dieses Format konvertieren. Das ist datentechnisch zwar nicht optimal für Performance und Ressourcenbedarf, aber leicht zu handeln.

  • artikel/can-bus/hacking/basiswissen.txt
  • Zuletzt geändert: Wed. 23.01.2019 10:38
  • von go4it