Laut dem Bericht der CCC-Experten enthalten die untersuchten Samples allesamt einen weitgehend funktionell seit 2012 unverändert gebliebenen Mechanismus, um den Trojaner für seinen Einsatz zu provisionieren – dass heißt, um eine auf den jeweiligen Kunden der Firma FinFisher angepasste Konfiguration auszurollen. Auf diese Weise wird der Trojaner für eine konkrete Spionage-Mission vorbereitet. Um diese Konfigurationsdaten möglichst unauffällig zu halten, nutzen die FinFisher-Entwickler einen clever gewählten verdeckten Kanal. Sie verstecken ihre Konfigurations-Parameter in Dateiattributen des Android-Paketformates APK.
APK-Dateien sind im Grunde .ZIP-Archive und sehen laut ihrer Spezifikation für jede in dem Archiv enthaltene Datei bestimmte Felder vor, in die Dateiattribute kodiert werden; dabei handelt es sich um Metadaten zu der jeweiligen Datei. APK-Archive können natürlich auch leere Dateien enthalten und auch für diese sind Dateiattribute gespeichert. Laut Schröder und Neumann entwickelte FinFisher für die FinSpy-Trojaner-Familie eine Kodierung, die zum Provisioning des Trojaners benötigte Daten als eben solche Metadaten leerer im APK enthaltener Dateien hinterlegt. Spezieller Code der Software, offensichtlich eine proprietäre Entwicklung der Münchener, liest diese Metadaten aus und dekodiert sie als Konfigurationsinformationen für den Trojaner.
CCC-Forscher veröffentlichen eigene Dekodierungs-Tools
Dieser Kodierungsmechanismus wurde laut den CCC-Forschern kontinuierlich weiterentwickelt, ist im Grunde aber bei allen der untersuchten Samples vorhanden. Im Rahmen der Veröffentlichung ihres Untersuchungsberichtes stellen die Autoren neben den analysierten Samples auch die von ihnen entwickelten Software-Tools bereit, mit denen sich aus den vorhandenen Samples die Konfigurationsdaten auslesen lassen. Im adalet-Sample sind auf diese Weise 515 Zeichen Konfigurationsdaten in den Metadaten von 86 leeren Dateien kodiert.
Konfiguration eines von FinFisher stammenden Trojaner-Samples: Man beachte die deutschen Telefonnummern sowie die URL des mutmaßlichen Command-and-Control-Servers
(Bild: Chaos Computer Club)
In den im Bericht vollständig abgebildeten Konfigurations-Daten aller untersuchter Samples finden sich unter anderem verschiedene Subdomains der Domain gamma-international.de, sowie deutsche Handy-Nummern und eine Münchener Festnetznummer – anscheinend handelt es sich hierbei um den Command-and-Control-Rückkanal, über den die Software die Ergebnisse ihrer Spionage an den Hersteller zurückschickt. Einige der Samples wurden mit Telefonnummern oder Domains unter anderem in Vietnam konfiguriert. Beide Länder wurden, genau wie die deutsche Bundesregierung, in der Vergangenheit immer wieder als Kunden mit FinFisher in Verbindung gebracht. Neben diesen Hinweisen auf die Münchener Firma dokumentieren die CCC-Experten auch noch weitere Eigenarten des FinSpy-Codes, der darauf hindeutet, dass hier deutsche Entwickler am Werk waren.
Interessanterweise sind in den Konfigurationsdaten Trojaner-Funktionen wie "Spy Call", "Call Interception", "Tracking" und "Phone Logs" erwähnt, die über Parameter an und abgeschaltet werden können. Weitere Parameter scheinen zu steuern, wie viele Geräte der Trojaner maximal infizieren darf und unter welchen Bedingungen die Konfigurationsdaten des Trojaners zu löschen sind. Ein Trojaner-Sample enthält darüber hinaus weitere externe Dateien, die wohl die Privilege-Escalation-Schwachstelle für den Linux-Kernel namens DirtyCow ausnutzen sollen und Android-Smartphones darüber hinaus mit dem Software-Tool SuperSU rooten können. Diese FinSpy-Variante ist wohl dafür gedacht, weitere Schadsoftware auf dem betroffenen Gerät zu platzieren.
Türkei-Sample nach Mai 2016 fertiggestellt
Damit sehen es Schröder und Neumann mit an Sicherheit grenzender Wahrscheinlichkeit als erwiesen an, dass das aus der Türkei stammende adalet-Sample von den selben Entwicklern wie bekannte FinSpy-Samples stammt. Im nächsten Schritt ging es ihnen darum, zu beweisen, dass der Schadcode nach dem 18. Juli 2015 erstellt wurde. Das schließen sie vor allem aus der in dem besagten Trojaner-Sample verwendeten Version der Datenbank-Software SQLite. Die der Software beiliegende SQLite-Bibliothek ist die Version 3.13.0, die am 18. Mai 2016 veröffentlicht wurde. Außerdem wurde die adalet-APK mit einem Zertifikat signiert, das ab dem 10. Oktober 2016 gültig ist. Kompiliert wurden Teile des Codes augenscheinlich am 23. September 2016. Es kann also davon ausgegangen werden, dass dieses Sample nach dem 18. Mai 2016 fertig gestellt wurde und erst nach dem 10. Oktober des selben Jahres zum Einsatz kam.
Der von den CCC-Experten Thorsten Schröder und Linus Neumann, nach eigenen Angaben ehrenamtlich, im Auftrag der Gesellschaft für Freiheitsrechte durchgeführte Bericht ist unter dem Titel Evolution einer privatwirtschaftlichen Schadsoftware für Staatliche Akteure veröffentlicht. Die Analyse, alle darin untersuchten Software-Samples und die zum Auslesen der Trojaner-Konfiguration entwickelten Tools stehen auf GitHub zur Verfügung. Die CCC-Experten laden interessierte Mitglieder der IT-Security-Gemeinde ausdrücklich dazu ein, ihre Forschungsergebnisse zu prüfen. (Fabian A. Scherschel) / (fab)