Ausarbeitung - Lean Startup Security Android Reverse Engineering & Code Injection Ausgefأ¼hrt von:...

download Ausarbeitung - Lean Startup Security Android Reverse Engineering & Code Injection Ausgefأ¼hrt von: Hermann

If you can't read please download the document

  • date post

    03-Jun-2020
  • Category

    Documents

  • view

    0
  • download

    0

Embed Size (px)

Transcript of Ausarbeitung - Lean Startup Security Android Reverse Engineering & Code Injection Ausgefأ¼hrt von:...

  • 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