Experten des Chaos Computer Club (CCC) haben im Auftrag der Gesellschaft für Freiheitsrechte (GFF) nachgewiesen, dass der mutmaßlich von der türkischen Regierung gegen Oppositionelle eingesetzte Android-Trojaner von der Münchner Firma Gamma International / FinFisher stammt. Außerdem sehen sie es als erwiesen an, dass das von ihnen untersuchte Schadcode-Sample nach dem 18. Juli 2015 erstellt wurde.

Damit hätte ein Export dieses Programms wohl gegen § 18 des Außenwirtschaftsgesetzes (AWG) verstoßen, wenn Berichte der Bundesregierung aus dem Juli zutreffen, dass für Staatstrojaner bisher keine entsprechenden Genehmigungen erteilt wurden. Demnach droht den zuständigen FinFisher-Mitarbeitern eine Freiheitsstrafe von bis zu fünf Jahren. Netzpolitik.org, die GFF, Reporter ohne Grenzen und das European Center for Constitutional and Human Rights haben in dem Fall Strafanzeige beim zuständigen Zollkriminalamt gestellt.

Vergleich mit Trojanern aus dem Hackerangriff auf FinFisher

Um zu zeigen, dass das gegen Mitglieder der türkischen Opposition eingesetze Schadprogramm von der Firmengruppe FinFisher stammt, mussten Thorsten Schröder und Linus Neumann vom CCC zuerst Ähnlichkeiten zu veröffentlichten Schadcode-Samples aufzeigen, die bekanntermaßen der Münchner Firma zuzuordnen sind. Als Vergleichsmaterial diente ihnen für ihren jetzt auf dem 36. Chaos Communication Congress (36C3) vorgelegten Bericht das Material, das beim Hack der Systeme von FinFisher im Jahr 2014 ans Licht der Öffentlichkeit kam. Dabei veröffentlichte Schadcode-Samples stammen erwiesenermaßen von den Entwicklern der Münchener Firma und konnten nun von den CCC-Experten mit dem Schadcode-Sample namens adalet verglichen werden, das von der Webseite adaleticinyuru.com stammt, welche laut Strafanzeige der GFF türkische Oppositionelle dazu verleiten sollte, eben jenen Schadcode zu installieren.

Schröder und Neumann sehen es als erwiesen an, dass die Ähnlichkeiten der aus dem FinFisher-Leak stammenden Samples und dem adalet-Sample nicht zufällig sind und dass adalet somit von den FinFisher-Entwicklern stammt und eine Weiterentwicklung des FinSpy-Android-Trojaners ist. Insgesamt untersuchten sie 28 Schadcode-Samples, die alle von der Münchener Firma stammen sollen und nach Ansicht der CCC-Experten eine Entwicklung der Spionage-Software des Herstellers von 2012 bis 2019 aufzeigen.

FinFisher verschleierte den Code seiner Trojaner

Obwohl die CCC-Experten in ihrer Analyse nach dem Hack bei FinFisher und dem daraus resultierenden Datenleck im Jahr 2014 Bemühungen der Münchener Firma feststellen, ihren Quellcode zu refaktorisieren und mittels Obfuscation unkenntlich zu machen, bleiben wichtige Eigenschaften der FinSpy-Trojaner-Familie auch danach funktionell erhalten. Diese Refaktorisierung und Obfuscation hat wohl stattgefunden, da Anti-Viren-Hersteller nach dem Datenleck bei FinFisher ihre Erkennungsroutinen an den Schadcode anpassen und ihn und ähnlichen Code entdecken konnten. Die Münchener Entwickler änderten danach ihre Software mutmaßlich so weit wie möglich, um der Entdeckung ihres Trojaners durch AV-Programme wieder zu entgehen.

Kann seine Herkunft kaum verleugnen: Control-Flow-Diagramme von FinSpy vor und nach der Refaktorisierung und Obfuscation, bedingt durch das Datenleck bei FinFisher (Bild: Chaos Computer Club)

Allerdings konnten sie ihren Code naturgemäß nicht allzu sehr funktional ändern, ohne große Teile davon neu zu entwickeln. Entsprechend sehen sich die Trojaner-Sample vor und nach 2014 trotz äußerlicher Änderungen nach wie vor funktional sehr ähnlich. Das wird besonders deutlich, wenn man die logischen Abläufe der zu vergleichenden Samples mit einem Code-Flow-Diagramm kartiert.

Provisioning-Mechanismus für die Trojaner-Käufer

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. (fab)