Komplexer Android-Trojaner

Anton Kivva

Vor kurzem wurde uns eine Android-Anwendung zur Analyse zugespielt, wobei auf den ersten Blick klar wurde, dass es sich hierbei um etwas ganz Besonderes handelte. Alle Zeilen der DEX-Datei waren verschlüsselt und der Code war obfuskiert.

Die Datei erwies sich als multifunktionaler Trojaner, der in der Lage ist, SMS an Premium-Nummern zu versenden, andere Schadprogramme auf ein infiziertes Gerät zu laden und zu installieren und/oder solche via Bluetooth zu versenden und entfernte Befehle in der Konsole auszuführen. Dieses Schadprogramm wird von Kaspersky Lab als Backdoor.AndroidOS.Obad.a detektiert.

In der Regel sind Virenschreiber bemüht, den Code ihres Machwerkes so weit wie möglich zu verschleiern, um den AV-Experten die Arbeit zu erschweren, doch ein solches Ausmaß an Tarnung wie wir es bei Obad.a vorgefunden haben, ist für mobile Malware äußerst ungewöhnlich. Doch die Besonderheit dieses neuen Trojaners liegt nicht allein in der Obfuskation des Codes.

Besonderheiten des Trojaners

Die Entwickler von Backdoor.AndroidOS.Obad.a haben einen Fehler in dem populären Programm dex2jar gefunden, das gewöhnlich von Analysten zur Konvertierung von APK-Dateien in das benutzerfreundlichere Format Java Archive (JAR) verwendet wird. Die von den Cyberkriminellen entdeckte Sicherheitslücke stört den Konvertierungsprozess von Dalvik Byte-Code in Java Byte-Code, was als Konsequenz die statische Analyse des Trojaners erschwert.

Die Cybergangster entdeckten zudem einen Fehler im Betriebssystem OC Android, der mit der Verarbeitung der Datei AndroidManifest.xml zusammenhängt. Diese Datei steckt in jeder Android-Anwendung und wird zur Beschreibung der Programmstruktur, zur Bestimmung ihrer Startparameter usw. verwendet. Die Virenschreiber haben AndroidManifest.xml dahingehend modifiziert, dass diese nicht den von Google festgelegten Standards entsprach, dank der entdeckten Sicherheitslücke allerdings korrekt auf dem Smartphone verarbeitet wurde. Als Folge wird die dynamische Analyse des Trojaners erheblich erschwert.

Die Entwickler des Schadprogramms Backdoor.AndroidOS.Obad.a nutzen noch einen weiteren, bisher unbekannten Fehler im Betriebssystem Android aus, der es der schädlichen Anwendung ermöglicht, sich die erweiterten Rechte des Geräteadministrators anzueignen, das Programm dabei in der Liste der Anwendungen, die über solche Rechte verfügen, allerdings nicht auftaucht. Das hat zur Folge, dass das Schadprogramm, das über erweiterte Rechte verfügt, nicht mehr vom Smartphone entfernt werden kann.

Schließlich hat der Schädling Backdoor.AndroidOS.Obad.a kein Interface und funktioniert im Hintergrundmodus.

Analyse des Codes

In diesem Schadprogramm werden alle äußeren Methoden durch Reflexion hervorgerufen, dabei sind alle Zeilen (darunter die Namen der Klassen und Methoden) verschlüsselt.

Jede Klasse verfügt über einen lokalen Methoden-Decrypter, der die zu entschlüsselnde Zeile aus dem lokal bekannt gegebenen Byte-Array erhält. Alle Zeilen sind in diesem Array „versteckt“.

Die wichtigsten Zeilen, die die Adresse des Steuerungsservers enthalten, werden einer weiteren Entschlüsselungsprozedur unterworfen. Zu diesem Zweck überprüft der Trojaner zunächst, ob eine Verbindung zum Internet besteht, daraufhin lädt er die Seite facebook.com und verwendet, nachdem er ein gewisses Element des Codes dieser Seite herausgezogen hat, dieses als Schlüssel für die Dechiffrierung. Auf diese Weise entschlüsselt Backdoor.AndroidOS.Obad.a die Adresse des Steuerungsservers nur unter Gefechtsbedingungen – bei Vorhandensein einer Internetverbindung. Darüber hinaus erschwert diese Funktion die Analyse des Schädlings.
Ein Teil der Zeilen ist noch zusätzlich verschlüsselt. Der lokale Decrypter empfängt die codierte Zeile in Base64 und decodiert sie. Die decodierte Zeile wird zunächst durch eine XOR-Operation aus dem MD5-Schlüssel entschlüsselt, daraufhin zusätzlich mit MD5 von der Zeile „UnsupportedEncodingException“. Um den MD5-Schlüssel zu erhalten, dechiffriert derselbe lokale Decrypter eine weitere Zeile, aus der auch der MD5 errechnet wird. Auf diese Weise werden die wichtigsten Zeilen geschützt, wie etwa der Name der Funktion sendTextMessage.

Durch eine Analyse ist es uns gelungen, alle Zeilen zu dechiffrieren:

 Und mit Hilfe der Ergebnisse der Dechiffrierung konnten wir den Funktionsalgorithmus der Anwendung wiederherstellen.

Erlangung der Rechte

Sofort nach dem Start versucht die Anwendung, die Rechte des Geräteadministrators zu erhalten.

Wie bereits oben beschrieben, besteht eine Besonderheit des Trojaners darin, dass das Schadprogramm – nachdem es erweiterte Rechte erhalten hat – nicht mehr gelöscht werden kann: Durch die Ausnutzung eines vorher unbekannten Fehlers im Betriebssystem Android taucht die schädliche Anwendung mit erweiterten Rechten nicht in der Liste der Programme auf, die über die Rechte des Geräteadministrators verfügen.

Wir haben Google bereits über die Sicherheitslücke in der Arbeit mit dem Geräteadministrator im Betriebssystem Android informiert.

Der Trojaner kann die erweiterten Rechte des Geräteadministrators zum kurzfristigen (nicht mehr als 10 Sekunden) Blockieren des Geräte-Displays nutzen. In der Regel geschieht das nach der Verbindung mit einem kostenlosen Wi-Fi-Netz oder nach der Aktivierung von Bluetooth, das vom Schädling zur Weiterleitung seiner Kopien und anderer Schadprogramme an andere Geräte, die sich in der Nähe befinden, genutzt wird. Vermutlich versucht Backdoor.AndroidOS.Obad.a so, die schädliche Aktivität vor dem Anwender zu verbergen.

Außerdem versucht der Trojaner, Root-Rechte zu erhalten, indem er den Befehl „su id“ ausführt.

android_trojan_08

VerbindungzudenBetreibern

Informationen, ob Root-Rechte erhalten wurden, werden an den Steuerungsserver weitergeleitet. Der Erhalt von Root-Rechten kann Cyberkriminellen einen Vorteil bei der entfernten Ausführung von Befehlen in der Systemkonsole verschaffen.
Für die Übermittlung der Informationen über das infizierte Gerät und die bereits geleistete Arbeit benutzt Backdoor.AndroidOS.Obad.a die in dem Moment aktive Internetverbindung. Wird kein Netz gefunden, so sucht der Trojaner die nächstgelegenen Wi-fi-Netze, die keine Autorisierung erfordern, und verbindet sich sodann mit einem von ihnen.

Nach dem Erststart sammelt die schädliche Anwendung die folgenden Informationen und sendet sie dann an den Steuerungsserver mit der Adresse androfox.com:

  • MAC-Adresse des Bluetooth-Geräts
  • Name des Betreibers
  • Telefonnummer
  • IMEI
  • Kontostand
  • Geräteadministrator-Rechte erhalten oder nicht
  • Root-Rechteerhaltenodernicht
  • Ortszeit

DiegesammeltenDatenwerdeninFormeinesverschlüsseltenJSON-ObjektsandenServergesendet

android_trojan_09

Diese Informationen werden an den zum Verbindungszeitpunkt aktuellen Kommandoserver und bei jeder folgenden Verbindung gesendet. Zudem informiert der Schädling seinen Herren über seinen eigenen Zustand: Die Anwendung schickt an den Server aktuelle Tabellen der Premium-Nummern und der Präfixe zum SMS-Versand (Parameter „aoc“), eine Liste der Aufgaben („task“) sowie eine Liste der C&C-Server. Bei jeder Sitzung mit dem Steuerungsserver wird eine leere Tabelle und Liste der Kommandoserveradressen gesendet, die mit Hilfe des oben beschriebenen Algorithmus‘ verschlüsselt sind. Während einer Verbindung mit dem C&C kann der Trojaner auch eine aktualisierte Tabelle der Premium-Nummern und eine neue Adressliste der C&C empfangen.
Als Antwort sendet der Server ein anderes JSON-Objekt, das nach der Verschlüsselung folgendermaßen aussehen kann:
{"nextTime":1,"conf":{"key_con":"oKzDAglGINy","key_url":"3ylOp9UQwk","key_die":"ar8aW9YTX45TBeY","key_cip":"lRo6JfLq9CRNd6F7IsZTyDKKg8UGE5EICh4xjzk"}}
nextTime – nächste Kontaktaufnahme zum Server.
conf – Konfigurationszeile.

Die Konfigurationszeilen können Hinweise auf Veränderungen des C&C, Tabellen der Nummern mit Präfixen und Schlüsseln zum Versand der SMS und neue Aufgaben mit Parametern enthalten. Zudem kann in einer conf der Schlüssel zu Chiffrierung des Traffics (key_cip) weitergegeben werden.

Die Cyberkriminellen können den Trojaner auch mit Hilfe von SMS steuern: Konfigurationszeilen können auch Schlüsselzeilen enthalten, die der Trojaner in den eingehenden SMS sucht, um bestimmte Aktionen auszuführen (key_con, key_url, key_die).

Jede eingehende SMS wird auf das Vorhandensein eines der Schlüssel untersucht. Wird ein Schlüssel gefunden, wird die entsprechende Aktion ausgeführt:
key_con – sofortige Verbindung mit dem Server.
key_die – Entfernen der Aufgaben aus den Datenbanken.
key_url – Austausch des C&C-Servers; darauf sollte im Text der SMS die neue Adresse folgen. Auf diese Weise kann ein neuer C&C-Server erstellt und seine Adresse per SMS mit dem entsprechenden Schlüssel key_url verschickt werden, woraufhin alle infizierten Geräte beginnen, mit dem neuen Server zu interagieren.

Wird in der conf ein Schlüssel zum Versand von SMS gefunden, so verschickt der Trojaner eine Mitteilung an die vom С&C erhaltenen Nummern. So ist für den Empfang des Befehls zum Versenden kostenpflichtiger SMS noch nicht einmal eine Internetverbindung notwendig:

android_trojan_10

Steuerungsserver

Vom C&C-Server empfängt der Trojaner Befehle, die in die Datenbank eingespeist werden. Jeder Befehlseintrag in dieser Datenbank enthält eine Ordnungsnummer, die vom Server festgelegte Zeit seiner Ausführung sowie Parameter.
Befehlsliste:

  1. SMSversenden. In den Parametern sind Nummer und Text enthalten. Antwort-SMSwerden gelöscht.
  2. Ping.
  3. KontostandviaUSSD empfangen.
  4. Als Proxy fungieren (festgelegte Daten an eine festgelegte Adresse senden und Antwort geben).
  5. Mit vorgegebener Adresse verbinden (Klicker).
  6. Datei vom Server laden und installieren.
  7. Liste der auf dem Smartphone installierten Anwendungen an den Server senden.
  8. Informationen über eine vom Kommandoserver angefragte installierte Anwendung versenden.
  9. Kontakte des Anwenders an den Server senden.
  10. Entfernte Shell. Führt die von den Cyberkriminellen ausgegebenen Befehle in der Konsole aus.
  11. Datei an alle erkannten Bluetooth-Geräte schicken.

Die Befehlsliste für Obad.a ermöglicht es dem Schädling, Dateien via Bluetooth zu verbreiten. Der Server vergibt die Adresse der Datei, die auf das infizierte Gerät geladen werden soll. Nach dem Download der Datei bestimmt die schädliche Anwendung gemäß dem nächsten Befehl des Servers die nächstgelegenen Geräte mit aktiviertem Bluetooth und versucht, ihnen die Datei zu senden.

Obgleich er über derart beeindruckende Möglichkeiten verfügt, ist der Schädling Backdoor.AndroidOS.Obad.a nicht sehr weit verbreitet. Laut Daten des Kaspersky Security Network entfielen auf diesen Trojaner innerhalb von drei Tagen der Beobachtung seiner blockierten Installationsversuche insgesamt nicht mehr als 0,15% aller Versuche mobile Geräte mit verschiedenen Schadprogrammen zu infizieren.

Zum Schluss sei angemerkt, dass der Schädling Backdoor.AndroidOS.Obad.a hinsichtlich seiner Komplexität und der Ausnutzung nicht veröffentlichter Sicherheitslücken eher einem Schadprogramm unter Windows gleicht, als anderen Trojanern für Android. Und das bedeutet, dass nicht nur die Zahl der Android-Schädlinge stetig zunimmt, sondern auch deren Komplexität.

Ähnliche Beiträge

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.