Android

Allgemeine Informationen

Android-Applikationen können zum Beispiel mit Entwicklungsumgebungen wie „Eclipse“ oder „Aptana Studio“ in Java programmiert werden. Dazu muss das Java-SDK (Software Development Kit) und Android-SDK  installiert werden.

  • NDK (Native Development Kit) für die Entwicklung mit C/C++
  • – Die eigene Software kann vom Entwickler selbst signiert werden (Self-Signed). Es gibt keine zentrale Vergabestelle von digital signierten Zertifikaten.
  • – Weitere Standards: WebKIT (Web-Browser), SQLite, Open GL 3D

Der Compiler erzeugt einen Bytecode, der von jeder „DALVIK Virtual Maschine“ ausgeführt werden kann. Die VM startet einen isolierten Prozess, der durch eine eindeutige UID (Unix User ID) referenziert ist.

Um bei Bedarf die Kommunikation zwischen den Prozessen zu ermöglichen, gibt es verschiedene Methoden, wie die „Explizit deklarierten Richtlinien“, die bei der Installation festgelegt werden, IPCs (Inter-Prozess-Kommunikation mit Intents, Service- und Broadcast-Receiver) und Shared UID , bei der mehrere APPs eines Entwicklers die gleiche Signatur erhalten. Es stehen also Mittel zur Verfügung, das Sandbox-Prinzip zu umgehen. 

Einzelne Hersteller ermöglichen die Freischaltung des Bootloaders. Darunter HTC, Motorola und Samsung, die auch alle ein eigenes SDK für ihre Smartphones anbieten. Oft werden diese Modelle als „Developer-Device“ bezeichnet. Ein “Flashing Guide” finden Sie im xda-developer wiki.

Wie man sein Smartphone von Google befreit, steht in einer sehr interessanten Artikelserie “Android ohne Google” auf dem für viele eventuell schon bekannten Blog “Kuketz IT-Security”
www.kuketz-blog.de

 

Durch den quelloffenen Charakter gibt es bereits Dutzende Derivate und Portierungen von Android, die durch Projekte und Communities realisiert wurden. 

Die SDKs der Hersteller, wie zum Beispiel die „Gorbi SDK“ von Qualcomm, können umfassender auf die systeminternen Funktionen zugreifen, bieten dann aber nur eine gerätespezifische Lösung.

Auf den „Project Hosting“-Webseiten von “Google-code” befinden sich über 5000 Projekte, die sich nur mit Android beschäftigen und eine gute Grundlage bieten, um zusätzliche Libraries, APIs oder Quellcode zu finden.

 

Besonderheiten der Android-Plattform

Ein sogenanntes „Custom Rom“  besteht aus einem (inoffiziellen) Softwarepaket, dass für ein bestimmtes Modell angepasst wurde. Der Linux-Kernel, die gewünschten APPs, das Radio-ROM (Firmware für das Baseband) und das Theme (optische Erscheinungsbild) werden mit einem Software-Kit, dem sogenannten „ROM-Kitchen“, zusammengeführt. Mit diesen Tools wäre es auch möglich, eine modifizierte Baseband-Software auf ein Smartphone aufzuspielen, um zum Beispiel an die Informationen des GSM-Protokoll-Stacks zu gelangen. ROM-Kitchen’s sind auch für WP7 verfügbar, jedoch in einem früheren Entwicklungsstadium. Die beste Informationsquelle hierzu finden Sie auf den Webseiten von “xda-developers.com“, wie zum Beispiel das “dsixda’s Android Kitchen”.

Die Distribution der eigenen APPs kann über den „Google Play Store“ oder auch über eine Reihe von alternativen Stores erfolgen. Die Installationsdatei mit der Endung .apk (Android Package) lässt sich aber auch lokal, also zum Beispiel von einer SD-Karte, starten.

Die vorinstallierten Java-Anwendungen für Telefonie und SMS können jederzeit durch alternative APPs von Drittanbietern ausgetauscht werden. Gerätehersteller und Provider passen so das System nach Ihren Bedürfnissen an, was als “Stock-ROM” bezeichnet wird. Der Quellcode der eingefügten Applikationen wird in der Regel nicht veröffentlicht. Auch Android-Derivate, die ohne Google APPs auskommen, sind durch den geschlossenen Baseband-Bereich keine wirklich quelloffenen Systeme.

Ein vollkommenes Open-Source Smartphone wird mit dem OS “Openmoko” betrieben. Dazu finden Sie Informationen im Linkverzeichnis.

 

Sicherheitsmerkmale

Das Konzept zum Ausliefern der Updates und Patches ist noch sehr lückenhaft in Bezug auf die breite Produktpalette an unterschiedlicher Hardware, für die Updates angepasst werden müssen. Ein Betriebssystem-Update auf eine aktuelle Version ist bei vielen Android-Smartphones nicht möglich. Dieser Nachteil soll in Zukunft bei einzelnen Modellen nicht mehr bestehen, da die Updates direkt von Google ausgeliefert werden ohne den Umweg über die Gerätehersteller und Provider. Das HTC-One soll eines der ersten sogenannten “Google-Edition” Varianten sein. 

Die Gruppe „Secure Element Evaluation Kit for the Android Platform“ (seek-for-android) entwickelt eine „SmardCard API for Android“. Die Erweiterungen bieten neben einer Komplettverschlüsselung der auf dem Smartphone gespeicherten Daten, auch ein eigenes PKI-Management. Mehr Details finden Sie auf im Wiki von seek-for-android.

Android wird sogar von der NSA als Basis genutzt, um ein sicheres „Mobility Capability Package“ für ihre Mitarbeiter zu entwickeln. Die Spezifikation ist für jeden auf der entsprechenden Internetseite einsehbar. 

 

Telephony API

Im folgenden Abschnitt werden die wichtigsten Bereiche der Android-API untersucht, die für SMS-Dienste und Telefonie nötig sind.

Die API-Packages „android.telephony“  und „android.telephony.GSM“ stellen die wichtigsten Zugriffe bereit.

Für die Softwareentwicklung sind folgende Klassen interessant:

o       “CipherSpi”, Service Provider Interface (SPI)

o       „NeighboringCellInfo“, Methoden: getCid(), getLac() und getRssi()

o       „TelephonyManager“ und „PhoneStateListener“

o       „SmsMessage“, „SMSManager“ und „SmsMessage.SubmitPdu“

o       „SignalStrength“, Methoden: getEvdoSnr(), getGsmBitErrorRate(), getGsmSignalStrength()

Das Package „javax.crypto“  beinhaltet Klassen („Cipher“, „CipherSpi“  und „NullCipher“) und Methoden (getAlgorithm(), getParameters()), mit denen der „Cipher Indicator“ einer Instanz ausgelesen werden kann.

Der „Radio Interface Layer“ (RIL) befindet sich zwischen dem „Application Framework“ und dem Baseband Device und besteht aus dem RIL Daemon (rild) und dem geräteabhängigen Vendor RIL.

Alle Details zu der API finden Sie hier:
http://developer.android.com/reference/android/telephony/package-summary.html

 

Die Angriffsvektoren die gegen das Betriebssystem möglich sind werden folgen…

Smartphone Security