WEBVTT 00:00:00.000 --> 00:00:18.580 36C3 Vorspanngeräusche 00:00:18.580 --> 00:00:23.160 Herald: Heute Abend geht es in diesem Saal über Staatstrojaner, also Trojaner, also 00:00:23.160 --> 00:00:27.090 Schadsoftware im engeren Sinne, bloß halt nicht solche von Kriminellen, sondern 00:00:27.090 --> 00:00:30.980 solche von Unternehmen, die das professionell mehr oder weniger legal 00:00:30.980 --> 00:00:34.810 machen. Staatstrojaner sollte man gar nicht erst bauen, wenn man sie baut, 00:00:34.810 --> 00:00:38.270 kommen sie in die falschen Hände. Wie das passiert und wie man dann unser 00:00:38.270 --> 00:00:43.070 Rechtssystem und unsere Gerichte nutzen kann, um etwas dagegen zu tun auf dem 00:00:43.070 --> 00:00:47.850 vernünftigen rechtsstaatlichen Weg, das erklärt uns unser Ulf Buermeyer, der in 00:00:47.850 --> 00:00:52.079 vielen anderen Fällen auch schon Rechtsbeistand für Clubthemen geleistet 00:00:52.079 --> 00:00:57.680 hat. Und Thorsten Schröder ist auch dabei. Oldschool Hacker, 20 Jahre dabei, 30 Jahre 00:00:57.680 --> 00:01:02.100 weiß ich nicht. Und hat sich das angeschaut, was da in dieser Schadsoftware 00:01:02.100 --> 00:01:06.030 von FinFisher eigentlich drinsteckt. Großen Applaus für Ulf Buermeyer und 00:01:06.030 --> 00:01:11.820 Thorsten Schröder. Applaus 00:01:11.820 --> 00:01:18.539 Ulf Buermeyer: Hi, schön, dass ihr da seid, herzlich willkommen! 00:01:18.539 --> 00:01:22.229 Thorsten Schröder: Hallo, hallo. U: Ja, herzlich willkommen zu „FinFisher, 00:01:22.229 --> 00:01:26.500 See You in Court!“ Falls es der eine oder andere kennt, eine amerikanische 00:01:26.500 --> 00:01:31.440 Bürgerrechtsorganisation hat „See you in Court!“ mal zu Donald Trump gesagt, als er 00:01:31.440 --> 00:01:35.770 illegal versucht hat, Immigration in die Vereinigten Staaten zu verhindern. Und wir 00:01:35.770 --> 00:01:40.440 widmen uns genau dem umgekehrten Thema, nämlich der illegalen Auswanderung von 00:01:40.440 --> 00:01:45.880 fieser Software. Und bevor wir dazu kommen, noch ein klitzekleiner historischer 00:01:45.880 --> 00:01:53.200 Rückblick. Keine Sorge, das wird kein krasser Juratalk, dafür bürgt schon 00:01:53.200 --> 00:01:55.520 Thorsten. T: Ich versuch’s. 00:01:55.520 --> 00:02:00.640 U: Aber in diesem Talk geht es um ein weiteres Kapitel im Kampf gegen digitales 00:02:00.640 --> 00:02:06.610 Ungeziefer, und zwar eine ganz besondere Form von digitalem Ungeziefer. 00:02:06.610 --> 00:02:12.890 T: Staatstrojaner, die wir auch schon vor ein paar Jahren mal auf einem Kongress 00:02:12.890 --> 00:02:18.739 bereits besprochen haben. Aber eben Software, die von Staaten eingesetzt 00:02:18.739 --> 00:02:22.650 werden, gegen Kriminelle, gegen Oppositionelle und so weiter. 00:02:22.650 --> 00:02:26.569 U: Thorsten hat schon gesagt, das ist ein Thema, das den Club und auch mich 00:02:26.569 --> 00:02:32.401 persönlich schon seit Jahren beschäftigt. Das Foto zum Beispiel ist vom 25C3. Da gab 00:02:32.401 --> 00:02:36.620 es nämlich eine gute Nachricht aus Karlsruhe zu feiern. Vielleicht erinnert 00:02:36.620 --> 00:02:42.000 sich der eine oder andere noch daran. Das Bundesverfassungsgericht hatte 2008 ein 00:02:42.000 --> 00:02:47.090 neues Grundrecht erfunden, nämlich das Grundrecht, das wir heute kennen als das 00:02:47.090 --> 00:02:53.060 Computer Grundrecht oder, auf schlau, das Grundrecht auf Integrität und 00:02:53.060 --> 00:02:58.860 Vertraulichkeit informationstechnischer Systeme. Eine Bezeichnung, auf die nur 00:02:58.860 --> 00:03:03.540 Menschen kommen können, die viel zu lange Jura studiert haben. Jedenfalls hatten wir 00:03:03.540 --> 00:03:07.660 damals, als Conz und ich diesen Talk gemacht haben, vor dem roten Vorhang 00:03:07.660 --> 00:03:12.380 gehofft, dass dieses Grundrecht etwas ändern würde. Aber leider müssen wir 00:03:12.380 --> 00:03:22.269 sagen … T: Tat es nicht. Wir haben 2011 einen 00:03:22.269 --> 00:03:26.930 Staatstrojaner gefunden, der genau diese Rechte nicht eingehalten hat. 00:03:26.930 --> 00:03:30.601 Möglicherweise war das zu dem Zeitpunkt bei diesen Entwicklern auch noch nicht 00:03:30.601 --> 00:03:35.959 angekommen. Diesen Trojaner hatten wir einmal auf einer Festplatte in einem 00:03:35.959 --> 00:03:43.600 braunen Umschlag zugetragen bekommen. Ja, den haben wir dann analysiert und einen 00:03:43.600 --> 00:03:51.270 sehr ausführlichen Bericht auch dazu verfasst und einen Talk auf dem 28c3. 00:03:51.270 --> 00:03:54.210 U: Hier sieht man das, Jugendbildnisse von Thorsten und mir. 00:03:54.210 --> 00:03:58.080 T: Da war ich noch richtig jung, wie man sieht. Da habe ich auch das erste Mal mit 00:03:58.080 --> 00:04:01.220 Ulf auf einer Bühne gestanden. Lustigerweise stehen wir nur auf der 00:04:01.220 --> 00:04:04.840 Bühne, wenn’s um Staatstrojaner geht. U: Das ist auch derselbe schwarze Pulli 00:04:04.840 --> 00:04:07.550 bei mir, glaube ich. Ich habe den extra nochmal gewaschen. 00:04:07.550 --> 00:04:11.170 T: Ja, da haben wir den Staatstrojaner vorgestellt und nicht nur beschrieben, 00:04:11.170 --> 00:04:15.970 sondern auch demonstrieren können, wie der gegen diese Grundrechte verstößt, indem er 00:04:15.970 --> 00:04:24.960 einen Rechner in eine Wanze verwandelt und somit in jedem Teil der Wohnung auch 00:04:24.960 --> 00:04:28.330 abhören kann und man Software nachladen kann und so weiter. 00:04:28.330 --> 00:04:31.750 U: Mit dem Software nachladen war vielleicht der krasseste Verstoß. 00:04:31.750 --> 00:04:34.789 Eigentlich hatte das Bundesverfassungsgericht nämlich sehr 00:04:34.789 --> 00:04:39.620 genau vorgeschrieben, was ein Trojaner so können darf und was nicht. Es hatte diese 00:04:39.620 --> 00:04:42.890 Trojaner eben nicht grundsätzlich verboten, aber relativ hohe Hürden 00:04:42.890 --> 00:04:49.020 aufgestellt. Und diese Hürden allerdings hat der Trojaner aus dem Hause DigiTask 00:04:49.020 --> 00:04:53.699 damals nicht eingehalten. Thorsten und ein paar andere Leute aus dem Club hatten ja 00:04:53.699 --> 00:04:57.359 sogar so eine Fernsteuersoftware gebaut, ihr konntet den quasi fernsteuern mit 00:04:57.359 --> 00:05:00.749 einer kleinen Windowssoftware. T: Also eigentlich sollte dieser Trojaner 00:05:00.749 --> 00:05:04.609 ja nur Skype abhören und vielleicht mal so ein bisschen die Chatlogs mitlesen. Bei 00:05:04.609 --> 00:05:08.380 der Analyse ist allerdings aufgefallen, dass er weitaus mehr kann, unter anderem 00:05:08.380 --> 00:05:12.979 auch Software nachladen, aber eben auch Screenshots anfertigen und auch 00:05:12.979 --> 00:05:18.050 Screenshots von nicht abgeschickten Emails und Gedanken und was auch immer man in so 00:05:18.050 --> 00:05:22.009 einen Rechner auch reintippt. U: Im Grunde genau das Gruselszenario, 00:05:22.009 --> 00:05:26.699 das wir gerade auch beim Club immer wieder kritisiert hatten, weswegen Staatstrojaner 00:05:26.699 --> 00:05:30.880 so gefährlich sind. Das war nun leider allerdings nicht das Ende der Debatte, wie 00:05:30.880 --> 00:05:35.029 es sich für so einen richtigen Zombie gehört, sind Staatstrojaner einfach nicht 00:05:35.029 --> 00:05:39.639 kaputt zu bekommen. Und so haben wir in Deutschland seit 2017 wieder eine 00:05:39.639 --> 00:05:44.759 Rechtsgrundlage für Staatstrojaner, eine neue sogar, nämlich dieses Mal im 00:05:44.759 --> 00:05:49.809 Strafverfahren. Das Bundeskriminalamt darf die schon viel länger einsetzen seit 2009 00:05:49.809 --> 00:05:54.111 allerdings nur zur Abwehr von Terrorismus und diesmal wirklich. Diesmal steht es 00:05:54.111 --> 00:05:59.759 sogar im Gesetz. Aber seit 2017 gibt’s ein neues Gesetz, das im Prinzip in den 00:05:59.759 --> 00:06:04.539 meisten Strafverfahren erlaubt, so Trojaner einzusetzen. Deswegen hat die 00:06:04.539 --> 00:06:08.770 Gesellschaft für Freiheitsrechte dagegen geklagt. Darüber haben wir letztes Jahr 00:06:08.770 --> 00:06:13.249 schon kurz gesprochen, weil wir sagen, was dieser Trojaner kann, ist wieder mal 00:06:13.249 --> 00:06:18.509 verfassungswidrig. Und wir kritisieren aber nicht nur, dass der die Grenzen nicht 00:06:18.509 --> 00:06:24.749 einhält, die das Bundesverfassungsgericht aufgestellt hat, sondern wir fragen uns, 00:06:24.749 --> 00:06:30.020 wie kommt der Trojaner eigentlich rein ins System? Wie kommt er eigentlich rein? Bin 00:06:30.020 --> 00:06:34.919 ich denn etwa schon drin? Damit geht’s uns um die IT-Sicherheit insgesamt, weil wir 00:06:34.919 --> 00:06:40.249 uns fragen, welche Sicherheitslücken werden eigentlich freigehalten, offen 00:06:40.249 --> 00:06:44.400 gehalten, ganz bewusst, damit so ein Trojaner ins System eingespielt werden 00:06:44.400 --> 00:06:48.879 kann. Denn nur in Ausnahmefällen haben die Behörden direkt Zugriff auf das System. In 00:06:48.879 --> 00:06:52.979 aller Regel müssen die Trojaner aus der Ferne eingespielt werden und dazu braucht 00:06:52.979 --> 00:06:58.120 man eben Sicherheitslücken. Deswegen die Minimalforderung der GFF in diesem 00:06:58.120 --> 00:07:03.229 Verfahren: Das geht gar nicht! Wenn man schon eine Rechtsgrundlage für Trojaner 00:07:03.229 --> 00:07:07.619 schafft, dann muss man auch klare Spielregeln aufstellen, welche 00:07:07.619 --> 00:07:11.789 Sicherheitslücken eigentlich ausgenutzt werden dürfen. Denn sonst gibt es einen 00:07:11.789 --> 00:07:15.241 großen Anreiz 0-days oder Sicherheitslücken, die dem Hersteller noch 00:07:15.241 --> 00:07:18.689 nicht bekannt sind, geheimzuhalten. Und damit werden alle Computer 00:07:18.689 --> 00:07:23.960 auf der Welt die Sicherheitslücke weiter aufweisen. Apropos auf der Welt: 00:07:23.960 --> 00:07:29.539 nicht nur deutsche Behörden finden Trojaner außerordentlich sexy. Ganz im 00:07:29.539 --> 00:07:34.789 Gegenteil. Die Weltkarte des Trojaner- Einsatzes ist bemerkenswert rot. 00:07:34.789 --> 00:07:41.189 T: Zumindest was diese FinFisher Spyware angeht, gibt es hier vom Citizen Lab 00:07:41.189 --> 00:07:47.280 erstellt, diese Karte, wo diese Schadsoftware schon überall gefunden bzw. 00:07:47.280 --> 00:07:53.240 eingesetzt wurde. Das ist natürlich schön, dass wir uns in Deutschland darum bemühen, 00:07:53.240 --> 00:07:57.082 da entsprechende Rechtsgrundlagen zu schaffen. Wenn wir das hinkriegen, dass es 00:07:57.082 --> 00:08:00.890 so eine Rechtsgrundlage gibt oder eben diesen Schutz der Privatsphäre, dann heißt 00:08:00.890 --> 00:08:03.319 das noch lange nicht, dass wir das Problem los sind. 00:08:03.319 --> 00:08:06.960 U: Ganz im Gegenteil! T: Das Ding ist halt, dass gerade in 00:08:06.960 --> 00:08:11.909 diesem Fall wir davon ausgehen können, dass diese Software, die hier weltweit 00:08:11.909 --> 00:08:17.410 eingesetzt wird, um Leute auszuspionieren, Made in Germany ist. 00:08:17.410 --> 00:08:21.650 U: Das ist genau das Problem. Made in Germany, aber eben nicht nur eingesetzt in 00:08:21.650 --> 00:08:26.080 Deutschland, sondern auch in Staaten, wo es mit der Rechtsstaatlichkeit vielleicht 00:08:26.080 --> 00:08:30.639 nicht ganz so entspannt zugeht. Denn besonders spannend sind Trojaner natürlich 00:08:30.639 --> 00:08:35.430 für Menschen, die aus guten Gründen Stress haben mit ihrer Opposition. Zum Beispiel 00:08:35.430 --> 00:08:42.169 hier Präsident José Eduardo dos Santos aus Angola. Der, jedenfalls nach Berichten, 00:08:42.169 --> 00:08:49.870 auf der Kundenliste von FinFisher steht. Oder Hamad bin Isa Al Chalifa, der sich 00:08:49.870 --> 00:08:55.529 selbst im Jahr 2002 zum König von Bahrain ausrief. Und bei der Rangliste der 00:08:55.529 --> 00:09:00.319 Pressefreiheit aus dem Jahr 2017, herausgegeben von Reporter ohne Grenzen, 00:09:00.319 --> 00:09:07.180 belegt Bahrain den stolzen Platz 164 von 180. Mit anderen Worten: Pressefreiheit 00:09:07.180 --> 00:09:10.949 bedeutet in diesem Land, zu schreiben, was der Chef will. Die Presse in Bahrain 00:09:10.949 --> 00:09:15.370 gehört zu den unfreiesten der Welt. Zensur und repressive Gesetzgebung verhindern 00:09:15.370 --> 00:09:20.089 freien Journalismus. Sechs Blogger und Bürgerjournalisten sitzen in Haft, und das 00:09:20.089 --> 00:09:24.769 alles wird unter anderem ermöglicht dadurch, dass gezielt versucht wird, 00:09:24.769 --> 00:09:32.120 Menschen zu hacken, die sich kritisch äußern. Aber, die Probleme beginnen direkt 00:09:32.120 --> 00:09:41.700 vor unserer Haustür. T: Ja, wir haben auch in Europa, bzw. den 00:09:41.700 --> 00:09:48.370 Anwärtern für die Europäische Union, Staatslenker, die auch ein Problem haben 00:09:48.370 --> 00:09:55.880 mit ihrer eigenen Bevölkerung und mit der Opposition. Und nun gab es da halt diverse 00:09:55.880 --> 00:10:01.160 Unruhen. Es gab einen Putschversuch. Im Sommer 2016 gab es einen Putschversuch in 00:10:01.160 --> 00:10:07.790 der Türkei. Die Türkei wandelte sich danach zunehmend in ein eher repressives 00:10:07.790 --> 00:10:11.720 Regime. U: Und nach dem gescheiterten 00:10:11.720 --> 00:10:17.779 Putschversuch wurden insgesamt mehr als 50 000 Menschen verhaftet. Mehr als 140 000 00:10:17.779 --> 00:10:21.550 Menschen wurden aus ihren Berufen entfernt. Die Türkei ist inzwischen das 00:10:21.550 --> 00:10:27.050 Land geworden, in dem im Verhältnis zur Bevölkerungszahl weltweit die meisten 00:10:27.050 --> 00:10:31.069 Journalisten und Journalistinnen inhaftiert sind. Eine lupenreine 00:10:31.069 --> 00:10:35.500 Demokratie? Zurzeit befinden sich mindestens 34 Journalisten in politischer 00:10:35.500 --> 00:10:40.360 Gefangenschaft. Hunderte Zeitungen und andere Medienorgane wurden geschlossen. 00:10:40.360 --> 00:10:45.360 T: Es ist auch sehr, sehr auffällig, wie dringend immer darauf hingewiesen wird, 00:10:45.360 --> 00:10:50.990 dass die Leute, die dort inhaftiert sind, unter Terrorverdacht stehen. Jeder, der 00:10:50.990 --> 00:10:54.410 gerade zur falschen Zeit am falschen Ort ist, wird dann auch mit diesem 00:10:54.410 --> 00:10:56.850 Terrorismusverdacht erst einmal weggesperrt. 00:10:56.850 --> 00:11:01.220 U: Erfreulicherweise allerdings gibt es trotz aller Repressalien auch in der 00:11:01.220 --> 00:11:05.040 Türkei noch eine Oppositionsbewegung. Beispielsweise, das sieht man auf diesem 00:11:05.040 --> 00:11:12.310 Bild im Sommer 2017, als Oppositionelle in der Türkei unter dem Motto adalet auf die 00:11:12.310 --> 00:11:17.680 Straße gingen, um gegen das Regime zu protestieren. Daraufhin allerdings hatte 00:11:17.680 --> 00:11:23.170 der türkische Geheimdienst eine besonders perfide Idee. Denn Demonstrationen gegen 00:11:23.170 --> 00:11:28.610 den großen Meister gehen natürlich gar nicht. Deswegen stellte der Geheimdienst 00:11:28.610 --> 00:11:34.380 eine Website ins Netz, die – das seht ihr auf dem Bild – auf den ersten Blick so 00:11:34.380 --> 00:11:38.519 aussieht, als könnte das eine Organisations-Website der 00:11:38.519 --> 00:11:43.170 Oppositionsbewegung sein. Das sieht ja so aus mit dem Logo und dem Bild, als wenn 00:11:43.170 --> 00:11:48.380 das Menschen wären, die hinter diesen Protesten stünden. Und auf dieser Seite, 00:11:48.380 --> 00:11:52.050 von der man denken könnte, es sei eine Protestwebsite, gab es dann diesen 00:11:52.050 --> 00:11:57.160 schönen Button unten rechts, der so aussieht, als ginge es dort in den Google 00:11:57.160 --> 00:12:02.689 Play Store. Dort wurde eine Android- Software, so eine APK-Datei, also eine 00:12:02.689 --> 00:12:08.910 Android-Installationsdatei, zum Download bereitgehalten für einige Wochen. Das 00:12:08.910 --> 00:12:12.839 Problem ist nur, ihr ahnt es schon: es handelte sich nicht etwa um einen 00:12:12.839 --> 00:12:17.410 Messenger oder eine Kalender-App, mit der die Oppositionellen sich hätten 00:12:17.410 --> 00:12:23.089 organisieren können. In Wirklichkeit handelte es sich dabei um einen Android- 00:12:23.089 --> 00:12:30.759 Trojaner, den wir im weiteren als den adalet-Trojaner bezeichnen. Die Frage ist 00:12:30.759 --> 00:12:37.570 nur … T: Woher kommt der Trojaner? Wir sind der 00:12:37.570 --> 00:12:42.379 Meinung, nach aktuellem Stand, dass dieser Trojaner, der in der Türkei gegen diese 00:12:42.379 --> 00:12:47.730 Bewegung eingesetzt wurde, dass er aus Deutschland stammt. Und wir haben einiges 00:12:47.730 --> 00:12:54.670 an Arbeit investiert, um das auch mit vielen Belegen begründen zu können, diesen 00:12:54.670 --> 00:12:57.759 Verdacht. U: Denn: Man kann sich das vorstellen, 00:12:57.759 --> 00:13:01.779 Anna Biselli hat das so schön gesagt vor zwei Tagen, wenn irgendwo ein Trog ist, 00:13:01.779 --> 00:13:06.000 dann sind die Schweine nicht weit. Und ebenso ist es bei Cyberwaffen. Wenn ein 00:13:06.000 --> 00:13:11.120 Diktator mit Dollarbündeln wedelt, dann finden sich immer wieder zwielichtige 00:13:11.120 --> 00:13:15.040 Software-Unternehmen, die mit solchen Trojanern Geld verdienen wollen. 00:13:15.040 --> 00:13:19.170 Menschenrechte hin oder her. Beispielsweise die Unternehmensgruppe 00:13:19.170 --> 00:13:26.340 FinFisher aus München. Selbstbeschreibung: Excellence in Cyber Investigation. Gegen 00:13:26.340 --> 00:13:31.900 solche Trojaner-Hersteller vorzugehen ist rechtlich schwierig. Das Problem dabei ist 00:13:31.900 --> 00:13:36.279 nämlich, dass solche Trojaner unter bestimmten Voraussetzungen ja legal 00:13:36.279 --> 00:13:41.050 eingesetzt werden können. Das heißt einfach nur Trojaner zu bauen ist nicht 00:13:41.050 --> 00:13:45.579 illegal. Das gilt ganz besonders, wenn auch deutsche Behörden zur dankbaren 00:13:45.579 --> 00:13:50.540 Kundschaft gehören, beispielsweise nach Presseberichten von Netzpolitik.org, das 00:13:50.540 --> 00:13:55.160 Bundeskriminalamt, aber auch das Berliner Landeskriminalamt. Mit anderen Worten: 00:13:55.160 --> 00:14:01.110 FinFisher hat beste Beziehungen zu deutschen Behörden. Aber man darf diese 00:14:01.110 --> 00:14:09.630 Trojaner nicht einfach so exportieren, denn sie gelten als Cyberwaffen. Der 00:14:09.630 --> 00:14:14.529 Export von Trojanern ist zwar nicht generell verboten, aber sie stehen auf der 00:14:14.529 --> 00:14:19.769 sogenannten Ausfuhrliste. Das bedeutet, man braucht vor dem Export von Trojanern 00:14:19.769 --> 00:14:24.170 normalerweise eine Genehmigung der Bundesregierung. Nur die EU-Staaten und 00:14:24.170 --> 00:14:28.660 einige weitere Länder sind von dieser Erfordernis, eine Genehmigung einzuholen, 00:14:28.660 --> 00:14:34.259 ausgenommen. Und nun hatten wir in dem adalet-Fall einen sehr, sehr schönen Fall. 00:14:34.259 --> 00:14:38.620 Die türkische Regierung setzt einen Trojaner gegen ihre Opposition ein. Mit 00:14:38.620 --> 00:14:42.499 der türkischen Regierung gab es ohnehin schon Stress genug. Und dieser Trojaner 00:14:42.499 --> 00:14:48.790 stammt nun auch noch mutmaßlich aus Deutschland. Und der Export war auch noch 00:14:48.790 --> 00:14:52.529 illegal, weil es dafür keine Genehmigung gab. Jedenfalls sagt das die 00:14:52.529 --> 00:14:57.990 Bundesregierung. Und daher war für uns, das heißt in diesem Fall Netzpolitik.org 00:14:57.990 --> 00:15:02.529 zum Beispiel und die Gesellschaft für Freiheitsrechte, ganz schnell klar, das 00:15:02.529 --> 00:15:05.490 muss ein Fall für die Staatsanwaltschaft werden. Wir haben 00:15:05.490 --> 00:15:11.220 deswegen eine Koalition geschmiedet gegen den illegalen Export von Staatstrojanern 00:15:11.220 --> 00:15:15.280 unter Koordination der Gesellschaft für Freiheitsrechte. Das hat da meine Kollegin 00:15:15.280 --> 00:15:21.199 Sarah Lincoln gemacht. Reporter ohne Grenzen, Netzpolitik.org und das ECCHR aus 00:15:21.199 --> 00:15:24.889 Berlin – das European Center for Constitutional and Human Rights – ihre 00:15:24.889 --> 00:15:28.870 Kompetenz gebündelt, und wir haben gemeinsam eine Strafanzeige geschrieben 00:15:28.870 --> 00:15:33.899 und sie hier in diesem Sommer eingereicht, um zu erreichen, dass die Verantwortlichen 00:15:33.899 --> 00:15:38.120 bei der Firma FinFisher zur Rechenschaft gezogen werden. Weil wir finden, genauso 00:15:38.120 --> 00:15:42.499 wie deutsche Waffen nicht auf der ganzen Welt mitmorden dürfen, genauso dürfen auch 00:15:42.499 --> 00:15:46.459 nicht mit deutschen Trojanern Menschenrechte weltweit oder in diesem 00:15:46.459 --> 00:15:58.060 Fall in der Türkei verletzt werden. Applaus 00:15:58.060 --> 00:16:01.930 U: Hier haben wir nochmal den Ablauf zusammengestellt. 00:16:01.930 --> 00:16:12.010 T: Das ist jetzt die Timeline der Anzeige bzw. wann das Sample, wir reden hier von 00:16:12.010 --> 00:16:15.912 einem Sample, wenn wir jetzt von so einem APK, so einer Schadsoftwareinstallation 00:16:15.912 --> 00:16:22.139 reden, wann das verbreitet wurde, das war dann im Juni 2017. Das ist definitiv nach 00:16:22.139 --> 00:16:27.140 Einführung der Export-Richtlinien. Man kann hier mit Gewissheit sagen, dass die 00:16:27.140 --> 00:16:30.819 Zielgruppe die Oppositionellen in der Türkei waren. Das ergibt sich aus dem 00:16:30.819 --> 00:16:38.990 Kontext dieser Website und allem drumherum. Und ja, es gab eine Anfrage an 00:16:38.990 --> 00:16:43.429 die Bundesregierung, die letztlich bestätigte, dass es in diesem Zeitraum 00:16:43.429 --> 00:16:48.720 zwischen 2015 und 2017 keinerlei Genehmigungen in dieser Richtung gab. 00:16:48.720 --> 00:16:53.320 U: Damit war für uns klar, das reicht jedenfalls für eine Strafanzeige. 00:16:53.320 --> 00:16:57.458 Natürlich müssen noch ein paar Fakten ermittelt werden. Aber jedenfalls reicht 00:16:57.458 --> 00:17:01.879 es, um die Staatsanwaltschaft auf diesen Fall aufmerksam zu machen. Und wir haben 00:17:01.879 --> 00:17:05.809 auch eine ganze Reihe von Indizien, dass der Fall sehr ernst genommen wird. Im 00:17:05.809 --> 00:17:11.008 September 2019 haben wir diese Strafanzeige dann veröffentlicht, unter 00:17:11.008 --> 00:17:15.968 anderem auch auf Netzpolitik.org. Und wir können mit Sicherheit davon ausgehen, dass 00:17:15.968 --> 00:17:20.550 das die Herrschaften hinter FinFisher nicht begeistert hat. Denn sie haben 00:17:20.550 --> 00:17:26.051 Netzpolitik.org abgemahnt und dazu gezwungen, den Artikel vorzeitig vom Netz 00:17:26.051 --> 00:17:30.071 zu nehmen. Erfreulicherweise allerdings hatte die Spendenkampagne von Netzpolitik 00:17:30.071 --> 00:17:33.830 einigen Erfolg. Ich hoffe jedenfalls, finanziell wird sich das nicht lohnen für 00:17:33.830 --> 00:17:37.737 die Abmahner, aber klar, der Artikel ist zurzeit nicht verfügbar, jedenfalls nicht 00:17:37.737 --> 00:17:42.195 bei Netzpolitik. Es soll ja in diesem Internet auch Archivseiten geben. Und dort 00:17:42.195 --> 00:17:47.280 könnt ihr ihn nach wie vor lesen in seiner vollen Schönheit. FinFisher und Kohl 00:17:47.280 --> 00:17:54.142 schlagen zurück. Wir denken, getroffene Hunde bellen. Und außerdem lassen wir uns 00:17:54.142 --> 00:17:58.300 davon natürlich nicht einschüchtern. Wir haben – Wir heißt in diesem Fall die 00:17:58.300 --> 00:18:02.820 Gesellschaft für Freiheitsrechte – den Club gebeten, sich die bisherigen Beweismittel 00:18:02.820 --> 00:18:06.678 gegen FinFisher nochmal ganz genau anzusehen und zu überlegen, ob es nicht 00:18:06.678 --> 00:18:12.851 noch weitere Beweise geben könnte. Und das Ziel dieser Mission war, noch genauer 00:18:12.851 --> 00:18:16.740 nachzuweisen, dass tatsächlich die Voraussetzungen vorliegen für den 00:18:16.740 --> 00:18:20.764 Straftatbestand aus dem Außenwirtschaftsgesetz. Ja, das ist die 00:18:20.764 --> 00:18:25.691 Norm des deutschen Rechts, die ungenehmigte Exporte unter Strafe stellt, 00:18:25.691 --> 00:18:30.609 genaugenommen §18, Absatz 2, Nr. 1 und Absatz 5 Nr. 1 dieses 00:18:30.609 --> 00:18:34.748 Außenwirtschaftsgesetzes. Ich erspare euch die juristischen Details. Es ist im 00:18:34.748 --> 00:18:37.430 Einzelnen ziemlich komplex. Diese Norm verweist auf die 00:18:37.430 --> 00:18:41.660 Außenwirtschaftsverordnung und die wiederum auf einen langen Anhang, wo dann 00:18:41.660 --> 00:18:47.015 quasi einzelne Kategorien von Gütern aufgeführt sind, vom Kampfpanzer bis zum 00:18:47.015 --> 00:18:49.720 Staatstrojaner kann man dann nachlesen, was man 00:18:49.720 --> 00:18:54.705 alles nur mit Genehmigung ausführen darf. Und wir sind der Auffassung, dagegen wurde 00:18:54.705 --> 00:19:00.539 verstoßen. Zwei rechtliche Fragen standen im Mittelpunkt unserer Bitte an den Chaos 00:19:00.539 --> 00:19:04.890 Computer Club, doch noch einmal ganz genau, sich diese Trojaner anzuschauen. 00:19:04.890 --> 00:19:09.680 Zwei rechtliche Fragen, oder, wie soll ich sagen, zwei Tatsachenfragen, zwei Fakten- 00:19:09.680 --> 00:19:13.870 Fragen, die aber eine große rechtliche Bedeutung haben. Und zwar zum einen … 00:19:13.870 --> 00:19:20.340 T: Zum einen der Herstellungszeitpunkt, was wichtig ist und relevant ist, wenn es 00:19:20.340 --> 00:19:27.244 darum geht herauszufinden: wurde diese Software nach dem Stichtag Mitte 2015 00:19:27.244 --> 00:19:30.680 hergestellt? U: Ja, genau. 00:19:30.680 --> 00:19:35.252 T: Wenn wir nachweisen können, dass eine Software erst zu einem bestimmten 00:19:35.252 --> 00:19:38.966 Zeitpunkt hergestellt wurde, dann können wir auch davon ausgehen, dass sie erst 00:19:38.966 --> 00:19:44.795 anschließend exportiert oder verkauft oder eingesetzt wird. Und die zweite wichtige 00:19:44.795 --> 00:19:49.402 Frage, wenn wir da jetzt mal ganz neutral an die Sache rangehen. Wer hat dieses 00:19:49.402 --> 00:19:52.830 Sample hergestellt? Es gibt den Anfangsverdacht, dass es sich hierbei um 00:19:52.830 --> 00:19:57.495 FinSpy von FinFischer handelt. Aber das ist eben die Frage, die geklärt werden 00:19:57.495 --> 00:20:02.470 sollte. Und das haben wir als Chaos Computer Club dann einfach mal getan. 00:20:02.470 --> 00:20:07.023 U: Und dazu gab es ja schon bisherige Analysen. Andere Leute haben sich auch 00:20:07.023 --> 00:20:12.571 schon mal FinFischer-Samples oder FinSpy- Samples angeschaut. Diese Analysen waren 00:20:12.571 --> 00:20:16.552 auch für euch der Ausgangspunkt. T: Genau, so ganz am Anfang hieß es ja 00:20:16.552 --> 00:20:20.308 auch, vor allen Dingen könnt ihr euch nicht mal diese ganzen Analysen anschauen, 00:20:20.308 --> 00:20:24.140 die da bisher veröffentlicht wurden, unter anderem sehr viel von Citizen Lab. Die 00:20:24.140 --> 00:20:28.389 haben sehr viel in diese Richtung gemacht, nicht nur FinFischer Produkte werden da 00:20:28.389 --> 00:20:33.703 von denen analysiert, sondern auch noch andere. Dann ging es eben darum, zu prüfen, 00:20:33.703 --> 00:20:37.550 ob das alles plausibel ist, was da drin ist, ob man das alles reproduzieren kann, 00:20:37.550 --> 00:20:41.356 ob man das Ganze dann auch nochmal als Bericht so zusammenfassen kann, dass es 00:20:41.356 --> 00:20:46.250 für deutsche Ermittlungsbehörden und ein deutsches Gericht auch verwertbar ist. 00:20:46.250 --> 00:20:50.600 Dazu haben wir uns dann auch noch ein Gutachten von anderen Dritten angeschaut, 00:20:50.600 --> 00:20:54.370 die so etwas ähnliches auch schon getan haben. Da gibt es schon einen 00:20:54.370 --> 00:21:02.902 Plausibilitätscheck aus 2018 von einer Firma. Und 2018 hat Access Now auch noch 00:21:02.902 --> 00:21:08.989 einmal einen Bericht, eine Zusammenfassung all dessen veröffentlicht. Und jetzt für 00:21:08.989 --> 00:21:15.030 die Klage gab es dann auch nochmal eine technische Analyse. Ganz speziell dieses 00:21:15.030 --> 00:21:21.150 adalet-Samples. Also dem eigentlichen Gegenstand der ganzen Klage. Und wir haben 00:21:21.150 --> 00:21:26.929 uns natürlich diese ganzen Dokumente angeguckt, haben halt geschaut, sind da 00:21:26.929 --> 00:21:30.594 irgendwo vielleicht noch Lücken, die wir füllen können? Gibt es Dinge, die wir 00:21:30.594 --> 00:21:34.072 ausführlicher beschreiben können, transparenter machen können? Und das war 00:21:34.072 --> 00:21:38.290 dann letztlich die Hauptarbeit, die wir dabei geleistet haben. Wer jetzt erwartet, 00:21:38.290 --> 00:21:42.060 dass es irgendwie total bahnbrechende Neuigkeiten gibt über irgendwelche FinSpy- 00:21:42.060 --> 00:21:47.374 oder FinFisher Trojaner, die Leute muss ich leider enttäuschen. Wir haben halt 00:21:47.374 --> 00:21:51.471 sehr viel der Arbeit anderer Leute verifiziert. Wir haben aber auch noch ein 00:21:51.471 --> 00:21:56.891 paar andere Indizien gefunden, die sehr viel schwerer wiegen als manche andere 00:21:56.891 --> 00:21:59.530 Punkte, die in den Reports vorher genannt werden. 00:21:59.530 --> 00:22:03.304 U: Und ihr habt schon, finde ich, einige sehr, sehr spannende technische Details 00:22:03.304 --> 00:22:07.162 noch rausgekramt, zu denen wir gleich noch kommen. Z. B diese Provisionierung, wie 00:22:07.162 --> 00:22:10.690 werden die Trojaner eigentlich angepasst? Das fand ich schon ein sehr, sehr 00:22:10.690 --> 00:22:14.861 spannendes technisches Detail. Ihr habt dann vorgestern war es, ne, gestern war 00:22:14.861 --> 00:22:19.005 es, die Analyse des CCC veröffentlicht. T: Genau das haben wir gestern schon 00:22:19.005 --> 00:22:22.953 veröffentlicht, damit man ein bisschen Material hat. Ich hoffe auch, dass es, 00:22:22.953 --> 00:22:27.233 wenn es die Zeit erlaubt, im Anschluss an diesen Talk noch ein bisschen Q&A gibt. 00:22:27.233 --> 00:22:31.859 Ja, wir haben einen sehr ausführlichen Bericht darüber geschrieben, wie wir das 00:22:31.859 --> 00:22:35.945 Ganze bewerten und wie wir die einzelnen Indizien gewichten und zu was für einem 00:22:35.945 --> 00:22:43.575 Schluss wir da gekommen sind. Was uns halt sehr wichtig war an der Arbeit: Wir haben 00:22:43.575 --> 00:22:47.845 am Ende auch alles veröffentlicht, im Gegensatz zu all den anderen 00:22:47.845 --> 00:22:51.940 Organisationen, die diese Arbeit auch schon und auch sehr viel Arbeit investiert 00:22:51.940 --> 00:22:57.388 haben. Wir haben sämtliche Samples, diese Schadsoftware-Samples haben wir auf GitHub 00:22:57.388 --> 00:23:01.580 veröffentlicht. Gibt’s nachher noch einen Link. 00:23:01.580 --> 00:23:09.172 Applaus T: Es gibt auch in diesem GitHub 00:23:09.172 --> 00:23:14.997 Repository gibt es auch sämtliche Werkzeuge und Zwischenergebnisse, die wir 00:23:14.997 --> 00:23:21.016 in unseren Analysen erlangt haben und entwickelt haben. Mit dem Ziel, dass jeder 00:23:21.016 --> 00:23:26.497 in der Lage ist, unsere Ergebnisse zu reproduzieren. Das heißt, ihr habt die 00:23:26.497 --> 00:23:30.780 Samples, ihr habt die Werkzeuge und die Vorgehensweise, die wir ausführlich in 00:23:30.780 --> 00:23:36.130 diesen 60 Seiten Bericht beschrieben haben. Und ihr könnt das alles 00:23:36.130 --> 00:23:41.776 nachvollziehen. Transparenz von unserer Seite. Wir haben eine lückenfüllende 00:23:41.776 --> 00:23:47.817 Zusammenfassung geschrieben. U: Und nochmal ganz kurz der „Auftrag“ 00:23:47.817 --> 00:23:51.278 Selbstverständlich kann man dem CCC keinen Auftrag geben. 00:23:51.278 --> 00:23:54.599 Insbesondere hat die GFF den CCC natürlich nicht bezahlt. Ja, das ist 00:23:54.599 --> 00:23:58.200 ganz wichtig zu sagen. Es ist nicht irgendwie eine gekaufte Stellungnahme, 00:23:58.200 --> 00:24:01.928 sondern wir haben einfach nur gebeten, wenn ihr euch dafür interessiert, schaut 00:24:01.928 --> 00:24:05.637 euch das doch mal an. Das wäre wahnsinnig hilfreich. Und ich finde in der Tat 00:24:05.637 --> 00:24:09.480 großartig, dass der Club jetzt in der Person von Thorsten insbesondere sich die 00:24:09.480 --> 00:24:13.810 Zeit genommen hat. Ja, das ist nochmal ganz kurz zusammenfassend der Auftrag. 00:24:13.810 --> 00:24:17.718 Analysen verifizieren, die es schon gibt, Lücken schließen in der Indizienkette und 00:24:17.718 --> 00:24:21.580 natürlich weitere Samples gezielt analysieren und die beiden zentralen 00:24:21.580 --> 00:24:26.670 Fragestellungen aus rechtlicher Perspektive: Wann ist dieser adalet- 00:24:26.670 --> 00:24:30.710 Trojaner aus der Türkei oder der in der Türkei eingesetzt wurde, hergestellt 00:24:30.710 --> 00:24:36.260 worden und wo kommt er tatsächlich her? Ja, und das sind jetzt eine ganze Reihe 00:24:36.260 --> 00:24:40.000 von Samples, die hier auf GitHub. T: Genau das. Hier sehen wir jetzt kurz 00:24:40.000 --> 00:24:45.120 mal so ein Listing der Samples, die wir analysiert haben. Das sind auch die 00:24:45.120 --> 00:24:51.770 Original Schadsoftwaredateien. Da ist also dieser Trojaner drinne, das befindet sich 00:24:51.770 --> 00:24:55.820 gerade alles in dem GitHub Repository von Linus Neumann, mit dem ich diese ganze 00:24:55.820 --> 00:25:00.990 Analyse durchgeführt habe. Vielen Dank auch nochmal an Linus. 00:25:00.990 --> 00:25:09.010 Applaus TS: Wir haben einige Nächte verbracht mit 00:25:09.010 --> 00:25:13.930 diesen tollen Trojanern. U: Eingesetzt wurden diese Samples eben 00:25:13.930 --> 00:25:17.868 in Türkei, sagst du, in Vietnam und in Myanmar. Das sind so die Länder, wo wir es 00:25:17.868 --> 00:25:20.310 wissen. T: Ja, was heißt Wissen, oder eben sehr 00:25:20.310 --> 00:25:24.640 stark annehmen. Es ist nicht so leicht zu sagen, wo sie eingesetzt wurden, wer sie 00:25:24.640 --> 00:25:30.250 gekauft hat. Man kann das schlussfolgern aus verschiedenen Indizien. Bei der Türkei 00:25:30.250 --> 00:25:36.890 ist es relativ leicht, sag ich mal im Kontext gesehen, weil wir ja auch diese 00:25:36.890 --> 00:25:41.371 Website hatten, die sich dann auch gezielt gegen die Zielgruppe richtete. Es gibt 00:25:41.371 --> 00:25:46.920 auch Samples, wo man relativ sicher sagen kann, dass sie z. B. in Myanmar eingesetzt 00:25:46.920 --> 00:25:55.150 wurden, weil da eine sehr bekannte, burmesische Social Platform genutzt wurde. 00:25:55.150 --> 00:25:59.830 Also, dieser Name wurde genutzt, um dieses Sample zu verbreiten. Das ist ein klares 00:25:59.830 --> 00:26:04.351 Indiz, dass das gegen diese Bevölkerungsgruppe ging. Bei Vietnam weiß 00:26:04.351 --> 00:26:09.370 ich nicht genau. Diese Atrribution ist halt eh schon ein schwieriges Thema. 00:26:09.370 --> 00:26:13.110 Genauso schwierig ist es eben herauszufinden, wo es eingesetzt wurde, 00:26:13.110 --> 00:26:17.091 weil die ganzen Metadaten, die man dann in den Samples findet, IP-Adressen, 00:26:17.091 --> 00:26:20.350 Telefonnummern und so weiter. Die sagen am Ende nicht viel aus. 00:26:20.350 --> 00:26:23.595 U: Dazu sehen wir gleich noch ein bisschen mehr. Aber fangen wir doch 00:26:23.595 --> 00:26:27.244 vielleicht an mit der ersten zentralen Frage, nämlich der Feststellung des 00:26:27.244 --> 00:26:31.116 Herstellungszeitpunktes. Dazu habt ihr euch eine ganze Reihe Gedanken gemacht, 00:26:31.116 --> 00:26:35.023 wie man darauf kommen könnte. T: Die zentralen Fragen waren, wann wurde 00:26:35.023 --> 00:26:38.800 das hergestellt? Also haben wir uns all diese ganzen Samples angesehen und haben 00:26:38.800 --> 00:26:45.797 geguckt, ob wir da Indizien finden, dass diese Software möglicherweise nach 2015 00:26:45.797 --> 00:26:50.820 hergestellt wurde. Da gibt es verschiedene Möglichkeiten. Grundsätzlich alles, was 00:26:50.820 --> 00:26:57.194 wir jetzt in den Binaries und in diesen Schadsoftware-Samples finden. Das ist dann 00:26:57.194 --> 00:27:01.490 so der frühestmögliche Zeitpunkt. Wenn ich beweisen kann, dass zum Beispiel eine 00:27:01.490 --> 00:27:06.470 Komponente dieser Schadsoftware erst im Mai 2016 überhaupt hergestellt oder 00:27:06.470 --> 00:27:10.640 veröffentlicht wurde, dann bedeutet das natürlich auch, dass das ganze 00:27:10.640 --> 00:27:15.270 Schadsoftware-Sample erst nach diesem Zeitpunkt hergestellt werden kann. Das ist 00:27:15.270 --> 00:27:19.142 der frühestmöglichen Zeitpunkt. Das kann also auch durchaus sein, dass es 2017 00:27:19.142 --> 00:27:23.039 zusammengebaut und verschickt und verkauft wurde. Das wissen wir nicht so genau. 00:27:23.039 --> 00:27:26.750 U: Aber jedenfalls, eine Library, die noch nicht veröffentlicht war, kann nicht 00:27:26.750 --> 00:27:29.750 eingebaut werden, ne? T: Genau deswegen haben wir sehr gezielt, 00:27:29.750 --> 00:27:34.280 geh nochmal zurück, sehr gezielt nach solchen Artefakten von Compilern gesucht 00:27:34.280 --> 00:27:38.570 oder irgendwelche Zeichenketten aus irgendwelchen Open-Source Produkten. Es 00:27:38.570 --> 00:27:43.770 gibt aber auch in diesen APK-Dateien. Das sind halt so die Android-Apps, liegen als 00:27:43.770 --> 00:27:48.420 APK vor, das ist technisch gesehen nichts weiter als ein ZIP-Archiv, was 00:27:48.420 --> 00:27:53.330 wahrscheinlich alle von euch kennen dürften. Und in diesen Archiven liegen 00:27:53.330 --> 00:27:57.570 dann auch Zertifikate der Entwickler, die dieses Paket veröffentlichen. Und anhand 00:27:57.570 --> 00:28:03.250 dieser Zertifikate kann man z. B. auch einen Zeitstempel einsehen, wann dieses 00:28:03.250 --> 00:28:10.230 Zertifikat erstellt wurde. Das sagt jetzt für unsere juristische Sichtweise nicht 00:28:10.230 --> 00:28:13.640 besonders viel aus, weil man kann ja ein Zertifikat mit einem beliebigen 00:28:13.640 --> 00:28:18.990 Zeitstempel herstellen. Ich kann ja sagen, ich gehe zurück in die Vergangenheit, oder 00:28:18.990 --> 00:28:21.750 ich erstelle das in der Zukunft. Das kann man alles machen. 00:28:21.750 --> 00:28:25.150 U: Nur warum sollte man das tun? T: Warum sollte man das tun? Vielleicht 00:28:25.150 --> 00:28:28.926 gibt’s einen guten Grund dafür. Aber wir haben uns ja auch aus diesem Grund und 00:28:28.926 --> 00:28:33.900 genau deshalb Samples angeschaut, die bis ins Jahr 2012 zurückreichen. Also wir 00:28:33.900 --> 00:28:43.740 haben uns diese Trojaner-APKs angesehen, die 2012 bis 2019 in die Öffentlichkeit 00:28:43.740 --> 00:28:49.909 gelangten. Und wir können zumindest sagen, wenn wir jetzt im Jahr 2019 sehen oder ein 00:28:49.909 --> 00:28:53.340 Muster erkennen können, dass bestimmte Zertifikate vielleicht auch in der 00:28:53.340 --> 00:28:56.880 Vergangenheit genutzt wurden, dann kann man sich schon fragen, ob das jetzt 00:28:56.880 --> 00:29:02.400 plausibel ist oder nicht. Ansonsten gibt es noch öffentliche Dokumentation. Dazu 00:29:02.400 --> 00:29:06.810 gehörte das Sample selber. Das haben wir auch nur aus dem Internet aus 00:29:06.810 --> 00:29:12.790 verschiedenen Quellen, aber gegeben. Deswegen ist es wichtig, sämtliche 28 00:29:12.790 --> 00:29:16.560 Samples, die wir da hatten, anzuschauen: Wann wurden die eigentlich im Einzelnen 00:29:16.560 --> 00:29:20.470 hergestellt? U: Ein Ansatzpunkt war der 00:29:20.470 --> 00:29:26.430 Herstellungszeitpunkt von Bibliotheken. T: Genau, hier sehen wir ein disassembly 00:29:26.430 --> 00:29:31.676 von einem Shared Object, was da mitgeliefert wurde, das bedeutet, diese 00:29:31.676 --> 00:29:38.810 Android-Anwendungen sind ja eigentlich nur Java-Anwendungen. Das heißt, da liegt Java 00:29:38.810 --> 00:29:44.759 Bytecode drin und in Java hat man auch die Möglichkeit, über das Java Native 00:29:44.759 --> 00:29:50.390 Interface auch anderen Code aufzurufen, der zum Beispiel vom Betriebssystem 00:29:50.390 --> 00:29:55.755 bereitgestellt wird, oder eben in C, also mit anderen Programmiersprachen 00:29:55.755 --> 00:29:59.940 entwickelte Libraries, die mitgeliefert werden und in dem Fall war; in diesem 00:29:59.940 --> 00:30:05.470 Sample gab’s noch so Shared Object Files. Das ist halt unter Linux-Betriebssysten haben 00:30:05.470 --> 00:30:09.591 sie die Endung .so, unter Windows gibt's ein ähnliches Konzept. Das sind dann 00:30:09.591 --> 00:30:13.361 dynamische Bibliotheken, die als DLL mitgeliefert werden. Und in dem Fall gab 00:30:13.361 --> 00:30:19.656 es eine Bibliothek, in der wir bestimmte Zeichenketten gefunden haben, die darauf 00:30:19.656 --> 00:30:26.431 hindeuten, dass das definitiv erst 2016 hergestellt worden sein kann. Das sieht 00:30:26.431 --> 00:30:30.400 man hier daran, das ist SQLite das ist ein Open-Source-Projekt, so eine Open-Source 00:30:30.400 --> 00:30:35.929 Datenbank. Und die hinterlässt dann in diesem Kompilat diesen String. Das ist ein 00:30:35.929 --> 00:30:41.303 Datum und irgendein Hash. Und wenn wir uns dann mal anschauen, okay, wann taucht 00:30:41.303 --> 00:30:45.370 denn dieser String eigentlich auf? Dann können wir uns auf der Open-Source-Projekt- 00:30:45.370 --> 00:30:52.731 Webseite anschauen, dass da tatsächlich die SQLite Version 3.13 im Mai 2016 00:30:52.731 --> 00:30:57.830 veröffentlicht wurde. Und lustigerweise sehen wir hier genau diese Checksumme mit 00:30:57.830 --> 00:31:03.730 genau dem gleichen String und somit können wir eigentlich 100% davon ausgehen, dass 00:31:03.730 --> 00:31:07.160 das hier sich sicherlich niemand ausgedacht hat im Jahr 2012. 00:31:07.160 --> 00:31:10.110 Ulf lacht TS: Es ist ziemlich unwahrscheinlich. 00:31:10.110 --> 00:31:17.100 Applaus T: Ich hoffe ich laser dir nicht die Augen. 00:31:17.100 --> 00:31:20.310 UB: Passt schon, ich schrei dann. Und dann habt ihr euch die 00:31:20.310 --> 00:31:23.973 Zertifikate angeschaut, mit denen die Software signiert worden 00:31:23.973 --> 00:31:27.800 ist, ne, die einzelnen Zertifizierungen? T: Das haben wir auch gemacht, das haben 00:31:27.800 --> 00:31:31.752 aber auch die anderen Researcher gemacht, die sich das vor uns angeschaut haben. Die 00:31:31.752 --> 00:31:35.400 haben das natürlich genauso analysiert. Aber wir wollten ja auch die Analysen 00:31:35.400 --> 00:31:38.970 analysieren, und das haben wir getan. Deswegen der Vollständigkeit halber in 00:31:38.970 --> 00:31:42.740 unserem Report natürlich auch nochmal ein Zeitstrahl. Wir haben später noch eine 00:31:42.740 --> 00:31:48.630 schöne Tabelle, wo man das gut sehen kann. Hier sehen wir den Output, wenn man sich 00:31:48.630 --> 00:31:52.900 dieses Zertifikat mal anschaut, was der Entwickler genutzt hat, um dieses Paket zu 00:31:52.900 --> 00:32:00.091 signieren. Hier sehen wir, dass es erzeugt wurde im Oktober 2016. Passt also 00:32:00.091 --> 00:32:04.130 zeitlich, wenn wir davon ausgehen, dass das Zertifikat erstellt wurde, als dieses 00:32:04.130 --> 00:32:10.400 Sample zusammengebaut wurde. Liegt halt auch nach Mai 2016. Bis wann das gültig 00:32:10.400 --> 00:32:16.230 ist, ist eigentlich völlig egal. Ja, das Schöne wäre jetzt eigentlich, was hätten 00:32:16.230 --> 00:32:20.010 wir jetzt hier, wenn wir da jetzt irgendwelche Werte manipulieren, wenn wir 00:32:20.010 --> 00:32:27.220 es zurück datieren? Schön. Dann könnten wir Researcher in die Irre führen, wenn 00:32:27.220 --> 00:32:31.460 jetzt hier zum Beispiel stehen würde, das Zertifikat wurde 2012 erstellt. Dann 00:32:31.460 --> 00:32:35.737 könnten wir überhaupt gar nichts darüber aussagen. So vielleicht schon eher, was 00:32:35.737 --> 00:32:39.360 hier noch auffällig ist, das wird später noch relevant, es gibt auch diese 00:32:39.360 --> 00:32:44.790 Fingerprints für diese Zertifikate. Das sind diese langen SHA-Werte hier. Das ist 00:32:44.790 --> 00:32:51.710 ein kryptographischer Hash über dieses Zertifikat, über den key und der ist 00:32:51.710 --> 00:32:59.024 einmalig. Also, wenn wir uns jetzt in den 28 Samples alle Zertifikate angucken, dann 00:32:59.024 --> 00:33:03.831 vergleichen wir natürlich auch diesen SHA-Wert, weil das ist der Fingerprint, 00:33:03.831 --> 00:33:07.830 das drückt das schon ganz gut aus. Das ist ein Fingerabdruck, wenn wir genau diesen 00:33:07.830 --> 00:33:12.080 Fingerabdruck in einem anderem Sample finden, dann können wir zumindest auch 00:33:12.080 --> 00:33:16.280 eine Aussage darüber treffen, dass beide Samples, unabhängig davon, wann sie 00:33:16.280 --> 00:33:20.140 jeweils veröffentlicht wurden, dass beide vom gleichen Hersteller stammen. Und das 00:33:20.140 --> 00:33:23.890 ist auch ein wichtiger Punkt für diese ganze Schlussfolgerung am Ende. 00:33:23.890 --> 00:33:28.450 U: Zunächst mal aber können diese beiden Aspekte, die du genannt hast, die 00:33:28.450 --> 00:33:34.740 Bibliotheken und die Zertifikate im Grunde den Schluss tragen, dass dieses adalet- 00:33:34.740 --> 00:33:39.800 Sample jedenfalls nicht vor dem 18. Mai 2016 erstellt worden sein kann. Einfach 00:33:39.800 --> 00:33:42.720 weil es da diese SQlite-Bibliothek noch nicht gab. 00:33:42.720 --> 00:33:47.460 T: Genau, das ist ein so schweres Indiz, dass ich definitiv sagen kann, dass es 00:33:47.460 --> 00:33:51.310 nicht vor Mai 2016 hergestellt worden ist. UB: Damit liegt dieses Datum jedenfalls 00:33:51.310 --> 00:33:55.090 nach dem Inkrafttreten der Verbote, von denen ich anfangs gesprochen habe. Das 00:33:55.090 --> 00:33:58.928 heißt also, dieses Sample wäre dann, wenn es tatsächlich in die Türkei exportiert 00:33:58.928 --> 00:34:04.470 worden ist, unter Verstoß dagegen exportiert worden. Zweiter Aspekt 00:34:04.470 --> 00:34:09.118 vielleicht noch wichtiger, die Feststellung der Herkunft. Was für ein 00:34:09.118 --> 00:34:13.263 Vieh war denn jetzt eigentlich dieses adalet-Trojanerchen? 00:34:13.263 --> 00:34:20.649 T: Dafür haben wir, wie ich sagte, Samples aus dem Zeitraum von sieben Jahren 00:34:20.649 --> 00:34:25.369 uns angeschaut und geguckt. Was haben die für Gemeinsamkeiten? Was lässt darauf 00:34:25.369 --> 00:34:29.290 schließen, dass die aus einem Hause stammen? Da braucht uns in dem Moment noch 00:34:29.290 --> 00:34:34.181 gar nicht interessieren, wie dieses Haus überhaupt heißt. Uns ist nur wichtig 00:34:34.181 --> 00:34:37.850 gewesen herauszufinden, ob die einen Zusammenhang haben. Dafür haben wir diese 00:34:37.850 --> 00:34:41.521 Code-Signing-Zertifikate miteinander verglichen, wie ich eben schon sagte. Es 00:34:41.521 --> 00:34:45.041 gibt noch ein paar andere Indizien übrigens, für diese Zeitgeschichte. Aber 00:34:45.041 --> 00:34:48.609 die spielt jetzt hier keine besonders große Rolle. Der Coding-Style ist auch 00:34:48.609 --> 00:34:52.220 eine wichtige Rolle. Wie ich schon sagte, diese APKs, diese Anwendungen, sind 00:34:52.220 --> 00:34:57.511 eigentlich in Java programmiert. Man kann auch noch Shared-Object-Bibliotheken 00:34:57.511 --> 00:35:01.250 daneben legen, die vielleicht in anderen Programmiersprachen entwickelt wurden. 00:35:01.250 --> 00:35:07.550 Aber man kann sowohl im Dekompilat des Java-Codes als auch im Disassembly dieser 00:35:07.550 --> 00:35:13.508 Bibliotheken einen gewissen Coding-Style ablesen. Man kann verschiedene 00:35:13.508 --> 00:35:17.470 Variablennamen miteinander vergleichen, wenn keine Obfuscation am Start war. Also 00:35:17.470 --> 00:35:24.210 Mittel, um Code-Herkunft und Code-Struktur zu verschleiern. Wir können die Code-Basis 00:35:24.210 --> 00:35:27.990 miteinander vergleichen, also auf einer rein funktionellen Ebene. Wir können uns 00:35:27.990 --> 00:35:31.720 anschauen. Sind die Funktionen in der einen Anwendung vorhanden, die aus dem 00:35:31.720 --> 00:35:35.190 Jahr 2012 stammt, und sind die gleichen Funktionen auch vorhanden in der 00:35:35.190 --> 00:35:40.500 Anwendung, die aus 2014 stammt und 2017 und so weiter? Das können wir schon 00:35:40.500 --> 00:35:45.070 miteinander vergleichen und auch Diffs feststellen, also Unterschiede zwischen 00:35:45.070 --> 00:35:49.440 den Versionen. So können wir von einer Evolution sprechen oder eine Beobachtung 00:35:49.440 --> 00:35:55.500 dieser Evolution einer bestimmten Schadsoftware. Wir haben sehr stark darauf 00:35:55.500 --> 00:36:01.550 geachtet, ob wir zum Beispiel sehen können, welche Sprache, welche 00:36:01.550 --> 00:36:07.640 Muttersprache die Entwickler sprechen. Das sehen wir an manchen Stellen sehr 00:36:07.640 --> 00:36:11.620 deutlich. Komme ich nachher noch mit Beispielen zu. Dann schauen wir uns auch 00:36:11.620 --> 00:36:14.760 an, wann und wie die provisioniert wurden und ob es 00:36:14.760 --> 00:36:18.490 da irgendwelche Ähnlichkeiten gibt. U: Provisionierung bedeutet quasi, dass 00:36:18.490 --> 00:36:22.270 dieser Trojaner jeweils angepasst wurde für den spezifischen Einsatzzweck. Das 00:36:22.270 --> 00:36:26.170 heißt, dieser Trojaner ist im Prinzip eine Massenware oder jedenfalls eine vielfach 00:36:26.170 --> 00:36:29.770 eingesetzte Software. Aber für das jeweilige Land wurden dann 00:36:29.770 --> 00:36:33.850 unterschiedliche Parameter gesetzt. Dazu kommen wir auch gleich noch. Das Spannende 00:36:33.850 --> 00:36:37.622 dabei ist, was Thorsten gerade beschrieben hat. Das sind zunächst mal vor allem 00:36:37.622 --> 00:36:41.210 Parallelen zwischen unterschiedlichen Samples. Das heißt, da kann man sagen, 00:36:41.210 --> 00:36:44.880 diese Samples kommen wohl mehr oder weniger aus derselben Küche. Aber das sagt 00:36:44.880 --> 00:36:48.740 ja zunächst mal noch nicht, welche Küche das ist. Um das sagen zu können, braucht 00:36:48.740 --> 00:36:53.650 es noch einen zweiten Schritt, nämlich das Finden von Samples bestätigter Herkunft. 00:36:53.650 --> 00:36:57.350 Das heißt, wenn man weiß, bestimmte Samples gehören zusammen, kommen aus 00:36:57.350 --> 00:37:01.450 demselben Haus, und man kann dann wenigstens ein Sample oder zwei Samples 00:37:01.450 --> 00:37:05.490 einem ganz konkreten Hersteller zuweisen. Dann gilt es, jedenfalls mit sehr hoher 00:37:05.490 --> 00:37:10.780 Wahrscheinlichkeit, auch für alle anderen Samples aus dieser Herstellungslinie. Und 00:37:10.780 --> 00:37:14.380 da muss man ganz ehrlich sagen, sind wir zu großer Dankbarkeit verpflichtet. 00:37:14.380 --> 00:37:21.870 T: Ja, Phineas Fisher hatte einen größeren Batzen Daten aus dem Hause 00:37:21.870 --> 00:37:24.720 FinFisher getragen und veröffentlicht. U: Tipp! 00:37:24.720 --> 00:37:29.660 T: Es gibt da ein 41 Gigabyte großes File, wo sehr viele Samples drinne sind, 00:37:29.660 --> 00:37:32.200 die wir auch analysiert haben. U: Hier sieht man das. 00:37:32.200 --> 00:37:37.090 T: Vielen Dank nochmal Phineas Fisher! Applaus 00:37:37.090 --> 00:37:43.440 U: Mit anderen Worten, es ist für diese Analyse ein großer Vorteil, dass es 00:37:43.440 --> 00:37:48.900 bestimmte Samples gibt, die aus diesem Phineas Fisher Hack stammen und die man 00:37:48.900 --> 00:37:52.430 mit sehr großer Wahrscheinlichkeit aufgrund vieler Indizien dieser 00:37:52.430 --> 00:37:57.137 Firmengruppe FinFisher zuordnen kann. Das heißt, man hat 2 Anker, oder wieviele 00:37:57.137 --> 00:37:59.330 Samples sind da drin? 2? T: Jaja. 00:37:59.330 --> 00:38:03.580 U: Das heißt, man hat quasi 2 Ankerpunkte und kann sich dann von diesen Ankerpunkten 00:38:03.580 --> 00:38:08.220 über den Vergleich von Samples weiter vorhangeln. Aber das ändert natürlich 00:38:08.220 --> 00:38:13.780 nichts daran: Attribution is hard. T: Sehr hart. Wir suchen also natürlich 00:38:13.780 --> 00:38:18.360 noch weiter nach Indizien, die auf den Urheber schließen lassen. Die 00:38:18.360 --> 00:38:22.420 Attributierung von Schadsoftware, wenn mal irgendwie wieder der Bundestag gehackt 00:38:22.420 --> 00:38:26.370 wurde oder irgendjemand anders, da kommen dann immer ganz schnell Leute, die sagen, 00:38:26.370 --> 00:38:30.130 die Russen waren es, die Chinesen waren es und so weiter. Das ist alles nicht so 00:38:30.130 --> 00:38:34.020 leicht. Wir müssen diese Attributierung allerdings auch ein Stück weit durchführen 00:38:34.020 --> 00:38:39.110 und hangeln uns dann aber auch entlang an dem jeweiligen Kontext, zum Beispiel, wo 00:38:39.110 --> 00:38:47.520 so ein Sample eingesetzt wurde. Wie dieses adalet-Sample zum Beispiel. Es gibt ja 00:38:47.520 --> 00:38:52.120 grundsätzlich die Möglichkeit, das auch zu faken. Wenn ich sage, ich bin jetzt 00:38:52.120 --> 00:38:57.020 irgendwie irgendeine Hackergruppe oder ein Konkurrent von FinFisher, dann will ich 00:38:57.020 --> 00:39:01.620 die vielleicht in einem schlechteren Licht dastehen lassen. Und fake jetzt vielleicht 00:39:01.620 --> 00:39:05.880 mal irgendwie Malware von denen und mache dann so False-FlagGeschichten. Das ist 00:39:05.880 --> 00:39:10.470 natürlich alles möglich, aber in diesen einzelnen Fällen relativ unwahrscheinlich. 00:39:10.470 --> 00:39:12.670 U: Auch sowas könnte man theoretisch faken. 00:39:12.670 --> 00:39:18.240 T: Das kann man definitiv faken. Das ist jetzt, was wir jetzt hier sehen, die 00:39:18.240 --> 00:39:21.290 verarbeitete Ausgabe von so einer Konfiguration, von so einer 00:39:21.290 --> 00:39:25.261 Provisionierung. wie Ulf schon sagte, diese einzelnen Samples werden ja nicht 00:39:25.261 --> 00:39:28.800 jedes Mal neu kompiliert und neu entwickelt. Da gibt es dann einfach 00:39:28.800 --> 00:39:33.390 verschiedene Parameter, die für den Case des jeweiligen Einsatzes notwendig sind. 00:39:33.390 --> 00:39:38.180 Und das wäre dann so eine Konfiguration. Da steht dann jetzt zum Beispiel, ja der 00:39:38.180 --> 00:39:42.680 Proxy fürs nach-Hause-Telefonieren hat die IP-Adresse oder den Hostnamen. Dann sieht 00:39:42.680 --> 00:39:49.400 man hier auch noch eine TargetID, in dem Fall adalet. Das hat, wer auch immer 00:39:49.400 --> 00:39:53.000 diesen Trojaner zusammengebaut hat, sich ausgedacht. Dann gibt es noch 00:39:53.000 --> 00:39:58.140 Telefonnummern, wo SMS hingeschickt werden oder wo angerufen werden kann. Und in dem 00:39:58.140 --> 00:40:03.070 Fall kann man ganz gut sehen, dass diese Attributierung schlecht, hard ist. Denn 00:40:03.070 --> 00:40:07.450 die IP-Adresse stammt aus Deutschland. Die Telefonnummer ist eine israelische, und 00:40:07.450 --> 00:40:12.980 die andere Telefonnummer ist eine internationale Mehrwert-Rufnummer. Da 00:40:12.980 --> 00:40:18.300 lässt sich jetzt noch nicht so stark darauf schließen, dass das tatsächlich von 00:40:18.300 --> 00:40:21.880 türkischen Behörden eingesetzt wurde. U: Etwas anders sieht es aus bei der 00:40:21.880 --> 00:40:26.260 Familie der Samples, die ihr analysiert habt. Denn da hilft euch ja das 00:40:26.260 --> 00:40:28.490 Zertifikat, das zum Signieren verwendet wurde. 00:40:28.490 --> 00:40:32.300 T: Genau das sind ein paar Indizien, die wir da herausgepickt haben, anhand derer 00:40:32.300 --> 00:40:36.110 wir irgendwie bestimmte Gruppen zusammenfassen können. Also was gehört 00:40:36.110 --> 00:40:42.640 definitiv zusammen, was nicht? Diese Liste sieht jetzt sehr wirr aus. Was hier grün 00:40:42.640 --> 00:40:46.613 markiert ist, ist das adalet-Sample, von dem wir quasi so ausgehen. Wir wollen also 00:40:46.613 --> 00:40:53.560 Parallelen finden zu diesem adalet-Sample. Alles, was hier rot markiert ist, hat eine 00:40:53.560 --> 00:40:57.671 Parallele. Das stammt nämlich alles aus dem Leak von Phineas Fischer. Alles was da 00:40:57.671 --> 00:41:04.960 oben gelb markiert ist, wurde 2012 schon mal veröffentlicht und es gibt 00:41:04.960 --> 00:41:09.121 entsprechende Analysen und verschiedene Indizien, die darauf hinweisen, dass es 00:41:09.121 --> 00:41:13.960 auch aus dem Hause FinFischer stammt. Wenn wir jetzt mal davon ausgehen, dass das 00:41:13.960 --> 00:41:17.780 hier aus dem Hause FinFisher stammt, weil es in dem Leak war, dann haben wir hier 00:41:17.780 --> 00:41:23.560 ein Sample, das nennt sich „421and“. „421“ scheint die Versionsnummer zu sein, „and“ 00:41:23.560 --> 00:41:30.740 heißt Android. Wir sehen hier, das ist dieser Fingerprint von diesem Zertifikat, 00:41:30.740 --> 00:41:34.820 was ich vorhin noch erklärt habe. Diesen Fingerprint finden wir hier oben wieder. 00:41:34.820 --> 00:41:40.550 Zwei Jahre vorher sind da oben schon Samples in die Öffentlichkeit gelangt, die 00:41:40.550 --> 00:41:45.020 genau den gleichen Fingerprint haben. Und dann haben wir hier oben dieses „Andriod“. 00:41:45.020 --> 00:41:49.070 Das ist ein Tippfehler, aber der stammt halt so von denen. Das muss ein Demo- 00:41:49.070 --> 00:41:56.280 Sample sein. Da hat diese Firma offenbar mal gezeigt, was dieser Trojaner so kann. 00:41:56.280 --> 00:42:01.220 Und dann haben sie den halt so provisioniert, mit Zeichenketten, also 00:42:01.220 --> 00:42:07.710 Webserver-URLs, die auf Gamma International schließen lassen. Und es 00:42:07.710 --> 00:42:11.870 wurde aber auch noch ein in-the-wild- Sample damit signiert, mit dem gleichen 00:42:11.870 --> 00:42:17.630 Zertifikat. Dieses „derise“ ist das, was in Vietnam identifiziert wurde und auch 00:42:17.630 --> 00:42:23.940 vietnamesische IP-Adressen, Telefonnummern und so weiter drinne hat. Wie gesagt 00:42:23.940 --> 00:42:28.230 Attributierung ist schwierig, aber an dem Fall kann man auf jeden Fall sagen, dass 00:42:28.230 --> 00:42:34.870 hier Demo-Samples und in-the-wild-Samples definitiv aus einem Hause stammen, anhand 00:42:34.870 --> 00:42:41.150 dieser Zertifikats-Fingerprints. U: Der nächste Schritt, den ihr gemacht 00:42:41.150 --> 00:42:45.420 habt, ist tatsächlich euch mal die Struktur der einzelnen Samples anzuschauen, also 00:42:45.420 --> 00:42:49.850 insbesondere wie diese Software von ihrem logischen Ablauf her funktioniert. 00:42:49.850 --> 00:42:53.660 T: Genau. Wir haben uns dann verschiedene Funktionen angeguckt und haben halt mal 00:42:53.660 --> 00:42:56.940 geguckt „Was sehen wir so an den Funktionen?“. Ich habe ja gesagt, wir 00:42:56.940 --> 00:43:00.760 schauen uns auch so ein bisschen diesen Coding-Style an, was für Variablen werden 00:43:00.760 --> 00:43:04.420 da genommen, wenn wir uns Java-Code angucken können, der nicht obfuskiert ist. 00:43:04.420 --> 00:43:10.640 Hier sehen wir zwei Samples und zwar das, was aus dem Leak stammt von 2014. Das ist 00:43:10.640 --> 00:43:17.460 auch irgendwie so eine Art Demo. Und 2016 – also, ich sage jetzt mal 2016, weil das 00:43:17.460 --> 00:43:23.670 definitiv noch 2016 hergestellt wurde – das adalet-Sample. Sie hatten hier so ein 00:43:23.670 --> 00:43:26.940 Refactoring durchgeführt. Also eine Umbenennung aller Variablen und 00:43:26.940 --> 00:43:33.290 Funktionsnamen und so weiter. Das ist ein und dieselbe Funktion, das kann man sehen, 00:43:33.290 --> 00:43:37.200 wenn man sich den Code durchliest. Jetzt wollte ich hier aber keinen Source Code an 00:43:37.200 --> 00:43:42.740 die Wand werfen. Deswegen habe ich hier so einen Call Flow, abgeleitet aus dem Source 00:43:42.740 --> 00:43:49.440 Code. Das ist eine Funktion namens Run. In dem Sample von 2014 liegt das in einer 00:43:49.440 --> 00:43:55.310 Klasse namens SMS. In dem Sample adalet legt es in einer Klasse namens s1ms, was 00:43:55.310 --> 00:44:01.650 in Leetspeak hin geschrieben wurde. Und wir sehen hier ganz klar, dass in dieser 00:44:01.650 --> 00:44:05.560 Funktion effektiv der gleiche Code ausgeführt wird mit ganz marginalen 00:44:05.560 --> 00:44:11.250 Abweichungen. Das kann, zumindest nach unserer Einschätzung, definitiv kein 00:44:11.250 --> 00:44:16.510 Zufall sein. Das heißt, das ist eine Weiterentwicklung der ganzen Samples aus 00:44:16.510 --> 00:44:22.480 dem Jahr 2012, 2014 und jetzt auch in 2016. Das ist die Information, was wir da 00:44:22.480 --> 00:44:27.290 rausziehen konnten. U: Und zugleich kann man ja auch Schlüsse 00:44:27.290 --> 00:44:32.280 ziehen aus diesem Leetspeak. Denn wenn man sich überlegt: der Begriff SMS ist etwas 00:44:32.280 --> 00:44:35.810 typisch Deutsches. Man versteht es vielleicht noch in anderen Ländern, aber 00:44:35.810 --> 00:44:40.780 man spricht normalerweise nicht von SMS. Jedenfalls nicht im englischen Sprachraum 00:44:40.780 --> 00:44:45.260 und insbesondere, wenn man dann noch das Verb „simsen“ sich überlegt. Also in 00:44:45.260 --> 00:44:51.170 Leetspeak dann „S 1 M S“ wie simsen. Das ist was ganz typisch deutsches. Und ich 00:44:51.170 --> 00:44:54.369 jedenfalls kann mir nicht so richtig vorstellen, dass ein türkischer 00:44:54.369 --> 00:44:56.650 Programmierer mit einem Mal von "simsen" spricht. 00:44:56.650 --> 00:45:00.090 T: Genauso wenig kann ich mir vorstellen, dass das ein englischsprachiger 00:45:00.090 --> 00:45:05.030 Programmierer tut. Dieses Wort „simsen“ wurde irgendwann mal modern und jeder hat 00:45:05.030 --> 00:45:09.380 es benutzt sodass es sogar in den Duden aufgenommen wurde. Und das Wort simsen 00:45:09.380 --> 00:45:12.921 findet man halt wirklich nur im deutschen Sprachgebrauch, und es ist schwer 00:45:12.921 --> 00:45:16.910 vorstellbar, dass jemand, der nicht Deutsch-Muttersprachler ist, dieses Wort 00:45:16.910 --> 00:45:23.260 in einem Code verwenden würde, wenn es im Kontext um SMS abfangen geht und das Ganze 00:45:23.260 --> 00:45:27.100 auch noch mit Leetspeak verschleiert wird. U: Aber ihr habt ja noch eine andere 00:45:27.100 --> 00:45:31.020 Technologie, Stichwort Verschleierung, gefunden, die außerordentlich pfiffig ist, 00:45:31.020 --> 00:45:34.890 muss man sagen. Jedenfalls ich war sehr beeindruckt, als ich diese Analyse gelesen 00:45:34.890 --> 00:45:38.760 habe, nämlich wie eigentlich diese Daten, diese Parameter, die wir eben schon kurz 00:45:38.760 --> 00:45:42.900 gesehen haben zur Provisionierung eigentlich in den Viren-Samples abgelegt 00:45:42.900 --> 00:45:47.600 oder eigentlich versteckt worden. T: Da hat sich der Entwickler ein 00:45:47.600 --> 00:45:51.320 Verfahren ausgedacht, das ist so eine Art Covered Channel, also ein versteckter 00:45:51.320 --> 00:45:54.790 Kanal, so ein bisschen ähnlich wie Steganografie, wenn man das kennt. Ich 00:45:54.790 --> 00:45:58.200 verstecke Informationen in Dateistrukturen, sodass man das 00:45:58.200 --> 00:46:03.010 automatisiert oder mit bloßem Auge nicht besonders leicht erkennen kann. Was für 00:46:03.010 --> 00:46:06.940 Konfigurationen muss man hier verstecken? Wie ich schon sagte, es gibt halt so die 00:46:06.940 --> 00:46:10.864 Telefonnummern, die angerufen werden oder wo SMS hin geschickt werden. Es gibt IP- 00:46:10.864 --> 00:46:15.130 Adressen, zu denen sich die Schadsoftware verbindet, damit ein Command-and-Control- 00:46:15.130 --> 00:46:20.100 Server da übernehmen und lenken kann. Und wie lange die Maßnahme dauert et cetera. 00:46:20.100 --> 00:46:24.770 Das alles ist in einer Konfiguration abgespeichert, die irgendwie in dieses APK 00:46:24.770 --> 00:46:28.510 rein gedrückt werden muss. U: Und dabei ist euch aufgefallen, als 00:46:28.510 --> 00:46:32.580 ihr euch die Samples angesehen habt, dass alle ein identisches Verfahren einsetzen. 00:46:32.580 --> 00:46:36.200 T: Die benutzen alle das identische Verfahren. Also, wir haben das jetzt auch 00:46:36.200 --> 00:46:40.100 nicht entdeckt. Dieses Verfahren haben andere, Josh Grunzweig beispielsweise 00:46:40.100 --> 00:46:44.860 2012, auch schon in einem Blog-Beitrag veröffentlicht, als er FinSpy-Samples 00:46:44.860 --> 00:46:49.880 analysiert hat. Das ist nichts bahnbrechendes Neues, aber wir konnten 00:46:49.880 --> 00:46:56.390 zumindest jetzt einfach mal über die 7 Jahre hinweg beobachten, dass dieses 00:46:56.390 --> 00:46:59.910 Verfahren in allen Samples eingesetzt wird. Und damit, da es eben auch kein 00:46:59.910 --> 00:47:03.761 Standardverfahren ist, um in irgendwelchen APKs Schadsoftware zu verstecken oder 00:47:03.761 --> 00:47:08.360 überhaupt Daten zu verstecken, können wir im Grunde genommen davon ausgehen, dass 00:47:08.360 --> 00:47:13.070 diese Technologie wirklich von einem Hersteller stammt. Das heißt, dass all 00:47:13.070 --> 00:47:17.030 diese Samples, diese 28 Stück, die wir uns angeguckt haben, dass die aus einem Hause 00:47:17.030 --> 00:47:19.370 stammen. U: Und wie sieht das jetzt genau aus? Das 00:47:19.370 --> 00:47:22.610 hier ist der Datei-Kopf. Nee, das ist nicht der Datei-Kopf sondern … 00:47:22.610 --> 00:47:26.420 T: Das sind Teile eines … Also ein APK ist, wie ich schon sagte, technisch 00:47:26.420 --> 00:47:30.850 gesehen nur ein ZIP-Archiv. Und in diesem ZIP-Archiv stecken Metainformationen über 00:47:30.850 --> 00:47:37.180 die im Archiv enthaltenen Dateien. Und dafür gibt es dann diese Central Directory 00:47:37.180 --> 00:47:42.810 Structure und verschiedene Felder. Das ist dann so ein Header. Da sind verschiedene 00:47:42.810 --> 00:47:49.430 Bytes und Bitfelder festgelegt, die die Eigenschaften dieser im Archiv enthaltenen 00:47:49.430 --> 00:47:56.300 Datei beschreiben. Eine wichtige Metainformation, die genutzt werden kann, 00:47:56.300 --> 00:48:00.671 um Daten zu transportieren, ohne dass man es leicht sieht, sind diese 00:48:00.671 --> 00:48:08.290 Dateisystemattribute. Die ZIP- Spezifikation sieht vor, dass es 2 Byte 00:48:08.290 --> 00:48:14.380 oder 16 Bit für interne File-Attribute gibt. Und sie sieht vor, dass es 32 Bit 00:48:14.380 --> 00:48:20.000 für die Dateisystemattribute auf dem Ziel- Betriebssystem gibt. Somit haben wir hier 00:48:20.000 --> 00:48:26.700 6 Byte pro Central Directory Structure zur Verfügung, um Daten zu verstecken, denn 00:48:26.700 --> 00:48:30.710 wir können da ja beliebig idiotische File- Attribute setzen. Und das ist das, was sie 00:48:30.710 --> 00:48:34.710 gemacht haben. Die ergeben dann zwar, wenn man die Dateien entpackt, auf dem Ziel- 00:48:34.710 --> 00:48:38.530 Betriebssystem keinen Sinn mehr, müssen sie aber auch nicht, weil die Daten gar 00:48:38.530 --> 00:48:42.380 nicht genutzt werden. Das sind einfach irgendwelche Dummy-Dateien. Das sieht man 00:48:42.380 --> 00:48:48.380 hier. Hier sehen wir im Hex-Editor so ein APK und diese Strukturen. Wir haben diese 00:48:48.380 --> 00:48:53.550 Signatur, diese PKZIP-Signatur ganz am Anfang, die ist hier gelb markiert, und 00:48:53.550 --> 00:49:00.500 ein Offset von 36 Byte später, kommen dann diese 6 Byte Dateisystemattribute. Und wer 00:49:00.500 --> 00:49:05.050 sich so ein bisschen mit Unix oder Dateisystemen auskennt, sieht auch, dass 00:49:05.050 --> 00:49:11.250 das jetzt hier keine Bitfelder sind für Attribute, die Sinn ergeben. Nein, was wir 00:49:11.250 --> 00:49:19.141 hier sehen, sind BASE64 codierte Daten. Und wenn man jetzt dieses ZIP-File einmal 00:49:19.141 --> 00:49:25.510 parst und sich alle diese CDS-Signaturen herauspickt und dann diese Dateisystem … 00:49:25.510 --> 00:49:32.810 diese Dateiattribute aneinander hängt, anschließend diesen ganzen String, der 00:49:32.810 --> 00:49:39.920 dabei herausfällt BASE64-dekodiert, dann fällt daraus später eine Binärdatei, die 00:49:39.920 --> 00:49:44.470 genau die Konfiguration dieser Schadsoftware beinhaltet. Das wurde, 00:49:44.470 --> 00:49:47.910 wie gesagt, alles schon mal dokumentiert, wir haben das jetzt einfach 00:49:47.910 --> 00:49:51.860 alles noch einmal nachvollzogen und auf alle Samples angewendet und geguckt, was 00:49:51.860 --> 00:49:55.300 dabei rausfällt. Das heißt dann im ersten Schritt: Wir müssen die Dateien 00:49:55.300 --> 00:49:58.510 extrahieren. In einem zweiten Schritt müssen wir die Dateien parsen. 00:49:58.510 --> 00:50:02.360 U: Und das Tool dazu findet sich jetzt wieder auf der Website. Das heißt, das 00:50:02.360 --> 00:50:06.180 müsst ihr uns oder vorallem Thorsten und Linus nicht glauben. Das könnt ihr alles 00:50:06.180 --> 00:50:09.900 selber nachprüfen, wenn ihr eines der Samples runterladet und die Tools darüber 00:50:09.900 --> 00:50:13.630 laufen lasst. Und wir hoffen, dass auf diese Art und Weise noch weitere Samples 00:50:13.630 --> 00:50:17.460 analysiert werden können. Das ist jetzt noch mal ein Überblick, wie sowas dann in 00:50:17.460 --> 00:50:21.410 der Gesamtheit aussehen kann. Wir müssen ein ganz bisschen springen an der Stelle 00:50:21.410 --> 00:50:25.430 und schauen, wo wir dann weitermachen. Genau das ist dann so eine Konfiguration, 00:50:25.430 --> 00:50:28.950 wie sie in der Summe aussieht. T: Genau, das ist jetzt dieses „Andriod“ 00:50:28.950 --> 00:50:34.290 Beispiel, was 2012 schon auf VirusTotal gelandet ist. Hier sehen wir, wie ich 00:50:34.290 --> 00:50:38.637 schon angedeutet habe, es gibt dann so Hostnamen, die schon den Namen beinhalten. 00:50:38.637 --> 00:50:42.020 Ich muss aber auch nochmal dazusagen: Es hat jetzt keine besonders große 00:50:42.020 --> 00:50:45.830 Aussagekraft, wenn man ein Sample für sich betrachtet und solche Zeichenketten da 00:50:45.830 --> 00:50:50.030 drin findet. Denn Josh Grunzweig, der das schon 2012 in seinem Blog dokumentiert 00:50:50.030 --> 00:50:53.490 hat, hat auch schon ein Tool veröffentlicht auf GitHub, womit man genau 00:50:53.490 --> 00:50:59.671 so eine Konfiguration herstellen kann und in so ein APK reindrücken kann. Das heißt, 00:50:59.671 --> 00:51:02.550 man könnte im Grunde genommen sowas auch faken. 00:51:02.550 --> 00:51:07.030 U: Das heißt, die Aussage ist tatsächlich weniger „Was steht drin in diesen 00:51:07.030 --> 00:51:11.700 versteckten Konfigurationsinformationen?“ Sondern die Aussage ist: Alle Samples 00:51:11.700 --> 00:51:15.820 verwenden die gleiche Technik, die gleiche proprietäre und auch ziemlich ausgefuchste 00:51:15.820 --> 00:51:20.540 Technik, um diese Daten zu verstecken in der APK-Datei. Und diese Gleichheit ist 00:51:20.540 --> 00:51:24.993 die eigentliche Aussage dieser Analyse. Alle untersuchten Samples nutzen eben 00:51:24.993 --> 00:51:28.260 diesen proprietären Mechanismus. Und du sagst, das Format wurde aber 00:51:28.260 --> 00:51:32.760 weiterentwickelt? T: Es sieht ganz danach aus, wenn man, 00:51:32.760 --> 00:51:36.980 sich den Inhalt dieser Binärdatei anguckt. Sie benutzen dann so eine Art Directory, 00:51:36.980 --> 00:51:42.661 um Nummern bestimmten Funktionen oder Variablennamen zuzuweisen. Das ist auch 00:51:42.661 --> 00:51:47.080 der Punkt, was es einfach macht, diese Konfiguration zu parsen, zu verarbeiten 00:51:47.080 --> 00:51:50.300 und herauszufinden, welche Werte bedeuten was. 00:51:50.300 --> 00:51:53.070 U: Diese Werte sind zum Beispiel diese hier. 00:51:53.070 --> 00:51:56.711 T: Beispielsweise das. Im adalet-Sample gibt es, wie ich vorhin schon gezeigt 00:51:56.711 --> 00:52:00.600 habe, verschiedene Werte, die jetzt auch nicht unbedingt auf die Türkei hindeuten. 00:52:00.600 --> 00:52:04.720 Dann gibt es auch aus dem gleichen Zeitraum noch einen flash28-Sample, was 00:52:04.720 --> 00:52:08.770 große Ähnlichkeiten und Parallelen mit dem adalet-Sampel aufweist. Da wird z. B. ein 00:52:08.770 --> 00:52:14.170 Proxy aus Neuseeland genommen, ansonsten die gleiche Telefonnummer und dieses 00:52:14.170 --> 00:52:19.640 derise-Sample hat, wie ich auch schon angedeutet habe, sämtliche Werte, die 00:52:19.640 --> 00:52:23.860 davon relevant sind, zeigen Richtung Vietnam. Ob das etwas aussagt? Keine 00:52:23.860 --> 00:52:27.920 Ahnung. In jedem Fall haben wir auch all das, diese ganzen Configs, die wir daraus 00:52:27.920 --> 00:52:35.400 extrahiert haben, haben wir auch auf GitHub veröffentlicht. Das findet ihr bei 00:52:35.400 --> 00:52:39.110 Linus in der FinSpy-Dokumentation, wo auch der Bericht und alle anderen Samples 00:52:39.110 --> 00:52:41.310 liegen. U: Genau und vielleicht mag sich ja mal 00:52:41.310 --> 00:52:44.750 jemand diese Telefonnummern anschauen, vielleicht kennt die ja jemand aus 00:52:44.750 --> 00:52:48.130 irgendwelchen anderen Zusammenhängen. Das könnten noch ganz interessante 00:52:48.130 --> 00:52:51.900 Rückschlüsse werden. Da würden wir uns über Hinweise freuen. Und insgesamt sieht 00:52:51.900 --> 00:52:58.970 man dabei – das ist die Übersicht über die Samples, die ihr analysiert habt. Aber man 00:52:58.970 --> 00:53:03.010 sieht, denke ich, ganz gut, dass es da so etwas wie eine Familienstruktur gibt. 00:53:03.010 --> 00:53:06.820 T: Genau. Der einzige, der hier so ein bisschen aus der Reihe fällt, ist das Ding 00:53:06.820 --> 00:53:10.640 hier. Das Ding, hab ich jetzt einfach mal Container genannt, weil es sonst keinen 00:53:10.640 --> 00:53:14.170 Namen hatte. Das ist ein APK, was überhaupt keine Parallelen zu den anderen 00:53:14.170 --> 00:53:18.031 aufweist. Aber dieses eine Sample hebt sich insofern von den anderen ab, als dass 00:53:18.031 --> 00:53:21.980 wir das jetzt hier noch mit aufgenommen haben, das dropped, also legt, quasi eine 00:53:21.980 --> 00:53:26.700 Schadsoftware APK überhaupt erst ab. In diesem grau markierten Sample gibt es 00:53:26.700 --> 00:53:32.380 einen lokalen Root Kernel Exploit gegen den Linux-Kernel auf Android-Devices. Die 00:53:32.380 --> 00:53:38.110 nutzen da die als „Dirty COW“ bekannte Schwachstelle aus, um Root auf dem Telefon 00:53:38.110 --> 00:53:42.170 zu werden. Da liegen dann noch Werkzeuge, um persistent Root zu bleiben. Und dann 00:53:42.170 --> 00:53:47.800 liegt da halt auch noch ein Sample, nämlich dieses hier, dieses PyawApp. Ich 00:53:47.800 --> 00:53:52.859 weiß nicht, wie man das ausspricht. Das ist das Ding, wo wir davon ausgehen, dass 00:53:52.859 --> 00:53:58.120 es in diesem Kontext Myanmar zugeschrieben wird. Weil Pyaw ein sehr bekanntes 00:53:58.120 --> 00:54:03.490 soziales Netzwerk in der Region ist. U: Und die Antwort aus technischer 00:54:03.490 --> 00:54:08.280 Perspektive. Vieles davon haben wir im Grunde schon gesagt. Aber in der 00:54:08.280 --> 00:54:12.430 Zusammenfassung … T: Wie gesagt, sämtliche Samples, die wir 00:54:12.430 --> 00:54:15.440 hier analysiert haben, benutzen den gleichen Mechanismus für die 00:54:15.440 --> 00:54:19.530 Provisionierung. Diese ganzen Konfigurationen liegen in einem sehr 00:54:19.530 --> 00:54:25.550 speziellen, Binärformat vor. Das ist kein allgemeingültiges Format, muss also 00:54:25.550 --> 00:54:29.300 definitiv aus einem Hause stammen. Wir haben große Ähnlichkeiten auch unterhalb 00:54:29.300 --> 00:54:34.600 des Java-Codes, wo es auch Hinweise darauf gibt, dass es aus deutschem Hause stammt. 00:54:34.600 --> 00:54:42.980 Wir können ganz genau sagen, dass das adalet-Sample frühestens im Jahr 2016 00:54:42.980 --> 00:54:49.160 hergestellt wurde. Und die Samples zwischen 2012 und 2014 können auch ganz 00:54:49.160 --> 00:54:53.510 eindeutig der Firma FinFisher zugeordnet werden, weswegen da eigentlich in der 00:54:53.510 --> 00:54:57.420 Schlussfolgerung auch klar gesagt werden kann, dass all diese Samples, die wir uns 00:54:57.420 --> 00:55:02.300 zwischen 2012 und 2019 angeguckt haben, der Firma oder der Firmengruppe FinFisher 00:55:02.300 --> 00:55:04.760 zuzuordnen ist. U: Und all das könnt ihr nochmal im 00:55:04.760 --> 00:55:09.310 Detail nachlesen in der Studie des CCC, die schon veröffentlicht wurde gestern und 00:55:09.310 --> 00:55:13.660 wie gesagt, ganz wichtig, wir möchten die eigentlich gerne noch auf Englisch 00:55:13.660 --> 00:55:17.330 publizieren. Wir haben deswegen schon mal eine URL für ein Pad auf die Folie 00:55:17.330 --> 00:55:20.779 geworfen. Das Pad gibt’s da nicht, das füllen wir noch aus mit einer Roh- 00:55:20.779 --> 00:55:24.440 Übersetzung aus Google Translate. Oder vielleicht mag das auch jemand von euch 00:55:24.440 --> 00:55:26.730 machen. T: Wir würden das gerne crowdsourcen. 00:55:26.730 --> 00:55:30.460 U: Das ist ein bisschen die Idee dabei, weil das schon ein bisschen Arbeit ist, 00:55:30.460 --> 00:55:34.210 und wir schaffen das einfach schnell, jetzt, während des Kongresses nicht. Aber 00:55:34.210 --> 00:55:37.880 vielleicht hat jemand Lust uns zu helfen. Das wird die URL. Und vor allem ganz 00:55:37.880 --> 00:55:41.740 wichtig: Check the facts! Das werden wir natürlich aus GFF-Perspektive machen. Wir 00:55:41.740 --> 00:55:45.241 gehen davon aus, dass es auch die Staatsanwaltschaft machen wird. Aber ich 00:55:45.241 --> 00:55:49.040 persönlich finde es großartig, dass der CCC die Tools und die ganzen Unterlagen, 00:55:49.040 --> 00:55:52.859 die zur Analyse vorlagen, ins Netz gestellt hat. Einfach, damit man das nicht 00:55:52.859 --> 00:55:56.390 unbedingt glauben muss, sondern dass man selber sich davon überzeugen kann. 00:55:56.390 --> 00:56:00.400 T: Transparenz ist uns sehr wichtig. Und hier auch noch ein kleiner Gruß ans BKA 00:56:00.400 --> 00:56:07.100 und LKA. Ihr habt diese Samples ja auch in einer ganz neuen Version. Vielleicht könnt 00:56:07.100 --> 00:56:10.710 ihr euch das ja mal angucken, und wir sind offen für Pull-Requests. 00:56:10.710 --> 00:56:21.670 Applaus U: Ein Pull-Request aus Wiesbaden? Das 00:56:21.670 --> 00:56:24.340 wäre doch mal eine gute Idee oder eben auch aus Berlin. 00:56:24.340 --> 00:56:26.450 T: Ihr könnt auch Tor benutzen, das ist egal. 00:56:26.450 --> 00:56:30.020 U: Kein Problem, da sind wir ganz offen. Und das Berliner LKA könnte da auch 00:56:30.020 --> 00:56:33.649 mitmachen. Die haben ja auch mal ein Sample gekauft, das aber nie eingesetzt. 00:56:33.649 --> 00:56:37.369 Sie brauchen das eh nicht mehr. Insofern, das hätten sie über. Was bedeutet das 00:56:37.369 --> 00:56:41.040 jetzt alles für das Strafverfahren? Aus unserer Perspektive als GFF: Wir haben 00:56:41.040 --> 00:56:44.890 keine Zweifel und natürlich auch aus der Perspektive des Clubs, dass der deutsche 00:56:44.890 --> 00:56:48.740 Trojaner FinFisher gegen die türkische Opposition eingesetzt wurde, davon sind 00:56:48.740 --> 00:56:52.880 wir fest überzeugt. Irgendwie muss dieser Trojaner aus München in die Hände 00:56:52.880 --> 00:56:56.660 türkischer Behörden gelangt sein oder sonst aus den Händen der Firmengruppe 00:56:56.660 --> 00:57:00.800 FinFisher. Und diese Verstoße gegen die Exportkontrollvorschriften wären auch noch 00:57:00.800 --> 00:57:04.550 nicht verjährt. Und deswegen liegt der Ball jetzt bei der Staatsanwaltschaft 00:57:04.550 --> 00:57:09.740 München 1. Denn eine Frage ist noch offen: Wie genau ist eigentlich der Trojaner in 00:57:09.740 --> 00:57:14.230 die Türkei gelangt? Wir können jetzt quasi nicht irgendwie nachweisen, da ist der 00:57:14.230 --> 00:57:18.710 Agent mit dem schwarzen Aktentäschchen nach Istanbul gereist, oder da ist der 00:57:18.710 --> 00:57:24.080 USB-Stick geflogen, sondern das müssten die Strafverfolger noch aufklären. Aber 00:57:24.080 --> 00:57:27.300 wie gesagt, dafür haben wir die Strafanzeige gestellt. Dazu hat die 00:57:27.300 --> 00:57:31.080 Staatsanwaltschaft alle Mittel. Und wir hoffen, dass sie das sehr konsequent tun 00:57:31.080 --> 00:57:34.710 wird. Denn eins ist klar: Menschenrechte kann man nicht nur mit Kalaschnikows 00:57:34.710 --> 00:57:39.250 verletzen, sondern selbstverständlich auch mit Staatstrojanern. Und dem muss ein Ende 00:57:39.250 --> 00:57:40.840 gemacht werden. Vielen Dank! 00:57:40.840 --> 00:57:43.600 Applaus 00:57:43.600 --> 00:57:53.830 U: Herzlichen Dank, wir haben noch ganz ein wenig Zeit, oder? 00:57:53.830 --> 00:57:56.770 T: Naja, eine Minute. Herald: Euer Applaus. Wunderschön! 00:57:56.770 --> 00:58:00.290 U: Dankeschön! Herald: Wir haben leider keine Zeit mehr 00:58:00.290 --> 00:58:05.640 für Fragen. Ich habe ganz zu Anfang vor diesem Talk erwähnt, dass es die C3 Post 00:58:05.640 --> 00:58:11.849 gibt. Und die beiden Speaker haben erwähnt, dass sie am 28C3 einen 00:58:11.849 --> 00:58:16.550 Datenträger bekommen haben. Damals bestimmt anders zugestellt, es gab noch 00:58:16.550 --> 00:58:20.910 keine C3 Post. Heute bin ich Postbote, und ich darf zustellen. Ein Paket. 00:58:20.910 --> 00:58:26.110 U: Herzlichen Dank, ach so, das ist deins. Erst nach dem Talk öffnen, machen wir, 00:58:26.110 --> 00:58:30.330 ganz herzlichen Dank. T: Dankeschön. 00:58:30.330 --> 00:58:33.570 Applaus 00:58:33.570 --> 00:58:39.771 Herald: Und wenn ihr für einen Malware- Hersteller arbeitet, ich hoffe, dieses 00:58:39.771 --> 00:58:45.580 Paket enthält euren Albtraum für heute Nacht. Großen Applaus für Thorsten 00:58:45.580 --> 00:58:47.930 Schröder und Ulf Buermeyer! 00:58:47.930 --> 00:58:49.990 Applaus 00:58:49.990 --> 00:58:53.340 Abspannmusik 00:58:53.340 --> 00:59:05.730 Untertitel erstellt von c3subtitles.de im Jahr 2020. Mach mit und hilf uns!