Sichere Apps dank unserem «Mobile Testing Lab»

Aug 4, 2021 von Stefan Bernhardsgrütter

In der Praxis testet Redguard eine sehr breite Sammlung von Web-Anwendungen, Netzwerken oder Softwares genereller Art. Doch was ist mit mobilen Anwendungen? Mobile Apps sind aus keinem Wirtschaftszweig mehr wegzudenken. Oft werden mit ihrer Hilfe sensitive Informationen verarbeitet. Damit wir diese Anwendungen effizient testen können, benötigen wir die entsprechende Ausrüstung. Diese haben wir entwickelt. Erhalten Sie hier einen Einblick in das spannende Testen von mobilen Anwendungen.

Während der Prozess bei Penetration Tests mobiler Anwendungen gleich bleibt, ändern sich einige wichtige Details. Ein Penetration Test ist ein tiefgehender Security Test eines Systems, einer Anwendung oder eines IT-Netzwerkes. Die folgende Grafik zeigt die verschiedenen Phasen eines solchen Tests von der Vorbereitung bis zum Schreiben des Reports:




Die verschiedenen Phasen des Penetration Testing Execution Standard (PTES)


Mobile Apps – Diese Unterschiede und Sicherheitsoptionen gibt es

Beginnen wir bei den Betriebssystemen der beiden grössten Plattformen Android und iOS. Beide Plattformen ermöglichen es jeder Person, Anwendungen für mobile Geräte zu entwickeln. Dennoch gibt es wesentliche technische Unterschiede.

Während bei Android primär Java oder Kotlin als Programmiersprache genutzt werden, setzt Apple bei iOS vor allem auf Swift oder Objective-C. Auch die Programmierschnittstellen (API) der Anwendungen sind unterschiedlich. Die API definiert, wie ein Programm mit dem Betriebssystem interagiert. Damit kann eine Anwendung zum Beispiel auf die Kamera, Kontakte, Kalendereinträge oder lokale Daten zugreifen. Das Betriebssystem ermöglicht zudem, dass Programme Daten untereinander austauschen können.

Die Plattformen bieten aber auch eine Grundsicherheit. So kann eine Anwendung standardmässig nicht auf die Daten anderer Anwendungen zugreifen. Dies wird auch als «Sandboxing» bezeichnet: Jedes Programm spielt in seinem eigenen Sandkasten. Sensitive Daten, wie zum Beispiel Passwörter, können an besonders sicheren Orten gespeichert werden. Auch ist es gängig, die Netzwerk-Verbindung mittels so genanntem Zertifikat-Pinning zu schützen. Dabei wird die App mit dem TLS-Zertifikat des Servers ausgeliefert. Die App kann nun unabhängig vom Betriebssystem überprüfen, ob mit dem korrekten Server kommuniziert wird.

Meistens ist nicht nur die mobile App von Risiken betroffen, sondern auch eine Server-Komponente. Daher werden oft App und Server getestet.

Mit diesem Equipement testen wir mobile Apps

Damit Redguard mobile Apps effizient testen kann, haben wir eine spezielle Ausrüstung. Mit diesen Werkzeugen können wir Android- und iOS-Anwendungen testen:

Decompiler

Diese Tools werden dazu eingesetzt, um die kompilierte Maschinensprache der Anwendungen wieder lesbar zu machen. Dafür gibt es für Android und iOS unterschiedliche Werkzeuge, da unterschiedliche Programmiersprachen verwendet werden.

Man-In-The-Middle Proxy

Mit diesem Gerät wird versucht die Netzwerkverbindung aufzubrechen. Anstatt direkt mit dem Server kommuniziert das Gerät nun mit dem WIFI-Access-Point des Angreifers. So können unverschlüsselte oder unzureichend geschützte TLS-Verbindungen entdeckt beziehungsweise aufgebrochen werden.

Handelsübliches iPhone und Android-Gerät

Mit diesen Geräten wird untersucht, ob die Anwendungen Schwachstellen aufweisen, die ohne zusätzlichen Aufwand ausgenutzt werden können. Zum Beispiel wenn eine App sensitive Daten im öffentlich lesbaren Speicherbereich schreibt oder Fehler in einer exponierten API aufweist. Diese Art von Fehler sind oft gefährlich, da sie ohne zusätzlichen Aufwand ausgenutzt werden können.

«Gehacktes» iPhone und Android-Gerät

Mit Sicherheitsmassnahmen wie dem Sandboxing bieten Betriebssysteme bereits einen gewissen Grundschutz. Mit Zertifikat-Pinning, dem Verschlüsseln lokaler Dateien oder Code-Verschleierung, können die App-Entwickler zusätzlichen Schutz einbauen. Damit diese effizient untersucht und möglicherweise umgangen werden können, hat Redguard spezielle Geräte, welche den Testern erweiterte Rechte bieten. Man bezeichnet diese Geräte auch als «gerootet». Damit können fortschrittliche Angriffe simuliert und das Schutzniveau der Anwendung getestet werden.

Wie testet Redguard eine mobile App?

Nun stellen Sie sich bestimmt die Frage, was und wie genau getestet wird. Nehmen wir eine fiktive App als Beispiel: Die App wird für die Wartungsarbeiten bei industriellen Anlagen verwendet. Das Wartungspersonal kann sich damit einloggen und Wartungsaufträge verwalten. Es können Mängel und Reparaturarbeiten erfasst werden. Zur Dokumentation können auch Fotos hochgeladen werden. Die Anwendung kann aber auch dazu verwendet werden, die Maschine direkt zu steuern. Dies geschieht über eine Server-Komponente.

Eine kompromittierte Anwendung hätte im schlimmsten Fall zur Folge, dass ein Angreifer die Kontrolle über die industrielle Anlage und eventuell sogar über das lokale Netzwerk des Kunden erhält. Der Anbieter möchte daher wissen, wie gut die Anwendung ein solches Szenario verhindern kann. In solch einem Fall würde Redguard folgendermassen testen:

Statische Code Analyse

In einer ersten Phase würden die Tester klassisches Reverse-Engineering betreiben. Dabei wird die Anwendung je nach Plattform mit unterschiedlichen Decompilern untersucht. Dieser Vorgang ermöglicht es den Testern, «unter die Haube» der Anwendung zu sehen, um so Sicherheitsrisiken zu entdecken. So können zum Beispiel vermeintlich gut versteckte hart codierte Passwörter entdeckt werden. Aber auch Konfigurationsprobleme wie zum Beispiel unsichere Kompilierungseinstellungen können so entdeckt werden. Um diese Phase zu erschweren können die Entwickler den Code auch verschleiern. In diesem Fall ist es schwieriger, die Bedeutung des Codes zu verstehen.

Aufbrechen der Netzwerk-Verbindung

Danach wird die Anwendung ganz normal gestartet. Da sie mit einem Server kommuniziert, wird nun versucht, diese Verbindung aufzubrechen. Dazu wird auf dem Test-Gerät ein spezielles Zertifikat installiert. Wenn die Anwendung die Identität des Servers nicht eigenständig überprüft, können die Tester nun den Inhalt des Netzwerkverkehrs mitlesen und manipulieren. Zunächst wir dies auf den handelsüblichen Geräten durchgeführt. Haben die Entwickler der App das Zertifikat beigelegt, um es selbständig zu überprüfen, versuchen die Tester, dieses Zertifikat mit jenem des Man-In-The-Middle-Proxies zu ersetzten. Oft wird die Server-Schnittstelle auch getestet.

Lokal gespeicherte Daten untersuchen

Die Tester nutzen die App nun etwas. Ziel ist es, das normale Verhalten der Benutzer zu simulieren damit die App lokale Daten speichert. Nun wird auf dem handelsüblichen Gerät untersucht, ob diese sicher, und vor unberechtigten Zugriffen geschützt, in der Anwendungs-Sandbox gespeichert werden. Vor allem sensitive Informationen über Personen, Zugangsdaten wie Passwörter oder Zugriffs-Token sind hierbei relevant. Danach wird auf den gerooteten Geräten untersucht, wie die Daten innerhalb der Sandbox gespeichert werden. Dazu verbinden sich die Tester mit dem Gerät, damit sie die Sandbox auslesen können. Manchmal vergessen Entwickler zudem, dass sensitive Daten die sichere Sandbox im Falle eines Backups verlassen. Auch dies wird überprüft.

Dynamische Analyse zur Laufzeit

Eine wichtige Phase des Tests ist die Analyse zur Laufzeit. Eine Anwendung kann über so genannte Inter-Process-Communication (IPC) mit anderen Anwendungen kommunizieren. Hierbei kann nun ein Sicherheitsrisiko entstehen, wenn die Entwickler diese Schnittstellen nicht korrekt implementieren. Im schlimmsten Fall können Angreifer so die Kontrolle über die Anwendung übernehmen. Auch wird in dieser Phase untersucht, wie gut die Anwendung vor unberechtigten lokalen Zugriffen geschützt ist. Redguard nutzt hierbei oft Werkzeuge, welche zur Laufzeit in den Programmcode eingreifen können. Dies wird als «Function Hooking» bezeichnet. Diese Technik ist dann hilfreich, wenn die Anwendung zum Beispiel beim Start überprüft, ob das Gerät gehackt wurde oder nicht. Mittels «Function Hooking» kann der Anwendung zur Laufzeit vorgegaukelt werden, dass es sich um ein vertrauenswürdiges Gerät handelt. Aber auch im Code verschleierte Passwörter können zur Laufzeit oft sehr viel einfacher ausgelesen werden, da sie zu diesem Zeitpunkt im Klartext vorliegen müssen.

Fazit

Mit dem «Mobile Testing Lab» hat Redguard die Mittel, mobile Anwendungen effizient auf IT-Sicherheits-Risiken zu untersuchen – angefangen von einfach zu entdeckenden Konfigurationsproblemen im statischen Quellcode bis hin zur komplexen Laufzeitanalyse mittels «Function Hooking». Damit kann Redguard eine genaue Aussage darüber machen, wie gut eine Anwendung vor breiten IT-Security-Risiken geschützt ist. Mit den speziellen Testgeräten können so auch komplexe Angriffe auf gut geschützte Anwendungen simuliert werden.

Entwickeln Sie eine mobile App und möchten diese geschützt wissen? Erkennen und beheben Sie Risiken besser früh als (zu) spät. Melden Sie sich unverbindlich bei uns – Wir unterstützen Sie gerne bei einem Penetration Test.


< zurück