#!/bin/blog

June 18, 2011

WhatsApp: Protokollanalyse

Filed under: Internet — Tags: , , — martin @ 12:32 pm

Die Geschichte über die “Datenkrake WhatsApp” hat mir keine Ruhe gelassen, so daß ich einen Laboraufbau für eine kooperative Man-in-the-Middle-Operation mit Squid 3.1 aufgesetzt habe. Dank dessen Features für Content-Filter, Virenscan usw. konnte ich die SSL-Kommunikation von WhatsApp entschlüsseln.

Damit bin ich zu einer Handvoll neuer Erkenntnisse gekommen.

WhatsApp setzt beim Aufbau der Favoritenliste einen POST-Request an https://sro.whatsapp.net/client/iphone/iq.php ab. Dieser enthält die folgenden Informationen.

Im HTTP-Header:

  • Die Version von WhatsApp.
  • Die Betriebssystemversion des iPhone.
  • Die Hardwareversion des iPhone.

Im HTTP-POST-Request:

  • Die eigene Telefonnummer.
  • Die eigene Ländervorwahl.
  • Alle im Telefonbuch gefundenen Telefonnummern in Ziffernform ohne Trenn- oder Sonderzeichen, mit oder ohne Ländervorwahl, wie im Adreßbuch eingetragen.

Bei WhatsApp antwortet ein lighttpd 1.4.28 mit PHP 5.3.5. Dieser beantwortet den POST-Request mit einem XML-Block, der pro gefundener Gegenstelle ein Dictionary mit den folgenden Werten enthält:

  • S – Die vom Benutzer eingegebene Status-Message.
  • T – Das Alter der Status-Message in Sekunden.
  • JID – Die Telefonnummer des Benutzers mit Länderkennnzeichen ohne führendes +.
  • P – Die Telefonnummer des Benutzers in “wählbarer” Form mit Länderkennzeichen und führendem +.
  • NP – Entweder nicht gesetzt oder mit dem Wert true. Funktion unbekannt.

Die Faktenlage ist damit wie folgt ausgebaut:

  • Um die Favoritenliste zu generieren, wird keine Übertragung des gesamten Adressbuchs vorgenommen.
  • Es werden jedoch alle im Adressbuch enthaltenen Telefonnummern übertragen, um zu prüfen, ob dahinter ein WhatsApp-Account steckt.
  • Außer den Telefonnummern wird keine Information übertragen.

Die Kommunikation während des Chat selbst habe ich nicht betrachtet.

Ihr könnt euch jetzt euren Teil denken. Die im vorigen Post aufgestellten Vermutungen über die Kommunikation sind damit bestätigt, bis auf das Hashing, das im Fall von Telefonnummern aber vermutlich eher eine Verschleierung wäre.

Advertisements

42 Comments »

  1. […] 18. Juni 2011: Siehe auch: WhatsApp: Protokollanalyse Comments (2) LikeOne blogger likes this post. 2 Comments […]

    Pingback by WhatsApp: Datenkraken-Mythos « #!/bin/blog — June 18, 2011 @ 12:41 pm

  2. WhatsApp benutzt “unter der Haube” übrigens XMPP, was die Kürzel in der von dir beschriebenen IQ-Stanza erklärt. 😉

    Siehe auch http://shakal.blog.de/2011/03/22/whatsapp-risiken-10872342/

    Comment by joschi — June 18, 2011 @ 1:21 pm

    • Tatsache. Danke für den Hinweis!

      Comment by martin — June 18, 2011 @ 1:27 pm

  3. Hallo,

    Sehr schoene Analyse! Waere toll gewesen, wenn Du ein paar tcpdump/Wireshark Mitschnitte abgebildet und auch die Chat-Kommunikation eingesehen haettest 🙂

    Bye, Marc

    Comment by Marc Ruef — June 19, 2011 @ 11:53 am

    • In den Captures gibts leider nicht viel zu sehen, außer Telefonnummern. Da hätte ich praktisch das ganze Bild verpixeln, oder zumindest eine Testinstallation auf einer Prepaid-Nummer machen müssen.

      Mit dem Kommentar von “joschi” ist aber im Prinzip alles gesagt: Es handelt sich beim Protokoll um XMPP (wie Google Talk), wobei Registrierung, Authentifizierung und Aufbau der Kontaktliste durch ein eigenes, an Telefonnummern gekoppeltes, Verfahren von WhatsApp ersetzt wurden. Hinzu kommt noch etwas Voodoo beim Übertragen und Abspielen von Bildern und Videos.

      Mir ging es vor allem um die düsteren Datenschutzgerüchte. Alles weitere wäre dann nochmal eine Sache für die langen Winterabende. Kann gut sein, daß sich da bei genauem Hinsehen noch ein Security-Problem findet, mit dem man 15 Minuten Ruhm absahnen kann. 🙂

      Comment by martin — June 19, 2011 @ 12:25 pm

      • Dann wäre ja auch ein Jabber-Transport in Reichweite. Wie sehen denn die JIDs genau aus?

        Comment by Anonymous — September 17, 2011 @ 10:19 am

      • Ich würde mich auch freuen, wenn nochmal weitere Daten (zu mindest zum Angriff / Konfiguration) veröffentlicht würden. Würde gerne selber daran weiter arbeiten.

        Comment by Philipp — October 1, 2011 @ 12:31 am

  4. Mich beschäftigt die Frage: Werden auch meine Notizen/Bemerkungen / eigene Felder/ passend zu den Adressen an Whatsapp übertragen ? Oder nur die Telefonnummern mit Namen ? Geht das überhaupt das zu trennen? Oder wird nicht einfach der “GESAMTE Kontakt ” übertragen ?
    Mir geht es in erster Linie um die Notitzen die ich persönlich zu meinen Kontakten gemacht habe.
    Die Telefonnummer mit dem Namen sehe ich nicht als das wirkliche Problem. Auch nicht die Chat-Verläufe.
    Hier müsste eh jeder erst einmal PGP in seinem Mail Programm benutzen. Doch davon sind die meisten doch Lichtjahre entfernt. Wenn ich dies meinen freunden vorschlage (so geschehen) bekomme ich leider immer nur den Kommmentar ” zu schwierig” ” macht keiner” ” dann kann ja niemand mehr lesen was ich schreibe” – GENAU! Ausser vielleicht die NSA.

    Comment by capper — October 18, 2011 @ 7:27 am

    • Ist doch oben beantwortet. Wo ist das Problem?

      Comment by martin — October 18, 2011 @ 11:00 am

    • Ich bin das Problem.
      Sorry, dann habe ich das wohl nicht verstanden.

      Ich brauche es vielleicht einfach deutlicher…so ungefähr:
      “NEIN da werden NUR deine Telefonummern und die Namen dazu übertragen, ABER sonst nix ”

      Wenn Informationen weg gelassen werden, bedeutet dies ja nicht gleichzeitig, nicht das sie nicht vorhanden sind.

      Also gehe ich nun davon aus, wenn nicht mehr “da oben” steht , ist “da oben” alles erwähnt worden , was übertragen wird.
      Also NUR die Telefonnummer und NUR der Name, sonst nix.

      Aber danke für den Hinweis. ich bin da etwas schwerfällig.

      ….. merke grad , ich bin auch ein bisschen zu doof das hier nur einmal zu replyen oder wie das heisst… hab schion 3 x gedrückt.

      Comment by capper — October 18, 2011 @ 11:29 am

      • @Capper: AUGEN AUF!
        Also ich habe in dem Post nix von einer Übertragung der Namen des eigenen Adressbuches gelesen. Es heißt: “Alle im Telefonbuch gefundenen Telefonnummern in Ziffernform”.
        Wie immer. 95% der gestellten Fragen lassen sich mit aufmerksamen Lesen selber beantworten. Es wird nirgends ein Name übertragen!!!! Wozu auch. Wenn 0123 4567890 bei WhatsApp registriert ist, dann ist es doch Schnuppe ob das bei dir im Adressbuch “Gretchen Müller” ist und bei mir “Cousine Grete”. Die Nummer verbindet uns beide zum gleichen Ziel. Also wozu Traffic generieren für eine überflüssige Funktion….
        *kopfschüttel*

        Comment by Leseschwächenkorrektur — July 10, 2012 @ 8:37 am

  5. Wer etwas Ähnliches vor hat: Für HTTP(S)-Analyse kann ich den Charles Web Debugging Proxy (charlesproxy.com) empfehlen, läuft lokal auf dem eigenen Rechner und ist sehr einfach zu installieren und komfortabel zu bedienen.

    Comment by eik3 — November 18, 2011 @ 10:22 pm

  6. Hallo, kann mir jemand sagen, was mit normalen SMS passiert, die ich geschickt bekomme? Werden die auch von der App verarbeitet und evtl sogar an deren Server geschickt?
    Problematik ist, dass ich sensible Daten per SMS geschickt bekomme, die ich sicher nicht auf deren Servern haben will.

    Comment by dingsda — December 23, 2011 @ 11:22 pm

    • Nein. Ich bezweifle allerdings, daß SMS sicherer oder vertrauenswürdiger ist als WhatsApp oder iMessage. Dazu empfiehlt sich dieser recht erhellende Podcast: http://cre.fm/cre179

      Comment by martin — December 24, 2011 @ 10:18 am

      • Danke für die Antwort.
        Wenn mans genau nimmt, ist nichts sicher, was unverschlüsselt erfolgt. Selbst Verschlüsselungen sind nicht zu 100% sicher.
        Aber man muss die Unsicherheit ja nicht auch noch verdoppeln, indem man seine SMS über noch einen fremden Server wandern lässt.

        Comment by dingsda — December 24, 2011 @ 3:28 pm

      • Für eine sichere Kommunikation kann ich dir nur das SimKo von der T-Systems emfpehlen, da ist die Kommunikation definitiv komplett Ende – Ende Hardwareverschlüsselt.

        Comment by Anonymous — January 21, 2012 @ 8:37 am

      • Und morgen kommt der Weihnachtsmann. Warum sollte man der komplett mit dem Staat verstrickten Deutschen Telekom vertrauen?

        Comment by martin — January 24, 2012 @ 9:07 pm

  7. Gut, damit sollte es also ein leichtes sein einen Jabber Transport zu schreiben.
    Wie ist das Protokoll für Nachrichten? Scheint ja alles völlig ohne Authentifizierung etc zu sein.

    Comment by DreamFlasher — December 28, 2011 @ 12:48 pm

    • Nach meinem Verständnis hängt der WhatsApp-Acoount an der Seriennummer des iPhone und wird über die SMS bei der Registrierung mit dieser und der Telefonnummer verknüpft. Ich weiß nicht, ob es eine Funktion gibt, mit der WhatsApp sich die Authentifizierung über irgendeine Apple-/iPhone-Infrastruktur signieren lassen könnte. Wenn nicht (und ich gehe nicht davon aus, da WhatsApp plattformübergreifend verfügbar ist), könnte es möglich sein, in der Rolle des eigenen Endgeräts einen XMPP-Client zu benutzen. Zu bedenken wäre, daß WhatsApp noch eigene Infrastruktur zum Speichern der übertragenen Dateien haben muß. Die Kommunikation mit dieser wäre dann ebenfalls abzubilden. Ob das ein leichtes ist, und ob es überhaupt attraktiv ist, WhatsApp in dieser Tiefe nachzubauen, will ich nicht beurteilen.

      Comment by martin — December 28, 2011 @ 1:25 pm

      • moin,
        seid ihr mit dem xmpp schon weiter?
        Für mein Nokia N9 gibt es leider keinen whatsapp client…
        Login müsste doch einfach die internationale Handynummer ohne + sein, das passwort wird vermutlich automatisch generiert und müsste sich doch extrahieren lassen, oder habe ich was falsch verstanden?
        Danke!
        C.

        Comment by chris — January 18, 2012 @ 11:32 am

      • hallo chris.

        soweit ich weis wird als jabber id die handynummer genutzt, und als passwort die UDID. den server müsste man noch rausbekommen. ich werde in den nächsten tagen mal die jabber funktionalität genauer anschauen, vielleicht kann ich dann mehr dazu sagen. mal schauen

        Comment by unsacred666 — January 18, 2012 @ 9:38 pm

      • Hi unsacred666,
        konntest du dir das bereits ansehen? Wäre sehr cool, wenn man das direkt nutzen kann – hätte auch nix dagegen, wenn die WhatsApp Anbieter das als Feature anpreisen würden, wird aber wohl nicht geschehen.

        Comment by DreamFlasher — September 20, 2012 @ 9:06 am

  8. Moin,

    naja den Server sollte man doch über ein lsof auf dem Router herausfinden können, oder so.
    Squid logt doch sowas sicher auch mit, mal gemutmasst…
    Aber was ist denn die UDID?
    Danke,

    Chris

    Comment by Chris — January 19, 2012 @ 1:43 pm

  9. Inzwischen kann man WhatsApp nutzen ohne Zugriff auf das eigene Adressbuch gewähren zu müssen – zumindest bietet WhatsApp entsprechende Dialogfenster an.

    Comment by Martin — January 29, 2012 @ 12:01 pm

    • Wo das?

      Comment by Magnus — February 13, 2012 @ 4:18 pm

  10. Werden eigentlich bei jedem Öffnen der App erneut alle Handynummern an den Server gesendet? Oder liegen die auf dem Server und werden nur die neuen und geänderten Kontakte abgeglichen?

    Comment by Mitch — February 24, 2012 @ 10:27 am

    • So wie ich das sehe, werden die jedes mal gesendet. Wahrscheinlich ist der Shice deshalb auch beim Starten so langsam.

      Comment by martin — February 24, 2012 @ 10:31 am

      • Vielen Dank für die Info!

        Sehr guter Artikel. Wir haben bei WhatsApp nachgefragt und es deckt sich mit deiner Recherche:
        http://www.datenschutzbeauftragter-info.de/whatsapp-und-datenschutz-antworten-auf-die-wichtigsten-fragen/

        Comment by Mitch — February 24, 2012 @ 2:13 pm

      • Bist du dir da sicher? Bei 50-100 Millionen Nutzer die Whatsapp wahrscheinlich hat, würde das Abgleichen aller Kontakte beim jedem Öffnen doch eine Menge unnötiger Load für den Server bedeuten (selbst wenn sie es nur einmal am Tag machen würden), oder nicht? Aus Performance- und Kostengründen ist es für mich deshalb einfach schwer vorstellbar…

        Comment by TS — February 25, 2012 @ 12:02 am

      • Bei dem Protokolloverhead von XMPP fallen die paar Byte beim Start der App doch kaum ins Gewicht. Eine Telefonnummer hat vielleicht 15 Byte, und wieviel Telefonnummern wird der durchschnittliche WhatsApp-Nutzer schon im Telefonbuch haben? 200 vielleicht, das macht 3 Kilobyte beim Start der App, die sind selbst bei GPRS mit 56k in einer halben Sekunde übertragen.

        Comment by martin — February 25, 2012 @ 7:12 am

      • Vielen Dank für die schnelle Antwort. Ich meinte weniger an den Upload an sich, als an den Abgleich der Kontakte der auf dem Server stattfindet. Ich dachte da entsteht Serverload.

        Comment by TS — February 25, 2012 @ 11:00 am

  11. Stimmt es eigentlich, dass XMPP im Rahmen seines Protokolls sowieso immer die Kontakte/Verbindungen eines Nutzers auf dem Server speichert?

    Comment by Non Techie — February 27, 2012 @ 3:39 pm

  12. […] WhatsApp […]

    Pingback by Vergleich: Sicherheitskonzepte für mobile Applikationen - ahnungslos.ch — February 27, 2012 @ 5:53 pm

  13. […] […]

    Pingback by Whatsapp Sourcecode — May 16, 2012 @ 1:47 pm

  14. WhatsApp benutzt im Hintergrund das XMPP Protokolle (wurde ja schon erkannt), bekannt ist dieses XMPP Protokoll von dem sogenannten JABBER-Service.
    Etliche grosse ANbieter (auch schon erwähnt) benutzen dieses Protokoll um einen Integrierten Instant-Message System an zu bieten.

    Um sich damit ein wenig aus einander zu setzen einfach mal das bekannte “Openfire” instalieren http://www.igniterealtime.org/ Aufziehen,
    anonymouse freigabe (für jede account installation und freigabe), Gruppenchat einrichten, Gruppenchat mit Neu-Anmeldung verknüpfen, Channel erstellen Freigabe, Chatprotokoll einrichten fertig ist das WhatsApp im minimal Format.
    Benutzbar mit jedem XMPP Fähigen InstantMessanger Programm der verschiedenen Smartpfone Hersteller.

    Die Programmierer haben nun ein Rundherum Programm geschrieben das eben das Telefonbuch aufnimmt
    Das erstellen eines Channels worin dann die Kontakte (basierend auf dem Adressbuch und WhatsApp Installation) zuweist.
    und einige Dinge mehr die man durch den Openfire Nachbau zum teil herausfinden kann (Funktionsweise)

    Es gibt auch das Aufstrebende JABBIX https://project.jappix.com/ Basiert auch auf das JABBER-Service (XMPP Protokoll,/ jabber Server muss vorhanden sein, geht auch Openfire).
    Deren Konzept ist ein vollständig “all in one” Produkt, zum anschauen und Testen auch ruhig Downloaden und mal Installieren.

    greets
    Deep

    Comment by Deep — August 19, 2012 @ 9:19 pm

  15. […] Plattformen iOS, Android und Windows Phone erhältlich. Für WhatsApp gab es ja schon einmal eine Protokollanalyse, die mich damals dann auch dazu bewegt hat, die App zu installieren. Nun wollte ich wissen, ob es […]

    Pingback by Hike, die neue Messenger-App | aBrainBlog — December 6, 2012 @ 9:00 pm

  16. hi 🙂 ich hätt da mal ne frage:
    wenn nur das login mit telnr erfolgt, warum bekomm ich whatsapp dann nicht aufs ipad?
    bei imassage funkts ja auch?

    hat wer eine idee, wie man tricksen könnte??

    glg
    angie 🙂

    Comment by Anonymous — January 2, 2013 @ 11:39 am

  17. […] – ein wild wachsendes Krebsgeschwür der privaten Kommunikation: Private Daten werden auf Server hochgeladen, die Kommunikation war öffentlich einsehbar und die Sicherheitsarchitektur war ähnlich solide wie […]

    Pingback by Die Wahrheit #017 – Threema. Smartphone-Messenger mit Verschlüsselung. | monoxyd — January 18, 2013 @ 12:01 am

  18. […] Plattformen iOS, Android und Windows Phone erhältlich. Für WhatsApp gab es ja schon einmal eine Protokollanalyse, die mich damals dann auch dazu bewegt hat, die App zu installieren. Nun wollte ich wissen, ob es […]

    Pingback by Hike, die neue Messenger-App | abrain — September 29, 2013 @ 1:20 pm

  19. […] – ein wild wachsendes Krebsgeschwür der privaten Kommunikation: Private Daten werden auf Server hochgeladen, die Kommunikation war öffentlich einsehbar und die Sicherheitsarchitektur war ähnlich solide wie […]

    Pingback by Die Wahrheit #017 – Threema. Smartphone-Messenger mit Verschlüsselung. — January 15, 2014 @ 5:57 pm

  20. […] sendet nach der Installation alle Mobilnummern an den eigenen Server. Damit erfährt der eigene WhatsApp Client wer ebenfalls an WhatsApp teilnimmt. Der jeweils andere […]

    Pingback by WhatsApp | Stefan's Blog — November 19, 2015 @ 7:32 pm


RSS feed for comments on this post. TrackBack URI

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Blog at WordPress.com.

%d bloggers like this: