DEFCON 27 Konferenz. Buttplug: True Penetration Testing. Teil 2

Analysten gehen davon aus, dass es derzeit etwa 10 Milliarden Geräte aus dem Internet der Dinge (IoT) gibt. Manchmal gewinnen diese Geräte ihren Platz auf dem Markt und klettern buchstäblich auf menschliche Ärsche. Wie sich herausstellte, eignen sich billige und stromsparende Funkchips nicht nur hervorragend für die Heimautomation, sondern verändern auch die Art und Weise, wie Menschen mit Sexspielzeug umgehen. In diesem Bericht tauchen wir in die Welt der Fernsehdildonik ein, der Technologie des Sex in einer Entfernung, in der Tast-, Temperatur- und andere Empfindungen zwischen Partnern über eine bidirektionale Kommunikationsleitung übertragen werden. Der Sprecher wird Ihnen sagen, dass die Sicherheit von elektronischen elektronischen Analsexspielzeugen von Buttplug einem Angreifer entgegengesetzt werden kann, der Schwachstellen auf jeder Ebene des Stapels findet und ausnutzt. Letztendlich können dadurch die Sextoys selbst kompromittiert werden.und die Geräte, mit denen sie verbunden sind.



Ein Hacker mit dem Spitznamen smea oder Smealum begann seine Karriere als Entwickler von Videospielen für Spielekonsolen wie Nintendo DS und versuchte gleichzeitig, sie zu knacken. Irgendwann erwarben die Konsolen ernsthafte Sicherheitssysteme, und Smea wechselte von selbst entwickelter Software zur Entwicklung von Techniken, um diese zu brechen. Smea ist bekannt für seine „Arbeit“ an Nintendo 3DS und Wii U, hat aber auch zur Entwicklung von Exploits für die beliebtesten Webbrowser und Virtualisierungsstacks beigetragen. Wahrscheinlich interessierte er sich jetzt dafür, in „intelligente“ Analplugs einzubrechen.

DEFCON 27 Konferenz. Buttplug: True Penetration Testing. Teil 1



Natürlich können Sie eingehende Nachrichten auch bei einer so kurzen Zeilenlänge verwalten. Zum Beispiel reichen 30 Zeichen aus, um schädliches JavaScript auszuführen. Diese Folie zeigt ein Beispiel-Tag mit einer Länge von 30 Zeichen für ein Bild aus einer nicht vorhandenen Quelle <img src = a onerror = 'alert (1)'>, wodurch die Anwendung eine Fehlermeldung anzeigt. Diese Meldung wird angezeigt, wenn das Laden von Bildern wirklich nicht möglich ist. Der Screenshot zeigt, dass Sie durch das Herstellen einer Verbindung über einen kompromittierten Dongle schädliches JavaScript ausführen können.



Die Beschränkung auf 32 Zeichen ist ärgerlich, da es schwierig ist, die Nutzlast des Volumens zu ermitteln, aber es ist durchaus möglich. Sie sehen also, dass wir die Anwendung mit einem USB-Stick erfolgreich kompromittiert haben und nun auf halbem Weg sind, das Hacken rückgängig zu machen, dh die Anwendung mit einem Hacker-Bootplag zu kompromittieren. Das Hacken auf einer Dongle-Computer-Site kann auf zwei Arten erfolgen: Über einen Computer können Sie einen Dongle kompromittieren, und über einen Dongle können Sie einen Computer kompromittieren.

Der Dongle fungiert als kleine Brücke zwischen dem Boot-Plug und der Anwendung. Es stellt sich die Frage: Ist es möglich, dieselbe Sicherheitsanfälligkeit zu verwenden, um eine Anwendung auf einem Computer direkt über das Bootplag zu gefährden? Leider ist die Antwort auf diese Frage negativ, und der Grund dafür ist, dass die Länge der Nachrichtenzeichen, die vom Boot-Plug-In für die Anwendung stammen, erneut eingeschränkt ist.



Der Dongle packt einfach die Nachrichten des Boot-Plug-Ins und sendet sie an die Anwendung. In diesem Schritt können Sie Ihren HTML-Code in sie einfügen. Es kann jedoch gleichzeitig eine Nachricht empfangen werden, die nicht länger als 20 Byte ist. Dies reicht nicht aus, um einen XSS-Angriff auszuführen. Es gibt jedoch einen Fehler in der Dongle-Firmware: Am Ende der Zeile wird nicht nach dem Null-Terminator gesucht. Wenn Sie daher nach dem Ende einer Zeichenfolge mit 20 Zeichen einige nicht initialisierte Daten platzieren können, können Sie der Anwendung mehr als 20 Zeichen senden. Leider habe ich keinen Weg gefunden, diese Sicherheitsanfälligkeit in der Praxis zu nutzen, aber eine solche Gelegenheit ist es wert, in Betracht gezogen zu werden.

Das Problem ist also, dass Sie diese Sicherheitsanfälligkeit wahrscheinlich nicht verwenden können, um die Anwendung zu zwingen, Code auszuführen, der direkt vom Boot-Plug-In empfangen wurde. Es ist traurig, aber noch trauriger, wenn Sie sich die Dongle-Firmware ansehen, können Sie sehen, dass sie im Prinzip nichts mit den empfangenen Daten macht, sondern sie einfach in eine neue Zeile kopiert und weiter sendet. Daher können wir seine Sicherheitsanfälligkeit nicht für Angriffe verwenden, bei denen der Speicherpuffer überfüllt wird. Wenn es jedoch unmöglich ist, die Anwendung direkt vom Boot-Plug-In zu hacken, ist dies möglicherweise über die Boot-Plug-Dongle-Computer-Kette möglich.
Das Gute ist, dass Sie mit dem Dongle-Chip viel mehr Code platzieren können, als für das ursprüngliche Lovense Hush-Entwicklerprogramm erforderlich ist.



Der Flash-Speicher des Dongles enthält einen Bereich, der für den DFU-Loader reserviert ist, einen Bereich für die Lovense-Anwendung selbst und einen geschlossenen SoftDevice-Bereich für den Hardwaretreiber für den Nordic Semiconductor BLE-Chip. Hier wird das BLE-Protokoll selbst verarbeitet. Wenn eine Anwendung beispielsweise eine BLE-Nachricht an ein Spielzeug senden möchte, greift sie über einen SVC-Aufruf auf SoftDevice zu. Zusätzlich zu diesen 3 Bereichen verfügt der Dongle über einen nicht verwendeten Flash-Speicherbereich mit ausreichend großem Volumen.
Um die Sicherheitsanfälligkeit im BLE SoftDevice-Stack zu finden, müssen Sie Reverse Engineering verwenden, da es sich nicht um Open Source handelt. Ich habe das gleiche getan, um die Sicherheitslücke des Firmware-Plug-Ins zu finden. In diesem Fall ist es sehr einfach, den Datenfluss zu verfolgen, da dort auch keine ASLR vorhanden ist und der Code, der diese Nachrichten verarbeitet, leicht ermittelt werden kann.



Rechts auf der Folie sehen Sie den GATTC-Handler für eingehende Pakete (ein Profil mit allgemeinen Attributen), der im Wesentlichen ein Dongle ist. Insbesondere handelt es sich um einen Lesehandler nach Art der Antwortpakete. Ich bin kein Spezialist für Bluetooth-Geräte, aber ich denke, der Punkt hier ist, dass der Dongle den Typ des Peripheriegeräts liest und Handler für alle Optionen für die mit diesem Typ verbundenen Attribute verwendet. Dies bedeutet, dass Sie tatsächlich mehr als ein Attribut gleichzeitig erhalten können und die Größe jedes Handlers eines Paares von Attributdaten als Feld innerhalb des Pakets codiert wird, mit dem Sie diese verwalten können.



Die Folie zeigt ein Beispiel eines solchen Pakets. GATT-Clients können ein Anforderungspaket zum Lesen nach Typ senden, das den Typ und den Bereich der zu lesenden Deskriptoren enthält. Server, die auf die Anforderung zum Lesen nach Typ antworten, geben Daten zurück, die den Handlern innerhalb des diesem Typ entsprechenden Bereichs zugeordnet sind. Die Anzahl der Deskriptor / Daten-Paare wird bestimmt, indem die Länge des verbleibenden Pakets durch die Feldlänge des Deskriptor / Daten-Paares dividiert wird. Dieses Feld ist immer 0x7 oder 0x15.



Die Folie zeigt die Funktionsweise der Funktion, an der wir interessiert sind: Sie sehen, wie das Paket mit Daten aus einem Array von Attributen gefüllt und ihnen eine feste Pufferlänge zugewiesen wird. Hier wird der Deskriptorwert und dann der ihm zugeordnete Zeiger platziert. Ein Attributarray besteht aus Binärdaten, die im Hexadezimalformat im Puffer abgelegt werden. Die Daten sind blau hervorgehoben, und daneben der 0D-Deskriptor und der zugehörige Zeiger 00 sind orange hervorgehoben. Das Paket des zweiten und dritten Handlers sieht ähnlich aus.

Die Sicherheitsanfälligkeit ist wie folgt. Wenn Sie den Code rechts lesen, sehen Sie den Parameter attribute_data_length in einem violetten Rahmen - die Länge der eingehenden Nachricht, deren Wert vollständig von einem potenziellen Angreifer gesteuert wird. Wenn wir dort einen Nullwert setzen, erhalten wir eine Endlosschleife.



Die Schleife wird unendlich, da der Code nicht prüft, ob sich die Daten, die er in den Ausgabepuffer schreibt, in diesem Ausgabepuffer befinden. Als Ergebnis erhalten wir einen klassischen Stapelpufferüberlauf, da das Gerät nicht über ASLR oder DEP verfügt und der Code sofort ausgeführt wird.

Wenn Sie den Wert Null zuweisen und eine Endlosschleife erhalten, ersetzen Sie tatsächlich alle RAM-Daten durch Müll. Dies ist jedoch eine erfolglose Lösung, da dies wahrscheinlich zu einem Gerätefehler führt. Wenn Sie jedoch den Wert 1 verwenden, wird die Anzahl der Bytes in der eingehenden Nachricht begrenzt. Dies bedeutet Folgendes: Sie können diesen Puffer leicht überfüllen, und dann kann der Puffer, der auf dem Stapel basiert, alles beschädigen, was sich daneben befindet.



Mal sehen, wie der Stapel vor dem Überlauf aussieht. Das Array der Pufferattribute, über das wir gesprochen haben, ist gelb hervorgehoben, die gespeicherten Register blau und die Rücksprungadresse orange. Wenn Sie die Attributlänge auf 0x01 setzen, können viele Handle / Datenzeiger-Paare überlaufen. Deskriptoren bestehen aus 2 Bytes, aber die beiden obersten Bytes des DWORD-Deskriptors werden nicht gelöscht. Der Puffer, den wir überlaufen, befindet sich auf dem Stapel ohne Cookies, ohne ASLR, ohne DEP.



Als nächstes testen wir das System: Senden Sie ein Paket voller 0xDA-Bytes mit einer Attributlänge von 0x01. Es stellt sich heraus, dass wir die Absenderadresse mit einem Zeiger auf unsere Attributdaten neu schreiben. Da es keine DEP gibt, bedeutet dies, dass bei jeder Rückkehr der Funktion der Code in unserem Paket ausgeführt wird. Die einzige Einschränkung besteht darin, dass die Rücksprungadresse benötigt wird, damit das LSB auf das niedrigstwertige Bit gesetzt ist, sodass der Code im Thumb-Modus ausgeführt wird, da der Cortex M0-Prozessor den ARM-Modus nicht unterstützt.



Wir schreiben auch mehrere lokale Variablen neu und stellen dabei sicher, dass wir nichts neu schreiben, was auf dem Rückweg verwendet wird. Grundsätzlich erhalten wir ein klassisches Backdoor-Paket. Wenn Sie auf diesen Stapel achten, werden Sie feststellen, dass der neu geschriebene nicht dem Rand entspricht, was zum Absturz des Programms führt.

Es gibt eine weitere Anforderung bezüglich gespeicherter Register. Dies sind lokale Variablen, die auch überschrieben werden, wenn die Funktion zurückgegeben wird.



Eine davon wird verwendet, um einen 32-Bit-Rahmen zu dereferenzieren. Wenn der Inhalt nicht mit dem Rand übereinstimmt, stürzt das Programm ab. Daher müssen Sie sicherstellen, dass saved_arg_3 = 0, saved_arg_4 DWORD entspricht, dh innerhalb der Grenze liegt und LSB festgelegt ist.

Daher müssen wir sicherstellen, dass dieses Paket funktioniert. Glücklicherweise ist dies sehr einfach, da die Art und Weise, wie SoftDevice diese eingehenden Pakete verteilt, ein Ringpuffer ohne erzwungene Ausrichtungsanforderungen ist. Whiteshark ermöglichte es zu überprüfen, ob die Ausrichtung des nachfolgenden Pakets durch Ändern der Länge des vorherigen Pakets gesteuert werden kann.



Gelb und Blau haben 2 Pakete hervorgehoben, die gesendet werden, bevor das Exploit-Paket gesendet wird. Auf diese Weise kann ich die Ausrichtung des letzten Pakets steuern und so gestalten, dass es nicht zu einem Programmabsturz kommt, was wir anstreben.

Ich stelle fest, dass es ein bestimmtes technisches Hindernis gibt: Nordic SoftDevice bietet keine Schnittstelle zum Senden von rohen BLE-Paketen. Um dies zu umgehen, können Sie zwei Optionen verwenden: Implementieren Sie Ihren eigenen BLE-Stapel oder knacken Sie einige Haken in den Originalpaketen. Da ich faul bin, habe ich Option 2 gewählt.

Diese Haken sind recht einfach, erfordern jedoch ein Reverse Engineering. Hacking-Methoden finden Sie auf Github, die Benutzeroberfläche ist ziemlich "schmutzig" und es gibt keine Garantie dafür, dass dies funktioniert, aber ich habe es getan. Mit BTLEJack sind Sie immer noch besser dran.

void ble_outgoing_hook(uint8_t* buffer, uint8_t length);

Dieser SoftDevice-Zeiger wird immer dann aufgerufen, wenn ein BLE-Paket gesendet wird, sodass er im Voraus geändert werden kann:

int ble_incoming_hook(uint8_t* buffer, uint16_t length);

Dieser Hook SoftDevice ruft immer dann auf, wenn ein BLE-Paket empfangen wird. Der Rückgabewert bestimmt, ob die normale SoftDevice-Verarbeitung übersprungen werden soll.

int send_packet(void* handle, void* buffer, uint16_t length);

So sieht die Funktion zum Senden des Rohpakets an diese BLE-Verbindung aus.

Wie kann ich mehr als 4 Byte Code gleichzeitig verarbeiten? Müssen einige Pakete senden! Rechts sehen Sie den Ringpuffer eingehender BLE-Pakete. Das erste Paket wird grün angezeigt: Der Shell-Code, der einen Funktionsaufruf mit gesteuerten Parametern ausführt und dann "clean" zurückgibt. Das zweite Paket wird gelb angezeigt - dies ist ein Datenpuffer, der von einem Funktionsaufruf verwendet werden kann. Das dritte Paket wird blau angezeigt - ein Puffer, der die Werte der Funktionsaufrufparameter enthält, und orange - das Paket, das die Sicherheitsanfälligkeit mithilfe der Anweisung C1 E7 auslöst.



Nach Rückgabe der reinen Funktion können wir dieses Paket erneut senden. Das Senden dieser 4 Pakete führt einen beliebigen Code innerhalb des Dongles aus, und dies kann immer wieder erfolgen.



Dies ist praktisch, da ich auf diese Weise memcpy wirklich einfach mehrmals aufrufen kann, um die größere Shell-Code-Binärdatei in den RAM zu kopieren. Dann rufen wir diese Funktion auf, um den ursprünglichen Dongle-Code im Speicher zu patchen und damit die auf dem Computer installierte Anwendung zu gefährden. Da die XSS-Nutzdaten groß sind, senden wir sie nicht, sondern generieren sie im Shell-Code auf dem Dongle. Der Shell-Code lautet wie folgt.



Als Ergebnis dieser Manipulationen wird Folgendes erhalten: Wenn wir die Anwendung steuern können, können wir den Dongle und das Bootplag steuern.



Es gibt zwei Möglichkeiten, den Buttplag-Dongle-Bereich zu hacken: Der Dongle kann das Spielzeug gefährden, und der Buttplag kann sowohl den Dongle als auch den Computer gefährden. Der Bonus ist, dass die nordische BLE-Sicherheitsanfälligkeit nicht nur in Lovense-Produkten vorhanden ist, sondern auch in allen Geräten, die SoftDevise S110, S120 oder S130 für die Client-Seite von BLE verwenden.

Wir haben also die Möglichkeit, die Anwendung mithilfe des Bootplags zu gefährden. Wie kann das genutzt werden? Wir führen immer noch nur JavaScript-Code in der Lovense-Anwendung aus, und die Frage ist, was uns das bringt. Es stellt sich heraus, dass die Anwendung lovense.exe unter Medium IL und unter Windows ausgeführt wird. Sie bietet wirklich unbegrenzte Möglichkeiten: Auch ohne Administratorrechte können Sie auf Dateien auf Ihrem Computer zugreifen, beliebigen Code ausführen, XSS implementieren und auf das Netzwerk zugreifen usw.



Die nächste Frage: Wenn Sie ein Ransomware-Programm erstellen können, das nicht nur das Bootplag, sondern auch den Computer des Benutzers infiziert, gibt es eine Möglichkeit, es weiter zu verbreiten, indem Sie es viral machen? Jetzt haben wir einen Hack auf lokaler Ebene, aber für einen Hacker wäre es viel nützlicher, die Kontrolle über viele Benutzercomputer über das Internet zu erlangen. Wie machen wir das? Die sozialen Funktionen des Spielzeugs wie Video-Chat, Text-Chat, Bildübertragung und die Fernbedienung selbst erweitern die Angriffsfläche erheblich.

Die Fernsteuerung ist ein hervorragendes Ziel, denn wenn ein Entwickler ein proprietäres Programm verwenden möchte, weist es definitiv Fehler und Schwachstellen auf. Wie benutzt man es? Sie können einem Partner beispielsweise ein JSON-Objekt senden, das Befehle enthält, z. B. den Befehl „Vibrieren: 10“:

{
cate: "id",
id: {
DEADBABEBEEF: {
v: 10
}
}
}

In diesem Fall analysiert der Empfänger den eingehenden JSON, generiert einen Befehl für das Spielzeug und sendet ihn weiter. Hier gibt es zwei Modi. Der erste Modus "id:" sendet einen Befehl an ein bestimmtes Sexspielzeug, der zweite Modus "all:" sendet einen Befehl an alle entfernten Spielzeuge.
Werden eingehende Daten korrekt validiert? Da JSON sehr flexibel ist, kann der Code, der eine Zahl erwartet, stattdessen eine ganze Zeichenfolge erhalten. Wenn wir die an das Spielzeug gesendeten Befehle steuern können, können wir wahrscheinlich den Dongle-Parser-Fehler verwenden. Auf der nächsten Folie zeigt der orangefarbene Rahmen, wo die Eingabedaten verwendet werden, und der blaue, wo sie überprüft werden.
Dieser Fehler besteht darin, dass die Anwendung nicht ordnungsgemäß überprüft, ob die Eingabe für einen Befehl wie vibrieren tatsächlich eine Ganzzahl ist. In diesem Fall wird im Modus "id:" nur überprüft, ob der Schwingungsintensitätsindex n> = 0 ist. Wenn Sie eine Ganzzahl 12 übergeben, die größer als Null ist, besteht dieser Parameter den Test. Selbst wenn Sie eine Zeichenfolge übergeben, dh die Zahl in Anführungszeichen „12“, akzeptiert das System diese. Es wird nicht nur eine Zeichenfolge in Form einer Kombination aus Zahlen und Buchstaben akzeptiert, z. B. "12test".



Wie Sie sehen können, können wir bei dieser Prüfung keinen Textbefehl eingeben. Wenn Sie sich jedoch den unteren Rand des Codes ansehen, sehen Sie dieselbe Prüfung, nur dass die Anwendung diesmal die Bedingung n <0 prüft. Wenn wir nun "12test" eingeben, bestehen wir den Test nicht, da die Anwendung berücksichtigt, dass der angegebene Ausdruck als Zeichenfolge nicht kleiner als 0 ist. Wenn wir jedoch eine Zeichenfolge mit einer Ungleichheitsprüfung der Form eingeben! ("12test" <0), betrachtet das System dies als wahr , trotz der Tatsache, dass dies keine ganze Zahl und überhaupt keine Zahl ist, sondern eine alphanumerische Kombination. Im Wesentlichen bedeutet dies, dass wir in diesen Befehl eine beliebige Zeichenfolge eingeben können, die an den Dongle gesendet wird. Auf diese Weise können wir den Exploit-Code auf die gleiche Weise wie zuvor senden, um den Dongle über den JSON-Parser zu kompromittieren. Der einzige Unterschied ist, dass dies jetzt über das Internet möglich ist.



Dank eines Fehlers in der Implementierung des Filters zum Überprüfen eingehender Daten hatten wir die Möglichkeit, den Dongle über die Lovense-Anwendung aus der Ferne zu kompromittieren, wodurch wir wiederum den Computer des Benutzers knacken können. Das Hacken eines Dongles ist eine großartige Sache, aber die Voraussetzung für den Erfolg ist die Zustimmung des Partners, die Fernbedienung über das Spielzeug an den getarnten Angreifer zu übertragen. Dies ist praktisch für einen gezielten Angriff, für einen viralen jedoch völlig ungeeignet.

Für Text-Chat und Bilder sind jedoch keine Berechtigungen erforderlich. Dies ermöglicht einen klassischen XSS-Angriff, indem schädlicher HTML-Code in einer Chat-Textnachricht gesendet wird. Das Verteilen des Virus wird trivial: Erstellen Sie einfach die richtige JavaScript-Funktion und spammen Sie Ihre Freunde.



Zu diesem Zeitpunkt können wir den Code nur durch Senden einer Nachricht ausführen und haben im Grunde unser Ziel erreicht. Die endgültige XSS-Nutzlast funktioniert folgendermaßen:

  1. Tun Sie alles, was auf dem Computer des Opfers passieren sollte.
  2. Besorgen Sie sich ein JavaScript-Objekt, mit dem Sie auf den Chat zugreifen können.
  3. Senden Sie eine XSS-Nutzlast, die dieses Skript herunterlädt, auf die Computer aller Ihrer Freunde.


Daher haben wir jeden Knoten des Netzwerks vom Boot-Plug-In bis zum Internet kompromittiert. Jetzt können Sie jedes Gerät von jedem Gerät aus kompromittieren - wir haben einen Butt-Wurm oder einen Virus namens "Ass-Wurm" erstellt.



Wie ich versprochen habe, zeige ich Ihnen jetzt ein Live-Video. Das erste, was ich zeigen werde, ist die Verwendung der BTLE-Buchse, um die Verbindung zwischen dem Boot-Plug-In und der normalen virtuellen Windows-Maschine abzufangen, mit der der Dongle verbunden ist. Jetzt werde ich versuchen, die Bootplag einzuschalten - ich hoffe, Sie alle hören die Geräusche der Vibration! (Lachen). Es hat also funktioniert. Jetzt werde ich versuchen, mein Spielzeug zum Anwendungsbedienfeld hinzuzufügen. Sehen Sie, dass das Programm Hush gefunden hat, aber warten Sie eine Minute! Ich habe vergessen, den BTLE-Jack-Prozess zu starten. Der einzige Grund, warum Sie die BTLE-Buchse in diesem Modus verwenden müssen, ist, dass dies die Live-Demo vereinfacht. In der Praxis können Sie jedoch eine vorhandene Verbindung abfangen, ohne schnüffeln zu müssen. Also starte ich dieses Ding nur, um das Experiment zu vereinfachen. Lassen Sie uns noch einmal wiederholen. Sie sehen, dass die Verbindung zum Spielzeug hergestellt ist.



Der Sniffer links zeigt an, dass er diese Verbindung gefunden hat. Wir haben also eine Anwendung, die mit unserem Sexspielzeug verbunden ist. Ich weiß nicht, ob Sie hören, dass ich das Boot-Plug-In wirklich steuern kann (smea bewegt den Schieberegler nach oben, woraufhin ein verstärkendes Vibrationsgeräusch zu hören ist). Jetzt schalte ich das Ding aus (bewegt den Schieberegler nach unten, das Geräusch der Vibration verschwindet). Jetzt muss ich diese Verbindung hacken. Dazu kopiere ich mehrere Parameter, füge sie in die Zeile smea @ ubuntu ein und gebe am Ende den Parameter t ein - einen Befehl zum Abfangen der Verbindung.



Wenn dies funktioniert, wird die Verbindung mit der Anwendung unterbrochen. Wie Sie sehen können, wurde im Anwendungsfenster die Meldung angezeigt, dass die Verbindung zum Gerät unterbrochen wurde. Danke BTLE Jack für ein tolles Tool! Das Bootlog wurde von der Anwendung getrennt und wird jetzt über die virtuelle Ubuntu-Maschine gesteuert. Theoretisch sollten wir in der Lage sein, es aus der Ferne zum Vibrieren zu bringen. Ich rekrutiere ein Vibrate 20-Team, und wie Sie sehen, funktioniert alles - wir konnten die Bootplag fernsteuern, ohne die offizielle Anwendung zu verwenden (Applaus vom Publikum). Jetzt werde ich es in den DFU-Modus versetzen, und wenn das funktioniert, muss ich dieses Ding stoppen. Ich gebe den entsprechenden Befehl ein und die Vibration hört auf.



Jetzt nehme ich mein Smartphone und überprüfe, ob ich das Spielzeug über die Anwendung wieder verbinden kann. Unter meinen Anwendungen finde ich das Update des Firmware-Plug-Ins und wähle das Ziel-DfuTarg aus - das Gerät, auf dem die Firmware aktualisiert werden muss, aber tatsächlich einen böswilligen Exploit einführt.



Sie sehen, wie der Aktualisierungsprozess abläuft. Auf dem Bildschirm wird die Meldung angezeigt, dass die Gerätefirmware erfolgreich aktualisiert wurde. Jetzt werde ich erneut versuchen, das Bootplag mit der auf meinem Computer installierten Anwendung zu verbinden, und Sie sehen, was passiert: Der Ransomware-Bildschirmschoner wird auf dem Bildschirm angezeigt (Applaus vom Publikum)!



„Ups, dein Butt Plug ist verschlüsselt! Bezahlen Sie die Wiederherstellung des Zugangs zu diesem wichtigen Spielzeug mit 50-Dollar-Bitcoins innerhalb von 3 Tagen, sonst verlieren Sie es in einer Woche für immer. “ So funktioniert das!

Sie haben also den Code auf dem Dongle ausgeführt, dann auf dem Computer und über das Internet zum Boot-Plug gelangt. Wie Sie sehen können, ist dieser Butt Plug in Bezug auf die Sicherheit sehr schwach, wahrscheinlich wurde er von Nordkorea hergestellt. Sie haben gesehen, dass ich eine virtuelle Maschine installiert habe, auf der die Anwendung ausgeführt wird, ohne mit einem Dongle oder einer anderen Hardware verbunden zu sein. Diese VM war nur mit dem Internet verbunden und schien mit dem Computer meines Freundes verbunden zu sein. Damit haben wir die virale Verbreitung der Ransomware erfolgreich erreicht.

Ich denke, dass aus all dem, was gesagt wurde, ein paar nützliche Lektionen gelernt werden können. Am Beispiel dieses Geräts haben wir untersucht, wie anfällig die Welt des Internet der Dinge sein kann. Einige Geräte werden zur Lebenserhaltung verwendet, und die Menschen wissen nicht, wie anfällig diese neuen Technologien sind. Wenn Sie eine „intelligente“ Sache hacken, können Sie andere „intelligente“ Geräte in Ihrem Haus über das Internet anschließen. Ich hoffe, dass das Ergebnis meiner Forschung nicht nur auf Sexspielzeug anwendbar ist. Außerdem habe ich vor, den gesamten Code für diese Sache zu lernen, also mach mit bei Twitter. Ich werde meine Tools heute auch auf GitHub veröffentlichen, falls Sie anfangen möchten, Ihre eigenen Bootloops zu hacken.



Ich möchte mich bei allen meinen Freunden bedanken, die mir beim Pentesting geholfen und mich als extreme Schwule in die Welt der Kampfstöpsel eingeführt haben. Ich werde keine Namen nennen, aber Aaron, du selbst weißt, wer du bist (Gelächter). Danke Jungs, das war großartig!


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, wie Sie eine Infrastruktur aufbauen Klasse C mit Dell R730xd E5-2650 v4-Servern für 9.000 Euro für einen Cent?

All Articles