1
00:00:00,429 --> 00:00:08,840
*32C3 Vorspannmusik*

2
00:00:08,840 --> 00:00:14,110
Herald: Vincent Haupert studiert in seinem
Dayjob, sozusagen, Informatik in Erlangen,

3
00:00:14,110 --> 00:00:17,220
und macht da gerade seinen Master
mit Schwerpunkt in IT-Security.

4
00:00:17,220 --> 00:00:20,680
Die Arbeit, die er uns aber
gleich vorstellen möchte,

5
00:00:20,680 --> 00:00:23,740
hat er im Rahmen seiner Tätigkeit als
wissenschaftliche Hilfskraft gemacht,

6
00:00:23,740 --> 00:00:27,830
und zwar zusammen mit seinem Kollegen
Tilo Müller. Dort hat er untersucht,

7
00:00:27,830 --> 00:00:32,029
was es denn für Sicherheitslücken
bei App-basierten TAN-Verfahren gibt,

8
00:00:32,029 --> 00:00:35,110
also im Bereich des Onlinebankings;
und die möchte er uns jetzt vorstellen.

9
00:00:35,110 --> 00:00:38,659
Einen ganz großen, herzlichen
Applaus für Vincent bitte!

10
00:00:38,659 --> 00:00:44,920
*Applaus*

11
00:00:44,920 --> 00:00:48,329
Vincent: Ja, auch herzlich willkommen
von mir, also mein Name ist, wie gesagt,

12
00:00:48,329 --> 00:00:51,059
Vincent Haupert, und ich habe
mir im vergangenen Herbst

13
00:00:51,059 --> 00:00:55,420
mit meinem Kollegen Tilo Müller mal
angeschaut, wie es denn um die Sicherheit

14
00:00:55,420 --> 00:00:58,860
von App-basierten TAN-Verfahren
im Onlinebanking bestellt ist;

15
00:00:58,860 --> 00:01:02,960
und ja, der ein oder andere hat die
Geschichte vielleicht schon mitbekommen,

16
00:01:02,960 --> 00:01:05,209
hat sie auf Heise gelesen und
so, und fragt sich vielleicht: ja,

17
00:01:05,209 --> 00:01:08,600
was kommt denn jetzt da heute? Vor
2 Wochen habe ich einen Angriff von der,

18
00:01:08,600 --> 00:01:12,140
äh, einen Angriff… *lacht*
einen Anruf von der Sparkasse bekommen

19
00:01:12,140 --> 00:01:16,380
*Gelächter*
*Applaus*

20
00:01:16,380 --> 00:01:21,030
Ja, der Herr Meier, den ich jetzt hier
einfach mal so nennen möchte,

21
00:01:21,030 --> 00:01:24,840
hat mich da gefragt, was ich denn zwischen
Weihnachten und Neujahr mache… ja.

22
00:01:24,840 --> 00:01:30,750
Zu dem Zeitpunkt, wollte er eben wissen:
muss er seine Presseabteilung jetzt schon

23
00:01:30,750 --> 00:01:33,240
auf irgendetwas Neues gefasst machen,
oder nicht. *Gelächter*

24
00:01:33,240 --> 00:01:36,479
Zu dem Zeitpunkt konnte ich es ganz
ehrlich gesagt noch nicht sagen,

25
00:01:36,479 --> 00:01:38,909
Heute kann ich ihnen sagen: ich hoffe,
sie haben einen Entwurf gemacht,

26
00:01:38,909 --> 00:01:40,839
das macht es danach leichter.

27
00:01:40,839 --> 00:01:47,080
*Gelächter*
*Applaus*

28
00:01:47,080 --> 00:01:51,430
Ja, Onlinebanking ist etwas, das
betrifft uns alle; es ist etabliert,

29
00:01:51,430 --> 00:01:56,509
eine große Zahl der Deutschen verwendet
es, und ein besonderes Merkmal

30
00:01:56,509 --> 00:02:01,920
von Onlinebanking ist, dass es schon seit
seinem Entstehen in den 1980er Jahren,

31
00:02:01,920 --> 00:02:04,880
damals noch BTX-basiert,
ein Zweifaktor-Verfahren ist.

32
00:02:04,880 --> 00:02:08,619
Also, man hatte auf der einen Seite immer
irgendwie einen Benutzernamen/Passwort,

33
00:02:08,619 --> 00:02:13,779
und dann noch irgendein TAN-Verfahren.
Über die Zeit ist da ein ganzer Zoo

34
00:02:13,779 --> 00:02:17,919
an TAN-Verfahren entstanden; meistens
gab es einfach Weiterentwicklungen,

35
00:02:17,919 --> 00:02:22,620
aus Sicherheitsgründen. Heute werden
wir ein Verfahren sehen, das sich nicht

36
00:02:22,620 --> 00:02:27,230
in diese Reihe begeben
kann. Ja. Im Prinzip läuft

37
00:02:27,230 --> 00:02:31,449
Onlinebanking immer so ab, ich sage das
der Vollständigkeit halber hier nochmal:

38
00:02:31,449 --> 00:02:35,480
man loggt sich im Onlinebanking-Portal
ein, mit seinem Benutzername/Passwort,

39
00:02:35,480 --> 00:02:39,189
reicht dann eine Überweisung ein, und im
zweiten Schritt muss man das dann noch

40
00:02:39,189 --> 00:02:44,069
mit einem TAN-Verfahren bestätigen. Das
ist nicht für jeden das gleiche; das kann

41
00:02:44,069 --> 00:02:48,370
entweder noch die altgediente iTAN-
Liste sein, die aber langsam ausstirbt;

42
00:02:48,370 --> 00:02:52,269
das SMS-TAN-Verfahren,
das auch seine Tücken hat,

43
00:02:52,269 --> 00:02:54,609
wie man in den letzten
Monaten mitbekommen kann.

44
00:02:54,609 --> 00:02:59,309
Insbesondere ein großer Verbündeter
ist die Telekom, *lacht*

45
00:02:59,309 --> 00:03:02,919
und es gibt dann auch noch das
chipTAN-Verfahren, das auch recht

46
00:03:02,919 --> 00:03:06,719
verbreitet ist. Das letzte Verfahren,
das chipTAN-Verfahren, adressiert

47
00:03:06,719 --> 00:03:11,029
das Sicherheitsproblem im Onlinebanking
eigentlich schon ganz gut, aber,

48
00:03:11,029 --> 00:03:13,859
wenn man den Kreditinstituten glaubt,
gibt es einen dringenden Wunsch

49
00:03:13,859 --> 00:03:17,290
in der deutschen Bevölkerung,
seine Geldgeschäfte immer überall

50
00:03:17,290 --> 00:03:21,059
machen zu können. Sei das in der U-Bahn,
im Restaurant, vielleicht auch hier,

51
00:03:21,059 --> 00:03:24,089
gerade in diesem Vortrag. Macht jemand
gerade eine Überweisung, mal Hand hoch?

52
00:03:24,089 --> 00:03:26,870
*Gelächter*
Ja.

53
00:03:26,870 --> 00:03:32,180
Auf jeden Fall ist es dann so, wenn man
eine Überweisung überall machen will,

54
00:03:32,180 --> 00:03:35,370
*sarkastisch:* dann will ich kein zweites
Gerät haben, denn das ist ja unbequem.

55
00:03:35,370 --> 00:03:40,019
Deswegen haben die Banken ein
Gerät entdeckt, das jeder von uns

56
00:03:40,019 --> 00:03:43,989
immer dabei hat, und das absolut
sicher ist – das Smartphone.

57
00:03:43,989 --> 00:03:49,900
*Gelächter*
*Applaus*

58
00:03:49,900 --> 00:03:56,169
Man hat jetzt keine zwei Geräte mehr,
nicht 2 voneinander unabhängigen Faktoren,

59
00:03:56,169 --> 00:03:58,829
man hat eine Banking-App,
und man hat eine TAN-App.

60
00:03:58,829 --> 00:04:02,959
Das funktioniert jetzt so: ich logge
mich mit meiner Banking-App

61
00:04:02,959 --> 00:04:06,889
auf dem Smartphone ein und gebe eine
Überweisung auf. Im zweiten Schritt

62
00:04:06,889 --> 00:04:11,279
muss ich dann wie gehabt die
Überweisung mit einer TAN bestätigen.

63
00:04:11,279 --> 00:04:15,819
Jetzt nehme ich aber nicht meinen
Papierzettel her, mein chipTAN-Gerät,

64
00:04:15,819 --> 00:04:21,310
sondern ich wechsle
zur TAN-App. Da gibt’s,

65
00:04:21,310 --> 00:04:24,449
also da sind alle Banken mittlerweile ein
großer Fan davon eigentlich, das ist jetzt

66
00:04:24,449 --> 00:04:28,050
nur eine Auswahl, ich weiß nicht ob es
noch mehr gibt, aber all diese Banken

67
00:04:28,050 --> 00:04:31,560
haben ein App-basiertes TAN-
Verfahren im Angebot, und ich denke,

68
00:04:31,560 --> 00:04:35,939
die die es noch nicht haben, sind bestimmt
auf dem Weg dahin, das zu machen.

69
00:04:35,939 --> 00:04:40,139
Ich sehe jetzt schon den einen oder
anderen hier in den ersten Reihen,

70
00:04:40,139 --> 00:04:42,979
bei denen sich dann die Stirn
runzelt bei dem Verfahren,

71
00:04:42,979 --> 00:04:47,319
ich will aber trotzdem nochmal generell
das Angriffs-Szenario motivieren.

72
00:04:47,319 --> 00:04:52,319
Also, Malware, oder Schadsoftware,
ist in den offiziellen App Stores

73
00:04:52,319 --> 00:04:55,250
der Betriebssystemhersteller.
Das ist keine Fiktion!

74
00:04:55,250 --> 00:05:02,270
Bei uns am Lehrstuhl in Erlangen
hat der Dominik Maier gezeigt,

75
00:05:02,270 --> 00:05:05,180
dass sich der Google Play Store

76
00:05:05,180 --> 00:05:10,020
nicht ausreichend gegen Schadsoftware
schützen kann. Also, die konkrete Aufgabe

77
00:05:10,020 --> 00:05:12,990
von ihm war eigentlich,
in seiner Bachelorarbeit,

78
00:05:12,990 --> 00:05:18,639
Schadsoftware in den Google
Play Store zu bekommen. Nur:

79
00:05:18,639 --> 00:05:21,900
das war seine Bachelorarbeit… da ist er
nach ein paar Tagen zu seinem Betreuer

80
00:05:21,900 --> 00:05:25,370
dann hingekommen und hat gesagt:
„Ey Tilo, ich bin fertig!“

81
00:05:25,370 --> 00:05:32,740
*Gelächter*
*Applaus*

82
00:05:32,740 --> 00:05:38,530
*amüsiert:* Und, was er gemacht hat:
er hat einen Root-Exploit gezippt, ja…

83
00:05:38,530 --> 00:05:39,979
*Gelächter*

84
00:05:39,979 --> 00:05:42,960
Also, er hat ihn gezippt und hochgeladen;
da war kein Passwort, nichts –

85
00:05:42,960 --> 00:05:44,730
er hat ihn einfach gezippt.

86
00:05:44,730 --> 00:05:49,069
Dass das aber nicht irgendwie nur
akademische, graue Theorie ist,

87
00:05:49,069 --> 00:05:53,039
hat dieses Jahr so ziemlich gleichzeitig,
als wir diese App-TAN-Geschichte

88
00:05:53,039 --> 00:05:57,659
gemacht haben, die App „Brain Test“
gezeigt. Das ist ein Spiel, und

89
00:05:57,659 --> 00:06:02,180
das hat über 100.000 Downloads
gehabt, bis zu 500.000.

90
00:06:02,180 --> 00:06:05,870
Und diese App hat genau das
gemacht, was das Angriffsszenario

91
00:06:05,870 --> 00:06:09,590
auch für App-basierte TAN-Verfahren
ist. Nämlich: im offiziellen Store,

92
00:06:09,590 --> 00:06:13,810
rootet das Gerät zuerst und
lädt dann Schadcode nach.

93
00:06:13,810 --> 00:06:19,550
Wir hätten jetzt auch irgendeins von
den Kreditinstituten, die App-basiertes

94
00:06:19,550 --> 00:06:23,689
TAN-Verfahren anbieten, nehmen können;
ich habe die Sparkasse genommen,

95
00:06:23,689 --> 00:06:25,819
weil ich da a) ein Konto habe und
b) weil’s irgendwie die größte ist.

96
00:06:25,819 --> 00:06:28,629
Und das waren auch die Ersten,
die das angeboten haben.

97
00:06:28,629 --> 00:06:32,520
Deswegen haben wir uns angeguckt:
was kann man denn jetzt da machen?

98
00:06:32,520 --> 00:06:35,440
Was gibt es denn da für
Angriffsszenarien für pushTAN?

99
00:06:35,440 --> 00:06:39,569
Und was uns da als allererstes
ziemlich schnell eingefallen ist,

100
00:06:39,569 --> 00:06:43,479
ist: wir könnten die App
irgendwie kopieren,

101
00:06:43,479 --> 00:06:46,620
oder wir reversen das Protokoll und
implementieren unseren eigenen Client.

102
00:06:46,620 --> 00:06:49,810
Das sind aber beides noch Angriffe,
die konzentrieren sich sehr stark

103
00:06:49,810 --> 00:06:54,810
einfach nur auf die TAN-App.
Das eigentliche Problem

104
00:06:54,810 --> 00:06:57,590
von App-basierten TAN-Verfahren,
also dass man den ersten Faktor

105
00:06:57,590 --> 00:07:01,370
und den zweiten Faktor auf einem Gerät
hat, wird aber am besten dadurch betont,

106
00:07:01,370 --> 00:07:06,389
wenn man eine Transaktionsmanipulation
durchführt. Sprich: wir manipulieren eine

107
00:07:06,389 --> 00:07:12,309
vom Nutzer aufgegebene Transaktion
in Echtzeit, ohne dass er’s sehen kann.

108
00:07:12,309 --> 00:07:15,340
Wie haben wir das gemacht, oder
wie war unser Szenario dafür?

109
00:07:15,340 --> 00:07:19,110
Nochmal: wie läuft das ab?
Links ist die Sparkassen-App,

110
00:07:19,110 --> 00:07:22,029
die verwende ich, um mich in meinem
Onlinebanking einzuloggen und dann

111
00:07:22,029 --> 00:07:26,469
meine Überweisungsdaten auszufüllen,
und schicke das dann letztendlich ab.

112
00:07:26,469 --> 00:07:31,120
Dann landet das Ganze beim Sparkassen-
Server, und der schickt dann eine TAN

113
00:07:31,120 --> 00:07:35,259
an die pushTAN-App, die da rechts
dargestellt ist. Der Nutzer wird dann

114
00:07:35,259 --> 00:07:39,580
dazu aufgefordert, in die pushTAN-App
zu wechseln, die dort dargestellte TAN

115
00:07:39,580 --> 00:07:43,529
– nachdem er die Überweisungsdaten
natürlich kontrolliert hat – in die App

116
00:07:43,529 --> 00:07:46,379
„Sparkasse“ zu übertragen. Das geht
mittlerweile, wie wir später sehen werden,

117
00:07:46,379 --> 00:07:50,900
auch so automatisiert, dass man sich
fragt: warum gibt’s überhaupt noch 2 Apps?

118
00:07:50,900 --> 00:07:57,080
Ja, gut. Was wir jetzt
machen: wir sagen einfach,

119
00:07:57,080 --> 00:08:02,539
nachdem der Nutzer auf
‚Auftrag übermitteln‘ geht,

120
00:08:02,539 --> 00:08:06,360
dann manipulieren wir die Daten.
Also wir ändern den Adressaten,

121
00:08:06,360 --> 00:08:10,900
wir ändern den Betrag, und die
Sparkasse schickt dann natürlich

122
00:08:10,900 --> 00:08:14,340
die Überweisungsdetails auch nochmal
an die TAN-App, und die werden dann

123
00:08:14,340 --> 00:08:17,309
da nochmal dargestellt. Das heißt,
bevor die dann da angezeigt werden,

124
00:08:17,309 --> 00:08:19,409
manipulieren wir die wieder
auf die originalen Daten,

125
00:08:19,409 --> 00:08:24,300
und der Nutzer kann’s nicht sehen, und
bestätigt letztendlich eine Überweisung

126
00:08:24,300 --> 00:08:29,479
mit einer TAN, was er gar nicht wollte.
Ja, da mussten wir erstmal überlegen:

127
00:08:29,479 --> 00:08:32,219
was gibt es denn da eigentlich so für
Sicherheitsmerkmale bei den beiden Apps?

128
00:08:32,219 --> 00:08:35,260
Also die Sparkassen-App selbst
ist eigentlich ein leichtes Fressen

129
00:08:35,260 --> 00:08:38,769
für so einen Angriff; die hat ja
keine großen Schutzmaßnahmen.

130
00:08:38,769 --> 00:08:42,909
Es gibt eine Root-Erkennung, es wird aber
lediglich dargestellt ein Warnhinweis,

131
00:08:42,909 --> 00:08:45,579
und die macht also ansonsten nichts, man
kann die App dann normal weiterverwenden.

132
00:08:45,579 --> 00:08:51,709
Auf der anderen Seite: die pushTAN-App
versucht, sich mit einer Vielzahl

133
00:08:51,709 --> 00:08:57,300
an Maßnahmen gegen Analyse und gegen
Schadsoftware angeblich auch zu schützen.

134
00:08:57,300 --> 00:09:00,160
Man merkt eigentlich schon, wenn man
hier sieht, die ganzen Maßnahmen,

135
00:09:00,160 --> 00:09:02,139
ich glaube, die Sparkasse ist sich selber
nicht so ganz sicher, dass das wirklich

136
00:09:02,139 --> 00:09:05,449
sicher zu kriegen ist. Die haben
halt eine Root-Erkennung,

137
00:09:05,449 --> 00:09:10,339
die ist nicht wie bei der Sparkassen-App,
dass da ein Warnhinweis angezeigt wird;

138
00:09:10,339 --> 00:09:13,579
also es wird verboten: wenn ein Root
erkannt wird, beendet sich die App,

139
00:09:13,579 --> 00:09:16,220
und schützt sich eben auch gegen
die dynamische Analyse, statische Analyse,

140
00:09:16,220 --> 00:09:22,179
weiß der Teufel nicht, was alles.
Und: es ist TÜV-geprüft!

141
00:09:22,179 --> 00:09:29,650
*Gelächter*
*Applaus*

142
00:09:29,650 --> 00:09:32,100
Von diesem Prädikat
merklich eingeschüchtert,

143
00:09:32,100 --> 00:09:37,089
habe ich mir dann mal angeguckt, ja
– was gibt es denn da eigentlich wirklich

144
00:09:37,089 --> 00:09:40,810
für Schutzmaßnahmen, wie sind denn die
umgesetzt? Es wurde recht schnell klar:

145
00:09:40,810 --> 00:09:43,800
die Sparkasse selbst traut sich in Sachen
Sicherheit nicht so viel zu und hat

146
00:09:43,800 --> 00:09:48,670
deswegen beim norwegischen Hersteller
Promon eingekauft. Die selber haben

147
00:09:48,670 --> 00:09:52,880
eine Native-Library, die wird gleich
am Anfang der App geladen,

148
00:09:52,880 --> 00:09:56,500
und ist dann quasi der Einsprungspunkt.

149
00:09:56,500 --> 00:10:01,910
Die Library selbst ist verschlüsselt,
zum Teil, mit einem statischen Key

150
00:10:01,910 --> 00:10:04,630
natürlich irgendwie, und ist obfuskiert,
ist also ein ziemlicher Hass, sich die

151
00:10:04,630 --> 00:10:08,279
anzuschauen. Aber es gibt

152
00:10:08,279 --> 00:10:11,690
– also damit man die Library nicht einfach
heraus patcht, also sagt: „Ja gut, dann

153
00:10:11,690 --> 00:10:16,790
mach’ ich das Ding halt raus“ –
haben die Strings aus der Java-Logik

154
00:10:16,790 --> 00:10:20,050
in die Library verlagert, die ja
wiederum verschlüsselt ist.

155
00:10:20,050 --> 00:10:24,100
Die Library selbst setzt dann
statische, finale Felder

156
00:10:24,100 --> 00:10:27,800
während der Laufzeit mit diesen Strings
und werden dann halt normal verwendet.

157
00:10:27,800 --> 00:10:31,579
Oder sie werden über einen Index
abgerufen, mit der Methode getString.

158
00:10:31,579 --> 00:10:35,230
Also das verhindert… also macht’s
zumindest Aufwand, diese Library

159
00:10:35,230 --> 00:10:38,170
einfach rauszuziehen und
ohne die dann klarzukommen.

160
00:10:38,170 --> 00:10:43,649
Ja die erkennt, wie gesagt,
Root, Debugger, alles Mögliche.

161
00:10:43,649 --> 00:10:47,220
Aber die behandelt die Erkennung nicht.

162
00:10:47,220 --> 00:10:51,980
Das liegt einfach daran, die wollen
eine Library verkaufen, die soll

163
00:10:51,980 --> 00:10:57,320
für alles und jeden gehen, ne? Also die
ist nicht personalisiert auf diese App.

164
00:10:57,320 --> 00:11:03,220
So ist es dann implementiert. Stattdessen
gibt’s im Java-Code callbacks

165
00:11:03,220 --> 00:11:07,250
für die verschiedenen einzelnen events.
Also z.B. Debugger, oder eben Root.

166
00:11:07,250 --> 00:11:11,320
Die App selbst implementiert
dann eben dieses Interface und,

167
00:11:11,320 --> 00:11:14,899
wenn das erkannt wird, dann
wird der Code aufgerufen.

168
00:11:14,899 --> 00:11:18,949
Z.B. hier unten ist dargestellt,
der Rooting-Status. Da steht

169
00:11:18,949 --> 00:11:22,980
in dem Parameter z dann eben drin,
ob es gerootet wurde oder nicht.

170
00:11:22,980 --> 00:11:26,620
Und dann kommt da so’n Texthinweis,
und danach beendet sich die App.

171
00:11:26,620 --> 00:11:29,920
Ja, was haben wir gemacht:
Wenn dieses event kommt,

172
00:11:29,920 --> 00:11:33,769
dann brechen wir die Methode immer ab
und dann läuft die App einfach weiter.

173
00:11:33,769 --> 00:11:38,910
Das Ganze ist besonders paradox, diese
Library scheint keinen Status zu haben.

174
00:11:38,910 --> 00:11:43,649
Die liefert einfach weiter Strings aus,
obwohl schon Root detected wurde.

175
00:11:43,649 --> 00:11:47,940
Das hat mich wirklich überrascht,
dass es so einfach war. *lacht*

176
00:11:47,940 --> 00:11:52,790
*Applaus*

177
00:11:52,790 --> 00:11:57,130
Ja, dann schauen wir uns mal an, wie
funktioniert denn das jetzt konkret.

178
00:11:57,130 --> 00:12:02,069
Also hier, als allererstes, die
Sparkassen-App. Das sieht man jetzt,

179
00:12:02,069 --> 00:12:05,449
wie man sich eben anmeldet. Mit seinem
Passwort, das man mal selbst vergeben hat.

180
00:12:05,449 --> 00:12:09,509
Und es wird ja auch ein Hinweis angezeigt
dass das Gerät gerootet ist, aber

181
00:12:09,509 --> 00:12:12,699
wie gesagt, es hat weiter keine
Konsequenzen. In dem Fall habe ich

182
00:12:12,699 --> 00:12:17,089
dann eine Überweisung an das Finanzamt mit
meiner hohen Einkommenssteuer von 10 Cent

183
00:12:17,089 --> 00:12:21,519
ausgelöst. Und im nächsten Schritt… also…

184
00:12:21,519 --> 00:12:24,199
dann haben wir die Überweisung eben
manipuliert, die Daten im Hintergrund,

185
00:12:24,199 --> 00:12:27,779
man sieht es nicht. Und hier wird man dann
dazu aufgefordert, in die pushTAN-App

186
00:12:27,779 --> 00:12:31,480
zu wechseln, um dann
dort die TAN abzurufen.

187
00:12:31,480 --> 00:12:35,480
Das machen wir auch, loggen uns
wieder mit unserem Passwort,

188
00:12:35,480 --> 00:12:39,050
diesmal in der pushTAN-App ein.
Wie groß die Wahrscheinlichkeit ist,

189
00:12:39,050 --> 00:12:41,690
dass das das gleiche Passwort
ist, können wir uns denken.

190
00:12:41,690 --> 00:12:46,399
Und dann schauen wir uns die
Überweisungsdetails an. 10 Cent…

191
00:12:46,399 --> 00:12:48,860
sagen wir jetzt einfach mal die IBAN hat
sich jetzt wahrscheinlich keiner gemerkt,

192
00:12:48,860 --> 00:12:52,690
aber das ist auch die gleiche.
Und ja, schaut gut aus.

193
00:12:52,690 --> 00:12:57,230
Das geben wir frei. TAN übertragen an
Sparkasse. Jetzt merken wir uns noch

194
00:12:57,230 --> 00:12:59,670
die letzten 2 Stellen der TAN, das ist 32,

195
00:12:59,670 --> 00:13:03,829
dann übertragen wir die und der Auftrag
wird freigegeben in der Sparkassen-App.

196
00:13:03,829 --> 00:13:08,190
Wenn man dann später irgendwann mal
in die Umsatz-Details reinschaut, dann

197
00:13:08,190 --> 00:13:12,060
stellt man fest: „Hey, da, mit
der TAN mit der Endstelle 32,

198
00:13:12,060 --> 00:13:15,470
da wurde ein Betrag von 13,37 Euro
überwiesen, nicht von 10 Cent. Und

199
00:13:15,470 --> 00:13:18,990
die gingen auch nicht ans Finanzamt,
die gingen an Vincent Haupert. Gut…

200
00:13:18,990 --> 00:13:24,100
Jetzt… jeder der die Geschichte kennt,
der kennt auch was danach kam.

201
00:13:24,100 --> 00:13:27,050
Stellungnahme der Sparkasse,
nachdem es auf Heise war: „Ey,

202
00:13:27,050 --> 00:13:31,880
das ist ja ’ne alte Version, das
geht doch alles gar nicht mehr“.

203
00:13:31,880 --> 00:13:34,339
Es gibt da jetzt ’ne neue Version
seit dem 16.10. Wir haben

204
00:13:34,339 --> 00:13:39,779
am 23.Oktober veröffentlicht.
Das ist jetzt nicht mehr möglich.

205
00:13:39,779 --> 00:13:43,730
Gut. Eigentlich ist es nichts Neues für
uns. Haben wir auch schon gesagt

206
00:13:43,730 --> 00:13:45,759
in unserer Ausarbeitung. Die
hat die Sparkasse anscheinend

207
00:13:45,759 --> 00:13:49,980
nicht so aufmerksam gelesen. Und wir
haben damals auch schon gesagt:

208
00:13:49,980 --> 00:13:54,500
„Es gibt in der aktuellen Version
wohl… die Art und Weise,

209
00:13:54,500 --> 00:13:57,449
wie wir den Angriff gemacht haben… in der
neuen Version funktioniert das anders,

210
00:13:57,449 --> 00:14:00,360
wir können das nicht ganz genauso machen;
mit einem entsprechenden Mehraufwand

211
00:14:00,360 --> 00:14:03,230
können wir den Angriff aber
wieder möglich machen.“

212
00:14:03,230 --> 00:14:08,920
Ja, schau’n wir halt mal! *lacht*
*Gelächter*

213
00:14:08,920 --> 00:14:14,240
*Applaus*

214
00:14:14,240 --> 00:14:18,100
Um jetzt einen Angriff gegen die
neue Version machen zu wollen,

215
00:14:18,100 --> 00:14:20,730
muss man sich fragen: Was ist
denn da eigentlich anders jetzt?

216
00:14:20,730 --> 00:14:24,970
Also man hat auch bei der Sparkasse
oder bei Promon realisiert, dass

217
00:14:24,970 --> 00:14:28,220
die Java-callbacks ungefähr genauso sind,
wie wenn man mit einem Geldtransporter

218
00:14:28,220 --> 00:14:32,769
vor die Sparkasse fährt, und dann
dem Praktikanten die Geldsäcke

219
00:14:32,769 --> 00:14:36,899
in die Hand drückt und einfach
wegfährt. Deswegen gibt es jetzt

220
00:14:36,899 --> 00:14:41,060
keine Java-callbacks mehr.
Stattdessen stürzt die App ab,

221
00:14:41,060 --> 00:14:45,579
wenn sie z.B. Root erkennt, oder
auch Debugger, was auch immer,

222
00:14:45,579 --> 00:14:48,699
und öffnet dann eine Seite im Browser.
Dadurch lässt sich die Root-Erkennung

223
00:14:48,699 --> 00:14:51,310
nicht mehr trivial umgehen. Ansonsten

224
00:14:51,310 --> 00:14:55,959
werden auch hooking-Frameworks
erkannt. Also wir haben den Angriff

225
00:14:55,959 --> 00:15:00,250
als proof-of-concept mit Xposed
realisiert. D.h. das würde jetzt

226
00:15:00,250 --> 00:15:02,560
auch nicht mehr gehen. Ja, schlecht.

227
00:15:02,560 --> 00:15:07,649
Gut, um den Angriff jetzt wieder
realisieren zu können, müssen wir also

228
00:15:07,649 --> 00:15:10,739
2 Sachen machen. Wir müssen einmal die
Root-Erkennung umgehen und einmal

229
00:15:10,739 --> 00:15:12,520
die Xposed-Erkennung umgehen.

230
00:15:12,520 --> 00:15:16,019
Fangen wir mit Root an. Wie
funktioniert die Root-Erkennung?

231
00:15:16,019 --> 00:15:19,990
Und ich bin bisher eigentlich gut bei den
Sicherheits-features dieser App gefahren,

232
00:15:19,990 --> 00:15:24,389
mir einfach vorzustellen, wie würde ich es
machen. Also was ist der einfachste Weg

233
00:15:24,389 --> 00:15:28,819
Root zu erkennen. Also: was werden die
wohl machen? Die suchen im Dateisystem

234
00:15:28,819 --> 00:15:32,350
nach irgendwelchen Sachen, die für SU
charakteristisch sind. Dann habe ich mir

235
00:15:32,350 --> 00:15:36,019
die Syscalls mal angeschaut – ja und klar,
genau das machen die. *lacht*

236
00:15:36,019 --> 00:15:40,529
Die schauen einfach z.B.
ist /system/bin/su vorhanden?

237
00:15:40,529 --> 00:15:45,139
Oder /system/xbin/su? Ja, wenn
ich das jetzt in /vinc umbenenne,

238
00:15:45,139 --> 00:15:49,020
dann geht sie, die App, schon wieder.

239
00:15:49,020 --> 00:15:55,370
*Applaus*

240
00:15:55,370 --> 00:15:58,879
Das ist aber natürlich blöd, weil ich will
ja weiterhin für meine anderen Apps

241
00:15:58,879 --> 00:16:02,120
eigentlich Root haben. Und
deswegen, wenn ich die umbenenne,

242
00:16:02,120 --> 00:16:06,139
dann können die natürlich auch kein
SU mehr ausführen. Das Lustige ist ja,

243
00:16:06,139 --> 00:16:11,439
man führt ja nicht /system/xbin/su aus,
sondern man gibt ja nur SU ein. Das Ganze

244
00:16:11,439 --> 00:16:17,060
ist der PATH-Variable zu verdanken,
die in Oslo aber nicht bekannt ist.

245
00:16:17,060 --> 00:16:21,790
Deswegen ich hab das Ganze auf
Android Marshmallow gemacht,

246
00:16:21,790 --> 00:16:24,519
und da will man eigentlich
sowieso Systemless SU haben.

247
00:16:24,519 --> 00:16:27,860
Und das mounted eine eigene Partition
und trägt sich in die PATH-Variable ein

248
00:16:27,860 --> 00:16:32,139
– und tadaaa! – die pushTAN-App
geht wieder auf.

249
00:16:32,139 --> 00:16:36,870
*Applaus*

250
00:16:36,870 --> 00:16:40,910
Ein bisschen paradoxer wird es aber
immer noch vor dem Hintergrund,

251
00:16:40,910 --> 00:16:43,910
dass es die Sparkassen-App besser
macht. Die erkennt das Root nämlich.

252
00:16:43,910 --> 00:16:47,829
Und die haben keine Lösung für
was-weiß-ich wieviel Tausend eingekauft.

253
00:16:47,829 --> 00:16:50,689
Also bei Promon würde ich jetzt
mal in den Flugmodus gehen,

254
00:16:50,689 --> 00:16:54,470
sonst kommt da gleich ein Anruf.

255
00:16:54,470 --> 00:16:57,709
Ja, als nächstes: wie funktioniert
die Xposed-Erkennung?

256
00:16:57,709 --> 00:17:02,819
Ja, wieder gleiches Spiel, würde
ich sagen. Schauen wir doch mal,

257
00:17:02,819 --> 00:17:05,210
was… die werden wieder nach irgendwelchen
charakteristischen Sachen

258
00:17:05,210 --> 00:17:09,910
für Xposed suchen. Ja, so schaut es dann
aus: Das sind halt ein paar Sachen,

259
00:17:09,910 --> 00:17:12,160
die Xposed platziert beim Installieren.

260
00:17:12,160 --> 00:17:17,869
Das müssen wir jetzt irgendwie loswerden.
Und Xposed muss danach aber noch gehen.

261
00:17:17,869 --> 00:17:20,880
Die ersten 4 Sachen sind irgendwie eh
Sachen, die kann man entweder löschen

262
00:17:20,880 --> 00:17:24,440
oder umbenennen. Und dann
sind die schon mal weg.

263
00:17:24,440 --> 00:17:28,520
Dann gibt’s hier die anderen 3 Dateien,
die braucht man schon irgendwie;

264
00:17:28,520 --> 00:17:33,020
ja, die benennen wir halt um. Und

265
00:17:33,020 --> 00:17:35,530
untereinander müssen die Abhängigkeiten
natürlich auch angepasst werden.

266
00:17:35,530 --> 00:17:37,950
Und da hab’ ich gedacht: „Ja, jetzt
geht’s“. Es hätte mich nicht überrascht

267
00:17:37,950 --> 00:17:41,330
wenn’s funktioniert. Reicht aber
noch nicht ganz. Das ist sogar

268
00:17:41,330 --> 00:17:44,870
tatsächlich ein bisschen besser
gemacht. Die schauen halt selber

269
00:17:44,870 --> 00:17:47,870
in dem executable file nach,
wo auch die ganze Dalvik-VM

270
00:17:47,870 --> 00:17:51,560
und was-weiß-ich-was drin ist, und
Zygote, mit dem ja Xposed arbeitet;

271
00:17:51,560 --> 00:17:55,290
und wenn dann da drinnen Xposed
mit großem oder kleinem X drinsteht,

272
00:17:55,290 --> 00:17:59,000
dann ist wohl Xposed installiert. Ja,
letztendlich hab’ ich das Ding einfach

273
00:17:59,000 --> 00:18:02,000
neu kompiliert und schon ging’s wieder.

274
00:18:02,000 --> 00:18:09,040
*Applaus*

275
00:18:09,040 --> 00:18:13,130
Dann schauen wir uns das doch mal an, ne?

276
00:18:13,130 --> 00:18:15,520
Also wieder gleiches Spiel…

277
00:18:15,520 --> 00:18:19,620
Wir öffnen die Sparkassen-App,
geben da unser Passwort ein…

278
00:18:19,620 --> 00:18:25,030
Diesmal, um ganz auf Nummer sicher zu
gehen, schauen wir uns vorher nochmal an,

279
00:18:25,030 --> 00:18:27,690
welche Version ist denn das, eigentlich?
Nicht dass dann danach irgendeiner sagt:

280
00:18:27,690 --> 00:18:30,710
„Es war nicht die aktuelle Version“.
Also hier sehen wir, das ist die Version

281
00:18:30,710 --> 00:18:35,520
vom 7.Dezember, also das war
die aktuellste bis vor 2 Stunden.

282
00:18:35,520 --> 00:18:38,520
*Gelächter, Applaus*

283
00:18:38,520 --> 00:18:42,160
Als nächstes füllen wir wieder
unsere Überweisung aus,

284
00:18:42,160 --> 00:18:44,940
diesmal nicht ans Finanzamt,
sondern an die Uni-Bibliothek Erlangen.

285
00:18:44,940 --> 00:18:49,930
Ich habe nämlich meine Benutzerkarte
verloren und brauche deshalb eine neue,

286
00:18:49,930 --> 00:18:53,820
und die kommt nicht for free,
sondern kostet 3 Euro.

287
00:18:53,820 --> 00:18:57,060
Ihr seht schon, mein Konto war
nicht so hoch gefüllt, ich musste

288
00:18:57,060 --> 00:19:01,040
einen Betrag wählen, der irgendwie
auch noch in meinem Limit geht.

289
00:19:01,040 --> 00:19:03,560
Aber jetzt öffnet sich hier
automatisch schon die pushTAN-App,

290
00:19:03,560 --> 00:19:08,040
also die Integration hat
tollerweise zugenommen.

291
00:19:08,040 --> 00:19:11,810
Jetzt logg’ ich mich da auch wieder
ein. Und hier sehen wir – 3 Euro.

292
00:19:11,810 --> 00:19:16,190
Aber genau – diesmal schauen wir uns auch
mal wieder die Version[snummer] an. Das ist

293
00:19:16,190 --> 00:19:16,240
auch

294
00:19:16,240 --> 00:19:19,500
vom 7.Dezember, war bis vor 2 Stunden
auch noch die aktuellste, könnte mir gut

295
00:19:19,500 --> 00:19:22,520
vorstellen, dass gerade eine
neue Version rauskommt!

296
00:19:22,520 --> 00:19:24,610
*Gelächter*

297
00:19:24,610 --> 00:19:29,300
Aber ja, hier. Die Daten scheinen zu
stimmen, die TAN passt eigentlich auch.

298
00:19:29,300 --> 00:19:32,280
Und dann ja, würde ich sagen, dann
kann man das bestätigen jetzt.

299
00:19:32,280 --> 00:19:42,160
Kommen wir zurück… Auftrag
wurde entgegengenommen…

300
00:19:42,160 --> 00:19:47,670
und wenn man jetzt dann mal in
die Überweisungsdetails schaut,

301
00:19:47,670 --> 00:19:50,170
sieht man da, dass ich schon ein
paar fingierte Weihnachtsgeschenke

302
00:19:50,170 --> 00:19:54,150
bezahlt habe, im Rahmen der Untersuchung
hier. Und hier haben wir diesmal

303
00:19:54,150 --> 00:19:58,810
4,20 Euro, ich hätte auch 42 Euro genommen,
wenn ich soviel Geld noch gehabt hätte. Aber…

304
00:19:58,810 --> 00:20:13,710
*Applaus*

305
00:20:13,710 --> 00:20:18,190
Ja, genau. Und ja, der Betreff
hat sich auch geändert:

306
00:20:18,190 --> 00:20:21,210
„Einen Guten Rutsch für den 32C3.“

307
00:20:21,210 --> 00:20:23,100
Okay,

308
00:20:23,100 --> 00:20:27,310
jetzt bin ich doch ein bisschen schneller
fertiggeworden als ich gedacht habe,

309
00:20:27,310 --> 00:20:30,940
aber das bedeutet, dass wir dann
noch mehr Zeit für Fragen haben.

310
00:20:30,940 --> 00:20:34,510
Ja, was lässt sich zu App-basierten
TAN-Verfahren allgemein sagen:

311
00:20:34,510 --> 00:20:38,510
Die sind einfach konzeptionell schwach.
Die Schutzmechanismen von der pushTAN-App

312
00:20:38,510 --> 00:20:41,730
haben zwar zugenommen in der
aktuellen Version. Also die Callbacks

313
00:20:41,730 --> 00:20:45,680
lassen sich jetzt nicht mehr
trivial hooken; und dadurch

314
00:20:45,680 --> 00:20:47,750
kann man einfach Root bekommen
oder halt eben einfach alles machen.

315
00:20:47,750 --> 00:20:50,880
Letztendlich ist es halt ein
Katz-und-Maus-Spiel, das die Sparkasse

316
00:20:50,880 --> 00:20:53,460
oder auch jeder andere Hersteller
am Ende irgendwie verlieren wird.

317
00:20:53,460 --> 00:21:00,070
Die Root-Erkennung z.B. bringt eigentlich
hauptsächlich Ärger bei den Kunden ein;

318
00:21:00,070 --> 00:21:04,010
und vor allem hat die so hohe
False-Positives, dass die Bewertungen

319
00:21:04,010 --> 00:21:07,990
derart grottig sind, dass man sich bei
der Sparkasse echt fragen muss,

320
00:21:07,990 --> 00:21:10,500
ob das Verfahren für sie selber
auch überhaupt noch Sinn macht.

321
00:21:10,500 --> 00:21:11,800
Wenn man sich jetzt auch anschaut…

322
00:21:11,800 --> 00:21:15,540
Was ich eigentlich gemacht habe ist ja
total irre irgendwie. Also ich meine…

323
00:21:15,540 --> 00:21:19,900
Ich habe hauptsächlich Dinge umgangen,
die ein normaler Nutzer macht.

324
00:21:19,900 --> 00:21:24,990
Ich habe keinen echten Angriff damit
verhindert. Also jemand, der selbstständig

325
00:21:24,990 --> 00:21:28,100
sein Gerät rooten wird, dem wird verboten,
die pushTAN-App zu verwenden.

326
00:21:28,100 --> 00:21:32,500
Und wer selbstständig irgendwie Xposed
installiert, dem wird es auch verboten.

327
00:21:32,500 --> 00:21:37,490
Ein echter Angriff… der installiert doch
nicht das SU Binary. *lacht*

328
00:21:37,490 --> 00:21:40,760
Der würde was-weiß-ich
irgendwas platzieren,

329
00:21:40,760 --> 00:21:43,460
aber bestimmt nicht das SU-Binary
installieren. Also das Root

330
00:21:43,460 --> 00:21:46,720
ist gar nicht mal eine feste
Voraussetzung. Für den Angriff allein

331
00:21:46,720 --> 00:21:49,490
hätte es sogar gereicht, wenn
man einen Root-Exploit hat

332
00:21:49,490 --> 00:21:50,880
und dann Xposed platzieren kann.

333
00:21:50,880 --> 00:21:54,700
Da hat man z.B. auch keinen
Ärger mit der Root-Erkennung.

334
00:21:54,700 --> 00:21:57,620
Ja, ich hab’ noch ein paar Backup-Folien,
aber das können wir dann auch

335
00:21:57,620 --> 00:22:01,630
in die Diskussion einbauen. Dann bedanke
ich mich für eure Aufmerksamkeit!

336
00:22:01,630 --> 00:22:10,790
*Applaus*

337
00:22:10,790 --> 00:22:14,100
Herald: Vielen, vielen Dank, Vincent!

338
00:22:14,100 --> 00:22:17,930
Total super, und du hast auf jeden
Fall noch Zeit für Fragen gelassen.

339
00:22:17,930 --> 00:22:24,260
Genau – macht euch bitte kenntlich!

340
00:22:24,260 --> 00:22:29,340
Geht gerne vor zu den Mikro-Fahnen!

341
00:22:29,340 --> 00:22:34,110
Die Mikros 2 und 4 sind an.
Ich seh’ schon jemand[en] an Mikro 2?

342
00:22:34,110 --> 00:22:39,570
Nein? Du stehst da nur so. Okay.
*lacht*

343
00:22:39,570 --> 00:22:45,980
Wir geben euch mal noch ein
paar Minuten Zeit zum Überlegen.

344
00:22:45,980 --> 00:22:50,150
Und ich kucke ’mal nach oben!

345
00:22:50,150 --> 00:22:56,680
Lieber Mensch, der du Fragen aus dem Netz
einsammelst: ich seh’ dich gerade nicht,

346
00:22:56,680 --> 00:23:00,390
aber wenn du welche hast, dann
könntest du jetzt gerne eine vorlesen.

347
00:23:00,390 --> 00:23:06,100
Signal Angel: Dann mach’ ich das einfach
mal. Und zwar: seppsammy und shelter8

348
00:23:06,100 --> 00:23:09,590
wollen wissen: gibt es Schwächen
im Optik-TAN-Verfahren?

349
00:23:09,590 --> 00:23:14,220
Vincent: Also „Optik-TAN“ meint dann
wahrscheinlich irgendwie so Foto-TAN

350
00:23:14,220 --> 00:23:18,270
und QR-TAN. Also, „Optik-TAN“ weiß ich
jetzt nicht genau, ist es damit gemeint?

351
00:23:18,270 --> 00:23:21,380
Aber ich meine, das ist irgendwie das.
Ja, QR-TAN und Foto-TAN ist eigentlich

352
00:23:21,380 --> 00:23:25,050
ziemlich ähnlich; da scannt man dann
einen Code ab mit seinem Smartphone;

353
00:23:25,050 --> 00:23:31,570
und bekommt dann dadurch die TAN.
Das unterscheidet sich halt insofern,

354
00:23:31,570 --> 00:23:34,740
dass man das schwer auf einem Gerät
verwenden kann. Also ich kann natürlich

355
00:23:34,740 --> 00:23:38,710
den QR-Code nicht von meinem eigenen
Gerät abscannen. Deswegen ist das Szenario

356
00:23:38,710 --> 00:23:42,980
ein bisschen anders. Also, da sind
natürlich auch andere Schwächen vorhanden,

357
00:23:42,980 --> 00:23:46,140
wie z.B. dass man die App irgendwie
kopieren kann und sowas dergleichen.

358
00:23:46,140 --> 00:23:49,660
Aber es ist nicht ganz vergleichbar
mit dem Szenario das wir hier

359
00:23:49,660 --> 00:23:52,230
bei den App-basierten Verfahren haben.

360
00:23:52,230 --> 00:23:55,780
Herald: Dann jetzt gerne erst
eine Frage vom Mikrofon Nr.2.

361
00:23:55,780 --> 00:24:01,010
Frage: Ja, du hast beschrieben, wie die
App sich gegen Debugging –

362
00:24:01,010 --> 00:24:03,010
eine Analyse –

363
00:24:03,010 --> 00:24:07,970
schützt. Wie genau hast du dann aber die
Transaktionsdetails manipuliert, dass die

364
00:24:07,970 --> 00:24:11,910
erst falsch angezeigt und dann auch
falsch zur Bank übermittelt werden?

365
00:24:11,910 --> 00:24:18,010
Vincent: Also, das Problem ist, also gegen
Debugging schützen, das ist ja erstmal

366
00:24:18,010 --> 00:24:21,110
’ne Maßnahme gegen dynamische Analyse,
die also verhindern soll, dass jemand

367
00:24:21,110 --> 00:24:23,230
einfach so ’nen Angriff entwickeln kann.

368
00:24:23,230 --> 00:24:27,290
Also die… Den Angriff selbst
hab’ ich mit Xposed entwickelt,

369
00:24:27,290 --> 00:24:31,000
das ist halt ein hooking-Framework.
Das kann sehr leicht Java-Code hooken.

370
00:24:31,000 --> 00:24:34,600
Ein Real-World-Exploit würde
das wohl nicht so machen. Aber,

371
00:24:34,600 --> 00:24:38,560
ja… Für ’nen proof-of-concept war
das ’ne Möglichkeit, das zu machen.

372
00:24:38,560 --> 00:24:41,400
Also die ganzen Maßnahmen eigentlich
die da implementiert wurden,

373
00:24:41,400 --> 00:24:44,110
können nicht effektiv vor einem richtigen
Angriff schützen, sondern können…

374
00:24:44,110 --> 00:24:48,400
hauptsächlich… dienen hauptsächlich
dazu, dass die Sparkasse in einem Monat

375
00:24:48,400 --> 00:24:53,500
wieder sagen kann, ja der Angriff den
ich gemacht hatte funktioniert nicht mehr.

376
00:24:53,500 --> 00:24:55,450
Herald: Mikrofon Nr.4, bitte!

377
00:24:55,450 --> 00:25:01,550
Frage: Mich würde interessieren…
weil du hast ja gezeigt,

378
00:25:01,550 --> 00:25:04,320
wie diese App nach irgendwie
Xposed oder sowas scannt.

379
00:25:04,320 --> 00:25:09,240
Das Verfahren scheint mir grundsätzlich
ziemlich erbärmlich. Kann man sowas auch

380
00:25:09,240 --> 00:25:12,500
gescheit machen oder hat man
da einfach keine Chance?

381
00:25:12,500 --> 00:25:16,590
Vincent: Ja, das ist natürlich schon ein
bisschen schwierig das gescheit zu machen.

382
00:25:16,590 --> 00:25:19,310
Weil es müsste irgendwie
vertrauenswürdige Aufrufer geben.

383
00:25:19,310 --> 00:25:23,070
Also man müsste irgendwie festlegen
können, wer ist denn eigentlich erlaubt.

384
00:25:23,070 --> 00:25:27,660
Wer darf denn in meinem call
stack eigentlich alles drin sein.

385
00:25:27,660 --> 00:25:31,150
Also es ist schon ein bisschen
schwieriger. Fällt mir jetzt auch

386
00:25:31,150 --> 00:25:34,890
spontan erstmal nicht ein, wie
man das effektiv verhindern kann.

387
00:25:34,890 --> 00:25:37,730
Herald: Mikrofon Nr.1, bitte.

388
00:25:37,730 --> 00:25:42,260
Frage: Vielen Dank. Bin ich zu hören? Ja.
Vielen Dank für die schöne Demonstration.

389
00:25:42,260 --> 00:25:48,130
Ich fand’s auch sehr toll, dass rauskam,
dass in so einem Framework wie Android

390
00:25:48,130 --> 00:25:51,630
das Verteilen auf 2 Apps ja überhaupt
nichts bringt. Also ich denke das war

391
00:25:51,630 --> 00:25:54,550
einer von den zentralen Sachen,
die rauskamen. Meine Frage wäre:

392
00:25:54,550 --> 00:25:58,080
Wie schätzt du das ein, dass man
es auch im Android-Betriebssystem

393
00:25:58,080 --> 00:26:05,210
in Zukunft schafft, Apps mit einem
Verifikationsmechanismus auszustatten,

394
00:26:05,210 --> 00:26:09,470
und eher von Teilen des Betriebssystems
die auch nach dem Rooten das tun

395
00:26:09,470 --> 00:26:13,450
was sie tun sollten; diese App quasi für
sich alleine laufen. Das würde mir

396
00:26:13,450 --> 00:26:17,330
nach einem vielversprechenderen Ansatz
aussehen als das Konzept

397
00:26:17,330 --> 00:26:19,570
von 2 Apps und
einfach-ein-bisschen-Skripten.

398
00:26:19,570 --> 00:26:23,920
Vincent: Ja das greift jetzt natürlich
schon ziemlich weit. Auf was du anspielst,

399
00:26:23,920 --> 00:26:27,060
das erinnert mich so ein bisschen 
an ARM TrustZone.

400
00:26:27,060 --> 00:26:30,090
Also da gibt’s ’ne Sichere Welt

401
00:26:30,090 --> 00:26:33,210
und ’ne Unsichere Welt. Es gibt ’ne
TrustZone bei ARM, gibt’s schon länger.

402
00:26:33,210 --> 00:26:36,140
Die wird aber bei Android nicht
durchgereicht. Also Samsung hat

403
00:26:36,140 --> 00:26:41,210
mit Knox sowas ähnliches. Das ist aber…
ja das muss man kaufen. Wie lange das

404
00:26:41,210 --> 00:26:43,470
bei Android irgendwie noch dauert
bis es sowas für alle gibt,

405
00:26:43,470 --> 00:26:46,150
kann ich dir nicht sagen. Also,
es dauert aber sicher noch.

406
00:26:46,150 --> 00:26:49,520
Herald: Gibt’s noch Netz-Fragen?

407
00:26:49,520 --> 00:26:52,600
Dann machen wir weiter mit Mikro 2 bitte!

408
00:26:52,600 --> 00:26:57,910
Frage: Also ich schließe aus deinen
Ausführungen, dass das fundamentale

409
00:26:57,910 --> 00:27:02,640
Problem ist, dass die Kombination von
2 Apps auf einem Gerät das Prinzip

410
00:27:02,640 --> 00:27:06,290
Zweifaktor-Authentifizierung
einfach ad absurdum führt.

411
00:27:06,290 --> 00:27:10,770
Und dass also Sicherheit insofern
nur besser werden kann,

412
00:27:10,770 --> 00:27:14,880
dass man wirklich auf 2 separate
Geräte, die dann eben auch

413
00:27:14,880 --> 00:27:16,860
separat kompromittiert werden
müssten, setzen wird.

414
00:27:16,860 --> 00:27:20,090
Vincent: Ja, genau. Das ist genau das.
Also hier hab’ ich auch ein Zitat,

415
00:27:20,090 --> 00:27:24,150
eigentlich sehr schön. Das ist irgendwie
nicht nur was, was ich irgendwie sage.

416
00:27:24,150 --> 00:27:27,780
Auch im BaFin-Journal ist es
im August schon erschienen:

417
00:27:27,780 --> 00:27:30,720
„Die TAN sollte auf keinem Fall auf
demselben Smartphone generiert werden,

418
00:27:30,720 --> 00:27:33,950
auf dem das Online-Banking stattfindet.
Hat ein Betrüger das Smartphone gehackt,

419
00:27:33,950 --> 00:27:38,130
so kann er dadurch auf beide Verfahren
zugreifen“. Also das ist irgendwie keine…

420
00:27:38,130 --> 00:27:41,330
das ist eigentlich ’ne Erkenntnis, die…
ich weiß nicht… vielen leuchtet das hier

421
00:27:41,330 --> 00:27:45,240
tatsächlich wahrscheinlich
einfach auch ein. Also…

422
00:27:45,240 --> 00:27:53,390
*Gelächter, Applaus*

423
00:27:53,390 --> 00:27:55,180
Herald: Bitte schön!

424
00:27:55,180 --> 00:27:58,800
Signal Angel: Einige Leute wollten
wissen – vielleicht ist das jetzt gerade

425
00:27:58,800 --> 00:28:01,640
beantwortet worden –
*lacht*

426
00:28:01,640 --> 00:28:04,280
ob es, wenn man 2 verschiedene
Verfahren verwendet,

427
00:28:04,280 --> 00:28:07,650
also die App und den Computer,
ob es dann sicher ist?

428
00:28:07,650 --> 00:28:10,940
Vincent: Also, dann hat’s eigentlich
im Prinzip ähnliche Probleme

429
00:28:10,940 --> 00:28:14,780
wie z.B. QR-TAN oder Foto-TAN.
Ist aber auf jeden Fall deutlich sicherer.

430
00:28:14,780 --> 00:28:19,000
Also wenn ich jetzt die pushTAN-App
mit meinem PC verwende, dann

431
00:28:19,000 --> 00:28:21,740
ist es nicht schlechter als SMS-TAN,
würde ich jetzt sagen.

432
00:28:21,740 --> 00:28:23,540
Oder, ja, auf jeden Fall vergleichbar.

433
00:28:23,540 --> 00:28:25,090
Herald: Dann nochmal Mikro Nr.1, bitte.

434
00:28:25,090 --> 00:28:30,680
Frage: Ja, also das ist auch wohl relativ
neu, weil aus eigener Erfahrung weiß ich,

435
00:28:30,680 --> 00:28:35,830
dass es da ursprünglich mal ’n Requirement
gegeben hat, so: bei mobile Banking

436
00:28:35,830 --> 00:28:40,090
darf nicht… also wenn
du mobileTAN benutzt,

437
00:28:40,090 --> 00:28:44,620
darfst du von deinem Handy
nicht die Transaktion starten,

438
00:28:44,620 --> 00:28:48,480
wo auch die SMS hingeht. Deswegen
haben die am Anfang so total billo

439
00:28:48,480 --> 00:28:51,310
halt die host names gefiltert von
dem mobile Netz, von den…

440
00:28:51,310 --> 00:28:53,940
V: Genau.
F: …von den Mobilfunkanbietern; und dann

441
00:28:53,940 --> 00:28:57,760
hat aber der Vendor, der die Software
gebaut hat, diese Sparkassen-App

442
00:28:57,760 --> 00:29:00,980
unter ’nem anderen Logo – nicht
Sparkasse – veröffentlicht,

443
00:29:00,980 --> 00:29:04,810
ohne diese Funktion. Und so
ist das da reingekommen.

444
00:29:04,810 --> 00:29:07,890
Die wissen schon ganz
genau, dass es Scheiße ist.

445
00:29:07,890 --> 00:29:09,400
Vincent: Ja,…
*lacht*

446
00:29:09,400 --> 00:29:13,950
*Applaus*

447
00:29:13,950 --> 00:29:17,230
Also ich hab’ hier noch ’n anderes Zitat.

448
00:29:17,230 --> 00:29:22,270
Also MaSi, das sind die Mindeststandards
für die Sicherheit von Internetzahlungen.

449
00:29:22,270 --> 00:29:24,750
Und die müssen von den Banken
umgesetzt werden. Dafür ist die Frist

450
00:29:24,750 --> 00:29:28,480
jetzt gerade ausgelaufen. Und
da gibt’s eben auch einen Punkt

451
00:29:28,480 --> 00:29:31,220
der schreibt starke Kunden-
Authentifizierung vor. Der Punkt

452
00:29:31,220 --> 00:29:34,960
war aber derart schwammig, da konnte man
alles interpretieren. Deswegen gab’s dann

453
00:29:34,960 --> 00:29:37,960
dazu irgendwann mal ein Q&A [eher:FAQ?],
die länger ist als die eigene Abfassung

454
00:29:37,960 --> 00:29:43,170
davon, was das eigentlich ist. Und da
steht dann auch drin, das war dann danach:

455
00:29:43,170 --> 00:29:46,120
„Allerdings muss das App-basierte
Sicherungsverfahren und das tatsächliche

456
00:29:46,120 --> 00:29:49,180
Online-Banking unabhängig voneinander
– also über verschiedene Geräte […] –

457
00:29:49,180 --> 00:29:54,640
erfolgen.“ Also es ist sowieso fraglich,
ob dieses Verfahren überleben darf.

458
00:29:54,640 --> 00:29:57,710
Herald: Eine ganz schnelle
noch von Mikrofon 3.

459
00:29:57,710 --> 00:30:01,480
Frage: Ja, darf ich fragen,
wie du dein Geld überweist?

460
00:30:01,480 --> 00:30:03,800
Bzw. was würdest du
für’n System empfehlen?

461
00:30:03,800 --> 00:30:07,640
Vincent: Also ich selbst verwende
chipTAN. Ich verwende es sogar

462
00:30:07,640 --> 00:30:11,830
tatsächlich auch mobil. Allerdings
eher wenn ich irgendwie

463
00:30:11,830 --> 00:30:17,040
mal länger irgendwo bin, oder sowas.
Also ich habe jetzt nicht so

464
00:30:17,040 --> 00:30:20,250
das Verlangen danach, jetzt überall
Überweisungen machen zu müssen. Also

465
00:30:20,250 --> 00:30:24,280
chipTAN kann ich eigentlich schon
empfehlen, von den TAN-Verfahren.

466
00:30:24,280 --> 00:30:25,360
F: Danke.

467
00:30:25,360 --> 00:30:27,860
Herald: Vielen, vielen Dank! Bitte
nicht böse sein, wenn ihr jetzt

468
00:30:27,860 --> 00:30:30,610
nicht drangekommen seid. Vincent hat mir
versprochen, dass er jetzt noch da ist

469
00:30:30,610 --> 00:30:33,820
und eure Fragen beantwortet.
Ich hoffe, das ist okay so. Super.

470
00:30:33,820 --> 00:30:36,110
Danke schön nochmal. Ein
ganz großer Applaus für dich!

471
00:30:36,110 --> 00:30:43,700
*Applaus*

472
00:30:43,700 --> 00:30:50,301
*Abspannmusik*

473
00:30:50,301 --> 00:30:54,201
*Untertitel erstellt von c3subtitles.de
im Jahr 2016. Unterstütze uns!*
