Ausarbeitung - Lean Startup Security · PDF file Android Reverse Engineering & Code...
date post
03-Jun-2020Category
Documents
view
0download
0
Embed Size (px)
Transcript of Ausarbeitung - Lean Startup Security · PDF file Android Reverse Engineering & Code...
Ausarbeitung
im Studiengang Informationsmanagement & Computersicherheit
Lehrveranstaltung Wahlpflichtfach: Sicherheit von Mobilnetzen und
mobilen Applikationen
Aufgabe 2
Android Reverse Engineering & Code Injection
Ausgeführt von: Hermann Wagner, BSc (1410303021)
Lukas Schweitzer, BSc (1410303015)
Thomas Wild, BSc (1410303045)
BegutachterIn: Dipl.-Ing. (FH) Stefan Schmidt, MSc
Wien, 15.02.2015
2
Aufgabenstellung
Ziel dieser Übung ist Kennenlernen und Verwenden diverser Reverse Engineering Tools für
Android Apps und die praktische Durchführung einer Code Injection.
Es sollen insgesamt folgende Schritte durchgeführt werden:
(1) Auswahl einer „verdächtigen“ App aus dem Google Play Store oder einem alternativen
Market ODER Download eines Malware Samples von Seiten wie
http://contagiodump.blogspot.co.at/2011/03/take-sample-leave-sample-
mobilemalware.html
(2) Kopieren des .apk Files auf den Desktop Rechner mit Hilfe eines geeigneten
Dateimanagers für Android (Achtung, Rooten des Gerätes ist nicht nötig, manche File
Manager unterstützen das Erstellen von Backups auf der SD Card!)
(3) Verwendung eines Java Decompilers (empfohlen wird dex2jar,
http://code.google.com/p/dex2jar/), und Analyse des Java Codes: Wie sicher ist die App
geschrieben, welche Daten werden übertragen,...
(4) Verwendung des apktools (http://code.google.com/p/android-apktool/) zum Reverse
Engineering der App, Analyse des Smali Codes
(5) Ein Online Decompiler wie der Android APK Decompiler
(http://www.decompileandroid.com/) liefert oft leicht anders dekompilierten Code
Zusätzlich kann man weitere Tools wie JDGUI ausprobieren
(https://code.google.com/p/innlab/downloads/detail?name=jd-gui-0.3.3.windows.zip&)
(6) Online-Recherche zur ausgewählten App (schon bekannt?, wie viele Downloads?,
welche Art von Malware?, Art der Verbreitung,...)
(7) Wenn möglich Ausführen der App im Emulator
(8) Code Injection: Code von Aufgabenstellung 1 in die neue App integrieren (Versenden
von Kontaktdaten z.B. gleich in OnCreate())
(9) Repackaging
Sonstiges
Dokumentation (10 Seiten) erstellen
Abgaben bis 18.02.2015: Dokumentation & Source Code (Malware mit injected Code)
per Mail oder über Dropbox, Yousendit, etc
http://contagiodump.blogspot.co.at/2011/03/take-sample-leave-sample-mobilemalware.html http://contagiodump.blogspot.co.at/2011/03/take-sample-leave-sample-mobilemalware.html http://code.google.com/p/dex2jar/ http://code.google.com/p/android-apktool/ http://www.decompileandroid.com/ https://code.google.com/p/innlab/downloads/detail?name=jd-gui-0.3.3.windows.zip&
3
0 Vorwort
Basierend auf der Aufgabenstellung wurde dieses Dokument in 3 Hauptkapitel und einer
Zusammenfassung unterteilt. Im ersten Kapitel geht es um das Beschaffen einer
verdächtigen bzw. bösartigen Android Applikation aus verschiedensten Quellen. Das Kapitel
2 behandelt dann, wie eine jede Android App analysiert und aus jeder Bytecode Applikation
der Quellcode rekonstruiert werden kann. Nachdem die App analysiert und ihre
Funktionalität verstanden wurde, wird in Kapitel 3 eigener Code zum Originalcode der App
hinzugefügt und die App neu erstellt. Als letztes Kapitel folgen eine Zusammenfassung und
ein Fazit der Autoren.
1 Auswahl einer „verdächtigen“ App (1, 6)
Im ersten Schritt soll eine verdächtige Android App bzw. Android Malware heruntergeladen
werden. Doch bevor wir das machen, werfen wir erst einmal einen Blick darauf welche Arten
von Malware es überhaupt für Android gibt:
Viren und Würmer
…gibt es für Android de facto gar nicht. Da jede Applikation einen eigenen Linux User
zugewiesen bekommt, der nur in seinem eigenen Verzeichnis und auf seine eigenen
Ressourcen volle Zugriffsrechte hat und sonst keine, ist es einer Android App nicht
möglich sich in einer anderen App einzunisten, wie es ein Virus per Definition tut.
Auch bei der Ausführung sind die Applikationen voneinander abgeschottet, da jede
App in einer eigenen Instanz der Android Runtime gestartet wird. Dadurch läuft eine
jede App in einer eigenen Sandbox und ihr ist es nicht möglich auf die Prozessräume
anderer Apps zuzugreifen (sofern es keinen Exploit für die Sandbox gibt). Wollen
Applikationen miteinander Daten austauschen, so müssen sie dies über die
vordefinierten und abgesicherten Schnittstellen tun, die Android ihnen zur Verfügung
stellt.
Da die Android Applikationen allesamt in Java geschrieben sind und Java eine Reihe
an Sicherheitsmechanismen bereits in der Programmiersprache selbst implementiert
sind (zB. automatischer Check der Array-Grenzen, Zugriffskontrolle mittels private,
protected, …), ist es sehr schwer einen Exploit in einer Android App zu finden und
diesen auszunutzen um eigenen Code auszuführen (Ausnahme: Android-Browser
der bis Android 4.3 verwendet wurde und auf der nicht mehr unterstützen Webview-
Komponente basiert – Exploits, Exploits, Exploits ).
Durch diese beiden Eigenschaften ist sichergestellt, dass Android Applikationen nicht
die Sicherheit des Systems schwächen können und als Einfallstor dienen, wie es zum
Beispiel bei Windows der Fall ist.
4
Weiters muss der Benutzer der Installation einer jeden Applikation im Vorhinein
zustimmen. So etwas wie eine Installation im Hintergrund gibt es nicht (wieder unter
der Voraussetzung, dass es keinen Exploit für Android gibt). Dadurch kann sich ein
Wurm nicht von selbst verbreiten und auf einer Vielzahl an Endgeräten einnisten.
Trojaner
Da es weder Viren noch Würmer gibt, bleibt eigentlich nur noch die dritte der drei
Haupt-Kategorien, in die Malware unterschieden werden kann: Trojaner.
Getarnt als nützliches Programm, führt diese Art von Malware im Hintergrund
Funktionen aus, die vom Benutzer des Systems ungewollt sind bzw. dem Benutzer
schaden. Wichtig dabei ist, dass der Benutzer der Installation des Programms aktiv
zustimmt (anders geht es ja auf Android auch gar nicht), aber nur über einen Teil der
Funktionalitäten des Programms Bescheid weiß. Da eine jede Anwendung jedoch in
der Manifest-Datei angeben muss, welche Zugriffsberechtigungen (API-Aufrufe) sie
benötigt und der Benutzer diesen bei der Installation der App zustimmen muss, kann
dieser zumindest in etwa nachvollziehen was die App alles machen kann und ob die
angefragten Berechtigungen plausibel erscheinen. Benötigt eine Taschenlampen-App
zum Beispiel Zugriff auf das Adressbuch und auf GPS, so sollten diese
Berechtigungsanfragen den Benutzer als Warnsignal dienen und er sollte diese App
als höchst verdächtig einzustufen und besser nicht installieren.
Wirft man einen genaueren Blick auf die, in den App-Stores, verfügbaren (Gratis-)
Applikationen, so muss man leider feststellen, dass ein Großteil der Apps
Berechtigungen anfordert, die eigentlich nicht zur angegebenen Funktionalität passen
und daher als Trojaner eingestuft werden müssen. Das Hauptproblem dabei ist, dass
die Apps durch den Verkauf von Benutzerdaten Geld verdienen können und das
Ganze durch die implizite Zustimmung des Benutzers zu den AGB (die sich ohnehin
niemand durchliest) sogar dem Gesetz entspricht.
Neben dieser „harmloseren“ und gängigen Form von trojanischen Pferden, gibt es
aber auch gefährlichere Varianten von Android Trojanern, die es nicht nur auf die
privaten Meta-Daten der Benutzer abgesehen haben:
o Gefälschte Banking Apps (Banking Trojans)
o Keylogger zum Stehlen von Credentials
o Aufzeichnen von Gesprächen
o Anrufen bzw. SMS an Premium-Nummern
o Stehlen von privaten Dokumenten, Fotos und Videos
o usw.
Wir sehen also, dass Prinzip die Suche nach Android-Malware uns nicht sehr schwer fallen
wird, da sehr viele Apps mit „Zusatzfunktionen“ ausgestattet sind. Wir wollen uns jedoch
nicht mit einer „normalen“ 0815 App aus dem Android Store begnügen, sondern analysieren
5
eine bereits bekannte Malware. Diese können wir von der Webseite
http://contagiominidump.blogspot.co.at/ herunterladen. Über diese Webseite können eine
Vielzahl von Malware Samples heruntergeladen werden. Diese sind zwar passwortgeschützt,
jedoch kann man die Webseiten-Betreiberin anschreiben damit sie einem das Passwort
zusendet.
Für diese Aufgabe haben wir die Malware „Android FBI Ransomlocker“ ausgewählt. Diese
tarnt sich in den diversen App Stores als bekannte App oder Antivirus (in unserem Fall als
Adobe Flash Player) und führt nach Ausführung dann dazu, dass der Benutzer des
Smartphones keinen Zugriff mehr auf dieses erhält und eine FBI-Warnmeldung angezeigt
bekommt. In der Warnmeldung wird dann in weiterer Folge verlangt, dass einige hunderte
Dollar in Form von einer MoneyPak – Gutschrift überwiesen werden, damit die Applikation