Riesige Datenmengen mit WhatsApp sammeln

von Loran Kloeze, 7. Mai 2017

Das Erstellen einer Datenbank mit Telefonnummern, Profilbildern und Statusinformationen von fast allen WhatsApp-Benutzern erweist sich als sehr einfach. Der Benutzer muss nicht einmal den eigenen Kontakten hinzugefügt werden. Dies sollte zumindest einige Fragen die Privatsphäre betreffend aufwerfen und hoffentlich noch viel mehr. Lasst mich erklären, wie es funktioniert.

Vor ein paar Jahren hat es WhatsApp möglich gemacht, WhatsApp in einem Webbrowser zu benutzen. Das ist gut für die Benutzerfreundlichkeit, weil das Verfassen einer Nachricht auf einer Tastatur viel einfacher ist als mit diesen winzigen Touchscreen-Schaltflächen. Es macht auch Copy/Paste sowie das Hinzufügen von Anhängen viel einfacher. So viel zur guten Nachricht. Die schlechte Nachricht ist, dass es technisch möglich ist, die WhatsApp Web-Oberfläche dazu zu benutzen, um eine riesige Datenbank mit allen möglichen WhatsApp-Benutzern zu erstellen. Es gibt nur eine kleine Benutzer-Gruppe, die davon nicht betroffen ist: Die Benutzer, die ihre Privatssphäre-Einstellungen geändert haben. Doch leider ändern die meisten Benutzer diese Privatssphäre-Einstellungen nicht und WhatsApp ermutigt sie auch nicht wirklich dazu. Diese Tatsachen eröffnen die Möglichkeit, riesige Mengen an interessanten Daten zu sammeln, die ich euch jetzt zeigen werde.

Erklärung für normale Benutzer

Web-WhatsApp verbindet sich mit den WhatsApp-Servern über das Telefon. Kurz gesagt, der Browser weist den Server an, alle Informationen für eine bestimmte Telefonnummer zurückzuschicken. Einige der Informationen, die zurückgeschickt werden, sind:

  • Das Profilbild
  • Den Status-Text oder den About-Text; der Standardtext ist das berühmte: „Hey there! I am using WhatsApp“
  • Den online/offline-Status des Benutzers

Es stellt sich heraus, dass die oben genannten Informationen für jede Telefonnummer angefordert werden kann. Wie gesagt, es ist nicht notwendig, dass diese Telefonnummer mit eurer Kontaktliste verknüpft ist. Und weil es keine solche Einschränkung gibt, ist es möglich, eine vollständige Datenbank mit Telefonnummern, Profilbildern, Status-Texten und dem online/offline-Status zu erstellen. Die Datenbank kann so eingerichtet werden, dass die komplette Zeitachse der Telefonnummern rekonstruiert werden kann. Das beantwortet Fragen wie: Wann war der Benutzer mit der Telefonnummer XXX-XXXXXX online bzw. offline?

Eine fiktive Zeitachse, die für fast alle Benutzer aus der genannten Datenbank rekonstruiert werden kann

Fast alle Webseiten, die an euren Browser gesendet werden, beinhalten spezifische Software, die bestimmt, wie die Webseite in eurem Browser funktionieren wird. So eine Software ist in Javascript geschrieben. Die Software bestimmt, was passiert, wenn man auf eine Schaltfläche klickt oder die Maus bewegt. Doch die Software kann sich auch mit einem Server verbinden, um bestimmte Arten von Informationen anzufordern. Auch die Software im Web-WhatsApp macht das. Sie schickt eine Telefonnummer an die WhatsApp-Server und in ein paar Millisekunden erhält sie die Informationen zu dieser Telefonnummer. Einer der Vorteile dieser Software ist es, dass sich jeder den Quellcode ansehen kann. Doch das ist noch nicht alles, man kann die Software auch selbst benutzen, indem man bestimmte Teile davon unabhängig verwendet. Ich habe diese Möglichkeit genutzt um ein Skript zu entwickeln, das Informationen zu einer Vielzahl von Telefonnummern anfordert. Diese Informationen enthalten die Profilbilder, die Status-Texte sowie den online/offline-Status. Jeder kann ein solches Skript selbst schreiben.

Mein Skript in Aktion, wo ich die Informationen zu 400 zufälligen Telefonnummern abfrage

Datenschutzbedenken

Was kann man also mit diesen Informationen anstellen? Stellt euch zunächst einmal vor, dass jeder eine Datenbank mit den obigen Informationen erstellen kann, die alle Telefonnummern für ein bestimmtes Land zusammen mit den Profilbildern, den Status-Texten sowie den online/offline-Status enthält. Dies ist für ein Land wie die Niederlande in greifbarer Nähe. Die Datenbank kann so abgefragt werden, dass sie mir verrät, wann eine bestimmte Telefonnummer online war und sie sagt mir auch, welches Profilbild zu dieser Telefonnummer gehört. Nach ein paar Monaten kann sie mir sagen, wie oft du dein Profilbild gewechselt hast und welche Bilder du dafür verwendet hast. Und was ist mit Gesichtserkennung? Diese Techniken wurden in den letzten Jahren stark verbessert. Stellt euch vor, ich gehe spazieren und mache von einem Fremden ein Foto. Dann füttere ich die Datenbank mit diesem Bild und ein paar Minuten später verrät sie mir, welche Telefonnummer zu diesem Bild gehört. Das ist ziemlich beängstigend, oder?

Die Antwort von WhatsApp

Ich bin ein Fan von verantwortungsbewusster Veröffentlichung. Als ich die Möglichkeit entdeckt habe, wie man riesige Datenmengen von WhatsApp absaugen kann, habe ich sie kontaktiert. Oder ich habe Facebook kontaktiert, weil die WhatsApp gekauft haben. Zusammengefasst ist es ihnen bewusst, dass man mit dieser Möglichkeit riesige Datenmengen absaugen kann, doch sie sehen es nicht als Problem oder als Angelegenheit der Privatssphäre. Denkt darüber einen Moment nach, bevor ihr dem zustimmt.

Anwort von Facebook, nachdem ich ihnen die Datenerfassungsmöglichkeit geschildert habe

Technische Erklärung

Das folgende ist eine technische Erklärung, die für nicht-technische Benutzer schwierig zu verstehen sein kann.

Web-WhatsApp verwendet eine nicht dokumentierte API. Das ist eine API, die man benutzen kann, aber man muss selbst herausfinden, wie sie funktioniert. Die Javascript-API kommuniziert mit den WhatsApp-Servern über ein WebSocket.

Teil der Javascript-API von Web-WhatsApp

Es sind drei API-Aufrufe, die ich in meinem Skript verwende. Der erste ist Store.ProfilePicThumb.find(<Telefonnummer>) und wird benutzt, um Profilbilder zu sammeln. Man kann ihn wie folgt benutzen:

Beispiel für das Anfordern eines Profilbildes für eine Telefonnummer. Denkt daran, dass man die URLs nur im selben Tab anfordern kann, wo Web-WhatsApp läuft. Man muss dem DOM ein < img > – Element hinzufügen

Der zweite API-Aufruf ist Store.Wap.statusFind(<Telefonnummer>) und er wird benutzt, um den Status-Text einer Telefonnummer anzufordern. Ein Beispiel:

Anfordern des Status-Texts einer Telefonnummer

Der letzte API-Aufruf ist Store.Presence.find(<Telefonnummer>) und wird verwendet, um den online/offline-Status anzufordern. Man verwendet ihn wie folgt:

Anfordern des online/offline-Status einer Telefonnummer

Indem man all diese API-Aufrufe in eine Schleife einbindet, kann man diese Informationen für alle Telefonnummern anfordern, die man sich vorstellen kann.

Am Anfang des Artikels seht ihr eine Benutzeroberfläche, die ich erstellt habe. Sie benutzt die obigen API-Aufrufe. Ihr könnt das Skript hier finden. Fügt das Skript in eure Developer-Console in eurer Web-WhatsApp Instanz und die Benutzeroberfläche erscheint. Bitte benutzt sie mit Bedacht!

Update 15-05-2017 04:20 PM

Einige Leute haben Bemerkungen zu diesem Fund gemacht. Ich möchte darauf nun hier eingehen:

Bemerkung 1: „Ich sehe den Nachrichtenwert nicht, ich kann einfach jede Nummer den Kontakten hinzufügen und habe dieselbe Information.“
Ja, das kann man machen und man hätte die gleiche Information. Aber der Unterschied ist, dass ich eine automatisierte Art benutzt habe, um die Informationen zu sammeln. Kannst du 100 Nummern deinen Kontakten hinzufügen und du bekommst diese Informationen dann in einer netten Tabelle auf deinem Telefon? Es ist das Ausmaß der möglichen Datensammlung und es geht nicht darum, geheime Informationen zu enthüllen. Es ist kein sicherheitsrelevantes Problem.

Bemerkung 2: „Diese Informationen sind nicht geheim oder privat. Wo ist der Nachrichtenwert?“
Haha, ja, ich verstehe. Aber stellt euch folgendes vor: Ich kann eine riesige Datenbank erstellen mit Profilbildern, die mit eurer Telefonnummer verknüpft sind. Auf diese Weise kann ich die Gesichtserkennung nutzen, um von jemanden die Telefonnummer herauszufinden, indem ich ein Foto von ihm mache. Hier gilt das gleiche wie für Bemerkung 1: Es geht einzig und allein um das mögliche Ausmaß, das zu einem Problem werden kann.

Bemerkung 3: „Ich habe das schon vor Jahren entdeckt, wo ist der Nachrichtenwert?“
Keine Ahnung? Wahrscheinlich erhielt es nicht die Aufmerksamkeit, die es damals verdient hat. Nun erhält es Aufmerksamkeit, sei froh darüber, denn viele Leute haben ihre Privatssphäre-Einstellungen in WhatsApp geändert wegen diesem Blog / Skript. 🙂

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*