© Khakimullin Aleksandr/Shutterstock.com
Hilfreiche Securitytools für Android im Überblick

Fuzzing, Debugging, Scanning


Im Bereich der Android-Sicherheit hat sich in den vergangenen zwei Jahren einiges getan, die Sicherheitsforscher waren fleißig. Android ist aber auch ein sehr dankbares Forschungsgebiet, denn es gibt noch reichlich Neues zu entdecken. Allerdings braucht man dafür vor allem passende Tools – und genau auf die wollen wir einmal einen Blick werfen.

Wollen Sie wissen, ob die Apps auf ihrem Android-Gerät Schwachstellen enthalten? Oder sich selbst davon überzeugen, wie unsicher Androids Multimediasystem wirklich ist? Oder testen, ob die von Ihnen entwickelte App wirklich sicher ist? Dann können Sie entweder auf Fuzzing setzen und Ihr Testobjekt mit falsch formatierten Daten und ähnlichen Eingaben einem Stresstest unterziehen. Oder Sie suchen mit einem Schwachstellenscanner nach bekannten Schwachstellenarten. Für beides wurden in den vergangenen zwei Jahren auf den Sicherheitskonferenzen neue Tools vorgestellt.

Kauzige Cowboys, die mit Android rumspielen

Eine gute Möglichkeit, Fehler und damit auch mögliche Schwachstellen zu finden, ist Fuzzing. Und dazu gab es gleich mehrere Vorträge, es tut sich also einiges. Man kann in Android ja auch einiges fuzzen. Hier einige zusammengetragene Beispiele.

Die ART Runtime

Anestis Bechtsoudis hat auf der Hack in the Box Amsterdam 2015 einen Vortrag zum Fuzzing der AOT (Ahead of Time) ART Runtime gehalten: „Fuzzing Objects d’ART: Digging Into the New Android L Runtime Internals“ [1], [2]. Auslöser seiner Untersuchungen waren unter anderem die fehlenden Informationen über die Sicherheit von ART, weshalb er seinen Vortrag auch mit einer kurzen Einführung in die ART Runtime begann. Für das Fuzzing wählte er dann drei Ziele, von denen bisher nur das erste erreicht wurde:

  • In der ersten Phase sollen die Compilation Chains für die unterstützten Backends untersucht werden.

  • Für die zweite Phase ist die Untersuchung der Initialisierung der Runtime-Umgebung geplant.

  • In der dritten Phase sollen die Ausführungsmodi der Runtime untersucht werden.

Da das erste Ziel der ART-Dalvik-Bytecode-Compile-Prozess (Dalvik Executable, DEX) war, musste zunächst ein Fuzzer dafür entwickelt werden. Die Untersuchungen sollten auf ARM-Geräten durchgeführt werden, da die den größten Marktanteil haben. Die zunächst angedachte Option, die Untersuchungen mit den Hosttools durchzuführen, wurde wegen deren abweichendem Speicherlayout verworfen. Auch der Android-QEMU-Emulator für ARM schied als Option aus, da die unterschiedlichen CPU-Varianten Auswirkungen auf die Compilerattribute haben und die Ergebnisse nicht auf reale Systeme übertragbar wären.

Die für das Fuzzing benötigten Daten sollten auf dem Gerät erzeugt werden, um den sonst nötigen I/O-Overhead zwischen Host und Zielgerät zu vermeiden. Die Fuzzing-Daten sollen dabei einem mutationsbasierten Ansatz entsprechend aus gültigen Eingabedaten erzeugt werden, wobei die Manipulationen im Laufe der Zeit auf Grundlage der gesammelten Erfahrungen angepasst werden sollen.

Das Ergebnis dieser Anforderungen war das Fuzzing-Framework DroidFuzz für DEX, mit dem die Untersuchungen auf vier Google-Nexus-Geräten (ein Nexus 4, zwei Nexus 5, ein Nexus 6) unter ART Commit #8e8bb8a vom 16. April 2015 gestartet wurden. Auf den Devices liefen das zum Testzeitpunkt aktuelle Android OS 5.1.x und AOSP Master Branch. Dabei wurde eine Reihe eindeutiger Abstürze entdeckt, überwiegend Out-of-Band Writes und NULL-Dereferenzierungen. Diese müssen noch weiter untersucht werden, außerdem steht noch die Realisierung der Phasen zwei und drei aus.

DroidFuzz wurde nicht veröffentlicht, stattdessen beteiligten sich die Entwickler mit den gesammelten Erfahrungen an der Weiterentwicklung von honggfuzz [3] und dessen Anpassung an Android [4].

Binder und Androids Systemdienste

Guang Gong hat auf der Black Hat USA 2015 das Fuzzing von Android-Systemdiensten beschrieben: „Fuzzing Android System Services by Binder Call to Escalate Privilege“ [5]. Konkret hat er dabei Binder untersucht, den IPC-Mechanismus (Inter-Process Communication) von Android. Der ist nicht nur für die Kommunikation von Prozessen mit gleichen Privilegien zuständig, sondern auch für die zwischen niedrig privilegierten Apps und hoch privilegierten Systemdiensten. Schwachstellen in diesem Bereich würden niedrig privilegierten Apps eine Privilegieneskalation erlauben.

Für das Fuzzing musste wie so oft ein neues Tool entwickelt werden, das die von den Systemdiensten exportierten Binder-Interfaces testet. Damit hat Guang Gong zum einen acht eindeutige Schwachstellen entdeckt, die CVE-IDs erhalten haben, zum anderen Dutzende Abstürze von Systemdiensten aufgedeckt.

Für seine Untersuchungen hat sich Guang Gong unter anderem den Media-Player-Service (android.media.IMediaPlayerService) ausgesucht. Der hatte auf der Black Hat USA 2015 ja noch einen anderen, deutlich größeren Auftritt. Sie erinnern sich sicher noch an die Stagefright-Schwachstellen, über die Android-Geräte über präparierte Multimediadateien kompromittiert werden können [6]. Die befinden sich in der Multimediabibliothek Stagefright und sind deutlich gefährlicher als die von Guang Gong im Media-Player-Service entdeckten Schwachstellen. Letztere erlauben „nur“ Privilegieneskalation und DoS-Angriffe und können erst ausgenutzt werden, wenn bereits Schadcode, zum Beispiel in Form einer bösartigen oder kompromittierten App, auf dem Gerät läuft. Dann aber wird zumindest die Privilegieneskalation durchaus gefährlich, denn sie erlaubt es dem Schadcode, aus der Sandbox auszubrechen und Aktionen auszuführen, die ihm ansonsten nicht möglich wären.

Für eine der Schwachstellen, CVE-2015-1528 [7], hat Guang Gong dann noch die Entwicklung eines Exploits [8] zur Privilegieneskalation beschrieben. Den für die Entdeckung der Schwachstellen verwendeten Fuzzer hat er leider nicht veröffentlicht.

Binder und seine Pakete

Auch Qidan He hat sich mit Fuzzing um Androids Binder gekümmert. Sein Ziel: Die darüber ausgetauschten Pakete (Parcels). Sein Vortrag auf der Black Hat Asia 2016 trug entsprechend den Titel „Hey Your Parcel Looks Bad – Fuzzing and Exploiting Parcel-ization Vulnerabilities in Android“ [9].

Auch seine Präsentation beginnt mit einer Einführung, natürlich in Binder und dessen Pakete. Gefolgt vo...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang