
Yandex.Station ist ein intelligenter Lautsprecher mit Sprachassistentin Alice. Um es zu aktivieren, müssen Sie das Telefon mitbringen und den Sound der Yandex-Anwendung abspielen. Unter dem Schnitt werde ich Ihnen erzählen, wie dieses Signal funktioniert, über das
Passwort für WiFi in offener Form und versuchen, die Idee der Datenübertragung durch Ton zu entwickeln.
Präambel
Ich absolvierte die Fakultät für Funktechnik des MIPT, studierte und entwickelte Kommunikationssysteme von Protokollen der physikalischen Schicht bis hin zu Bundesnetzen. Als Freunde Yandex.Station vorstellten, fragte ich mich sofort, wie die Datenübertragung zur Aktivierung über das Audio-Token organisiert war.
Aktivierungsprozess
Wenn Sie eine neue Spalte aktivieren, müssen Sie Informationen übertragen, um eine Verbindung zu einem WiFi-Netzwerk herzustellen und die Yandex-Dienste zu autorisieren. In der Station erfolgt dies über Ton und sieht aus wie im folgenden Video (7:34).
"... Informationen werden übertragen, natürlich nicht durch Ton ..." - sagt Valentin. Er hätte gewusst, dass in diesem Moment sein WiFi-Passwort in fast offener Form ins Video kam! Aber dazu später mehr.
Überlegen Sie in der Zwischenzeit, was gerade passiert. Das Telefon nimmt Daten im WiFi-Netzwerk (ssid vom System, der Benutzer gibt das Passwort ein) und Daten zur Autorisierung in Yandex auf. Sie werden irgendwie vom Lautsprecher des Telefons codiert, moduliert und ausgegeben. Die Station demoduliert das Signal von den Mikrofonen, decodiert die Daten und verwendet sie, um eine Verbindung zum Netzwerk und zur Autorisierung herzustellen.
In diesem Prozess interessiert uns, wie Daten
codiert und
moduliert werden .
Visuelle Demodulation
Um eine Signalprobe zu erhalten, wird die Station selbst nicht benötigt. Es ist nur erforderlich, dass das Telefon über das Internet mit WLAN verbunden ist. Ich habe beschlossen, Zugangspunkte mit unterschiedlichen SSIDs und Passwörtern zu erstellen, um zu sehen, wie sich das Signal ändert. Der Einfachheit halber begann ich, Ton in Dateien aufzunehmen und mit ihnen zu arbeiten.
Zuerst habe ich einen Zugangspunkt mit dem zufälligen Passwort „012345678“ erstellt und ein Telefon daran angeschlossen. Ich klickte auf „Sound abspielen“ und nahm das resultierende Signal auf. Schauen wir uns das zeitliche Spektrum an (Wasserfall). Hier repräsentiert die vertikale Achse die Frequenz, die horizontale Achse repräsentiert die Zeit und die Farbe wird durch die Amplitude bestimmt.
Es ist also ersichtlich, dass eine Frequenzmodulation verwendet wird und die Daten in 40-ms-Zeichen übertragen werden. Sie können auch die zunehmende Teilfolge hervorheben:

Hör auf! Es scheint, wir hatten ein wachsendes Passwort. 012345678. Wie sehen diese Zahlen in ASCII- oder UtF-8-Codierungen aus?
30 31 32 33 34 35 36 37 38. Wow! Ich musste nicht einmal das Passwort ändern! Hier ist es:

Ich habe versucht, das Passwort zu ändern und habe sichergestellt, dass ich seine Position im Signal richtig bestimmt habe.
Es stellt sich heraus, dass die Daten in 4-Bit-Zeichen codiert sind. Tatsächlich wird eine Hex-Zeichenfolge codiert, wobei jeder Wert 0 - F seine eigene Frequenz von 1 kHz bis 4,6 kHz in Schritten von 240 Hz hat. Gleichzeitig gibt es zu Beginn und am Ende der Übertragung Strahlung mit Frequenzen über 5 kHz - die Start- und Endmarkierungen sind auf physikalischer Ebene vom Hauptteil getrennt.
Dekodierung
Um Symbole nicht jedes Mal, wenn ich das Spektrum betrachte, auf ein Blatt Papier umzuschreiben, habe ich einen einfachen Python-Empfänger entworfen, der die Audiodatei stabil genug in die ursprüngliche Hex-Zeichenfolge konvertiert. Ich begann die SSID des Zugriffspunkts zu ändern und zu analysieren, welche Bytes davon betroffen sind. Als Ergebnis stellte sich heraus, dass Informationen über ssid in zwei Bytes vor dem Passwort gespeichert werden. Die Länge dieses Blocks hängt nicht von der Länge von ssid ab. Wie so?
Wahrscheinlich wird nur ein SSID-Hash an die Station übertragen. In diesem Fall berechnet die Station nach dem Einschalten höchstwahrscheinlich die Hashes der Namen aller verfügbaren Netzwerke. Dann wählt er das Netzwerk aus und vergleicht die empfangenen Werte mit den akzeptierten. Dies wurde höchstwahrscheinlich durchgeführt, um die Länge des Pakets zu verringern. (Aber wie ist dann die Verbindung zu versteckten Netzwerken?)
Es ist auch zu sehen, dass mit einiger Zeit Einfügungen von 4 Zeichen vorhanden sind. Im Spektrum sind sie zweimal im Passwort zu sehen. Dies ist wahrscheinlich eine Art rauschresistente Codierung oder Synchronisationssymbole.

Ich konnte in Yandex keine Daten für die Autorisierung zuweisen. Die Paketlänge ist jedoch recht klein, sodass wir mit Sicherheit sagen können, dass das Paket kein OAuth-Token enthält. Ich gehe davon aus, dass die Yandex-Anwendung eine temporäre Verbindung erhält, von der ein Teil an die Station übertragen wird. Über diesen Link erhält sie wiederum vollständige Authentifizierungsinformationen. Ich denke, dies wurde auch getan, um die Länge des Pakets zu reduzieren.
Gepostet in Yandex?
Ja, 8. Mai 2019. Erhielt eine automatische Antwort:

4 Monate vergingen - und nicht kontaktiert. Nach den Regeln von Yandex können Sie jetzt Informationen offenlegen, was ich tatsächlich tue.
Ist das überhaupt ein Problem?
Vielleicht betrachten Mitarbeiter von Yandex dies nicht als Problem. In der Tat kann es kaum als Sicherheitslücke bezeichnet werden, da die Aktivierung der Station selten mehr als einmal erfolgt. Außerdem ist sie oft in einem "vertrauenswürdigen" Raum. Zu Hause oder im Büro können Sie das WLAN-Passwort laut aussprechen, was fast identisch ist. Experten für Informationssicherheit, was denken Sie?
Darüber hinaus wurde der Aktivierungsalgorithmus bereits mit den hergestellten Stationen verbunden, sodass es unwahrscheinlich ist, dass diese Sicherheitsanfälligkeit in der aktuellen Version behoben werden kann.
Ich glaube jedoch, dass dies kein Grund ist, Nachrichten in Bugbounty zu ignorieren. Zumindest ist es nicht höflich zu versprechen, zu antworten und es nicht zu tun. Okay, nehmen wir an, dass meine Berufung irgendwo verloren gegangen ist. Wenn überhaupt, Ticketnummer: 19050804473488035.
Persönlich glaube ich, dass es eine Art von Verwundbarkeit gibt. Daher kann ich Ihnen dieses Signal trotz der Tatsache, dass ich einen stabilen Empfänger habe, nicht geben.
Außerdem möchte ich
Wylsacom ,
Rozetked und andere Blogger daran
erinnern , dass regelmäßige Kennwortänderungen erforderlich sind. Zumindest weiß ich, was Sie zum Zeitpunkt der Yandex.Station-Überprüfung hatten.
Was ist das Ergebnis?
Entwickler von Yandex haben eine coole Sache gemacht. Sie dekorierten den Aktivierungsprozess der Station und machten ihn ungewöhnlich. Das einzige Problem ist meiner Meinung nach ein offenes Passwort.
Der gleiche Vorgang könnte jedoch mit Bluetooth sicherer gemacht werden. Dies ließ mich denken, dass in diesem Fall Sicherheit oder Geschwindigkeit nicht so wichtig sind. Wichtige Show. Die Aktivierung durch Sounds, die an R2-D2 aus Star Wars erinnern, ist beeindruckend und sieht ungewöhnlich aus.
Diese Position hat mich dazu inspiriert, die Idee der Yandex-Entwickler zu entwickeln und ein impressionorientiertes Protokoll zu erstellen. Was ist, wenn Notenfrequenzen zum Modulieren von Hex-Zeichen verwendet werden? Warum nicht die Daten in C-Dur übertragen? Es stellte sich als sehr interessant heraus, aber mehr dazu
im nächsten Artikel .
Vielen Dank fürs Lesen, Erfolg!
UPD: Yandex-AntwortVom Informationssicherheitsdienst antworteten sie in den
Kommentaren und schickten auch einen Brief:
