De ING Mobiel Bankieren iPhone app slaat slechts 1 configuratie bestand op: nl.ing.iphone.app.Bankieren.plist. Na het installeren bestaat het bestand nog niet, het wordt aangemaakt bij het koppelen van een ING rekening aan de app. Daarna bevat het de volgende gegevens:
{
clientKeyPairTagPrefix = "com.ing.nl.iMB";
encryptedClientPrivateKey = <xxxxxxxx xxxxxxxx ... xxxxxxxx>;
profileId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
serverPublicEncryptionKeyTag = "com.ing.nl.server.encrypt";
serverPublicVerificationKeyTag = "com.ing.nl.server.verify";
stage = 2;
}
Dit bevestigt mijn vermoeden dat de applicatie public/private key cryptografie gebruikt. Wat wel opvalt is dat het configuratie bestand niet is beschermd of versleuteld. Als een iPhone proces root rechten heeft kan het dit bestand gewoon lezen en de gegevens kopiëren. Om root rechten te krijg op een iOS device moet het device jailbroken zijn, of een aanvaller moet gebruik maken van een exploit zoals bijvoorbeeld jailbreakme.com deed.
Als de encryptedClientPrivateKey of het profileId wordt veranderd gaat de authenticatie al meteen mis als de optie Rekeningen wordt gekozen. De eerste handshake loopt stuk, nog voordat de pincode ingevoerd hoeft te worden. Ik heb geprobeerd om het nl.ing.iphone.app.Bankieren.plist bestand van een iPhone 4S te kopiëren naar een iPhone 3GS. Daarmee gaat de eerste handshake goed. Maar na het invoeren van de correcte pincode geeft de applicatie aan dat de pincode onjuist is. Kennelijk wordt in deze stap niet alleen de pincode uitgewisseld, maar ook een uniek device id. Daarmee wordt het lastiger voor een aanvaller om misbruik te maken van de ING applicatie. Het volgende is nodig:
- De inhoud van nl.ing.iphone.app.Bankieren.plist, via een jailbreak of root exploit
- Het device id. Dit kan via een applicatie die vanuit de appstore moet worden geïnstalleerd, maar aangezien er al root access nodig is voor stap 1, is dat de meeste logische manier om aan het device id te komen.
- De pincode. Dit kan bijvoorbeeld door de ING applicatie te vervangen door een phishing applicatie. Hiervoor moet de iPhone wel jailbroken zijn, anders kan de phishing applicatie niet worden uitgevoerd.
- Een aangepaste ING Mobiel Bankieren applicatie die het gestolen device id gebruikt ipv het device id van de iPhone waar het op draait. Deze kan vanuit een emulator worden gedraaid, of zelfs op een niet-iOS device als het authenticatie protocol bij de aanvaller bekend is, en is nagemaakt.
Het advies is om ING Mobiel Bankieren niet te draaien op een jailbroken iPhone of iPad. Dit is namelijk de eerste stap die nodig is om misbruik te maken van deze applicatie. Op een niet-jailbroken iOS device die de laatste iOS versie draait is het voor een aanvaller heel lastig om de nl.ing.iphone.app.Bankieren.plist te stelen. Als er een methode bekend wordt om vanuit userland root te krijgen (zoals via jailbreakme.com) zal dit veel publiciteit krijgen, en zal Apple een nieuwe iOS versie uitbrengen die het lek verhelpt.
Bij verlies van de iPhone of iPad moet meteen ING op de hoogte worden gesteld. Een kwaadwillende zou eventueel via USB een jailbreak kunnen uitvoeren en zo de benodigde informatie kunnen achterhalen. Voorwaarde is dan wel dat hij de pincode al weet.
Deze beveiliging is vergelijkbaar met de Android app.
ifunbox.com
Mijn Apps > Bankieren > Library > …
en je hebt het bestand, volgens mij ook zonder jailbreak?
Bij het gebruik van apps als iFunbox moet je eerst toestemming geven op je telefoon voordat de applicatie vanaf de PC toegang krijgt tot het iDevice. Als je iPhone of iPad gelockt is kan niemand zonder je medewerking bij je bestanden.