Ein Mobile-Test – was geschieht denn da?

Einführung in die Methodologie eines Penetrationstests – Teil 4, von Dr. Erlijn van Genuchten

In vorigen Beiträgen wurde bereits die Methodologie für 1) Webapplikations-2) Perimeter- und 3) Hardwaretests in den Blick genommen. Der vorliegende Artikel nun bietet eine Einführung in die Analyse einer mobilen App. Ausgangspunkt sind dabei sowohl die App selbst und ihre Interaktion mit dem zugrunde liegenden System (sprich Mobiltelefon oder Tablet) als auch deren Kommunikation mit dem Webservice. Wie schon bei der Hardwareanalyse lassen sich auch hier Ansätze aus der Webapplikationsanalyse übertragen. Auch die verschiedenen von dort bekannten Testphasen können durchlaufen werden. In Bezug auf die Reconnaissance-Phase wird auf Teil 1 der Reihe verwiesen, da sich diese im Wesentlichen kaum unterscheidet.

Die Mapping-Phase

In der Reconnaissance-Phase hat sich der Consultant bereits einen Überblick über den Kontext der App verschafft. Bevor er nun aber mit der Analyse beginnt, baut er sich zunächst ein Set-up auf. Dieses Set-up erlaubt dem Tester, sowohl die App als auch ihre Interaktion mit dem Mobiltelefon sowie den Datenverkehr einzusehen. Dazu gehören:

  • Installation der App auf einem gerooteten/per Jailbreak freigeschalteten Mobiltelefon. Auf einem solchen Gerät verfügt der Nutzer über administrative Rechte
  • Aufsetzen eines Access Point, mit dem sich das Mobiltelefon verbindet
  • Erlangen einer Man-in-the-Middle-Position
  • Aufbau einer Konsolenverbindung zwischen Pentestsystem und Mobiltelefon (siehe Abbildung 1)

Zum Einsatz kommen hier sowohl Hardware (Mobiltelefon/Tablet, WLAN-Dongle) als auch Software (zum Beispiel die Burp Suite als lokaler Angriffsproxy).

Sobald die Teststellung eingerichtet ist, kann sich der Consultant einen Überblick darüber verschaffen, welche Technologien für die App genutzt wurden und welche Funktionen dem Benutzer zur Verfügung stehen. Auch ist er in der Lage, einen Überblick über Parameter und Technologien zu erhalten, die beim Datenverkehr zum Einsatz kommen. Auch wird durch eine statische Analyse Verständnis über die Applikation erlangt. Bei ausführlichen iOS-Tests lässt sich zudem mithilfe einer Laufzeitanalyse ermitteln, welche Klassen in der App verwendet werden und welche Daten während der Benutzung im Arbeitsspeicher vorhanden sind. Dazu wird beispielsweise die Anwendung Cycript verwendet.

Die Discovery-Phase

In der dritten Phase beginnt der Consultant anzugreifen. Dabei werden Erkenntnisse aus den ersten beiden Phasen verwendet. Untersucht wird unter anderem, wie die Interaktion zwischen der App und dem Mobiltelefon verläuft. Werden zum Beispiel sensible Daten sicher abgelegt? Dies ist relevant für den Fall, dass ein Angreifer es schafft, administrative Rechte auf dem Gerät zu bekommen, zum Beispiel mithilfe einer schadhaften App, die einen Root-Exploit beinhaltet.

Des Weiteren wird mittels einer statischen Analyse der App versucht, Passwörter oder Schlüssel zu extrahieren, die bei allen Anwendern gleich sind. Bei Laufzeitanalysen wird versucht, die App so zu manipulieren, dass zum Beispiel eine Passwortabfrage umgangen werden kann. Zudem wird der Datenverkehr genau untersucht, da Schwachstellen in diesem Bereich andere Benutzer betreffen können. Wie bei der Webapplikationsanalyse wird hier der Hybridansatz angewandt: Es werden sowohl automatisierte als auch manuelle Tests durchgeführt.

In dieser Phase werden Tools wie zum Beispiel Burp Suite und technologiespezifische Tools wie SoapUI eingesetzt.

Die Exploitation-Phase

Das Ziel der letzten Phase ist das aktive Ausnutzen von in der Discovery-Phase identifizierten Schwachstellen, um neue Informationen zu erhalten. Diese wiederum können weitere Angriffe ermöglichen oder Schwachstellen offenlegen, die zuvor noch nicht ersichtlich waren. Aber auch hier gilt, dass nicht alle Schwachstellen ausgenutzt werden müssen, um zeigen zu können, wie kritisch die jeweilige Sicherheitslücke ist. Zum Beispiel reicht es, Angriffe gegen Bezahlvorgänge mit fiktiven Kreditkartendaten durchzuführen. Bei anderen Schwachstellen impliziert die Identifikation schon deren Ausnutzung, beispielsweise wenn durch Manipulation einer Zahl in einer Gesundheits-App plötzlich Daten von einem anderen Patienten ausgegeben werden.

Bei allen Schwachstellen, die während dieser Analyse identifiziert wurden, spricht die SySS GmbH Empfehlungen aus, wie die Sicherheit der mobilen App und der Kommunikation mit dem Server nachhaltig verbessert werden kann. Auch wenn Apps sich aufgrund der Plattform (z. B. iOS und Android) möglicherweise stark unterscheiden, lassen sich grundsätzlich folgende allgemeine Empfehlungen geben:

  • In der Planung sollte ein möglichst ausführliches Sicherheitskonzept in Betracht gezogen werden
  • Nicht genutzte Funktionen sollten deaktiviert werden
  • Kommunikation sollte, wenn möglich, verschlüsselt mit gegenseitiger Validierung stattfinden
  • In der App sollten keine sensiblen Daten vorhanden sein
  • Es sollte ein Rooting Detection-Mechanismus implementiert werden
  • Der Quelltext der App sollte, wenn möglich, obfuskiert werden
  • Zertifikatpinning sollte implementiert sein
  • Daten sollten – wenn überhaupt – sicher auf dem Handy gespeichert werden
  • Plattformabhängige Sicherheitsvorkehrungen, beispielsweise hinsichtlich der Sicherung lokaler Daten, sollten genutzt werden

Sind diese Maßnahmen umgesetzt, wird die Angriffsoberfläche so gering wie möglich gehalten und Angreifer haben es schwer, Einstiegspunkte für Angriffe zu finden. Wichtig ist jedoch zu beachten, dass nach jeder signifikanten Änderung in der App mögliche neue Einstiegspunkte entstehen können und die App einer neuen Sicherheitsprüfung unterzogen werden sollte.

Ihr direkter Kontakt zu SySS +49 (0)7071 - 40 78 56-0 oder anfrage@syss.de | IN DRINGENDEN FÄLLEN AUSSERHALB DER GESCHÄFTSZEITEN +49 (0)7071 - 40 78 56-99

Als Rahmenvertragskunde wählen Sie bitte die bereitgestellte Rufbereitschaftsnummer

Ihr direkter Kontakt zu SySS +49 (0)7071 - 40 78 56-0 oder anfrage@syss.de

IN DRINGENDEN FÄLLEN AUSSERHALB DER GESCHÄFTSZEITEN +49 (0)7071 - 40 78 56-99

Als Rahmenvertragskunde wählen Sie bitte die bereitgestellte Rufbereitschaftsnummer

Direkter Kontakt

+49 (0)7071 - 40 78 56-0 oder anfrage@syss.de

IN DRINGENDEN FÄLLEN AUSSERHALB DER GESCHÄFTSZEITEN

+49 (0)7071 - 40 78 56-99

Als Rahmenvertragskunde wählen Sie bitte die bereitgestellte Rufbereitschaftsnummer