Return to Video

36C3 - Finfisher verklagen

  • 0:00 - 0:19
    36C3 Vorspanngeräusche
  • 0:19 - 0:23
    Herald: Heute Abend geht es in diesem Saal
    über Staatstrojaner, also Trojaner, also
  • 0:23 - 0:27
    Schadsoftware im engeren Sinne, bloß halt
    nicht solche von Kriminellen, sondern
  • 0:27 - 0:31
    solche von Unternehmen, die das
    professionell mehr oder weniger legal
  • 0:31 - 0:35
    machen. Staatstrojaner sollte man gar
    nicht erst bauen, wenn man sie baut,
  • 0:35 - 0:38
    kommen sie in die falschen Hände. Wie das
    passiert und wie man dann unser
  • 0:38 - 0:43
    Rechtssystem und unsere Gerichte nutzen
    kann, um etwas dagegen zu tun auf dem
  • 0:43 - 0:48
    vernünftigen rechtsstaatlichen Weg, das
    erklärt uns unser Ulf Buermeyer, der in
  • 0:48 - 0:52
    vielen anderen Fällen auch schon
    Rechtsbeistand für Clubthemen geleistet
  • 0:52 - 0:58
    hat. Und Thorsten Schröder ist auch dabei.
    Oldschool Hacker, 20 Jahre dabei, 30 Jahre
  • 0:58 - 1:02
    weiß ich nicht. Und hat sich das
    angeschaut, was da in dieser Schadsoftware
  • 1:02 - 1:06
    von FinFisher eigentlich drinsteckt.
    Großen Applaus für Ulf Buermeyer und
  • 1:06 - 1:12
    Thorsten Schröder.
    Applaus
  • 1:12 - 1:19
    Ulf Buermeyer: Hi, schön, dass ihr da
    seid, herzlich willkommen!
  • 1:19 - 1:22
    Thorsten Schröder: Hallo, hallo.
    U: Ja, herzlich willkommen zu „FinFisher,
  • 1:22 - 1:26
    See You in Court!“ Falls es der eine oder
    andere kennt, eine amerikanische
  • 1:26 - 1:31
    Bürgerrechtsorganisation hat „See you in
    Court!“ mal zu Donald Trump gesagt, als er
  • 1:31 - 1:36
    illegal versucht hat, Immigration in die
    Vereinigten Staaten zu verhindern. Und wir
  • 1:36 - 1:40
    widmen uns genau dem umgekehrten Thema,
    nämlich der illegalen Auswanderung von
  • 1:40 - 1:46
    fieser Software. Und bevor wir dazu
    kommen, noch ein klitzekleiner historischer
  • 1:46 - 1:53
    Rückblick. Keine Sorge, das wird kein
    krasser Juratalk, dafür bürgt schon
  • 1:53 - 1:56
    Thorsten.
    T: Ich versuch’s.
  • 1:56 - 2:01
    U: Aber in diesem Talk geht es um ein
    weiteres Kapitel im Kampf gegen digitales
  • 2:01 - 2:07
    Ungeziefer, und zwar eine ganz besondere
    Form von digitalem Ungeziefer.
  • 2:07 - 2:13
    T: Staatstrojaner, die wir auch schon vor
    ein paar Jahren mal auf einem Kongress
  • 2:13 - 2:19
    bereits besprochen haben. Aber eben
    Software, die von Staaten eingesetzt
  • 2:19 - 2:23
    werden, gegen Kriminelle, gegen
    Oppositionelle und so weiter.
  • 2:23 - 2:27
    U: Thorsten hat schon gesagt, das ist ein
    Thema, das den Club und auch mich
  • 2:27 - 2:32
    persönlich schon seit Jahren beschäftigt.
    Das Foto zum Beispiel ist vom 25C3. Da gab
  • 2:32 - 2:37
    es nämlich eine gute Nachricht aus
    Karlsruhe zu feiern. Vielleicht erinnert
  • 2:37 - 2:42
    sich der eine oder andere noch daran. Das
    Bundesverfassungsgericht hatte 2008 ein
  • 2:42 - 2:47
    neues Grundrecht erfunden, nämlich das
    Grundrecht, das wir heute kennen als das
  • 2:47 - 2:53
    Computer Grundrecht oder, auf schlau,
    das Grundrecht auf Integrität und
  • 2:53 - 2:59
    Vertraulichkeit informationstechnischer
    Systeme. Eine Bezeichnung, auf die nur
  • 2:59 - 3:04
    Menschen kommen können, die viel zu lange
    Jura studiert haben. Jedenfalls hatten wir
  • 3:04 - 3:08
    damals, als Conz und ich diesen Talk
    gemacht haben, vor dem roten Vorhang
  • 3:08 - 3:12
    gehofft, dass dieses Grundrecht etwas
    ändern würde. Aber leider müssen wir
  • 3:12 - 3:22
    sagen …
    T: Tat es nicht. Wir haben 2011 einen
  • 3:22 - 3:27
    Staatstrojaner gefunden, der genau diese
    Rechte nicht eingehalten hat.
  • 3:27 - 3:31
    Möglicherweise war das zu dem Zeitpunkt
    bei diesen Entwicklern auch noch nicht
  • 3:31 - 3:36
    angekommen. Diesen Trojaner hatten wir
    einmal auf einer Festplatte in einem
  • 3:36 - 3:44
    braunen Umschlag zugetragen bekommen. Ja,
    den haben wir dann analysiert und einen
  • 3:44 - 3:51
    sehr ausführlichen Bericht auch dazu
    verfasst und einen Talk auf dem 28c3.
  • 3:51 - 3:54
    U: Hier sieht man das,
    Jugendbildnisse von Thorsten und mir.
  • 3:54 - 3:58
    T: Da war ich noch richtig jung, wie man
    sieht. Da habe ich auch das erste Mal mit
  • 3:58 - 4:01
    Ulf auf einer Bühne gestanden.
    Lustigerweise stehen wir nur auf der
  • 4:01 - 4:05
    Bühne, wenn’s um Staatstrojaner geht.
    U: Das ist auch derselbe schwarze Pulli
  • 4:05 - 4:08
    bei mir, glaube ich. Ich habe den extra
    nochmal gewaschen.
  • 4:08 - 4:11
    T: Ja, da haben wir den Staatstrojaner
    vorgestellt und nicht nur beschrieben,
  • 4:11 - 4:16
    sondern auch demonstrieren können, wie der
    gegen diese Grundrechte verstößt, indem er
  • 4:16 - 4:25
    einen Rechner in eine Wanze verwandelt und
    somit in jedem Teil der Wohnung auch
  • 4:25 - 4:28
    abhören kann und man Software
    nachladen kann und so weiter.
  • 4:28 - 4:32
    U: Mit dem Software nachladen war
    vielleicht der krasseste Verstoß.
  • 4:32 - 4:35
    Eigentlich hatte das
    Bundesverfassungsgericht nämlich sehr
  • 4:35 - 4:40
    genau vorgeschrieben, was ein Trojaner so
    können darf und was nicht. Es hatte diese
  • 4:40 - 4:43
    Trojaner eben nicht grundsätzlich
    verboten, aber relativ hohe Hürden
  • 4:43 - 4:49
    aufgestellt. Und diese Hürden allerdings
    hat der Trojaner aus dem Hause DigiTask
  • 4:49 - 4:54
    damals nicht eingehalten. Thorsten und ein
    paar andere Leute aus dem Club hatten ja
  • 4:54 - 4:57
    sogar so eine Fernsteuersoftware gebaut,
    ihr konntet den quasi fernsteuern mit
  • 4:57 - 5:01
    einer kleinen Windowssoftware.
    T: Also eigentlich sollte dieser Trojaner
  • 5:01 - 5:05
    ja nur Skype abhören und vielleicht mal so
    ein bisschen die Chatlogs mitlesen. Bei
  • 5:05 - 5:08
    der Analyse ist allerdings aufgefallen,
    dass er weitaus mehr kann, unter anderem
  • 5:08 - 5:13
    auch Software nachladen, aber eben auch
    Screenshots anfertigen und auch
  • 5:13 - 5:18
    Screenshots von nicht abgeschickten Emails
    und Gedanken und was auch immer man in so
  • 5:18 - 5:22
    einen Rechner auch reintippt.
    U: Im Grunde genau das Gruselszenario,
  • 5:22 - 5:27
    das wir gerade auch beim Club immer wieder
    kritisiert hatten, weswegen Staatstrojaner
  • 5:27 - 5:31
    so gefährlich sind. Das war nun leider
    allerdings nicht das Ende der Debatte, wie
  • 5:31 - 5:35
    es sich für so einen richtigen Zombie
    gehört, sind Staatstrojaner einfach nicht
  • 5:35 - 5:40
    kaputt zu bekommen. Und so haben wir in
    Deutschland seit 2017 wieder eine
  • 5:40 - 5:45
    Rechtsgrundlage für Staatstrojaner, eine
    neue sogar, nämlich dieses Mal im
  • 5:45 - 5:50
    Strafverfahren. Das Bundeskriminalamt darf
    die schon viel länger einsetzen seit 2009
  • 5:50 - 5:54
    allerdings nur zur Abwehr von Terrorismus
    und diesmal wirklich. Diesmal steht es
  • 5:54 - 6:00
    sogar im Gesetz. Aber seit 2017 gibt’s ein
    neues Gesetz, das im Prinzip in den
  • 6:00 - 6:05
    meisten Strafverfahren erlaubt, so
    Trojaner einzusetzen. Deswegen hat die
  • 6:05 - 6:09
    Gesellschaft für Freiheitsrechte dagegen
    geklagt. Darüber haben wir letztes Jahr
  • 6:09 - 6:13
    schon kurz gesprochen, weil wir sagen, was
    dieser Trojaner kann, ist wieder mal
  • 6:13 - 6:19
    verfassungswidrig. Und wir kritisieren
    aber nicht nur, dass der die Grenzen nicht
  • 6:19 - 6:25
    einhält, die das Bundesverfassungsgericht
    aufgestellt hat, sondern wir fragen uns,
  • 6:25 - 6:30
    wie kommt der Trojaner eigentlich rein ins
    System? Wie kommt er eigentlich rein? Bin
  • 6:30 - 6:35
    ich denn etwa schon drin? Damit geht’s uns
    um die IT-Sicherheit insgesamt, weil wir
  • 6:35 - 6:40
    uns fragen, welche Sicherheitslücken
    werden eigentlich freigehalten, offen
  • 6:40 - 6:44
    gehalten, ganz bewusst, damit so ein
    Trojaner ins System eingespielt werden
  • 6:44 - 6:49
    kann. Denn nur in Ausnahmefällen haben die
    Behörden direkt Zugriff auf das System. In
  • 6:49 - 6:53
    aller Regel müssen die Trojaner aus der
    Ferne eingespielt werden und dazu braucht
  • 6:53 - 6:58
    man eben Sicherheitslücken. Deswegen die
    Minimalforderung der GFF in diesem
  • 6:58 - 7:03
    Verfahren: Das geht gar nicht! Wenn man
    schon eine Rechtsgrundlage für Trojaner
  • 7:03 - 7:08
    schafft, dann muss man auch klare
    Spielregeln aufstellen, welche
  • 7:08 - 7:12
    Sicherheitslücken eigentlich ausgenutzt
    werden dürfen. Denn sonst gibt es einen
  • 7:12 - 7:15
    großen Anreiz 0-days oder
    Sicherheitslücken, die dem Hersteller noch
  • 7:15 - 7:19
    nicht bekannt sind, geheimzuhalten.
    Und damit werden alle Computer
  • 7:19 - 7:24
    auf der Welt die Sicherheitslücke
    weiter aufweisen. Apropos auf der Welt:
  • 7:24 - 7:30
    nicht nur deutsche Behörden finden
    Trojaner außerordentlich sexy. Ganz im
  • 7:30 - 7:35
    Gegenteil. Die Weltkarte des Trojaner-
    Einsatzes ist bemerkenswert rot.
  • 7:35 - 7:41
    T: Zumindest was diese FinFisher Spyware
    angeht, gibt es hier vom Citizen Lab
  • 7:41 - 7:47
    erstellt, diese Karte, wo diese
    Schadsoftware schon überall gefunden bzw.
  • 7:47 - 7:53
    eingesetzt wurde. Das ist natürlich schön,
    dass wir uns in Deutschland darum bemühen,
  • 7:53 - 7:57
    da entsprechende Rechtsgrundlagen zu
    schaffen. Wenn wir das hinkriegen, dass es
  • 7:57 - 8:01
    so eine Rechtsgrundlage gibt oder eben
    diesen Schutz der Privatsphäre, dann heißt
  • 8:01 - 8:03
    das noch lange nicht, dass
    wir das Problem los sind.
  • 8:03 - 8:07
    U: Ganz im Gegenteil!
    T: Das Ding ist halt, dass gerade in
  • 8:07 - 8:12
    diesem Fall wir davon ausgehen können,
    dass diese Software, die hier weltweit
  • 8:12 - 8:17
    eingesetzt wird, um Leute
    auszuspionieren, Made in Germany ist.
  • 8:17 - 8:22
    U: Das ist genau das Problem. Made in
    Germany, aber eben nicht nur eingesetzt in
  • 8:22 - 8:26
    Deutschland, sondern auch in Staaten, wo
    es mit der Rechtsstaatlichkeit vielleicht
  • 8:26 - 8:31
    nicht ganz so entspannt zugeht. Denn
    besonders spannend sind Trojaner natürlich
  • 8:31 - 8:35
    für Menschen, die aus guten Gründen Stress
    haben mit ihrer Opposition. Zum Beispiel
  • 8:35 - 8:42
    hier Präsident José Eduardo dos Santos aus
    Angola. Der, jedenfalls nach Berichten,
  • 8:42 - 8:50
    auf der Kundenliste von FinFisher steht.
    Oder Hamad bin Isa Al Chalifa, der sich
  • 8:50 - 8:56
    selbst im Jahr 2002 zum König von Bahrain
    ausrief. Und bei der Rangliste der
  • 8:56 - 9:00
    Pressefreiheit aus dem Jahr 2017,
    herausgegeben von Reporter ohne Grenzen,
  • 9:00 - 9:07
    belegt Bahrain den stolzen Platz 164 von
    180. Mit anderen Worten: Pressefreiheit
  • 9:07 - 9:11
    bedeutet in diesem Land, zu schreiben, was
    der Chef will. Die Presse in Bahrain
  • 9:11 - 9:15
    gehört zu den unfreiesten der Welt. Zensur
    und repressive Gesetzgebung verhindern
  • 9:15 - 9:20
    freien Journalismus. Sechs Blogger und
    Bürgerjournalisten sitzen in Haft, und das
  • 9:20 - 9:25
    alles wird unter anderem ermöglicht
    dadurch, dass gezielt versucht wird,
  • 9:25 - 9:32
    Menschen zu hacken, die sich kritisch
    äußern. Aber, die Probleme beginnen direkt
  • 9:32 - 9:42
    vor unserer Haustür.
    T: Ja, wir haben auch in Europa, bzw. den
  • 9:42 - 9:48
    Anwärtern für die Europäische Union,
    Staatslenker, die auch ein Problem haben
  • 9:48 - 9:56
    mit ihrer eigenen Bevölkerung und mit der
    Opposition. Und nun gab es da halt diverse
  • 9:56 - 10:01
    Unruhen. Es gab einen Putschversuch. Im
    Sommer 2016 gab es einen Putschversuch in
  • 10:01 - 10:08
    der Türkei. Die Türkei wandelte sich
    danach zunehmend in ein eher repressives
  • 10:08 - 10:12
    Regime.
    U: Und nach dem gescheiterten
  • 10:12 - 10:18
    Putschversuch wurden insgesamt mehr als
    50 000 Menschen verhaftet. Mehr als 140 000
  • 10:18 - 10:22
    Menschen wurden aus ihren Berufen
    entfernt. Die Türkei ist inzwischen das
  • 10:22 - 10:27
    Land geworden, in dem im Verhältnis zur
    Bevölkerungszahl weltweit die meisten
  • 10:27 - 10:31
    Journalisten und Journalistinnen
    inhaftiert sind. Eine lupenreine
  • 10:31 - 10:36
    Demokratie? Zurzeit befinden sich
    mindestens 34 Journalisten in politischer
  • 10:36 - 10:40
    Gefangenschaft. Hunderte Zeitungen und
    andere Medienorgane wurden geschlossen.
  • 10:40 - 10:45
    T: Es ist auch sehr, sehr auffällig, wie
    dringend immer darauf hingewiesen wird,
  • 10:45 - 10:51
    dass die Leute, die dort inhaftiert sind,
    unter Terrorverdacht stehen. Jeder, der
  • 10:51 - 10:54
    gerade zur falschen Zeit am falschen
    Ort ist, wird dann auch mit diesem
  • 10:54 - 10:57
    Terrorismusverdacht erst
    einmal weggesperrt.
  • 10:57 - 11:01
    U: Erfreulicherweise allerdings gibt es
    trotz aller Repressalien auch in der
  • 11:01 - 11:05
    Türkei noch eine Oppositionsbewegung.
    Beispielsweise, das sieht man auf diesem
  • 11:05 - 11:12
    Bild im Sommer 2017, als Oppositionelle in
    der Türkei unter dem Motto adalet auf die
  • 11:12 - 11:18
    Straße gingen, um gegen das Regime zu
    protestieren. Daraufhin allerdings hatte
  • 11:18 - 11:23
    der türkische Geheimdienst eine besonders
    perfide Idee. Denn Demonstrationen gegen
  • 11:23 - 11:29
    den großen Meister gehen natürlich gar
    nicht. Deswegen stellte der Geheimdienst
  • 11:29 - 11:34
    eine Website ins Netz, die – das seht ihr
    auf dem Bild – auf den ersten Blick so
  • 11:34 - 11:39
    aussieht, als könnte das eine
    Organisations-Website der
  • 11:39 - 11:43
    Oppositionsbewegung sein. Das sieht ja so
    aus mit dem Logo und dem Bild, als wenn
  • 11:43 - 11:48
    das Menschen wären, die hinter diesen
    Protesten stünden. Und auf dieser Seite,
  • 11:48 - 11:52
    von der man denken könnte, es sei eine
    Protestwebsite, gab es dann diesen
  • 11:52 - 11:57
    schönen Button unten rechts, der so
    aussieht, als ginge es dort in den Google
  • 11:57 - 12:03
    Play Store. Dort wurde eine Android-
    Software, so eine APK-Datei, also eine
  • 12:03 - 12:09
    Android-Installationsdatei, zum Download
    bereitgehalten für einige Wochen. Das
  • 12:09 - 12:13
    Problem ist nur, ihr ahnt es schon: es
    handelte sich nicht etwa um einen
  • 12:13 - 12:17
    Messenger oder eine Kalender-App, mit der
    die Oppositionellen sich hätten
  • 12:17 - 12:23
    organisieren können. In Wirklichkeit
    handelte es sich dabei um einen Android-
  • 12:23 - 12:31
    Trojaner, den wir im weiteren als den
    adalet-Trojaner bezeichnen. Die Frage ist
  • 12:31 - 12:38
    nur …
    T: Woher kommt der Trojaner? Wir sind der
  • 12:38 - 12:42
    Meinung, nach aktuellem Stand, dass dieser
    Trojaner, der in der Türkei gegen diese
  • 12:42 - 12:48
    Bewegung eingesetzt wurde, dass er aus
    Deutschland stammt. Und wir haben einiges
  • 12:48 - 12:55
    an Arbeit investiert, um das auch mit
    vielen Belegen begründen zu können, diesen
  • 12:55 - 12:58
    Verdacht.
    U: Denn: Man kann sich das vorstellen,
  • 12:58 - 13:02
    Anna Biselli hat das so schön gesagt vor
    zwei Tagen, wenn irgendwo ein Trog ist,
  • 13:02 - 13:06
    dann sind die Schweine nicht weit. Und
    ebenso ist es bei Cyberwaffen. Wenn ein
  • 13:06 - 13:11
    Diktator mit Dollarbündeln wedelt, dann
    finden sich immer wieder zwielichtige
  • 13:11 - 13:15
    Software-Unternehmen, die mit solchen
    Trojanern Geld verdienen wollen.
  • 13:15 - 13:19
    Menschenrechte hin oder her.
    Beispielsweise die Unternehmensgruppe
  • 13:19 - 13:26
    FinFisher aus München. Selbstbeschreibung:
    Excellence in Cyber Investigation. Gegen
  • 13:26 - 13:32
    solche Trojaner-Hersteller vorzugehen ist
    rechtlich schwierig. Das Problem dabei ist
  • 13:32 - 13:36
    nämlich, dass solche Trojaner unter
    bestimmten Voraussetzungen ja legal
  • 13:36 - 13:41
    eingesetzt werden können. Das heißt
    einfach nur Trojaner zu bauen ist nicht
  • 13:41 - 13:46
    illegal. Das gilt ganz besonders, wenn
    auch deutsche Behörden zur dankbaren
  • 13:46 - 13:51
    Kundschaft gehören, beispielsweise nach
    Presseberichten von Netzpolitik.org, das
  • 13:51 - 13:55
    Bundeskriminalamt, aber auch das Berliner
    Landeskriminalamt. Mit anderen Worten:
  • 13:55 - 14:01
    FinFisher hat beste Beziehungen zu
    deutschen Behörden. Aber man darf diese
  • 14:01 - 14:10
    Trojaner nicht einfach so exportieren,
    denn sie gelten als Cyberwaffen. Der
  • 14:10 - 14:15
    Export von Trojanern ist zwar nicht
    generell verboten, aber sie stehen auf der
  • 14:15 - 14:20
    sogenannten Ausfuhrliste. Das bedeutet,
    man braucht vor dem Export von Trojanern
  • 14:20 - 14:24
    normalerweise eine Genehmigung der
    Bundesregierung. Nur die EU-Staaten und
  • 14:24 - 14:29
    einige weitere Länder sind von dieser
    Erfordernis, eine Genehmigung einzuholen,
  • 14:29 - 14:34
    ausgenommen. Und nun hatten wir in dem
    adalet-Fall einen sehr, sehr schönen Fall.
  • 14:34 - 14:39
    Die türkische Regierung setzt einen
    Trojaner gegen ihre Opposition ein. Mit
  • 14:39 - 14:42
    der türkischen Regierung gab es ohnehin
    schon Stress genug. Und dieser Trojaner
  • 14:42 - 14:49
    stammt nun auch noch mutmaßlich aus
    Deutschland. Und der Export war auch noch
  • 14:49 - 14:53
    illegal, weil es dafür keine Genehmigung
    gab. Jedenfalls sagt das die
  • 14:53 - 14:58
    Bundesregierung. Und daher war für uns,
    das heißt in diesem Fall Netzpolitik.org
  • 14:58 - 15:03
    zum Beispiel und die Gesellschaft für
    Freiheitsrechte, ganz schnell klar, das
  • 15:03 - 15:05
    muss ein Fall für die
    Staatsanwaltschaft werden. Wir haben
  • 15:05 - 15:11
    deswegen eine Koalition geschmiedet gegen
    den illegalen Export von Staatstrojanern
  • 15:11 - 15:15
    unter Koordination der Gesellschaft für
    Freiheitsrechte. Das hat da meine Kollegin
  • 15:15 - 15:21
    Sarah Lincoln gemacht. Reporter ohne
    Grenzen, Netzpolitik.org und das ECCHR aus
  • 15:21 - 15:25
    Berlin – das European Center for
    Constitutional and Human Rights – ihre
  • 15:25 - 15:29
    Kompetenz gebündelt, und wir haben
    gemeinsam eine Strafanzeige geschrieben
  • 15:29 - 15:34
    und sie hier in diesem Sommer eingereicht,
    um zu erreichen, dass die Verantwortlichen
  • 15:34 - 15:38
    bei der Firma FinFisher zur Rechenschaft
    gezogen werden. Weil wir finden, genauso
  • 15:38 - 15:42
    wie deutsche Waffen nicht auf der ganzen
    Welt mitmorden dürfen, genauso dürfen auch
  • 15:42 - 15:46
    nicht mit deutschen Trojanern
    Menschenrechte weltweit oder in diesem
  • 15:46 - 15:58
    Fall in der Türkei verletzt werden.
    Applaus
  • 15:58 - 16:02
    U: Hier haben wir nochmal
    den Ablauf zusammengestellt.
  • 16:02 - 16:12
    T: Das ist jetzt die Timeline der Anzeige
    bzw. wann das Sample, wir reden hier von
  • 16:12 - 16:16
    einem Sample, wenn wir jetzt von so einem
    APK, so einer Schadsoftwareinstallation
  • 16:16 - 16:22
    reden, wann das verbreitet wurde, das war
    dann im Juni 2017. Das ist definitiv nach
  • 16:22 - 16:27
    Einführung der Export-Richtlinien. Man
    kann hier mit Gewissheit sagen, dass die
  • 16:27 - 16:31
    Zielgruppe die Oppositionellen in der
    Türkei waren. Das ergibt sich aus dem
  • 16:31 - 16:39
    Kontext dieser Website und allem
    drumherum. Und ja, es gab eine Anfrage an
  • 16:39 - 16:43
    die Bundesregierung, die letztlich
    bestätigte, dass es in diesem Zeitraum
  • 16:43 - 16:49
    zwischen 2015 und 2017 keinerlei
    Genehmigungen in dieser Richtung gab.
  • 16:49 - 16:53
    U: Damit war für uns klar, das reicht
    jedenfalls für eine Strafanzeige.
  • 16:53 - 16:57
    Natürlich müssen noch ein paar Fakten
    ermittelt werden. Aber jedenfalls reicht
  • 16:57 - 17:02
    es, um die Staatsanwaltschaft auf diesen
    Fall aufmerksam zu machen. Und wir haben
  • 17:02 - 17:06
    auch eine ganze Reihe von Indizien, dass
    der Fall sehr ernst genommen wird. Im
  • 17:06 - 17:11
    September 2019 haben wir diese
    Strafanzeige dann veröffentlicht, unter
  • 17:11 - 17:16
    anderem auch auf Netzpolitik.org. Und wir
    können mit Sicherheit davon ausgehen, dass
  • 17:16 - 17:21
    das die Herrschaften hinter FinFisher
    nicht begeistert hat. Denn sie haben
  • 17:21 - 17:26
    Netzpolitik.org abgemahnt und dazu
    gezwungen, den Artikel vorzeitig vom Netz
  • 17:26 - 17:30
    zu nehmen. Erfreulicherweise allerdings
    hatte die Spendenkampagne von Netzpolitik
  • 17:30 - 17:34
    einigen Erfolg. Ich hoffe jedenfalls,
    finanziell wird sich das nicht lohnen für
  • 17:34 - 17:38
    die Abmahner, aber klar, der Artikel ist
    zurzeit nicht verfügbar, jedenfalls nicht
  • 17:38 - 17:42
    bei Netzpolitik. Es soll ja in diesem
    Internet auch Archivseiten geben. Und dort
  • 17:42 - 17:47
    könnt ihr ihn nach wie vor lesen in seiner
    vollen Schönheit. FinFisher und Kohl
  • 17:47 - 17:54
    schlagen zurück. Wir denken, getroffene
    Hunde bellen. Und außerdem lassen wir uns
  • 17:54 - 17:58
    davon natürlich nicht einschüchtern. Wir
    haben – Wir heißt in diesem Fall die
  • 17:58 - 18:03
    Gesellschaft für Freiheitsrechte – den Club
    gebeten, sich die bisherigen Beweismittel
  • 18:03 - 18:07
    gegen FinFisher nochmal ganz genau
    anzusehen und zu überlegen, ob es nicht
  • 18:07 - 18:13
    noch weitere Beweise geben könnte. Und das
    Ziel dieser Mission war, noch genauer
  • 18:13 - 18:17
    nachzuweisen, dass tatsächlich die
    Voraussetzungen vorliegen für den
  • 18:17 - 18:21
    Straftatbestand aus dem
    Außenwirtschaftsgesetz. Ja, das ist die
  • 18:21 - 18:26
    Norm des deutschen Rechts, die
    ungenehmigte Exporte unter Strafe stellt,
  • 18:26 - 18:31
    genaugenommen §18, Absatz 2, Nr. 1
    und Absatz 5 Nr. 1 dieses
  • 18:31 - 18:35
    Außenwirtschaftsgesetzes. Ich erspare euch
    die juristischen Details. Es ist im
  • 18:35 - 18:37
    Einzelnen ziemlich komplex.
    Diese Norm verweist auf die
  • 18:37 - 18:42
    Außenwirtschaftsverordnung und die
    wiederum auf einen langen Anhang, wo dann
  • 18:42 - 18:47
    quasi einzelne Kategorien von Gütern
    aufgeführt sind, vom Kampfpanzer bis zum
  • 18:47 - 18:50
    Staatstrojaner kann man
    dann nachlesen, was man
  • 18:50 - 18:55
    alles nur mit Genehmigung ausführen darf.
    Und wir sind der Auffassung, dagegen wurde
  • 18:55 - 19:01
    verstoßen. Zwei rechtliche Fragen standen
    im Mittelpunkt unserer Bitte an den Chaos
  • 19:01 - 19:05
    Computer Club, doch noch einmal ganz
    genau, sich diese Trojaner anzuschauen.
  • 19:05 - 19:10
    Zwei rechtliche Fragen, oder, wie soll ich
    sagen, zwei Tatsachenfragen, zwei Fakten-
  • 19:10 - 19:14
    Fragen, die aber eine große rechtliche
    Bedeutung haben. Und zwar zum einen …
  • 19:14 - 19:20
    T: Zum einen der Herstellungszeitpunkt,
    was wichtig ist und relevant ist, wenn es
  • 19:20 - 19:27
    darum geht herauszufinden: wurde diese
    Software nach dem Stichtag Mitte 2015
  • 19:27 - 19:31
    hergestellt?
    U: Ja, genau.
  • 19:31 - 19:35
    T: Wenn wir nachweisen können, dass eine
    Software erst zu einem bestimmten
  • 19:35 - 19:39
    Zeitpunkt hergestellt wurde, dann können
    wir auch davon ausgehen, dass sie erst
  • 19:39 - 19:45
    anschließend exportiert oder verkauft oder
    eingesetzt wird. Und die zweite wichtige
  • 19:45 - 19:49
    Frage, wenn wir da jetzt mal ganz neutral
    an die Sache rangehen. Wer hat dieses
  • 19:49 - 19:53
    Sample hergestellt? Es gibt den
    Anfangsverdacht, dass es sich hierbei um
  • 19:53 - 19:57
    FinSpy von FinFischer handelt. Aber das
    ist eben die Frage, die geklärt werden
  • 19:57 - 20:02
    sollte. Und das haben wir als Chaos
    Computer Club dann einfach mal getan.
  • 20:02 - 20:07
    U: Und dazu gab es ja schon bisherige
    Analysen. Andere Leute haben sich auch
  • 20:07 - 20:13
    schon mal FinFischer-Samples oder FinSpy-
    Samples angeschaut. Diese Analysen waren
  • 20:13 - 20:17
    auch für euch der Ausgangspunkt.
    T: Genau, so ganz am Anfang hieß es ja
  • 20:17 - 20:20
    auch, vor allen Dingen könnt ihr euch
    nicht mal diese ganzen Analysen anschauen,
  • 20:20 - 20:24
    die da bisher veröffentlicht wurden, unter
    anderem sehr viel von Citizen Lab. Die
  • 20:24 - 20:28
    haben sehr viel in diese Richtung gemacht,
    nicht nur FinFischer Produkte werden da
  • 20:28 - 20:34
    von denen analysiert, sondern auch noch
    andere. Dann ging es eben darum, zu prüfen,
  • 20:34 - 20:38
    ob das alles plausibel ist, was da drin
    ist, ob man das alles reproduzieren kann,
  • 20:38 - 20:41
    ob man das Ganze dann auch nochmal als
    Bericht so zusammenfassen kann, dass es
  • 20:41 - 20:46
    für deutsche Ermittlungsbehörden und ein
    deutsches Gericht auch verwertbar ist.
  • 20:46 - 20:51
    Dazu haben wir uns dann auch noch ein
    Gutachten von anderen Dritten angeschaut,
  • 20:51 - 20:54
    die so etwas ähnliches auch schon getan
    haben. Da gibt es schon einen
  • 20:54 - 21:03
    Plausibilitätscheck aus 2018 von einer
    Firma. Und 2018 hat Access Now auch noch
  • 21:03 - 21:09
    einmal einen Bericht, eine Zusammenfassung
    all dessen veröffentlicht. Und jetzt für
  • 21:09 - 21:15
    die Klage gab es dann auch nochmal eine
    technische Analyse. Ganz speziell dieses
  • 21:15 - 21:21
    adalet-Samples. Also dem eigentlichen
    Gegenstand der ganzen Klage. Und wir haben
  • 21:21 - 21:27
    uns natürlich diese ganzen Dokumente
    angeguckt, haben halt geschaut, sind da
  • 21:27 - 21:31
    irgendwo vielleicht noch Lücken, die wir
    füllen können? Gibt es Dinge, die wir
  • 21:31 - 21:34
    ausführlicher beschreiben können,
    transparenter machen können? Und das war
  • 21:34 - 21:38
    dann letztlich die Hauptarbeit, die wir
    dabei geleistet haben. Wer jetzt erwartet,
  • 21:38 - 21:42
    dass es irgendwie total bahnbrechende
    Neuigkeiten gibt über irgendwelche FinSpy-
  • 21:42 - 21:47
    oder FinFisher Trojaner, die Leute muss
    ich leider enttäuschen. Wir haben halt
  • 21:47 - 21:51
    sehr viel der Arbeit anderer Leute
    verifiziert. Wir haben aber auch noch ein
  • 21:51 - 21:57
    paar andere Indizien gefunden, die sehr
    viel schwerer wiegen als manche andere
  • 21:57 - 22:00
    Punkte, die in den Reports vorher genannt
    werden.
  • 22:00 - 22:03
    U: Und ihr habt schon, finde ich, einige
    sehr, sehr spannende technische Details
  • 22:03 - 22:07
    noch rausgekramt, zu denen wir gleich noch
    kommen. Z. B diese Provisionierung, wie
  • 22:07 - 22:11
    werden die Trojaner eigentlich angepasst?
    Das fand ich schon ein sehr, sehr
  • 22:11 - 22:15
    spannendes technisches Detail. Ihr habt
    dann vorgestern war es, ne, gestern war
  • 22:15 - 22:19
    es, die Analyse des CCC veröffentlicht.
    T: Genau das haben wir gestern schon
  • 22:19 - 22:23
    veröffentlicht, damit man ein bisschen
    Material hat. Ich hoffe auch, dass es,
  • 22:23 - 22:27
    wenn es die Zeit erlaubt, im Anschluss an
    diesen Talk noch ein bisschen Q&A gibt.
  • 22:27 - 22:32
    Ja, wir haben einen sehr ausführlichen
    Bericht darüber geschrieben, wie wir das
  • 22:32 - 22:36
    Ganze bewerten und wie wir die einzelnen
    Indizien gewichten und zu was für einem
  • 22:36 - 22:44
    Schluss wir da gekommen sind. Was uns halt
    sehr wichtig war an der Arbeit: Wir haben
  • 22:44 - 22:48
    am Ende auch alles veröffentlicht, im
    Gegensatz zu all den anderen
  • 22:48 - 22:52
    Organisationen, die diese Arbeit auch
    schon und auch sehr viel Arbeit investiert
  • 22:52 - 22:57
    haben. Wir haben sämtliche Samples, diese
    Schadsoftware-Samples haben wir auf GitHub
  • 22:57 - 23:02
    veröffentlicht. Gibt’s nachher
    noch einen Link.
  • 23:02 - 23:09
    Applaus
    T: Es gibt auch in diesem GitHub
  • 23:09 - 23:15
    Repository gibt es auch sämtliche
    Werkzeuge und Zwischenergebnisse, die wir
  • 23:15 - 23:21
    in unseren Analysen erlangt haben und
    entwickelt haben. Mit dem Ziel, dass jeder
  • 23:21 - 23:26
    in der Lage ist, unsere Ergebnisse zu
    reproduzieren. Das heißt, ihr habt die
  • 23:26 - 23:31
    Samples, ihr habt die Werkzeuge und die
    Vorgehensweise, die wir ausführlich in
  • 23:31 - 23:36
    diesen 60 Seiten Bericht beschrieben
    haben. Und ihr könnt das alles
  • 23:36 - 23:42
    nachvollziehen. Transparenz von unserer
    Seite. Wir haben eine lückenfüllende
  • 23:42 - 23:48
    Zusammenfassung geschrieben.
    U: Und nochmal ganz kurz der „Auftrag“
  • 23:48 - 23:51
    Selbstverständlich kann man
    dem CCC keinen Auftrag geben.
  • 23:51 - 23:55
    Insbesondere hat die GFF den CCC
    natürlich nicht bezahlt. Ja, das ist
  • 23:55 - 23:58
    ganz wichtig zu sagen. Es ist nicht
    irgendwie eine gekaufte Stellungnahme,
  • 23:58 - 24:02
    sondern wir haben einfach nur gebeten,
    wenn ihr euch dafür interessiert, schaut
  • 24:02 - 24:06
    euch das doch mal an. Das wäre wahnsinnig
    hilfreich. Und ich finde in der Tat
  • 24:06 - 24:09
    großartig, dass der Club jetzt in der
    Person von Thorsten insbesondere sich die
  • 24:09 - 24:14
    Zeit genommen hat. Ja, das ist nochmal
    ganz kurz zusammenfassend der Auftrag.
  • 24:14 - 24:18
    Analysen verifizieren, die es schon gibt,
    Lücken schließen in der Indizienkette und
  • 24:18 - 24:22
    natürlich weitere Samples gezielt
    analysieren und die beiden zentralen
  • 24:22 - 24:27
    Fragestellungen aus rechtlicher
    Perspektive: Wann ist dieser adalet-
  • 24:27 - 24:31
    Trojaner aus der Türkei oder der in der
    Türkei eingesetzt wurde, hergestellt
  • 24:31 - 24:36
    worden und wo kommt er tatsächlich her?
    Ja, und das sind jetzt eine ganze Reihe
  • 24:36 - 24:40
    von Samples, die hier auf GitHub.
    T: Genau das. Hier sehen wir jetzt kurz
  • 24:40 - 24:45
    mal so ein Listing der Samples, die wir
    analysiert haben. Das sind auch die
  • 24:45 - 24:52
    Original Schadsoftwaredateien. Da ist also
    dieser Trojaner drinne, das befindet sich
  • 24:52 - 24:56
    gerade alles in dem GitHub Repository von
    Linus Neumann, mit dem ich diese ganze
  • 24:56 - 25:01
    Analyse durchgeführt habe. Vielen
    Dank auch nochmal an Linus.
  • 25:01 - 25:09
    Applaus
    TS: Wir haben einige Nächte verbracht mit
  • 25:09 - 25:14
    diesen tollen Trojanern.
    U: Eingesetzt wurden diese Samples eben
  • 25:14 - 25:18
    in Türkei, sagst du, in Vietnam und in
    Myanmar. Das sind so die Länder, wo wir es
  • 25:18 - 25:20
    wissen.
    T: Ja, was heißt Wissen, oder eben sehr
  • 25:20 - 25:25
    stark annehmen. Es ist nicht so leicht zu
    sagen, wo sie eingesetzt wurden, wer sie
  • 25:25 - 25:30
    gekauft hat. Man kann das schlussfolgern
    aus verschiedenen Indizien. Bei der Türkei
  • 25:30 - 25:37
    ist es relativ leicht, sag ich mal im
    Kontext gesehen, weil wir ja auch diese
  • 25:37 - 25:41
    Website hatten, die sich dann auch gezielt
    gegen die Zielgruppe richtete. Es gibt
  • 25:41 - 25:47
    auch Samples, wo man relativ sicher sagen
    kann, dass sie z. B. in Myanmar eingesetzt
  • 25:47 - 25:55
    wurden, weil da eine sehr bekannte,
    burmesische Social Platform genutzt wurde.
  • 25:55 - 26:00
    Also, dieser Name wurde genutzt, um dieses
    Sample zu verbreiten. Das ist ein klares
  • 26:00 - 26:04
    Indiz, dass das gegen diese
    Bevölkerungsgruppe ging. Bei Vietnam weiß
  • 26:04 - 26:09
    ich nicht genau. Diese Atrribution ist
    halt eh schon ein schwieriges Thema.
  • 26:09 - 26:13
    Genauso schwierig ist es eben
    herauszufinden, wo es eingesetzt wurde,
  • 26:13 - 26:17
    weil die ganzen Metadaten, die man dann in
    den Samples findet, IP-Adressen,
  • 26:17 - 26:20
    Telefonnummern und so weiter. Die
    sagen am Ende nicht viel aus.
  • 26:20 - 26:24
    U: Dazu sehen wir gleich noch ein
    bisschen mehr. Aber fangen wir doch
  • 26:24 - 26:27
    vielleicht an mit der ersten zentralen
    Frage, nämlich der Feststellung des
  • 26:27 - 26:31
    Herstellungszeitpunktes. Dazu habt ihr
    euch eine ganze Reihe Gedanken gemacht,
  • 26:31 - 26:35
    wie man darauf kommen könnte.
    T: Die zentralen Fragen waren, wann wurde
  • 26:35 - 26:39
    das hergestellt? Also haben wir uns all
    diese ganzen Samples angesehen und haben
  • 26:39 - 26:46
    geguckt, ob wir da Indizien finden, dass
    diese Software möglicherweise nach 2015
  • 26:46 - 26:51
    hergestellt wurde. Da gibt es verschiedene
    Möglichkeiten. Grundsätzlich alles, was
  • 26:51 - 26:57
    wir jetzt in den Binaries und in diesen
    Schadsoftware-Samples finden. Das ist dann
  • 26:57 - 27:01
    so der frühestmögliche Zeitpunkt. Wenn ich
    beweisen kann, dass zum Beispiel eine
  • 27:01 - 27:06
    Komponente dieser Schadsoftware erst im
    Mai 2016 überhaupt hergestellt oder
  • 27:06 - 27:11
    veröffentlicht wurde, dann bedeutet das
    natürlich auch, dass das ganze
  • 27:11 - 27:15
    Schadsoftware-Sample erst nach diesem
    Zeitpunkt hergestellt werden kann. Das ist
  • 27:15 - 27:19
    der frühestmöglichen Zeitpunkt. Das kann
    also auch durchaus sein, dass es 2017
  • 27:19 - 27:23
    zusammengebaut und verschickt und verkauft
    wurde. Das wissen wir nicht so genau.
  • 27:23 - 27:27
    U: Aber jedenfalls, eine Library, die
    noch nicht veröffentlicht war, kann nicht
  • 27:27 - 27:30
    eingebaut werden, ne?
    T: Genau deswegen haben wir sehr gezielt,
  • 27:30 - 27:34
    geh nochmal zurück, sehr gezielt nach
    solchen Artefakten von Compilern gesucht
  • 27:34 - 27:39
    oder irgendwelche Zeichenketten aus
    irgendwelchen Open-Source Produkten. Es
  • 27:39 - 27:44
    gibt aber auch in diesen APK-Dateien. Das
    sind halt so die Android-Apps, liegen als
  • 27:44 - 27:48
    APK vor, das ist technisch gesehen nichts
    weiter als ein ZIP-Archiv, was
  • 27:48 - 27:53
    wahrscheinlich alle von euch kennen
    dürften. Und in diesen Archiven liegen
  • 27:53 - 27:58
    dann auch Zertifikate der Entwickler, die
    dieses Paket veröffentlichen. Und anhand
  • 27:58 - 28:03
    dieser Zertifikate kann man z. B. auch
    einen Zeitstempel einsehen, wann dieses
  • 28:03 - 28:10
    Zertifikat erstellt wurde. Das sagt jetzt
    für unsere juristische Sichtweise nicht
  • 28:10 - 28:14
    besonders viel aus, weil man kann
    ja ein Zertifikat mit einem beliebigen
  • 28:14 - 28:19
    Zeitstempel herstellen. Ich kann ja sagen,
    ich gehe zurück in die Vergangenheit, oder
  • 28:19 - 28:22
    ich erstelle das in der Zukunft.
    Das kann man alles machen.
  • 28:22 - 28:25
    U: Nur warum sollte man das tun?
    T: Warum sollte man das tun? Vielleicht
  • 28:25 - 28:29
    gibt’s einen guten Grund dafür. Aber wir
    haben uns ja auch aus diesem Grund und
  • 28:29 - 28:34
    genau deshalb Samples angeschaut, die bis
    ins Jahr 2012 zurückreichen. Also wir
  • 28:34 - 28:44
    haben uns diese Trojaner-APKs angesehen,
    die 2012 bis 2019 in die Öffentlichkeit
  • 28:44 - 28:50
    gelangten. Und wir können zumindest sagen,
    wenn wir jetzt im Jahr 2019 sehen oder ein
  • 28:50 - 28:53
    Muster erkennen können, dass bestimmte
    Zertifikate vielleicht auch in der
  • 28:53 - 28:57
    Vergangenheit genutzt wurden, dann kann
    man sich schon fragen, ob das jetzt
  • 28:57 - 29:02
    plausibel ist oder nicht. Ansonsten gibt
    es noch öffentliche Dokumentation. Dazu
  • 29:02 - 29:07
    gehörte das Sample selber. Das haben wir
    auch nur aus dem Internet aus
  • 29:07 - 29:13
    verschiedenen Quellen, aber gegeben.
    Deswegen ist es wichtig, sämtliche 28
  • 29:13 - 29:17
    Samples, die wir da hatten, anzuschauen:
    Wann wurden die eigentlich im Einzelnen
  • 29:17 - 29:20
    hergestellt?
    U: Ein Ansatzpunkt war der
  • 29:20 - 29:26
    Herstellungszeitpunkt von Bibliotheken.
    T: Genau, hier sehen wir ein disassembly
  • 29:26 - 29:32
    von einem Shared Object, was da
    mitgeliefert wurde, das bedeutet, diese
  • 29:32 - 29:39
    Android-Anwendungen sind ja eigentlich nur
    Java-Anwendungen. Das heißt, da liegt Java
  • 29:39 - 29:45
    Bytecode drin und in Java hat man auch die
    Möglichkeit, über das Java Native
  • 29:45 - 29:50
    Interface auch anderen Code aufzurufen,
    der zum Beispiel vom Betriebssystem
  • 29:50 - 29:56
    bereitgestellt wird, oder eben in C, also
    mit anderen Programmiersprachen
  • 29:56 - 30:00
    entwickelte Libraries, die mitgeliefert
    werden und in dem Fall war; in diesem
  • 30:00 - 30:05
    Sample gab’s noch so Shared Object Files.
    Das ist halt unter Linux-Betriebssysten haben
  • 30:05 - 30:10
    sie die Endung .so, unter Windows gibt's
    ein ähnliches Konzept. Das sind dann
  • 30:10 - 30:13
    dynamische Bibliotheken, die als DLL
    mitgeliefert werden. Und in dem Fall gab
  • 30:13 - 30:20
    es eine Bibliothek, in der wir bestimmte
    Zeichenketten gefunden haben, die darauf
  • 30:20 - 30:26
    hindeuten, dass das definitiv erst 2016
    hergestellt worden sein kann. Das sieht
  • 30:26 - 30:30
    man hier daran, das ist SQLite das ist ein
    Open-Source-Projekt, so eine Open-Source
  • 30:30 - 30:36
    Datenbank. Und die hinterlässt dann in
    diesem Kompilat diesen String. Das ist ein
  • 30:36 - 30:41
    Datum und irgendein Hash. Und wenn wir
    uns dann mal anschauen, okay, wann taucht
  • 30:41 - 30:45
    denn dieser String eigentlich auf? Dann
    können wir uns auf der Open-Source-Projekt-
  • 30:45 - 30:53
    Webseite anschauen, dass da tatsächlich
    die SQLite Version 3.13 im Mai 2016
  • 30:53 - 30:58
    veröffentlicht wurde. Und lustigerweise
    sehen wir hier genau diese Checksumme mit
  • 30:58 - 31:04
    genau dem gleichen String und somit können
    wir eigentlich 100% davon ausgehen, dass
  • 31:04 - 31:07
    das hier sich sicherlich niemand
    ausgedacht hat im Jahr 2012.
  • 31:07 - 31:10
    Ulf lacht
    TS: Es ist ziemlich unwahrscheinlich.
  • 31:10 - 31:17
    Applaus
    T: Ich hoffe ich laser dir nicht die Augen.
  • 31:17 - 31:20
    UB: Passt schon, ich schrei dann.
    Und dann habt ihr euch die
  • 31:20 - 31:24
    Zertifikate angeschaut,
    mit denen die Software signiert worden
  • 31:24 - 31:28
    ist, ne, die einzelnen Zertifizierungen?
    T: Das haben wir auch gemacht, das haben
  • 31:28 - 31:32
    aber auch die anderen Researcher gemacht,
    die sich das vor uns angeschaut haben. Die
  • 31:32 - 31:35
    haben das natürlich genauso analysiert.
    Aber wir wollten ja auch die Analysen
  • 31:35 - 31:39
    analysieren, und das haben wir getan.
    Deswegen der Vollständigkeit halber in
  • 31:39 - 31:43
    unserem Report natürlich auch nochmal ein
    Zeitstrahl. Wir haben später noch eine
  • 31:43 - 31:49
    schöne Tabelle, wo man das gut sehen kann.
    Hier sehen wir den Output, wenn man sich
  • 31:49 - 31:53
    dieses Zertifikat mal anschaut, was der
    Entwickler genutzt hat, um dieses Paket zu
  • 31:53 - 32:00
    signieren. Hier sehen wir, dass es erzeugt
    wurde im Oktober 2016. Passt also
  • 32:00 - 32:04
    zeitlich, wenn wir davon ausgehen, dass
    das Zertifikat erstellt wurde, als dieses
  • 32:04 - 32:10
    Sample zusammengebaut wurde. Liegt halt
    auch nach Mai 2016. Bis wann das gültig
  • 32:10 - 32:16
    ist, ist eigentlich völlig egal. Ja, das
    Schöne wäre jetzt eigentlich, was hätten
  • 32:16 - 32:20
    wir jetzt hier, wenn wir da jetzt
    irgendwelche Werte manipulieren, wenn wir
  • 32:20 - 32:27
    es zurück datieren? Schön. Dann könnten
    wir Researcher in die Irre führen, wenn
  • 32:27 - 32:31
    jetzt hier zum Beispiel stehen würde, das
    Zertifikat wurde 2012 erstellt. Dann
  • 32:31 - 32:36
    könnten wir überhaupt gar nichts darüber
    aussagen. So vielleicht schon eher, was
  • 32:36 - 32:39
    hier noch auffällig ist, das wird später
    noch relevant, es gibt auch diese
  • 32:39 - 32:45
    Fingerprints für diese Zertifikate. Das
    sind diese langen SHA-Werte hier. Das ist
  • 32:45 - 32:52
    ein kryptographischer Hash über dieses
    Zertifikat, über den key und der ist
  • 32:52 - 32:59
    einmalig. Also, wenn wir uns jetzt in den
    28 Samples alle Zertifikate angucken, dann
  • 32:59 - 33:04
    vergleichen wir natürlich auch diesen
    SHA-Wert, weil das ist der Fingerprint,
  • 33:04 - 33:08
    das drückt das schon ganz gut aus. Das ist
    ein Fingerabdruck, wenn wir genau diesen
  • 33:08 - 33:12
    Fingerabdruck in einem anderem Sample
    finden, dann können wir zumindest auch
  • 33:12 - 33:16
    eine Aussage darüber treffen, dass beide
    Samples, unabhängig davon, wann sie
  • 33:16 - 33:20
    jeweils veröffentlicht wurden, dass beide
    vom gleichen Hersteller stammen. Und das
  • 33:20 - 33:24
    ist auch ein wichtiger Punkt für diese
    ganze Schlussfolgerung am Ende.
  • 33:24 - 33:28
    U: Zunächst mal aber können diese beiden
    Aspekte, die du genannt hast, die
  • 33:28 - 33:35
    Bibliotheken und die Zertifikate im Grunde
    den Schluss tragen, dass dieses adalet-
  • 33:35 - 33:40
    Sample jedenfalls nicht vor dem 18. Mai
    2016 erstellt worden sein kann. Einfach
  • 33:40 - 33:43
    weil es da diese SQlite-Bibliothek
    noch nicht gab.
  • 33:43 - 33:47
    T: Genau, das ist ein so schweres Indiz,
    dass ich definitiv sagen kann, dass es
  • 33:47 - 33:51
    nicht vor Mai 2016 hergestellt worden ist.
    UB: Damit liegt dieses Datum jedenfalls
  • 33:51 - 33:55
    nach dem Inkrafttreten der Verbote, von
    denen ich anfangs gesprochen habe. Das
  • 33:55 - 33:59
    heißt also, dieses Sample wäre dann, wenn
    es tatsächlich in die Türkei exportiert
  • 33:59 - 34:04
    worden ist, unter Verstoß dagegen
    exportiert worden. Zweiter Aspekt
  • 34:04 - 34:09
    vielleicht noch wichtiger, die
    Feststellung der Herkunft. Was für ein
  • 34:09 - 34:13
    Vieh war denn jetzt eigentlich dieses
    adalet-Trojanerchen?
  • 34:13 - 34:21
    T: Dafür haben wir, wie ich sagte,
    Samples aus dem Zeitraum von sieben Jahren
  • 34:21 - 34:25
    uns angeschaut und geguckt. Was haben die
    für Gemeinsamkeiten? Was lässt darauf
  • 34:25 - 34:29
    schließen, dass die aus einem Hause
    stammen? Da braucht uns in dem Moment noch
  • 34:29 - 34:34
    gar nicht interessieren, wie dieses Haus
    überhaupt heißt. Uns ist nur wichtig
  • 34:34 - 34:38
    gewesen herauszufinden, ob die einen
    Zusammenhang haben. Dafür haben wir diese
  • 34:38 - 34:42
    Code-Signing-Zertifikate miteinander
    verglichen, wie ich eben schon sagte. Es
  • 34:42 - 34:45
    gibt noch ein paar andere Indizien
    übrigens, für diese Zeitgeschichte. Aber
  • 34:45 - 34:49
    die spielt jetzt hier keine besonders
    große Rolle. Der Coding-Style ist auch
  • 34:49 - 34:52
    eine wichtige Rolle. Wie ich schon sagte,
    diese APKs, diese Anwendungen, sind
  • 34:52 - 34:58
    eigentlich in Java programmiert. Man kann
    auch noch Shared-Object-Bibliotheken
  • 34:58 - 35:01
    daneben legen, die vielleicht in anderen
    Programmiersprachen entwickelt wurden.
  • 35:01 - 35:08
    Aber man kann sowohl im Dekompilat des
    Java-Codes als auch im Disassembly dieser
  • 35:08 - 35:14
    Bibliotheken einen gewissen Coding-Style
    ablesen. Man kann verschiedene
  • 35:14 - 35:17
    Variablennamen miteinander vergleichen,
    wenn keine Obfuscation am Start war. Also
  • 35:17 - 35:24
    Mittel, um Code-Herkunft und Code-Struktur
    zu verschleiern. Wir können die Code-Basis
  • 35:24 - 35:28
    miteinander vergleichen, also auf einer
    rein funktionellen Ebene. Wir können uns
  • 35:28 - 35:32
    anschauen. Sind die Funktionen in der
    einen Anwendung vorhanden, die aus dem
  • 35:32 - 35:35
    Jahr 2012 stammt, und sind die gleichen
    Funktionen auch vorhanden in der
  • 35:35 - 35:40
    Anwendung, die aus 2014 stammt und 2017
    und so weiter? Das können wir schon
  • 35:40 - 35:45
    miteinander vergleichen und auch Diffs
    feststellen, also Unterschiede zwischen
  • 35:45 - 35:49
    den Versionen. So können wir von einer
    Evolution sprechen oder eine Beobachtung
  • 35:49 - 35:56
    dieser Evolution einer bestimmten
    Schadsoftware. Wir haben sehr stark darauf
  • 35:56 - 36:02
    geachtet, ob wir zum Beispiel sehen
    können, welche Sprache, welche
  • 36:02 - 36:08
    Muttersprache die Entwickler sprechen. Das
    sehen wir an manchen Stellen sehr
  • 36:08 - 36:12
    deutlich. Komme ich nachher noch mit
    Beispielen zu. Dann schauen wir uns auch
  • 36:12 - 36:15
    an, wann und wie die
    provisioniert wurden und ob es
  • 36:15 - 36:18
    da irgendwelche Ähnlichkeiten gibt.
    U: Provisionierung bedeutet quasi, dass
  • 36:18 - 36:22
    dieser Trojaner jeweils angepasst wurde
    für den spezifischen Einsatzzweck. Das
  • 36:22 - 36:26
    heißt, dieser Trojaner ist im Prinzip eine
    Massenware oder jedenfalls eine vielfach
  • 36:26 - 36:30
    eingesetzte Software. Aber für das
    jeweilige Land wurden dann
  • 36:30 - 36:34
    unterschiedliche Parameter gesetzt. Dazu
    kommen wir auch gleich noch. Das Spannende
  • 36:34 - 36:38
    dabei ist, was Thorsten gerade beschrieben
    hat. Das sind zunächst mal vor allem
  • 36:38 - 36:41
    Parallelen zwischen unterschiedlichen
    Samples. Das heißt, da kann man sagen,
  • 36:41 - 36:45
    diese Samples kommen wohl mehr oder
    weniger aus derselben Küche. Aber das sagt
  • 36:45 - 36:49
    ja zunächst mal noch nicht, welche Küche
    das ist. Um das sagen zu können, braucht
  • 36:49 - 36:54
    es noch einen zweiten Schritt, nämlich das
    Finden von Samples bestätigter Herkunft.
  • 36:54 - 36:57
    Das heißt, wenn man weiß, bestimmte
    Samples gehören zusammen, kommen aus
  • 36:57 - 37:01
    demselben Haus, und man kann dann
    wenigstens ein Sample oder zwei Samples
  • 37:01 - 37:05
    einem ganz konkreten Hersteller zuweisen.
    Dann gilt es, jedenfalls mit sehr hoher
  • 37:05 - 37:11
    Wahrscheinlichkeit, auch für alle anderen
    Samples aus dieser Herstellungslinie. Und
  • 37:11 - 37:14
    da muss man ganz ehrlich sagen, sind wir
    zu großer Dankbarkeit verpflichtet.
  • 37:14 - 37:22
    T: Ja, Phineas Fisher hatte einen
    größeren Batzen Daten aus dem Hause
  • 37:22 - 37:25
    FinFisher getragen und veröffentlicht.
    U: Tipp!
  • 37:25 - 37:30
    T: Es gibt da ein 41 Gigabyte großes
    File, wo sehr viele Samples drinne sind,
  • 37:30 - 37:32
    die wir auch analysiert haben.
    U: Hier sieht man das.
  • 37:32 - 37:37
    T: Vielen Dank nochmal Phineas Fisher!
    Applaus
  • 37:37 - 37:43
    U: Mit anderen Worten, es ist für diese
    Analyse ein großer Vorteil, dass es
  • 37:43 - 37:49
    bestimmte Samples gibt, die aus diesem
    Phineas Fisher Hack stammen und die man
  • 37:49 - 37:52
    mit sehr großer Wahrscheinlichkeit
    aufgrund vieler Indizien dieser
  • 37:52 - 37:57
    Firmengruppe FinFisher zuordnen kann. Das
    heißt, man hat 2 Anker, oder wieviele
  • 37:57 - 37:59
    Samples sind da drin? 2?
    T: Jaja.
  • 37:59 - 38:04
    U: Das heißt, man hat quasi 2 Ankerpunkte
    und kann sich dann von diesen Ankerpunkten
  • 38:04 - 38:08
    über den Vergleich von Samples weiter
    vorhangeln. Aber das ändert natürlich
  • 38:08 - 38:14
    nichts daran: Attribution is hard.
    T: Sehr hart. Wir suchen also natürlich
  • 38:14 - 38:18
    noch weiter nach Indizien, die auf den
    Urheber schließen lassen. Die
  • 38:18 - 38:22
    Attributierung von Schadsoftware, wenn mal
    irgendwie wieder der Bundestag gehackt
  • 38:22 - 38:26
    wurde oder irgendjemand anders, da kommen
    dann immer ganz schnell Leute, die sagen,
  • 38:26 - 38:30
    die Russen waren es, die Chinesen waren es
    und so weiter. Das ist alles nicht so
  • 38:30 - 38:34
    leicht. Wir müssen diese Attributierung
    allerdings auch ein Stück weit durchführen
  • 38:34 - 38:39
    und hangeln uns dann aber auch entlang an
    dem jeweiligen Kontext, zum Beispiel, wo
  • 38:39 - 38:48
    so ein Sample eingesetzt wurde. Wie dieses
    adalet-Sample zum Beispiel. Es gibt ja
  • 38:48 - 38:52
    grundsätzlich die Möglichkeit, das auch zu
    faken. Wenn ich sage, ich bin jetzt
  • 38:52 - 38:57
    irgendwie irgendeine Hackergruppe oder ein
    Konkurrent von FinFisher, dann will ich
  • 38:57 - 39:02
    die vielleicht in einem schlechteren Licht
    dastehen lassen. Und fake jetzt vielleicht
  • 39:02 - 39:06
    mal irgendwie Malware von denen und mache
    dann so False-FlagGeschichten. Das ist
  • 39:06 - 39:10
    natürlich alles möglich, aber in diesen
    einzelnen Fällen relativ unwahrscheinlich.
  • 39:10 - 39:13
    U: Auch sowas könnte
    man theoretisch faken.
  • 39:13 - 39:18
    T: Das kann man definitiv faken. Das ist
    jetzt, was wir jetzt hier sehen, die
  • 39:18 - 39:21
    verarbeitete Ausgabe von so einer
    Konfiguration, von so einer
  • 39:21 - 39:25
    Provisionierung. wie Ulf schon sagte,
    diese einzelnen Samples werden ja nicht
  • 39:25 - 39:29
    jedes Mal neu kompiliert und neu
    entwickelt. Da gibt es dann einfach
  • 39:29 - 39:33
    verschiedene Parameter, die für den Case
    des jeweiligen Einsatzes notwendig sind.
  • 39:33 - 39:38
    Und das wäre dann so eine Konfiguration.
    Da steht dann jetzt zum Beispiel, ja der
  • 39:38 - 39:43
    Proxy fürs nach-Hause-Telefonieren hat die
    IP-Adresse oder den Hostnamen. Dann sieht
  • 39:43 - 39:49
    man hier auch noch eine TargetID, in dem
    Fall adalet. Das hat, wer auch immer
  • 39:49 - 39:53
    diesen Trojaner zusammengebaut hat, sich
    ausgedacht. Dann gibt es noch
  • 39:53 - 39:58
    Telefonnummern, wo SMS hingeschickt werden
    oder wo angerufen werden kann. Und in dem
  • 39:58 - 40:03
    Fall kann man ganz gut sehen, dass diese
    Attributierung schlecht, hard ist. Denn
  • 40:03 - 40:07
    die IP-Adresse stammt aus Deutschland. Die
    Telefonnummer ist eine israelische, und
  • 40:07 - 40:13
    die andere Telefonnummer ist eine
    internationale Mehrwert-Rufnummer. Da
  • 40:13 - 40:18
    lässt sich jetzt noch nicht so stark
    darauf schließen, dass das tatsächlich von
  • 40:18 - 40:22
    türkischen Behörden eingesetzt wurde.
    U: Etwas anders sieht es aus bei der
  • 40:22 - 40:26
    Familie der Samples, die ihr analysiert
    habt. Denn da hilft euch ja das
  • 40:26 - 40:28
    Zertifikat, das zum Signieren verwendet
    wurde.
  • 40:28 - 40:32
    T: Genau das sind ein paar Indizien, die
    wir da herausgepickt haben, anhand derer
  • 40:32 - 40:36
    wir irgendwie bestimmte Gruppen
    zusammenfassen können. Also was gehört
  • 40:36 - 40:43
    definitiv zusammen, was nicht? Diese Liste
    sieht jetzt sehr wirr aus. Was hier grün
  • 40:43 - 40:47
    markiert ist, ist das adalet-Sample, von
    dem wir quasi so ausgehen. Wir wollen also
  • 40:47 - 40:54
    Parallelen finden zu diesem adalet-Sample.
    Alles, was hier rot markiert ist, hat eine
  • 40:54 - 40:58
    Parallele. Das stammt nämlich alles aus
    dem Leak von Phineas Fischer. Alles was da
  • 40:58 - 41:05
    oben gelb markiert ist, wurde 2012
    schon mal veröffentlicht und es gibt
  • 41:05 - 41:09
    entsprechende Analysen und verschiedene
    Indizien, die darauf hinweisen, dass es
  • 41:09 - 41:14
    auch aus dem Hause FinFischer stammt. Wenn
    wir jetzt mal davon ausgehen, dass das
  • 41:14 - 41:18
    hier aus dem Hause FinFisher stammt, weil
    es in dem Leak war, dann haben wir hier
  • 41:18 - 41:24
    ein Sample, das nennt sich „421and“. „421“
    scheint die Versionsnummer zu sein, „and“
  • 41:24 - 41:31
    heißt Android. Wir sehen hier, das ist
    dieser Fingerprint von diesem Zertifikat,
  • 41:31 - 41:35
    was ich vorhin noch erklärt habe. Diesen
    Fingerprint finden wir hier oben wieder.
  • 41:35 - 41:41
    Zwei Jahre vorher sind da oben schon
    Samples in die Öffentlichkeit gelangt, die
  • 41:41 - 41:45
    genau den gleichen Fingerprint haben. Und
    dann haben wir hier oben dieses „Andriod“.
  • 41:45 - 41:49
    Das ist ein Tippfehler, aber der stammt
    halt so von denen. Das muss ein Demo-
  • 41:49 - 41:56
    Sample sein. Da hat diese Firma offenbar
    mal gezeigt, was dieser Trojaner so kann.
  • 41:56 - 42:01
    Und dann haben sie den halt so
    provisioniert, mit Zeichenketten, also
  • 42:01 - 42:08
    Webserver-URLs, die auf Gamma
    International schließen lassen. Und es
  • 42:08 - 42:12
    wurde aber auch noch ein in-the-wild-
    Sample damit signiert, mit dem gleichen
  • 42:12 - 42:18
    Zertifikat. Dieses „derise“ ist das, was
    in Vietnam identifiziert wurde und auch
  • 42:18 - 42:24
    vietnamesische IP-Adressen, Telefonnummern
    und so weiter drinne hat. Wie gesagt
  • 42:24 - 42:28
    Attributierung ist schwierig, aber an dem
    Fall kann man auf jeden Fall sagen, dass
  • 42:28 - 42:35
    hier Demo-Samples und in-the-wild-Samples
    definitiv aus einem Hause stammen, anhand
  • 42:35 - 42:41
    dieser Zertifikats-Fingerprints.
    U: Der nächste Schritt, den ihr gemacht
  • 42:41 - 42:45
    habt, ist tatsächlich euch mal die Struktur
    der einzelnen Samples anzuschauen, also
  • 42:45 - 42:50
    insbesondere wie diese Software von ihrem
    logischen Ablauf her funktioniert.
  • 42:50 - 42:54
    T: Genau. Wir haben uns dann verschiedene
    Funktionen angeguckt und haben halt mal
  • 42:54 - 42:57
    geguckt „Was sehen wir so an den
    Funktionen?“. Ich habe ja gesagt, wir
  • 42:57 - 43:01
    schauen uns auch so ein bisschen diesen
    Coding-Style an, was für Variablen werden
  • 43:01 - 43:04
    da genommen, wenn wir uns Java-Code
    angucken können, der nicht obfuskiert ist.
  • 43:04 - 43:11
    Hier sehen wir zwei Samples und zwar das,
    was aus dem Leak stammt von 2014. Das ist
  • 43:11 - 43:17
    auch irgendwie so eine Art Demo. Und 2016
    – also, ich sage jetzt mal 2016, weil das
  • 43:17 - 43:24
    definitiv noch 2016 hergestellt wurde –
    das adalet-Sample. Sie hatten hier so ein
  • 43:24 - 43:27
    Refactoring durchgeführt. Also eine
    Umbenennung aller Variablen und
  • 43:27 - 43:33
    Funktionsnamen und so weiter. Das ist ein
    und dieselbe Funktion, das kann man sehen,
  • 43:33 - 43:37
    wenn man sich den Code durchliest. Jetzt
    wollte ich hier aber keinen Source Code an
  • 43:37 - 43:43
    die Wand werfen. Deswegen habe ich hier so
    einen Call Flow, abgeleitet aus dem Source
  • 43:43 - 43:49
    Code. Das ist eine Funktion namens Run. In
    dem Sample von 2014 liegt das in einer
  • 43:49 - 43:55
    Klasse namens SMS. In dem Sample adalet
    legt es in einer Klasse namens s1ms, was
  • 43:55 - 44:02
    in Leetspeak hin geschrieben wurde. Und
    wir sehen hier ganz klar, dass in dieser
  • 44:02 - 44:06
    Funktion effektiv der gleiche Code
    ausgeführt wird mit ganz marginalen
  • 44:06 - 44:11
    Abweichungen. Das kann, zumindest nach
    unserer Einschätzung, definitiv kein
  • 44:11 - 44:17
    Zufall sein. Das heißt, das ist eine
    Weiterentwicklung der ganzen Samples aus
  • 44:17 - 44:22
    dem Jahr 2012, 2014 und jetzt auch in
    2016. Das ist die Information, was wir da
  • 44:22 - 44:27
    rausziehen konnten.
    U: Und zugleich kann man ja auch Schlüsse
  • 44:27 - 44:32
    ziehen aus diesem Leetspeak. Denn wenn man
    sich überlegt: der Begriff SMS ist etwas
  • 44:32 - 44:36
    typisch Deutsches. Man versteht es
    vielleicht noch in anderen Ländern, aber
  • 44:36 - 44:41
    man spricht normalerweise nicht von SMS.
    Jedenfalls nicht im englischen Sprachraum
  • 44:41 - 44:45
    und insbesondere, wenn man dann noch das
    Verb „simsen“ sich überlegt. Also in
  • 44:45 - 44:51
    Leetspeak dann „S 1 M S“ wie simsen. Das
    ist was ganz typisch deutsches. Und ich
  • 44:51 - 44:54
    jedenfalls kann mir nicht so richtig
    vorstellen, dass ein türkischer
  • 44:54 - 44:57
    Programmierer mit einem Mal von "simsen"
    spricht.
  • 44:57 - 45:00
    T: Genauso wenig kann ich mir vorstellen,
    dass das ein englischsprachiger
  • 45:00 - 45:05
    Programmierer tut. Dieses Wort „simsen“
    wurde irgendwann mal modern und jeder hat
  • 45:05 - 45:09
    es benutzt sodass es sogar in den Duden
    aufgenommen wurde. Und das Wort simsen
  • 45:09 - 45:13
    findet man halt wirklich nur im deutschen
    Sprachgebrauch, und es ist schwer
  • 45:13 - 45:17
    vorstellbar, dass jemand, der nicht
    Deutsch-Muttersprachler ist, dieses Wort
  • 45:17 - 45:23
    in einem Code verwenden würde, wenn es im
    Kontext um SMS abfangen geht und das Ganze
  • 45:23 - 45:27
    auch noch mit Leetspeak verschleiert wird.
    U: Aber ihr habt ja noch eine andere
  • 45:27 - 45:31
    Technologie, Stichwort Verschleierung,
    gefunden, die außerordentlich pfiffig ist,
  • 45:31 - 45:35
    muss man sagen. Jedenfalls ich war sehr
    beeindruckt, als ich diese Analyse gelesen
  • 45:35 - 45:39
    habe, nämlich wie eigentlich diese Daten,
    diese Parameter, die wir eben schon kurz
  • 45:39 - 45:43
    gesehen haben zur Provisionierung
    eigentlich in den Viren-Samples abgelegt
  • 45:43 - 45:48
    oder eigentlich versteckt worden.
    T: Da hat sich der Entwickler ein
  • 45:48 - 45:51
    Verfahren ausgedacht, das ist so eine Art
    Covered Channel, also ein versteckter
  • 45:51 - 45:55
    Kanal, so ein bisschen ähnlich wie
    Steganografie, wenn man das kennt. Ich
  • 45:55 - 45:58
    verstecke Informationen in
    Dateistrukturen, sodass man das
  • 45:58 - 46:03
    automatisiert oder mit bloßem Auge nicht
    besonders leicht erkennen kann. Was für
  • 46:03 - 46:07
    Konfigurationen muss man hier verstecken?
    Wie ich schon sagte, es gibt halt so die
  • 46:07 - 46:11
    Telefonnummern, die angerufen werden oder
    wo SMS hin geschickt werden. Es gibt IP-
  • 46:11 - 46:15
    Adressen, zu denen sich die Schadsoftware
    verbindet, damit ein Command-and-Control-
  • 46:15 - 46:20
    Server da übernehmen und lenken kann. Und
    wie lange die Maßnahme dauert et cetera.
  • 46:20 - 46:25
    Das alles ist in einer Konfiguration
    abgespeichert, die irgendwie in dieses APK
  • 46:25 - 46:29
    rein gedrückt werden muss.
    U: Und dabei ist euch aufgefallen, als
  • 46:29 - 46:33
    ihr euch die Samples angesehen habt, dass
    alle ein identisches Verfahren einsetzen.
  • 46:33 - 46:36
    T: Die benutzen alle das identische
    Verfahren. Also, wir haben das jetzt auch
  • 46:36 - 46:40
    nicht entdeckt. Dieses Verfahren haben
    andere, Josh Grunzweig beispielsweise
  • 46:40 - 46:45
    2012, auch schon in einem Blog-Beitrag
    veröffentlicht, als er FinSpy-Samples
  • 46:45 - 46:50
    analysiert hat. Das ist nichts
    bahnbrechendes Neues, aber wir konnten
  • 46:50 - 46:56
    zumindest jetzt einfach mal über die
    7 Jahre hinweg beobachten, dass dieses
  • 46:56 - 47:00
    Verfahren in allen Samples eingesetzt
    wird. Und damit, da es eben auch kein
  • 47:00 - 47:04
    Standardverfahren ist, um in irgendwelchen
    APKs Schadsoftware zu verstecken oder
  • 47:04 - 47:08
    überhaupt Daten zu verstecken, können wir
    im Grunde genommen davon ausgehen, dass
  • 47:08 - 47:13
    diese Technologie wirklich von einem
    Hersteller stammt. Das heißt, dass all
  • 47:13 - 47:17
    diese Samples, diese 28 Stück, die wir uns
    angeguckt haben, dass die aus einem Hause
  • 47:17 - 47:19
    stammen.
    U: Und wie sieht das jetzt genau aus? Das
  • 47:19 - 47:23
    hier ist der Datei-Kopf. Nee, das ist
    nicht der Datei-Kopf sondern …
  • 47:23 - 47:26
    T: Das sind Teile eines … Also ein APK
    ist, wie ich schon sagte, technisch
  • 47:26 - 47:31
    gesehen nur ein ZIP-Archiv. Und in diesem
    ZIP-Archiv stecken Metainformationen über
  • 47:31 - 47:37
    die im Archiv enthaltenen Dateien. Und
    dafür gibt es dann diese Central Directory
  • 47:37 - 47:43
    Structure und verschiedene Felder. Das ist
    dann so ein Header. Da sind verschiedene
  • 47:43 - 47:49
    Bytes und Bitfelder festgelegt, die die
    Eigenschaften dieser im Archiv enthaltenen
  • 47:49 - 47:56
    Datei beschreiben. Eine wichtige
    Metainformation, die genutzt werden kann,
  • 47:56 - 48:01
    um Daten zu transportieren, ohne dass man
    es leicht sieht, sind diese
  • 48:01 - 48:08
    Dateisystemattribute. Die ZIP-
    Spezifikation sieht vor, dass es 2 Byte
  • 48:08 - 48:14
    oder 16 Bit für interne File-Attribute
    gibt. Und sie sieht vor, dass es 32 Bit
  • 48:14 - 48:20
    für die Dateisystemattribute auf dem Ziel-
    Betriebssystem gibt. Somit haben wir hier
  • 48:20 - 48:27
    6 Byte pro Central Directory Structure zur
    Verfügung, um Daten zu verstecken, denn
  • 48:27 - 48:31
    wir können da ja beliebig idiotische File-
    Attribute setzen. Und das ist das, was sie
  • 48:31 - 48:35
    gemacht haben. Die ergeben dann zwar, wenn
    man die Dateien entpackt, auf dem Ziel-
  • 48:35 - 48:39
    Betriebssystem keinen Sinn mehr, müssen
    sie aber auch nicht, weil die Daten gar
  • 48:39 - 48:42
    nicht genutzt werden. Das sind einfach
    irgendwelche Dummy-Dateien. Das sieht man
  • 48:42 - 48:48
    hier. Hier sehen wir im Hex-Editor so ein
    APK und diese Strukturen. Wir haben diese
  • 48:48 - 48:54
    Signatur, diese PKZIP-Signatur ganz am
    Anfang, die ist hier gelb markiert, und
  • 48:54 - 49:00
    ein Offset von 36 Byte später, kommen dann
    diese 6 Byte Dateisystemattribute. Und wer
  • 49:00 - 49:05
    sich so ein bisschen mit Unix oder
    Dateisystemen auskennt, sieht auch, dass
  • 49:05 - 49:11
    das jetzt hier keine Bitfelder sind für
    Attribute, die Sinn ergeben. Nein, was wir
  • 49:11 - 49:19
    hier sehen, sind BASE64 codierte Daten.
    Und wenn man jetzt dieses ZIP-File einmal
  • 49:19 - 49:26
    parst und sich alle diese CDS-Signaturen
    herauspickt und dann diese Dateisystem …
  • 49:26 - 49:33
    diese Dateiattribute aneinander hängt,
    anschließend diesen ganzen String, der
  • 49:33 - 49:40
    dabei herausfällt BASE64-dekodiert, dann
    fällt daraus später eine Binärdatei, die
  • 49:40 - 49:44
    genau die Konfiguration dieser
    Schadsoftware beinhaltet. Das wurde,
  • 49:44 - 49:48
    wie gesagt, alles schon mal
    dokumentiert, wir haben das jetzt einfach
  • 49:48 - 49:52
    alles noch einmal nachvollzogen und auf
    alle Samples angewendet und geguckt, was
  • 49:52 - 49:55
    dabei rausfällt. Das heißt dann im ersten
    Schritt: Wir müssen die Dateien
  • 49:55 - 49:59
    extrahieren. In einem zweiten Schritt
    müssen wir die Dateien parsen.
  • 49:59 - 50:02
    U: Und das Tool dazu findet sich jetzt
    wieder auf der Website. Das heißt, das
  • 50:02 - 50:06
    müsst ihr uns oder vorallem Thorsten und
    Linus nicht glauben. Das könnt ihr alles
  • 50:06 - 50:10
    selber nachprüfen, wenn ihr eines der
    Samples runterladet und die Tools darüber
  • 50:10 - 50:14
    laufen lasst. Und wir hoffen, dass auf
    diese Art und Weise noch weitere Samples
  • 50:14 - 50:17
    analysiert werden können. Das ist jetzt
    noch mal ein Überblick, wie sowas dann in
  • 50:17 - 50:21
    der Gesamtheit aussehen kann. Wir müssen
    ein ganz bisschen springen an der Stelle
  • 50:21 - 50:25
    und schauen, wo wir dann weitermachen.
    Genau das ist dann so eine Konfiguration,
  • 50:25 - 50:29
    wie sie in der Summe aussieht.
    T: Genau, das ist jetzt dieses „Andriod“
  • 50:29 - 50:34
    Beispiel, was 2012 schon auf VirusTotal
    gelandet ist. Hier sehen wir, wie ich
  • 50:34 - 50:39
    schon angedeutet habe, es gibt dann so
    Hostnamen, die schon den Namen beinhalten.
  • 50:39 - 50:42
    Ich muss aber auch nochmal dazusagen: Es
    hat jetzt keine besonders große
  • 50:42 - 50:46
    Aussagekraft, wenn man ein Sample für sich
    betrachtet und solche Zeichenketten da
  • 50:46 - 50:50
    drin findet. Denn Josh Grunzweig, der das
    schon 2012 in seinem Blog dokumentiert
  • 50:50 - 50:53
    hat, hat auch schon ein Tool
    veröffentlicht auf GitHub, womit man genau
  • 50:53 - 51:00
    so eine Konfiguration herstellen kann und
    in so ein APK reindrücken kann. Das heißt,
  • 51:00 - 51:03
    man könnte im Grunde
    genommen sowas auch faken.
  • 51:03 - 51:07
    U: Das heißt, die Aussage ist tatsächlich
    weniger „Was steht drin in diesen
  • 51:07 - 51:12
    versteckten Konfigurationsinformationen?“
    Sondern die Aussage ist: Alle Samples
  • 51:12 - 51:16
    verwenden die gleiche Technik, die gleiche
    proprietäre und auch ziemlich ausgefuchste
  • 51:16 - 51:21
    Technik, um diese Daten zu verstecken in
    der APK-Datei. Und diese Gleichheit ist
  • 51:21 - 51:25
    die eigentliche Aussage dieser Analyse.
    Alle untersuchten Samples nutzen eben
  • 51:25 - 51:28
    diesen proprietären Mechanismus. Und du
    sagst, das Format wurde aber
  • 51:28 - 51:33
    weiterentwickelt?
    T: Es sieht ganz danach aus, wenn man,
  • 51:33 - 51:37
    sich den Inhalt dieser Binärdatei anguckt.
    Sie benutzen dann so eine Art Directory,
  • 51:37 - 51:43
    um Nummern bestimmten Funktionen oder
    Variablennamen zuzuweisen. Das ist auch
  • 51:43 - 51:47
    der Punkt, was es einfach macht, diese
    Konfiguration zu parsen, zu verarbeiten
  • 51:47 - 51:50
    und herauszufinden, welche
    Werte bedeuten was.
  • 51:50 - 51:53
    U: Diese Werte sind zum
    Beispiel diese hier.
  • 51:53 - 51:57
    T: Beispielsweise das. Im adalet-Sample
    gibt es, wie ich vorhin schon gezeigt
  • 51:57 - 52:01
    habe, verschiedene Werte, die jetzt auch
    nicht unbedingt auf die Türkei hindeuten.
  • 52:01 - 52:05
    Dann gibt es auch aus dem gleichen
    Zeitraum noch einen flash28-Sample, was
  • 52:05 - 52:09
    große Ähnlichkeiten und Parallelen mit dem
    adalet-Sampel aufweist. Da wird z. B. ein
  • 52:09 - 52:14
    Proxy aus Neuseeland genommen, ansonsten
    die gleiche Telefonnummer und dieses
  • 52:14 - 52:20
    derise-Sample hat, wie ich auch schon
    angedeutet habe, sämtliche Werte, die
  • 52:20 - 52:24
    davon relevant sind, zeigen Richtung
    Vietnam. Ob das etwas aussagt? Keine
  • 52:24 - 52:28
    Ahnung. In jedem Fall haben wir auch all
    das, diese ganzen Configs, die wir daraus
  • 52:28 - 52:35
    extrahiert haben, haben wir auch auf
    GitHub veröffentlicht. Das findet ihr bei
  • 52:35 - 52:39
    Linus in der FinSpy-Dokumentation, wo
    auch der Bericht und alle anderen Samples
  • 52:39 - 52:41
    liegen.
    U: Genau und vielleicht mag sich ja mal
  • 52:41 - 52:45
    jemand diese Telefonnummern anschauen,
    vielleicht kennt die ja jemand aus
  • 52:45 - 52:48
    irgendwelchen anderen Zusammenhängen. Das
    könnten noch ganz interessante
  • 52:48 - 52:52
    Rückschlüsse werden. Da würden wir uns
    über Hinweise freuen. Und insgesamt sieht
  • 52:52 - 52:59
    man dabei – das ist die Übersicht über die
    Samples, die ihr analysiert habt. Aber man
  • 52:59 - 53:03
    sieht, denke ich, ganz gut, dass es da so
    etwas wie eine Familienstruktur gibt.
  • 53:03 - 53:07
    T: Genau. Der einzige, der hier so ein
    bisschen aus der Reihe fällt, ist das Ding
  • 53:07 - 53:11
    hier. Das Ding, hab ich jetzt einfach mal
    Container genannt, weil es sonst keinen
  • 53:11 - 53:14
    Namen hatte. Das ist ein APK, was
    überhaupt keine Parallelen zu den anderen
  • 53:14 - 53:18
    aufweist. Aber dieses eine Sample hebt
    sich insofern von den anderen ab, als dass
  • 53:18 - 53:22
    wir das jetzt hier noch mit aufgenommen
    haben, das dropped, also legt, quasi eine
  • 53:22 - 53:27
    Schadsoftware APK überhaupt erst ab. In
    diesem grau markierten Sample gibt es
  • 53:27 - 53:32
    einen lokalen Root Kernel Exploit gegen
    den Linux-Kernel auf Android-Devices. Die
  • 53:32 - 53:38
    nutzen da die als „Dirty COW“ bekannte
    Schwachstelle aus, um Root auf dem Telefon
  • 53:38 - 53:42
    zu werden. Da liegen dann noch Werkzeuge,
    um persistent Root zu bleiben. Und dann
  • 53:42 - 53:48
    liegt da halt auch noch ein Sample,
    nämlich dieses hier, dieses PyawApp. Ich
  • 53:48 - 53:53
    weiß nicht, wie man das ausspricht. Das
    ist das Ding, wo wir davon ausgehen, dass
  • 53:53 - 53:58
    es in diesem Kontext Myanmar zugeschrieben
    wird. Weil Pyaw ein sehr bekanntes
  • 53:58 - 54:03
    soziales Netzwerk in der Region ist.
    U: Und die Antwort aus technischer
  • 54:03 - 54:08
    Perspektive. Vieles davon haben wir im
    Grunde schon gesagt. Aber in der
  • 54:08 - 54:12
    Zusammenfassung …
    T: Wie gesagt, sämtliche Samples, die wir
  • 54:12 - 54:15
    hier analysiert haben, benutzen den
    gleichen Mechanismus für die
  • 54:15 - 54:20
    Provisionierung. Diese ganzen
    Konfigurationen liegen in einem sehr
  • 54:20 - 54:26
    speziellen, Binärformat vor. Das ist kein
    allgemeingültiges Format, muss also
  • 54:26 - 54:29
    definitiv aus einem Hause stammen. Wir
    haben große Ähnlichkeiten auch unterhalb
  • 54:29 - 54:35
    des Java-Codes, wo es auch Hinweise darauf
    gibt, dass es aus deutschem Hause stammt.
  • 54:35 - 54:43
    Wir können ganz genau sagen, dass das
    adalet-Sample frühestens im Jahr 2016
  • 54:43 - 54:49
    hergestellt wurde. Und die Samples
    zwischen 2012 und 2014 können auch ganz
  • 54:49 - 54:54
    eindeutig der Firma FinFisher zugeordnet
    werden, weswegen da eigentlich in der
  • 54:54 - 54:57
    Schlussfolgerung auch klar gesagt werden
    kann, dass all diese Samples, die wir uns
  • 54:57 - 55:02
    zwischen 2012 und 2019 angeguckt haben,
    der Firma oder der Firmengruppe FinFisher
  • 55:02 - 55:05
    zuzuordnen ist.
    U: Und all das könnt ihr nochmal im
  • 55:05 - 55:09
    Detail nachlesen in der Studie des CCC,
    die schon veröffentlicht wurde gestern und
  • 55:09 - 55:14
    wie gesagt, ganz wichtig, wir möchten die
    eigentlich gerne noch auf Englisch
  • 55:14 - 55:17
    publizieren. Wir haben deswegen schon mal
    eine URL für ein Pad auf die Folie
  • 55:17 - 55:21
    geworfen. Das Pad gibt’s da nicht, das
    füllen wir noch aus mit einer Roh-
  • 55:21 - 55:24
    Übersetzung aus Google Translate. Oder
    vielleicht mag das auch jemand von euch
  • 55:24 - 55:27
    machen.
    T: Wir würden das gerne crowdsourcen.
  • 55:27 - 55:30
    U: Das ist ein bisschen die Idee dabei,
    weil das schon ein bisschen Arbeit ist,
  • 55:30 - 55:34
    und wir schaffen das einfach schnell,
    jetzt, während des Kongresses nicht. Aber
  • 55:34 - 55:38
    vielleicht hat jemand Lust uns zu helfen.
    Das wird die URL. Und vor allem ganz
  • 55:38 - 55:42
    wichtig: Check the facts! Das werden wir
    natürlich aus GFF-Perspektive machen. Wir
  • 55:42 - 55:45
    gehen davon aus, dass es auch die
    Staatsanwaltschaft machen wird. Aber ich
  • 55:45 - 55:49
    persönlich finde es großartig, dass der
    CCC die Tools und die ganzen Unterlagen,
  • 55:49 - 55:53
    die zur Analyse vorlagen, ins Netz
    gestellt hat. Einfach, damit man das nicht
  • 55:53 - 55:56
    unbedingt glauben muss, sondern dass man
    selber sich davon überzeugen kann.
  • 55:56 - 56:00
    T: Transparenz ist uns sehr wichtig. Und
    hier auch noch ein kleiner Gruß ans BKA
  • 56:00 - 56:07
    und LKA. Ihr habt diese Samples ja auch in
    einer ganz neuen Version. Vielleicht könnt
  • 56:07 - 56:11
    ihr euch das ja mal angucken, und wir sind
    offen für Pull-Requests.
  • 56:11 - 56:22
    Applaus
    U: Ein Pull-Request aus Wiesbaden? Das
  • 56:22 - 56:24
    wäre doch mal eine gute Idee oder eben
    auch aus Berlin.
  • 56:24 - 56:26
    T: Ihr könnt auch Tor benutzen, das ist
    egal.
  • 56:26 - 56:30
    U: Kein Problem, da sind wir ganz offen.
    Und das Berliner LKA könnte da auch
  • 56:30 - 56:34
    mitmachen. Die haben ja auch mal ein
    Sample gekauft, das aber nie eingesetzt.
  • 56:34 - 56:37
    Sie brauchen das eh nicht mehr. Insofern,
    das hätten sie über. Was bedeutet das
  • 56:37 - 56:41
    jetzt alles für das Strafverfahren? Aus
    unserer Perspektive als GFF: Wir haben
  • 56:41 - 56:45
    keine Zweifel und natürlich auch aus der
    Perspektive des Clubs, dass der deutsche
  • 56:45 - 56:49
    Trojaner FinFisher gegen die türkische
    Opposition eingesetzt wurde, davon sind
  • 56:49 - 56:53
    wir fest überzeugt. Irgendwie muss dieser
    Trojaner aus München in die Hände
  • 56:53 - 56:57
    türkischer Behörden gelangt sein oder
    sonst aus den Händen der Firmengruppe
  • 56:57 - 57:01
    FinFisher. Und diese Verstoße gegen die
    Exportkontrollvorschriften wären auch noch
  • 57:01 - 57:05
    nicht verjährt. Und deswegen liegt der
    Ball jetzt bei der Staatsanwaltschaft
  • 57:05 - 57:10
    München 1. Denn eine Frage ist noch offen:
    Wie genau ist eigentlich der Trojaner in
  • 57:10 - 57:14
    die Türkei gelangt? Wir können jetzt quasi
    nicht irgendwie nachweisen, da ist der
  • 57:14 - 57:19
    Agent mit dem schwarzen Aktentäschchen
    nach Istanbul gereist, oder da ist der
  • 57:19 - 57:24
    USB-Stick geflogen, sondern das müssten
    die Strafverfolger noch aufklären. Aber
  • 57:24 - 57:27
    wie gesagt, dafür haben wir die
    Strafanzeige gestellt. Dazu hat die
  • 57:27 - 57:31
    Staatsanwaltschaft alle Mittel. Und wir
    hoffen, dass sie das sehr konsequent tun
  • 57:31 - 57:35
    wird. Denn eins ist klar: Menschenrechte
    kann man nicht nur mit Kalaschnikows
  • 57:35 - 57:39
    verletzen, sondern selbstverständlich auch
    mit Staatstrojanern. Und dem muss ein Ende
  • 57:39 - 57:41
    gemacht werden. Vielen Dank!
  • 57:41 - 57:44
    Applaus
  • 57:44 - 57:54
    U: Herzlichen Dank, wir haben noch ganz
    ein wenig Zeit, oder?
  • 57:54 - 57:57
    T: Naja, eine Minute.
    Herald: Euer Applaus. Wunderschön!
  • 57:57 - 58:00
    U: Dankeschön!
    Herald: Wir haben leider keine Zeit mehr
  • 58:00 - 58:06
    für Fragen. Ich habe ganz zu Anfang vor
    diesem Talk erwähnt, dass es die C3 Post
  • 58:06 - 58:12
    gibt. Und die beiden Speaker haben
    erwähnt, dass sie am 28C3 einen
  • 58:12 - 58:17
    Datenträger bekommen haben. Damals
    bestimmt anders zugestellt, es gab noch
  • 58:17 - 58:21
    keine C3 Post. Heute bin ich Postbote, und
    ich darf zustellen. Ein Paket.
  • 58:21 - 58:26
    U: Herzlichen Dank, ach so, das ist deins.
    Erst nach dem Talk öffnen, machen wir,
  • 58:26 - 58:30
    ganz herzlichen Dank.
    T: Dankeschön.
  • 58:30 - 58:34
    Applaus
  • 58:34 - 58:40
    Herald: Und wenn ihr für einen Malware-
    Hersteller arbeitet, ich hoffe, dieses
  • 58:40 - 58:46
    Paket enthält euren Albtraum für heute
    Nacht. Großen Applaus für Thorsten
  • 58:46 - 58:48
    Schröder und Ulf Buermeyer!
  • 58:48 - 58:50
    Applaus
  • 58:50 - 58:53
    Abspannmusik
  • 58:53 - 59:06
    Untertitel erstellt von c3subtitles.de
    im Jahr 2020. Mach mit und hilf uns!
Title:
36C3 - Finfisher verklagen
Description:

more » « less
Video Language:
German
Duration:
59:17

German subtitles

Revisions