Beveiligingsonderzoeker Slawomir Jasek heeft op de Hack in the Box-conferentie in Amsterdam getoond hoe hij een nfc-betaling uitvoerde met een gekloonde smartphone. Zo toonde hij aan hoe aanvallers geld kunnen stelen via root-malware op Android-toestellen door deze te klonen.
Jasek richtte zich tijdens zijn presentatie op host card emulation, oftewel hce, dat Google introduceerde in Android 4.4. Daarmee is het bijvoorbeeld mogelijk om draadloze smartphone-betalingen uit te voeren via nfc door het toestel naast een betaalterminal te houden. Zijn onderzoek richt zich op de vraag of het mogelijk is om via dit mechanisme geld te stelen van een slachtoffer.
De meest voor de hand liggende methode is het stelen van de telefoon, maar dat zou ertoe leiden dat de diefstal meteen word gemeld. Het onderscheppen van betalingen is ook moeilijk, omdat voor een nfc-betaling het scherm aan moet staan. Daardoor is het moeilijk om een soort ‘drive-by’-aanval uit te voeren. Daar komt bij dat er voor het uitvoeren van een betaling naast een token op basis van het rekeningnummer een sleutel nodig is.
Het stelen van deze sleutel tijdens het versturen ervan wordt bemoeilijkt doordat er gebruik wordt gemaakt van certificate pinning en aanvullende encryptie. Doordat al deze manieren moeilijk uit te voeren zijn, kwam de onderzoeker met een andere methode. Omdat de sleutel op het toestel wordt opgeslagen en het ontsleutelen ervan moeilijk is, kwam Jasek op het idee om de gehele inhoud van een telefoon te kopiëren, inclusief de bestanden van de geïnstalleerde betaalapp.
Het probleem is vervolgens dat de gegevens niet op een andere telefoon werken, omdat bepaalde eigenschappen van het toestel niet overeenkomen, bijvoorbeeld de hardware en het imei-nummer. Ook daar wist de onderzoeker iets op de bedenken, zo is het mogelijk om met behulp van het Xposed-framework deze gegevens te spoofen, zodat de gekloonde gegevens ook op de telefoon van de kwaadwillende partij werken. Sommige bankapps detecteren root-toegang, maar er zijn ook weer tools die dit kunnen verbergen.
Bij Android Pay was bovendien nodig dat beide toestellen gebruikmaken van dezelfde OS- en Google Services-versie. Om een telefoon te klonen, maakte de onderzoeker gebruik van malware. Deze gebruikte hij om root-toegang te verkrijgen op een Android-toestel, waarvoor per versie verschillende tools beschikbaar zijn. Voorwaarde is dus dat de malware met succes op het toestel van het slachtoffer geïnstalleerd kan worden.
Door een toestel te klonen en de gegevens op een ‘kwaadaardig’ toestel neer te zetten, kon hij daarop de bank-app starten en betalingen doen met de ‘gestolen’ bankkaart, die aan de app is gekoppeld. In de meeste gevallen zijn er beperkingen, zo kunnen er in het merendeel van de gevallen maar kleine aantallen betalingen onder de 25 euro gedaan worden, voordat er weer nieuwe tokens aangemaakt moeten worden. De nodige push-berichten via Google Cloud Messaging waren echter ook door het gekloonde apparaat op te vangen, waardoor meer betalingen mogelijk waren.
Om meer betalingen boven de 25 euro te doen, is vaak een pin benodigd. Zolang die wordt ingevoerd op het apparaat, bijvoorbeeld bij het installeren van de bankapp, kan die door de malware onderschept worden. Daarnaast ondersteunen sommige apps cdcvm, waarbij tijdens betalingen de pincode niet op de betaalterminal maar op het toestel ingevoerd moet worden. Daardoor kunnen alsnog betalingen met hogere bedragen worden gedaan. Doordat bij de apps die de techniek niet ondersteunen de nodige libraries wel aanwezig zijn, is het volgens de onderzoeker ook mogelijk om de apps te patchen. Dit leverde tot nu toe echter nog geen succesvolle betaling op.
Jasek testte in totaal acht apps die allemaal gekloond konden worden, waarbij het sommige gevallen moeilijker was dan in andere. Hij ziet ruimte voor verbetering, bijvoorbeeld door betere root-detectie, het gebruiken van meer apparaateigenschappen voor verificatie en betere fraudedetectie door banken. Hij verwacht bovendien dat telefoons in de toekomst gebruik gaan maken van betere hardwarebeveiliging, bijvoorbeeld in de vorm van een trusted platform module.