dinsdag 24 mei 2011

Whatsapp security weaknesses

The facts of whatsapp and all the drama.

In case of an iPhone if you open the Whatsapp application the following occurs:
- The application resolves sro.whatsapp.net.
- Gets the addresses 173.192.219.141, 173.192.219.149, 173.192.219.140 back from: ns1.softlayer.com
- An encrypted(!) connection is set up on port 443 with (in this case) 173.192.219.141.
Unfortunately I haven’t been able to perform a MITM attack to decrypt the data send between these two senders. So I don’t know what data is transported between them
- Through this encrypted(!) connection the ip-adres of the Whatsapp-chat servers is send, in this case: 50.22.227.220. Whatsapp uses the Extensible Messaging and Presence Protocol, but than it’s own version of it.
- From this moment on Whatsapp communicates via port 5222 met de Whatsapp XMPP-server 50.22.227.220. And simultaneously keeps the encrypted connection open. Remarkable about this is that al the messages send via the Whatsapp application are send without encryption over port 5222. In plaintext, as stated. The data transported contains sensitive data as names and corresponding telephone numbers are transported in plaintext as well.

For sending pictures Whatsapp uses mms.whatsapp.net and this time it does send the data encrypted.

The Android, Nokia and Blackberry way.
Above is the way the Whatsapp iPhone application works. The Android, Nokia and Blackberry applications work different. In their case Whatsapp does exactly the same, only difference is that instead of port 5222 it connects to port 443. People say this way Whatsapp suggests it uses an encrypted connection, since port 443 is mainly associated with encrypted HTTP traffic. If this is the case can be questioned, since they didn’t implement this way of connecting in the iPhone application it suggests that using port 443 on these devices has a good motivated reason.

We should not forget that encrypting your messages will make the application slower, the transport of the messages slower, and will eat your battery.
Despite that it is not necessary to transfer username and telephone numbers. Instead user-id’s and phone-id’s can be used.

Concerning these security weaknesses in Whatsapp, the application had another big flaw that allows account hijacking. For details on this subject see my previous blog: http://rickey-g.blogspot.com/2011/05/hijack-someone-elses-whatsapp-with-your.html
Since it possible to spoof sms messages, Whatsapp can fix this problem only by disabling all other verification methods other than sending a verification sms themselves.

zaterdag 21 mei 2011

Hijack Whatsapp with your iPhone

Hijack (someone else’s) Whatsapp with your iPhone
If you want to hijack someone else’s Whatsapp and receive messages addressed to that person with your iPhone, read on. (You don't have an iPhone? see bottom)

When you install Whatsapp on your iPhone, the Whatsapp application makes contact with the Whatsapp servers, and the Whatsapp servers will send you a verification sms with a code in it. Straight from that point a counter will start counting in the Whatsapp application. Within this time Whatsapp expects you to receive your verification SMS. If this period expires Whatsapp offers you several other authentication methods. (see below)
Here you choose for the option “SMS”. And you will have to fill in your email adress:
Your Phone will now start sending an SMS to the whatsapp servers for verification. You can cancel this, as it is not necessary.
What you’re going to do next is called SMS-spoofing. You can do this via many sites on the web. Choose one, and make up your fake SMS as shown in the picture below:
To: +447900347295
From: +(Country code)(mobile number)
Message: (your email adress)
That’s all! Within minutes you will receive the activation code in your email to activate whatsapp on your iPhone with someone else’s Telephone number, and from that moment on you will receive message’s addressed to that person on your iPhone.

The only way for Whatsapp to solve this issue is sending the verification SMS from their own servers and no other way.

If you have anything other than an iPhone your also able to Hijack someone else's Whatsapp. It's even easier for you.
All other systems will start sending an SMS verification immediately from your own mobile phone! So you disconnect your mobile phone, try to send the verification sms, which is impossible since you disconnected it. Check your outbox. There you will see the verification sms. Copy that whole sms to a website where you can spoof SMS. State the FROM field as the person's Whatsapp you want to hijack, and fill in your own mobile number in the TO field.
Thats it.

Whatsapp kapen met je iPhone

De filmpjes hoe je Whatsapp kan kapen met een Nokie N97 staan op internet. Hier is een beschrijving dit te doen met de iPhone.

Via de iPhone werkt het iets anders. Whatsapp heeft op de iPhone namelijk geen mogelijkheid smsjes te versturen vanaf jouw telefoon. Om die reden maakt Whatsapp connectie met de whatsapp-servers, en deze server versturen dan een sms naar jou toe.
Als je dus via de iPhone iemands Whatsapp wil overnemen krijgt de persoon die je overneemt sowieso een verificatie sms van Whatsapp. En wellicht wordt deze daardoor al wakker geschut. Een dader is echter verder niet te achterhalen. En het slachtoffer kan de nieuwe verificatie ook niet stopzetten. Succes verzekerd dus.

Op het moment dat je Whatsapp opnieuw installeerd vraagt Whatsapp om jouw telefoon nummer. Hier vul je het telefoon nummer in van het slachtoffer. Whatsapp verstuurd nu een sms vanaf de Whatsapp servers, deze komt dus aan bij het slachtoffer. Tegelijk gaat er een teller in jouw applicatie lopen waarbinnen je de sms met verificatie code zou moeten ontvangen en invoeren. Wacht tot deze tijd verstrijkt.
Als deze tijd is verstreken verschijnt onderstaand scherm:

Kies hier voor "sms". Nu moet je jouw email adres 2x invoeren.

Je iPhone gaat nu vanaf jouw toestel een smsje versturen. Het is verder niet nodig dat hij deze verstuurd, dit kan je dus gewoon cancellen.
Wat je nu gaat doen is je sms spoofen. Dit kan via vele sites. Kies er 1 naar wens en ga je gang. De sms die je moet opstellen moet er als volgt uitzien:


Ontvanger: +447900347295
Verzender: Telefoonnummer van je slachtoffer. LET OP: Altijd +316(nummer) gebruiken. Niet 06, dit herkend hij namelijk niet.
Bericht: (jouw e-mail adres)

Meer moet er niet instaan. Heb je dit gedaan zal je binnen enkele seconden in jouw emailbox de verificatie code ontvangen:

Vervolgens nog even je code in de whatsapp applicatie op je iPhone invoeren. En veel plezier!

Enige manier voor Whatsapp om dit te fixen is het verificatie smsje vanaf hun servers te verzenden, en niets anders.

dinsdag 17 mei 2011

Privacy en Whatsapp tegenover KPN en DPI

Laatste dagen is Whatsapp nogal in het nieuws gekomen door KPN die gebruik zou maken van DPI (Deep Packet Inspection) om het gebruik van Whatsapp inzichtbaar te maken. Dit omdat Whatsapp het gebruik van sms terugbrengt en dus ook de inkomsten voor KPN. Want, kort samen gevat: voor ieder smsje betaal je, en whatsapp valt binnen je internet bundel. Het is dus een dienst die door een andere dienst als 'extratje' wordt aangeboden, geheel gratis en misschien zelfs nog beter ook. Ik zou hierbij graag een ieder dit filmpje willen laten zien over: House party's die men ook ooit eens wou verbieden.

Wat alle rumoer heeft veroorzaakt is dat KPN DPI gebruikt heeft om dit verkeer in kaart te brengen. De privacy van de internet gebruikers zou zo geschonden worden en dit is onacceptabel. Over deze discussie ga ik het nu niet hebben, maar ik ga het wel even over de privacy hebben die Whatsapp ons zelf verder biedt.

Naar aanleiding van dit alles ben ik even de Whatsapp packetjes gaan inspecteren die het internet opgepompt worden door deze applicatie. Wellis waar een kort/om-te-schamen onderzoek, maar des al niet te min met een bijzondere uitkomst.
Een aantal dingen komen toch wel vrij snel aan het licht. En dat is dat alle Whatsapp berichtjes als plaintext worden verstuurd (lekker snel, dat wél), én dat bij deze berichtjes de telefoonnummers van de ontvangende partij, evenals de naam van deze contacten wordt verzonden. Ik heb zelfs vernomen dat Whatsapp je gehele adresboek copiert naar de Whatsapp servers, dit heb ik zelf nog niet kunnen waarnemen (Ik heb dit niet getest), maar dit kan zeker als voor 'waar' worden aangenomen.
Kanttekening hierbij is dat Whatsapp een Amerikaans bedrijf is. De servers van Whatsapp in Amerika staan. Ze worden gehost door The Planet Internet Services wat nu bekend staat als SoftLayer Technologies. En zoals te zien bij het plaatje visitors heeft Amerika hiermee weer een prachtig bedrijf in handen (+de gegevens van de gebruikers).
Maar genoeg d00m-denkerij hierover, ik lijk wel een echte g33k. Over naar de facts.

Even op een rijtje de facts van het verkeer:
- De applicatie resolved eerst sro.whatsapp.net.
- Krijgt de adressen 173.192.219.141, 173.192.219.149, 173.192.219.140 terug van ns1.softlayer.com
- Er wordt direct een SSL verbinding over port 443 opgezet met (in dit geval) 173.192.219.141.
Ik heb helaas geen MIM-attack gedaan dus ik weet niet welke info er over de SSL verbinding is verstuurd.
- Via deze niet af te luisteren verbinding komt blijkbaar het ip-adres door van de Whatsapp-chat server in dit geval 50.22.227.220. Whatsapp werkt via het zogenaamde Extensible Messaging and Presence Protocol, en daar dan een eigen afgeleide van.
- Vanaf dit moment gaat Whatsapp communiceren via port 5222 met de Whatsapp XMPP-server 50.22.227.220. Het opmerkelijke hieraan is dat Whatsapp dit doet ZONDER dat de verbinding versleutelt is. Dit houdt dus in feite in dat ieder station waar jouw berichtje langs komt kan lezen wat jij verstuurd, aan welk 06 nummer, en de naam van die persoon. Dit is in het bijzonder van belang bij draadloze netwerken, waar in feite iedereen zich op kan aanmelden. Ga je dus met je mobiel op een gratis wifi hotspot lekker zitten Whatsappen, kunnen we allemaal leuk meelezen, om vervolgens de persoon in kwestie nog even een belletje te geven. *nerd-fear*

Enfin, hier dan nog even de plaatjes als bewijs. Onderstaand screenshot geeft een weergave van een contact persoon waar naar toe ik een berichtje stuur. Bij ieder berichtje dat ik verstuur, verstuur ik dus het 06-nummer mee. Zoals je in het screenshot duidelijk kan zien stuur ik enkel de tekst "Test" naar deze persoon.

En in onderstaand screenshot is te zien dat Whatsapp mijn eigen contact gegevens, wederom onversleuteld, het internet opslingerd, dit inclusief mijn naam en mijn 06-nummer.

Een aantal andere conclusies kunnen we hier ook uit trekken. Als KPN de mensen wil gaan factureren per whatsapp berichtje zal KPN (zeer diepe) DPI moeten gebruiken. De applicatie Whatsapp staat in een constante verbinding met zijn servers en aan de hand van Source + Destination (makkelijkste manier) is niet te bepalen hoeveel berichtjes er via Whatsapp verstuurd zijn.
De enige manier van KPN om inzichtelijk te krijgen hoeveel Whatsapp berichtjes er verstuurd zijn dan wel ontvangen is via deze 'diepe' vorm van DPI waarbij de berichtjes daadwerkelijk ook gelezen worden. Het is mogelijk dat KPN dit invoert. Maaaarrrrrrrrrr, te verwachten is dat Whatsapp in de toekomst zijn diensten gaat aanbieden met een SSL functie (het is al verrassend dat zij dat nu nog niet doen), zoals gebruikelijk binnen het Jabber (XMPP) protocol.
Dan is het voor KPN zo goed als onmogelijk te bepalen hoeveel berichtjes een persoon verstuurd dan wel ontvangt. Men kan de applicatie een hele dag open hebben staan, zeer veel data gebruiken, maar geen enkel berichtje ontvangen of verzenden.

Feit blijft dat Whatsapp SMS gaat vervangen, vroeg of laat. Daar gaat KPN niets aan veranderen.
Zolang KPN mobiel internet aanbiedt zullen er eindeloos veel manier zijn om een tarifering te omzeilen. Deze zullen er ook zeker komen omdat het animo voor het gebruik van Whatsapp gewoon veel te groot is.
Als KPN nog schulden moet aflossen in verband met het aangelegd 3g netwerk zullen ze dat moeten verhalen op de klanten via verhoging van het tarief van de internet bundel (terecht!). Dat gaat niet lukken via het tariferen van specifieke applicaties als Whatsapp.
Als KPN meer inkomsten wil hebben om het personeel te kunnen blijven betalen zullen de kosten van alle bundels omhoog moeten gaan.