Gefährliche Peripherie: USB - Bösartige Ladegeräte
Vor fast 2 Jahren schrieb ich zuletzt über Angriffe über USB. Seitdem ist einiges passiert. So gibt es zum Beispiel zum damals bereits kurz angesprochenen "Juice-Jacking" eine Implementierung für iOS: Mactans ist augenscheinlich ein Ladegerät für iOS-Geräte, installiert tatsächlich aber eine bösartige App auf dem geladenen Gerät.
Mactans - Ein bösartiges Ladegerät für iOS-Geräte
Mactans wurde von Billy Lau, Yeongjin Jang und Chengyu Song auf der "Black Hat USA 2013" vorgestellt: "Mactans: Injecting Malware into iOS Devices via Malicious Chargers". iOS ist durch sein "Walled Garden"-Sicherheitsmodell recht gut vor Schadsoftware geschützt. Apps können nur aus Apples App Store geladen werden (sofern das Gerät nicht durch einen Jailbreak umkonfiguriert wurde). Da Apple die Apps vor ihrer Veröffentlichung prüft, gelangen bösartige Apps nur relativ selten in den App Store, und wenn sie entdeckt werden, werden sie sofort wieder entfernt. Durch den Einsatz von Code Signing wird die Integrität der Boot-Kette und der Apps sicher gestellt. Und der Einsatz einer Sandbox sorgt dafür, dass Angriffe über eine Schwachstelle auf den betroffenen Prozess beschränkt bleiben. Und das alles funktioniert recht gut, es gibt kaum Schadsoftware für iOS, und die betrifft meist nur über einen Jailbreak von den Schutzfunktionen "befreite" Geräte.
Handy laden - alltäglich und mitunter doch gefährlich
Billy Lau, Yeongjin Jang und Chengyu Song haben einen Weg gefunden, trotzdem Schadsoftware einzuschleusen. Sie haben sich dazu eines alltäglichen Vorgangs bedient: Dem Laden des Geräts. Und der entwickelte Angriff erfüllt einige recht hoch gesteckte Anforderungen:
- Der Angriff funktioniert unabhängig von einem Jailbreak.
- Eine Benutzeraktion ist nicht nötig, das reine Anschließen des "Ladegeräts" führt zur Installation der Schadsoftware.
- Es gibt keine sichtbaren Hinweise auf den Angriff.
- Der eingeschleuste Schadcode enthält Funktionen, die anderen Apps nicht zugänglich sind.
Der Angriff läuft in vier Schritten ab:
- Die UDID (Universal Device Identifier) des Geräts wird abgefragt.
- Die Verbindung zum iOS-Gerät wird aufgebaut ("Pairing")).
- Das Provisioning Profile wird erzeugt und installiert.
- Die Schadsoftware wird installiert.
Pairing - Blindes Vertrauen ist gefährlich!
Beim Pairing wird das Vertrauen des iOS-Geräts ausgenutzt: Das Gerät kann Pairing-Requests nicht zurückweisen, und das Pairing ist ohne Zustimmung des Benutzers möglich, solange das Gerät nicht gesperrt ist. Nach dem Pairing kann der Schadcode jederzeit eingeschleust werden, unabhängig davon, ob das Gerät gesperrt ist oder nicht.
Über USB sind eine Reihe von Operationen möglich, die von Mactans alle durchgeführt werden können:
- Geräte-Informationen wie UDID und Seriennummer können abgefragt werden.
- Apps und Provisioning Profiles können installiert und gelöscht werden.
- Ein Backup kann angelegt oder installiert werden.
- Die Firmware kann zurückgesetzt werden.
- Das Gerät kann debuggt werden.
Provisioning Profile - Der Türöffner für iOS
Ein Provisioning Profile wird benötigt, wenn auf einem Gerät Apps außerhalb des App Stores installiert werden sollen. Die Apps müssen dazu mit einem Zertifikat signiert werden, das dem Provisioning Profile zugewiesen ist. Zusätzlich enthält das Provisioning Profile die App-IDs und die Geräte-UDID. Es gibt Provisioning Profiles für Unternehmen und Individuen, für den Angriff wird eines für Individuen verwendet. Um das zu erhalten, ist eine aktive Entwickler-Lizenz nötig, außerdem muss die UDID des Geräts bekannt sein und eine Verbindung zu Apples Server bestehen (denn nur Apple kann ein Profile erstellen, da es von Apple signiert werden muss).
Für die Verbindung zum Internet und damit zu Apples Server verwendet Mactans eine eingebaute WLAN-Antenne, alternativ könnte auch ein SIM-Karten-Modul für das Mobilfunk-Netz eingebaut werden. Das Anlegen eines Provisioning Profiles über Apples Website erfolgt dann vollautomatisch.
Und schon ist die App drin...
Nachdem das Provisioning Profile von Apple heruntergeladen und auf dem
Gerät installiert wurde, kann die App mit dem Schadcode ohne Wissen
und Zustimmung des Benutzers installiert werden. Damit die App nicht vom
Benutzer entdeckt und womöglich gelöscht wird, wird sie
versteckt. Dazu dient ein Eintrag in der Info.plist
der App,
der dafür sorgt, dass die App nicht auf dem Main Screen und im
Taskmanager angezeigt wird:
<key>SBAppTags</key>
<array>
<string>hidden</string>
</array>
Die App wird dann im Hintergrund gestartet. Da Hintergrund-Apps unter iOS
nur 10 Minuten lang laufen dürfen, muss dieses Limit umgangen werden.
Entweder, indem die App sich vor Erreichen der 10-Minuten-Grenze selbst
beendet und neu startet oder indem sie als VoIP-App registriert wird
setKeepAliveTimeout
auf 600 gesetzt wird.
Was kann die App anstellen? Sie kann zum Beispiel Screenshots des aktuellen "Vordergrund"-Bildschirms erzeugen oder Screen/Button-Drücke simulieren. Sie kann auch als Trojaner andere Apps ersetzen und dann zum Beispiel darin gemachte Eingaben ausspähen.
Angriffsszenarien
Allgemein kann mit einem Provisioning Profile für Unternehmen eine öffentliche Ladestation aufgebaut werden, die dann jedes dort geladene Gerät mit Schadsoftware infiziert. Im Rahmen gezielter Angriffe kann dem Opfer ein präpariertes Ladegerät untergeschoben werden.
Gegenmaßnahmen
Das Grundproblem ist hier das ungerechtfertigte Vertrauen des iOS-Geräts beim Pairing. Als Gegenmaßnahme dient die mit iOS 7 eingeführte explizite Autorisierung des Pairings durch den Benutzer, außerdem wird der Aufbau einer USB-Verbindung beim Laden des Geräts unterbunden.
Über USB sind auch zu viele (und vor allem zu privilegierte) Operationen möglich, siehe oben. Die Lösung hier ist einfach: Alles, was nicht wirklich benötigt wird, muss entfernt oder zumindest von der Zustimmung des Benutzers abhängig gemacht werden.
Um dem Missbrauch der Provisioning Profiles entgegen zu wirken, sind gründlichere Kontrollen nötig, außerdem darf sich das Erstellen der Provisioning Profiles nicht automatisiert durchführen lassen.
Auch in der nächsten Folge geht es um neue Angriffe über USB.
Übersicht über alle Artikel zum Thema
- Gefährliche Peripherie: Firewire
- Gefährliche Peripherie: USB
- Gefährliche Peripherie: USB - Stick weg, Daten weg
- Gefährliche Peripherie: USB - Weitere Angriffe und Gegenmaßnahmen
- Gefährliche Peripherie: Drucker und Co.
- Gefährliche Peripherie: Thunderbolt
- Gefährliche Peripherie: USB - Bösartige Ladegeräte
- Gefährliche Peripherie: USB - Zweckentfremdete Anschlüsse und mehr
- BadUSB - Ein Angriff, der dringend ernst genommen werden sollte
Trackbacks
Dipl.-Inform. Carsten Eilers am : WireLurker, Schritt 2: Der Angriff auf die iOS-Geräte
Vorschau anzeigen
Dipl.-Inform. Carsten Eilers am : Ein Worst Case Szenario: Wenn über E-Zigaretten die Passwortmanager des IoT ausgespäht werden
Vorschau anzeigen
Dipl.-Inform. Carsten Eilers am : Angriffe über Geräte, die angeblich nur etwas Strom über USB möchten
Vorschau anzeigen
Dipl.-Inform. Carsten Eilers am : USB-Sicherheit - Ein Überblick
Vorschau anzeigen
Dipl.-Inform. Carsten Eilers am : USB-Sicherheit 2016 - Ein Update
Vorschau anzeigen