DEFCON-Konferenz 27. Ihr Auto ist mein Auto. Teil 2

DEFCON-Konferenz 27. Ihr Auto ist mein Auto. Teil 1

Am Ende des Videos haben Sie ein Klicken gehört - es hat funktioniert, das mechanische Lenkradschloss zu entriegeln, das wir elektronisch nicht umgehen können. Es ist notwendig, etwas Mechanisches zu verwenden, den Schließzylinder manuell zu brechen oder etwas Ähnliches zu tun, was ich mit ihrem Auto nicht tun wollte. Die gesamte in diesen Videos gezeigte Firmware ist nach meiner Präsentation auf GitHub verfügbar. Gehen Sie also einfach zu der auf der Folie angegebenen Adresse und laden Sie die OpenRemoteStart-Datei herunter.

Lassen Sie uns darüber sprechen, was genau passiert, wenn wir diesem System das Internet hinzufügen, weil es von Vorteil sein sollte, oder? Wie gesagt, ich habe ein Fernalarmierungsmodul namens MyCar gekauft. Es ist in verschiedenen Versionen erhältlich, ich hatte ein Linkr LT-1 Modell.



MyCar ist nur eine Marke, und solche Module werden unter den Namen Linkr LT-1, MyCar KIA, Visions MyCar, Carlink (CL6) usw. verkauft. Wie sich herausstellte, installierten KIA-Händler in Kanada dieses System einige Zeit in Autos oder zumindest in einer Anwendung namens MyCar KIA. Interessanterweise steht diese Anwendung nicht mehr im AppStore zum Download zur Verfügung. Ich möchte auch darauf hinweisen, dass ich mich für Fortin- und MyCar-Produkte entschieden habe, aber laut Nutzerkritiken zu den Themenforen für freiberufliche Autoalarme verhalten sich andere Systeme nicht besser und haben ähnliche Probleme.

Ich hatte eine wichtige Frage: Warum wird ein Produkt mit Sicherheitsproblemen auf dem Sekundärmarkt für Autoalarmanlagen verkauft, und stört es jemanden? Wenn sich einer von Ihnen für Fernstartersysteme interessiert, beachten Sie daher einige wichtige Umstände. Erstens, wie ich bereits erwähnt habe, ist es durchaus möglich, dass das Auto nach einem entfernten Motorstart einfach ohne Fahrer fährt, wenn sich ein Gang im Getriebe befindet, wenn das DS-System nicht korrekt in einem Auto mit mechanischem Getriebe installiert ist. Das ist wirklich gefährlich. Die zweite Gefahr besteht darin, dass jemand, der das Auto in einer am Haus angebrachten Garage geparkt und seinen Motor versehentlich aus der Ferne eingeschaltet hat, an dem angesammelten Kohlenmonoxid ersticken kann. Wenn Sie also ein DS-System und eine angeschlossene Garage haben,Sie sollten auf jeden Fall Kohlenmonoxid-Detektoren haben.

Wenn Sie ein DS-System verwenden, versuchen Sie niemals, den Motor der Maschine zu starten, ohne genau zu wissen, wo er sich befindet, da die Folgen katastrophal sein können.

MyCar, eine kleine Blackbox mit zwei Kabeln, verfügt über 8 Ports, von denen zwei für die Debugger-Schnittstelle vorgesehen sind. Das Verbinden mit dieser Schnittstelle zeigte, dass auf dem Gerät Linux ausgeführt wird, worüber der Hersteller schweigt. Es ist einfach, mit dem Kennwort oelinux 123 in die Firmware-Shell zu gelangen. Sie können jedoch auch die AE Engine verwenden, ohne sich anzumelden. Auf diese Weise können Sie AT-Befehle über die Befehlszeile eingeben, einschließlich des Befehls zum Ändern der IP-Adresse des Geräts, mit dem dieses Modul kommuniziert.



In den folgenden Zeilen sehen wir die IP-Adresse des Servers, von dem das MyCar-Modul Firmware-Updates erhält. Das Gerät ist mit einem L-Port ausgestattet, über den Sie die vom Modul empfangenen Befehle "abhören" können. Mithilfe der AE Engine und Ändern der IP-Adresse des gekoppelten Geräts konnte ich feststellen, dass dieses Gerät über das unverschlüsselte UDP-Protokoll mit dem DS kommuniziert.

Ich habe mich nicht besonders damit befasst, aber ich denke, dass dies eine ziemlich bedeutende und interessante Tatsache ist. Wenn Sie an zusätzlichen Informationen zu diesem Gerät interessiert sind, sehen Sie sich diese Folie an - sie zeigt die Spannung 3,3 V, die Datenübertragungsrate 115200 Baud, die Serveradresse zum Aktualisieren der Firmware, das Root-Passwort und einen Link zum Benutzerhandbuch.



Das Gerät kann auch gegenüber einer höheren Versorgungsspannung "tolerant" sein.

Wie gesagt, hier kann es ziemlich kalt sein. Ungefähr einen Monat nachdem ich dieses System meiner Freundin vorgestellt hatte, beschloss ich, das Gerät aus dem Auto zu ziehen und richtig damit zu arbeiten. Tatsache ist, dass ich den ganzen Monat über die Verwundbarkeit dieses Geräts nachgedacht habe. In der nächsten Woche versprachen sie Frost auf -30F °, also musste ich mich beeilen. Ich habe mich mit der Shell verbunden und sie zum Laufen gebracht, aber da die Mobilfunkverbindung in meinem Heimlabor nicht sehr gut ist, habe ich beschlossen, mit dem Gerät auf einem anderen Computer zu arbeiten. Das FTDI-Gerät, das ich verwende, hat ein kurzes Kabel, also habe ich ein längeres gefunden, es an die DS-Einheit angeschlossen, an den Computer angeschlossen, und sobald ich die Stromversorgung einschaltete, begann mein Modul zu rauchen!

Daraus können wir eine Lektion lernen: Wenn Sie sich mit Hardware-Hacking beschäftigen, halten Sie einen Ersatzblock bereit! Meine Freundin formulierte die Moral dieser Geschichte: Wenn Ihr Seelenverwandter ein Hacker ist, lassen Sie ihn nicht mit Ihren Weihnachtsgeschenken spielen! Und jetzt schauen wir uns die Software an, ich denke, hier wird nichts rauchen.



Ich startete einen Man-in-the-Middle-Proxyserver, deaktivierte die SSL-Überprüfung auf meinem Telefon und begann zu beobachten, welchen Datenverkehr die Anwendung an den Serverteil sendet. Bei der Registrierung habe ich festgestellt, dass das System meine E-Mail-Adresse nimmt und an den Webdienst sendet, um sicherzustellen, dass diese Adresse einem vorhandenen Konto zugeordnet ist. Interessanterweise verwendete das System in diesem Fall die Basisauthentifizierung, da ich noch kein Konto erstellt hatte. Ich wusste nicht, was ich mit diesen Informationen anfangen sollte, also schrieb ich sie einfach in ein Notizbuch und ging weiter. Ich habe mein Konto erstellt und mich angemeldet. Als Erstes ruft die Anwendung beim Anmelden einen Webdienst auf, um den aktuellen Benutzer zu überprüfen. Also habe ich diesen Webserver nur mit den Anmeldeinformationen aufgerufen, die ich zuvor gesehen habe und die verwendet wurden, um dies zu überprüfenExistiert meine E-Mail-Adresse und hat Mycar Admin als Antwort Zugriff erhalten?



Ich bezweifelte, dass dies der Bericht des wirklichen Administrators des Systems war, da es trotz des lauten Geräusches nur geringe Berechtigungen hatte. Am Ende kennen wir alle solche Leute.

Daher erstelle ich eine weitere Anfrage - das EngineStart-Team, um das Auto von diesem Konto aus zu starten, klicke auf "Senden", ich erhalte den Status des Befehls "200 OK" und nach etwa drei Sekunden beginnt sich mein Auto zu bewegen.



Wie sich herausstellte, war das Mycar-Administratorkonto tatsächlich ein Administratorkonto, das in der mobilen Anwendung fest codiert war. Aber das ist nicht alles. In einer der vorherigen Folien haben Sie so etwas wie einen API-Schlüssel gesehen. Bei der Überwachung des Datenverkehrs meines gefälschten Proxyservers stellte ich erneut fest, dass diese API-Schlüssel anstelle eines Benutzernamens und eines Kennworts verwendet werden können. Wenn Sie "API" und einen dieser Schlüssel als Benutzernamen verwenden, können Sie den Benutzer authentifizieren.



Also habe ich den Inhalt der Zeile "APIKey" kopiert, in die Zeile "Passwort" der POST-Anwendung eingefügt und auf die Schaltfläche "Senden" geklickt.



Dies funktionierte jedoch nicht und für lange 5 Minuten konnte ich nicht verstehen warum. Schließlich wurde mir klar, dass ich vergessen hatte, die Anführungszeichen und das Komma im kopierten API-Schlüssel auszuschneiden, worüber ich informiert wurde: "Sie haben einen Fehler in der SQL-Syntax gemacht." Mir wurde klar, dass Sie einfach die grundlegende SQL-Injection verwenden können, um den gesamten Anmeldevorgang zu umgehen und Administrator oder beliebiger Benutzer zu werden. Ich glaube nicht, dass jemand versucht hat, ein Auto mit SQL-Injection zu stehlen. Versuchen wir es also.





Im Allgemeinen habe ich mich mit meinem Konto angemeldet, auf "Senden" geklickt und als Antwort den Status "200 OK" erhalten. Diesmal wurde mir klar, ein Video aufzunehmen. Es ist ein bisschen dunkel, weil ich spät abends aus meinem Bürofenster geschossen habe. Also gebe ich den Befehl ein und Sie sehen durch das Fenster, dass unten im Hof ​​der Autoscheinwerfer blinken. Zuerst ist ihr Licht schwach, aber dann beginnen die Scheinwerfer bei voller Leistung zu leuchten - dies schaltete den Motor ein. Also startete ich das Auto mit SQL-Injection (Publikumsapplaus).

Aber das ist nicht alles. Die SQL-Injection kann nicht nur zur Autorisierung verwendet werden, sondern auch zum Ersetzen anderer Parameter wie URLs, Parameter des Abfragezeichenfolgenkörpers usw. Tatsächlich verwendet dieses System überall SQL-Injection. Wenn Sie sich die Fehlermeldungen ansehen, sehen Sie, dass das, was wir als Passwort eingeben, direkt mit der Passwortspalte in der Datenbank verglichen wird.



Dies bedeutet, dass sie einfache Textkennwörter in SQL-Injektionen verwenden. Wie das Sprichwort sagt: "Das ist überhaupt nicht gut, aber sogar sehr schlecht!" Aber genug über SQL, mal sehen, was noch getan werden kann, um ein Auto aus der Ferne zu starten. Sie senden einfach den Befehl "EngineStart" und erhalten im Gegenzug eine Ganzzahlkennung, die die Kennung dieses Befehls ist, in diesem Fall ID = 3. Wenn Sie die Kennung kennen, können Sie einen Dienst "herausziehen", der den Status dieses Befehls meldet.



Durch Erhöhen oder Verringern des ID-Werts ziehe ich den Status eines Teams heraus, das jemals an dieses System gesendet wurde.



Dies ist jedoch nicht besonders interessant, und ich frage mich, ob es einen direkten Hinweis auf ein Objekt gibt, mit dem ich mein Auto starten kann. Daher habe ich den EngineStart-Befehl im Namen eines legitimen Benutzers von meinem Konto aus gestartet und dann versucht, ihn über das Konto eines anderen Benutzers aufzurufen, der keinen Zugriff auf das System haben sollte. Als Antwort erhielt ich eine Fehlermeldung: "Dieses Konto befindet sich außerhalb des Kontexts der Hierarchie." Vielleicht funktioniert diese Hacking-Methode also nicht. Wenn Sie sich diese API ansehen, werden Sie feststellen, dass sie die Informationen dupliziert - die E-Mail-Adresse des Benutzers ist mit seiner Konto-ID vergleichbar.



Wenn Sie eine API entwickeln oder eine API hacken, kann eine solche Vervielfältigung von Informationen, die wir in dieser URL sehen, eine Fehlerquelle sein. In diesem Fall können sich API-Fehler auf vier verschiedene Arten manifestieren.



Wenn Sie sich die rot eingekreisten Fälle 2 und 3 ansehen, sehen Sie direkte Links zum Objekt. In beiden Fällen prüft das System nicht, ob Sie zur Ausführung dieses Befehls berechtigt sind. Ich habe Fall 2 ausprobiert und es hat nicht funktioniert, aber was ist mit Fall 3? Hier müssen wir nur die Kontokennung USER_EMAIL in der URL ersetzen, da diese direkt mit der Kontokennung ACCOUNT_ID verknüpft ist. Früher haben wir die Kennung des Opferkontos verwendet, jetzt verwenden wir das Konto des Angreifers. Daher habe ich die Kennung des Hacker-Kontos und die Kennung des Geräts des Opfers verwendet, den Befehl gesendet und erwartungsgemäß den Status des Befehls "200 OK" erhalten und die Kontrolle über die MyCar-Anwendung erlangt.
Mit drei verschiedenen Angriffsmethoden konnten wir also alles tun, was ein legitimer Anwendungsbenutzer tun kann. Dies bedeutet, dass Sie jedes Auto in der Stadt finden, Marke und Modell in der Anwendung festlegen und das Auto dann aus der Ferne entsperren und starten können. Wir können den Alarm ausschalten oder einschalten, Änderungen am Servicemenü des Autos vornehmen und den Status jedes Teams überprüfen. Und das alles auf drei verschiedene Arten.



Offensichtlich haben MyCar-Entwickler versucht, die Systemfehler irgendwie zu beheben. Bei fest codierten Kennwörtern wird einfach ein Reverse-Proxy-Server vor die Anwendung gestellt, um die für die Autorisierung verwendeten Anmeldeinformationen auszublenden. Das Problem ist, dass Reverse-Proxys keine Zauberei sind und nicht alle Probleme beheben können. Sie haben die SQL-Injection in einem Dienst eines Drittanbieters gespeichert, sodass ich sie auch ohne Kennwort über das Benutzerüberprüfungsverfahren verwenden kann.



Ich beschloss, mir die Struktur der URL genauer anzusehen. Möglicherweise haben Sie bemerkt, dass alle vom System verwendeten Adressen m2m enthalten. Nachdem ich entschieden hatte, dass dies eine Art interne Interaktion für den Autorisierungsmechanismus in der MyCar-Anwendung ist, gab ich diese Buchstaben in Google ein und entdeckte die M2M Suite-Website. Das einzige, was Sie tun müssen, nachdem Sie dieses Formular gesehen haben, ist, dort ein paar einfache Anführungszeichen einzufügen und zu sehen, was passiert. Und was passiert ist, dass Sie die richtige SQL-Injection erhalten (Publikumsapplaus).





Dies geschieht einige Monate, nachdem die Entwickler ein Problem mit der SQL-Injection gemeldet haben. Wenn die Anwendung solche Probleme hat, müssen sie so schnell wie möglich behoben werden, aber wie Sie sehen können, haben die Entwickler nichts unternommen. Eine solche Missachtung der Benutzer finde ich beleidigend.

Das MyCar-Modul verfügt über eine GPS-Einheit, mit der Sie den Standort Ihres Autos verfolgen und in der Anwendung anzeigen können. Wie sich herausstellte, speichern sie jedoch nicht nur den aktuellen Standort von Autos. Sie speichern eine Menge Informationen, viel mehr als nötig, um den aktuellen Standort der Maschine zu verfolgen. In meinem Fall haben sie 13 Tage lang mit der Anwendung etwas weniger als zweitausend Geolokalisierungspunkte von Orten gesammelt, die mein Auto besucht hat. Die Datenschutzrichtlinie des MyCar-Entwicklers enthält kein Wort zu dieser Sammlung von Informationen.

Weiter wird es jedoch schlimmer. Sie können argumentieren, dass dies nur ein Nebeneffekt der Implementierung des Geolokalisierungsdienstes ist. Tatsache ist jedoch, dass sie nicht einfach eine Liste der Orte erstellen, an denen sich Ihr Auto befindet, sondern eine andere API verwenden, die diese Daten analysiert und die Orte ermittelt, an denen sich Ihr Auto am häufigsten befindet. Soweit ich weiß, gibt es in der Datenschutzrichtlinie keinen Hinweis auf eine solche Funktion. Vielleicht ist das nicht so überraschend, denn nach einer Reihe von Suchanfragen fand ich die Muttergesellschaft MyCar namens Procon Analytics, ging zu ihrer Website und besuchte den FAQ-Bereich. Hier bin ich auf die Frage gestoßen: "Wie stellen Sie die Datensicherheit sicher?". Die Antwort des Unternehmens lautete: „Im Gegensatz zu öffentlichen Cloud-Umgebungen, die um die Speicherpriorität kämpfen,Procon Analytics verwendet eine eigene virtuelle Cloud, die ausschließlich für Benutzer unserer Anwendung verwendet wird und vor anderen Benutzern geschützt ist. Dies ist eine spezielle Cloud-Umgebung mit einem hohen Schutzniveau, die eine einfache Verfügbarkeit und Geschwindigkeit der Servicebereitstellung bietet. Durch die Zusammenarbeit mit Procon Analytics können Sie sicher sein, dass Ihre Daten gut geschützt sind. “ Ich weiß nicht einmal, was ich sagen soll ...



Wenn Sie auf ihre Facebook-Seite gehen, können Sie noch interessanter herausfinden. Hier schreiben sie direkt: "Der Schutz von Informationen über Ihr Fahrzeug ist von entscheidender Bedeutung!". Nun, ich kann dieser Aussage nur zustimmen.

Zurück zu der Frage, mit der ich begonnen habe: „Wie passiert das und wie kann dies vermieden werden?“ Und was noch wichtiger ist: Wie können wir als Gemeinschaft dies verhindern?

Dies ist das Ende meines Berichts, aber ich kann noch einige Fragen beantworten (Applaus des Publikums).

Fragen Sie, ob sie alles repariert haben? Im Moment denke ich, dass sie alle Fehler behoben haben, die ich ihnen gemeldet habe, mit Ausnahme der Mängel der Datenschutzrichtlinie, die ich am Ende der Rede erwähnt habe. Als ich es das letzte Mal überprüft habe, war alles unverändert. Auf die Frage, ob ich die Parameter des elektronischen Motorsteuergeräts der ECU auf diese Weise bearbeiten kann, werde ich antworten, dass meine Aufgabe darin bestand, die Fahrzeugparameter nur in der MyCar-Anwendung zu bearbeiten. Es speichert die digitale Darstellung des Autos, die durch direkten Zugriff auf das Objekt, SQL-Injection oder einen anderen Angriffsvektor bearbeitet wird.

Die letzte Frage lautet: Habe ich ein schlüsselloses Motorstartsystem im Auto mit der Starttaste und wie ist die Situation beim Blockieren des Lenkrads in diesem Fall? Meine Antwort ist, dass MyCar einen solchen Knopf hat, so dass dieses System kein Lenkradschloss hat. Ich vermute, wenn Sie dieses System installieren, können Sie sich definitiv nicht auf ein Schloss verlassen, um das Lenkrad zu blockieren.


Ein bisschen Werbung :)


Vielen Dank für Ihren Aufenthalt bei uns. Gefällt dir unser Artikel? Möchten Sie weitere interessante Materialien sehen? Unterstützen Sie uns, indem Sie eine Bestellung aufgeben oder Ihren Freunden Cloud-basiertes VPS für Entwickler ab 4,99 US-Dollar empfehlen , ein einzigartiges Analogon von Einstiegsservern, das von uns für Sie erfunden wurde: Die ganze Wahrheit über VPS (KVM) E5-2697 v3 (6 Kerne) 10 GB DDR4 480 GB SSD 1 Gbit / s ab 19 $ oder wie teilt man den Server? (Optionen sind mit RAID1 und RAID10, bis zu 24 Kernen und bis zu 40 GB DDR4 verfügbar).

Dell R730xd 2-mal günstiger im Equinix Tier IV-Rechenzentrum in Amsterdam? Nur wir haben 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2,6 GHz 14C 64 GB DDR4 4 x 960 GB SSD 1 Gbit / s 100 TV von 199 US-Dollar in den Niederlanden!Dell R420 - 2x E5-2430 2,2 GHz 6C 128 GB DDR3 2x960 GB SSD 1 Gbit / s 100 TB - ab 99 US-Dollar! Lesen Sie mehr über den Aufbau eines Infrastrukturgebäudes. Klasse C mit Dell R730xd E5-2650 v4-Servern für 9.000 Euro für einen Cent?

All Articles