Angriffsziel Embedded-Systems

Transcription

Angriffsziel Embedded-Systems
Kompaktseminar
Angriffsziel
Embedded-Systems
Der Referent
2001 – 2007 Doc und Postdoc
→ Algebraische Geometrie
2007 – 2013 Evaluator im Prüflabor von T-Systems
→ Untersuchung von Chips nach Common
Criteria und Pay-TV-Kriterien
→ Untersuchung von PINpads nach PCI Kriterien
→ Untersuchung von TAN-Verfahren
→ Untersuchung von Funkprotokollen
→ Sicherheitskonzept für Qivicon
Seit 2014
SEGRIDS
2/126
Dienstleistung
Beratung in Chip- und Embedded Security
● Sicherheitsarchitektur und -design
● Analysen und Tests
● Low-Level-Implementierung
● Härtung
● Dokumentation für Zertifizierung
● Zertifizierungsmanagement
3/126
Seminarziele
Mit welchen Angriffen müssen Sie rechnen?
Warum funktionieren die Angriffe?
Was Können Sie dagegen tun?
4/126
Inhalt
0. Übersicht über Angriffsmethoden
1. Reverse HW Engineering (Wegfahrsperre)
2. Seitenkanalanalyse (Chipkarte)
3. Fault Injection (System on a Chip)
4. Jailbreak (iPhone)
5. Man-in-the-Middle (EMV-Zahlung)
5/126
Zeitplan
9:00 – 10:30
10:30 – 11:00
11:00 – 12:30
12:30 – 13:30
13:30 – 15:30
6/126
Reverse HW Engineering
Seitenkanalanalyse I
Kaffepause
Seitenkanalanalyse II
Fault Injection
Mittagessen
Jailbreaks
Man-in-the-middle
Übersicht
Kapitel 0:
Übersicht über Angriffsmethoden
7/126
Übersicht
Sortieren Angriffe nach dem innersten verletzten
elektronischen oder mechanischen Schutzring.
Wie weit gelangt der Angreifer physikalisch an den
Kern?
8/126
Übersicht
9/126
Beispiel: PINpad
Welt
OBI
Display
eth
PINpad
HSM
ROM
Kartenleser
HSM
USB
RAM
Prozessor
JTAG
VCC
Prozessor
Flash
Copro
I/O
Tastatur
10/126
Slot
Übersicht
Ring Schnittstellen Angriffe
WAN
DSL, WLAN
Gerät
USB, Karten-Slot,
Tasten, Display
HSM
JTAG Ports, SensorSignale, SpeicherBusse, I/O, VCC
Chip
Strahlung
Die
Signale auf Die,
Sichtbarkeit der
Gatter
11/126
Unzählige Exploit
Kapitel
Heute mal kein
Thema
Jailbreak, Man-in-themiddle, Buffer Overflows
Kapitel 4
Power Glitches, Power
Analysis, Probing von I/OSignalen, JTAG Exploits
Kapitel 3
Seitenkanalanalyse, Laser
Fault Injection, EM Fault
Injection
Probing-Angriffe, Reverse
HW Engineering
Kapitel 2
Kapitel 1
Reverse HW Engineering
Kapitel 1:
Reverse HW Engineering
12/126
Reverse HW Engineering
Angriffsschritte für Reverse IC Engineering:
1. Delayering
2. Analyse der Gatterstruktur
3. Analse der Verdrahtung
13/126
Reverse HW Engineering
1. Delayering
● Die Frei ätzen (Flusssäure oder Azeton)
● Metal top fotografieren
● Metal top wegpolieren
●
…
● Metal 1 fotografieren
● Metal 1 wegpolieren
● Substrat fotografieren (>200nm: Optisches Mikroskop
<200nm: Elektronenmikroskop)
14/126
Reverse HW Engineering
2. Analyse der Gatterstruktur
● Gattertypen identifizieren (es gibt 70
verschiedene)
● Gatter per Software den Typen zuordnen
● Auffällige Strukturen suchen, z.B.
Lange Flipflop-Reihen => Shiftregister
Viele XOR-Gatter => Kryptoengine
15/126
Reverse HW Engineering
3. Analyse der Verdrahtung
● Verdrahtung für interessante Strukturen
nachvollziehen
● Schwierigkeit: Man benötigt viele Fotos von jeder
Lage, da Abschleifen nur lokal die Layer respektiert
16/126
Reverse HW Engineering
Alternative Semi-invasive Methode:
„Backside Infrared Imaging“
Angriff von Substrat-Seite, IR-Licht geht da durch
● Auflösung: ca. 600nm
● Analyse am laufenden Chip
●
17/126
Reverse HW Engineering
Referenz:
[1] http://events.ccc.de/congress/2008/Fahrplan/attachments/
1218_081227.25C3.HardwareReversing.pdf
[2] https://www.cl.cam.ac.uk/~sps32/ECRYPT2011_1.pdf
18/126
Seitenkanalanalyse
Kapitel 2:
Seitenkanalanalyse
19/126
Seitenkanalanalyse
Motiv:
Ermitteln der Prozessoraktivität über Messung der
Leistungsaufnahme oder der Elektromagnetischen
Abstrahlung (EM)
● EM ist feiner: welche Regionen sind aktiv?
● Im Einzel-Trace zu unterscheiden:
→ Rechenintensive Operationen
→ eventuell Muster
→ Leerlauf
→ Cache- / Speicher-Zugriff
20/126
Seitenkanalanalyse
EMA-Messung mit Nahfeldsonde (Spule mit ca. 5
Windungen),
Foto: http://www.langer-emv.de/produkt/e/set-sx/
21/126
Seitenkanalanalyse
Analyse für Angriffe nutzen:
● Räumliche Analyse für Reverse Engineering
● Timing-Analyse z.B. für Reverse Engineering
● Glitch-Zeitpunkt bestimmen für Fault Injection
● Kryptoanalyse: Welche geheimen Schlüssel
verwendet der Prozessor?
22/126
Seitenkanalanalyse
Wie kann Angreifer aus Signalen geheime
Schlüssel ermitteln?
SPA = Simple Power Analysis
DPA = Differential Power Analysis
SEMA = Simple Electo-Magnetic radiation Analysis
DEMA = Differential Electo-Magnetic radiation Analysis
Häufig: „SPA“ statt „SEMA“, „DPA“ statt „DEMA“
23/126
SPA / DPA
Signale werden mit Oszilloskop während der
Kryptooperation gesampelt
● Bandbreite (Samplerate) Oszilloskop >> Taktrate
● Typische Sampleraten:
2 GS/s für Chipkarte
20 GS/s für SoC
● Schwierigkeit:
Startpunkt der Verschlüsselung im
Signal finden
●
24/126
SPA /DPA Aufbau
25/126
SPA
Beispiel: RSA Decryption (Signatur)
● Schlüsselpaar (SK,PK) und Modulus N
● Ciphertext: X
●
Operation: dec(X) = XSK mod N
● Exponentiation per Square and Multiply
SK = b2048* 22048 + … + b0* 20
26/126
Square and Multiply R-Code
Berechnung von XSK, wo SK = b2048* 22048 + b0* 20:
> XtotheBitseq
function(X,b){
N = length(b)­1
y = 1
for (i in N:0 ){
y = y^2
if (b[i+1] == 1){
y = y * X
}
}
return( y )
}
27/126
SPA Übung
SK per SPA angreifbar, sofern Square von Multiply
im Einzel-Trace zu unterscheiden ist.
Übung: Aus folgendem Trace-Ausschnitt die SKbits b11 … b0 ermitteln:
28/126
SPA Übung
29/126
SPA Gegenmaßnahmen
SK per SPA angreifbar, sofern Square von Multiply
im Einzel-Trace zu unterscheiden ist.
Zur Diskussion: Wie lässt sich der Angriff
verhindern?
30/126
DPA
Schaden groß bei globalen symmetrische
Schlüsseln:
● PayTV: Broadcasting verschlüsselter Streams
● Funknetzwerke in Industrie 4.0, Home Automation:
Funkmodule mit globalen Default-Schlüsseln
● iPhone: globaler GID Key
● KeeLoq: globaler Master Key
31/126
DPA Gegenmaßnahmen
Unzählige Fachartikel und Patente zu DPAGegenmaßnahmen. Bausteine:
● Maskierung von Zwischenwerten mit zufälligen
Masken
● Künstlicher Jitter
● Zusätzliche Dummy DES/AES – Runden mit
zufälligem Input
● Künstliches Rauschen
Nachweise zur DPA-Resistenz häufig Unfug
32/126
Beispiel DPA Contest
DPA Contest als methodischer Fortschritt gegenüber
Publikationen mit selbstbewerteten DPAGegenmaßnahmen:
● Unabhängige Kryptoanalytiker greifen eine
vorgeschlagene Implementierung an.
● Wettbewerb zwischen teilnehmenden Instituten
erzeugt hohen Einsatz (Angriffspotential).
● Bester Beitrag liefert reelle Bewertung der
Implementierung.
33/126
Beispiel DPA Contest
Bislang waren DPA Gegenmaßnahmen für Contest
nur schwach:
Version
Jahr
Anzahl
Gewinner
benötigter
Messungen
Land
v1
2008/09 141
Université de
Limoges
Frankreich
v2
2010/11 7061
Thales
Communications
Frankreich
v3
2011/12 800
Yokohama
Universität Japan
Japan
v4.1
2013/14 1
SEGRIDS
Deutschland
Typisch für Sicherheitschips > 1.000.000 Messungen
34/126
DPA Contest v4.1
AES mit DPA-Gegenmaßnahme basierend auf
Maskierung.
● Eine 4 bit-Zufallszahl pro Verschlüsselung
bestimmt die Maskierung.
● Aufgabe: Ermitteln des AES Key aus Messungen
● Messen macht der Veranstalter:
http://www.dpacontest.org/v4/rsm_doc.php
●
35/126
Beispiel DPA Contest
Zum Üben: 100.000 Messungen
(Klartext, Key, Zufallszahl, Trace)
● Messungen für Exploitphase:
(Klartext, Trace)
● Die
Zufallszahl ist per Template-Angriff aus
jeder Einzelmessung zu ermitteln.
● Damit fällt die Gegenmaßnahme zusammen.
●
Lernziel:
Prinzip des Template-Angriffs (ist nicht schwer!)
36/126
Beispiel DPA Contest
Bitte vollständig ausblenden: AES, Key, Klartext
● Greifen statt Key (16 Byte) jetzt nur Zufallszahl
(4 bit) an.
● Haben zum üben 100.000 Messungen
(Zufallszahl, Trace)
● Müssen anschließend zu einer Messung
(?, Trace)
die zugehörige Zufallszahl finden.
●
37/126
Beispiel DPA Contest
Können ein Paar (Zufallszahl, Trace) graphisch
darstellen, wenn wir den 16 Zufallszahlen eindeutig
Farben zuordnen:
38/126
Profiling Messung 1
39/126
Profiling Messung 2
40/126
Profiling Messung 3
41/126
Profiling Messung 4
42/126
Beispiel DPA Contest
Traces sind lang: 400.035 Samplepunkte
● Erstes Ziel: Einschränkung auf interessantes
Gebiet.
● Wo gibt es ein Farb-Leck, d.h. wo ist die TraceForm stark von der Farbe abhängig?
●
Vorschläge?
43/126
Beispiel DPA Contest
Sei M die Menge aller 100.000 traces zum Üben.
Var := Varianz(M)
beinhaltet Rauschen und Signal.
Kennen für trace in M die Farbe col(trace).
Betrachten für jede Farbe:
MFarbe := { trace in M | col(trace) = Farbe}
mean(Farbe) := mean( MFarbe) “Template“
Var(Farbe) := Varianz( MFarbe )
44/126
Beispiel DPA Contest
Betrachten das (über alle Farben gemittelte)
Rauschen:
Noise = Mean {Var(Farbe)| Farbe=rot, gelb, …}
Jeder Zeitpunkt t mit
Noise(t) << Var(t)
ist interessant.
45/126
Var / Noise
46/126
Var / Noise
47/126
Var / Noise
48/126
Beispiel DPA Contest
Schränken alle Traces auf Samplepunkte t ein, wo
Var(t) / Noise(t) > 4.
Reduzierung von 400035 auf 705 Punkte.
49/126
Prisma-Effekt
300 Messungen (Übungsphase) eingeschränkt auf Gebiet mit starkem Farb-Leck.
50/126
Beispiel DPA Contest
Erkennbar: Starke Abhängigkeit der Form von der
Farbe.
Frage: Ist für Einzeltrace die Farbe aus der Form zu
ermitteln?
Vorschläge?
51/126
Beispiel DPA Contest
Frage: Ist für Einzeltrace die Farbe aus der Form zu
ermitteln?
Versuch 1: Legen Einzeltrace über das Bild.
52/126
Messung 10000
53/126
Messung 10100
54/126
Beispiel DPA Contest
Frage: Ist für Einzeltrace die Farbe aus der Form zu
ermitteln?
Versuch 1: Legen Einzeltrace über das Bild.
→ Klappt nicht eindeutig.
Versuch 2: Legen Einzeltrace über Templates
{Mean(Farbe)| Farbe= schwarz, rot, … }
55/126
Templates
56/126
Messung 10000
57/126
Messung 10100
58/126
Beispiel DPA Contest
Frage: Ist für Einzeltrace die Farbe aus der Form zu
ermitteln?
Versuch 1: Legen Einzeltrace über das Bild.
→ Klappt nicht eindeutig.
Versuch 2: Legen Einzeltrace über Templates
{Mean(Farbe)| Farbe= schwarz, rot, … }
→ Klappt nicht eindeutig.
59/126
Beispiel DPA Contest
Frage: Ist für Einzeltrace die Farbe aus der Form zu
ermitteln?
Versuch 3: Abstand zu Templates ermitteln
Template mit minimalem Abstand liefert die Farbe des
Einzeltraces
Was ist die geeignete Metrik???
Naiver Ansatz: Euklidische Metrik liefert Trefferquote
von ca 90%
60/126
Beispiel DPA Contest
Das geht noch besser (99,95%):
●
Suchen Richtungen im Raum R705 der
eingeschränkten Traces mit optimalem SignalRausch-Verhältnis SNR:
● Wenden Transformation W an, die das Rauschen
Kugelförmig macht („Pre-Whitening“ / „RauschOrthogonalisierung“).
● Dann bilden die 16 Farb-Templates die Zentren von
16 Kugelförmigen Punktwolken im R705
● Die Templates bilden auch Wolke aus 16 Punkten.
● Das optimale SNR ist genau in der Richtung, der
maximalen Ausdehnung der 16-Punktwolke.
61/126
Transformation Messung 555
62/126
Transformation Messung 555
63/126
Transformation Messung 555
64/126
Transformation Messung 555
65/126
Transformation Messung 555
66/126
Transformation Messung 555
67/126
Transformation Messung 555
68/126
Transformation Messung 555
69/126
Transformation Messung 555
70/126
Transformation Messung 555
71/126
Beispiel DPA Contest
Referenz zu den Plots und Skripten:
R Core Team (2012). R: A language and environment
for statistical computing. R Foundation for Statistical
Computing, Vienna, Austria. ISBN 3-900051-07-0,
URL http://www.R-project.org/.
72/126
Fault Injection
Kapitel 3:
Fault Injection
73/126
Fault Injection
Angriff auf Ring 2 (HSM) oder Ring 1 (Chip)
● Ring 2 - Methoden: Spannungspulse, EM-Pulse
● Ring 1 - Methoden: EM-Pulse, Laserpulse
● Ziele: Programmfluss stören, Privilegien erhöhen,
Ports öffnen
●
74/126
Fault Injection
Was passiert physikalisch ?
75/126
Elektrotechnik
76/126
Elektrotechnik
77/126
Elektrotechnik
SRAM-Zelle
Ein kurzer Spannungspuls kann das Bit kippen.
● Beim regulären Kippen fließt kurz ein hoher Strom.
● Wenn sich das Bit nicht ändert, fließt fast kein
Strom.
●
78/126
Elektrotechnik
D-Latch (1 bit Register)
Wenn E (Enable / Clock) auf low: Bistabile
Kippstufe aus zwei NOT-Gattern
● Anfälligkeit für Glitches wie bei SRAM-Zelle
●
79/126
Fault Injection
Power oder EM-Glitches schlagen galvanisch /
induktiv / kapazitiv bis zu Kippstufen in SRAMZellen oder Registern durch.
● Dadurch ändern sich ggf. einige Bits.
● Das ermöglicht viele Exploits.
● Als „Proof of Concept“ folgt ein Experiment.
●
80/126
Experiment
Glitch-Generator von Conrad
Piezo-Zündelement 15 kV
SUPI V01
81/126
Experiment
8 bit – Register: 74HC/HCT573 (Philips)
82/126
Experiment
Konfigurieren die Eingänge D0,..., D7 per
Schalter / Pull-Down beliebig.
● Die Ausgänge Q , …, Q sind mit LEDs
0
7
verbunden.
● Die Ausgänge bleiben permanent enabled (OE
auf GND).
● Disablen die Eingänge nach der gewünschten
Konfiguration (LE auf +5V).
● Erzeugen 15kV Spannungspulse mit dem
Piezzo-Zündelement.
● Was passiert?
●
83/126
Experiment: Latchen
84/126
Experiment: Glitchen
85/126
Experiment: Resultat
86/126
Beobachtung
Die D-Latches lassen sich per Glitch verwürfeln.
Einige Zellen sind leichter zu kippen als andere.
87/126
Glitch-Angriffe
Speicher und Register sind ähnlich.
● Sensible Speicher / Register-Inhalte:
Program Counter PC
Link Register LR
Gerettete Register auf Stack
ARM CP15 M[3:0]
Zustandsregister von Debug-Ports
Alle möglichen Flags
● Beispiel: Angriff auf Secure Boot
●
88/126
Beispiel
89/126
Beispiel
Boot-Sequenz Sicherheitsprozessor:
BootROM
SP Code
Boot-Sequenz Anwendungsprozessor:
LLB
(Low Level Bootloader)
Next Stage
OS
1. BootROM liest SP Code aus internem Flash in Secure
RAM, prüft Signatur, führt aus.
2. SP Code liest LLB aus externem Speicher oder Interface
ins Secure RAM, prüft Signatur, kopiert in AP's RAM und
startet AP.
3. LLB liest Next Stage aus externem Speicher, prüft
Signatur ...
90/126
Beispiel
Angriffsziel ist der Sicherheitsprozessor.
● Methode: Störung des PC (oder LR oder callArgument oder jmp-Argument) per Glitch
mittels ESD Simulator (25 kV)
● Ersetzen LLB Code (Anwendungsprozessor)
durch SP Payload.
● Glitch während SP den LLB lädt, vor
Signaturprüfung
● Wenn ein geeignetes bit im PC kippt, springt
SP in Payload.
● Automatisierter Angriff führt nach ca. 8
Stunden und 2000 Glitchen zum Erfolg.
●
91/126
Beispiel
Pseudo-Code des Exploit-Skripts:
Wiederhole 1 Woche lang:
Triggere Reset.
Sende Payload als „LLB Image“ über SW Update­Schnittstelle. Warte 1 Sekunde.
Wiederhole 5 mal:
Triggere Glitch.
Warte 100 ms.
Prüfe, ob Payload läuft.
Falls ja, stoppe Skript.
92/126
Diskussionsrunde
Wie wäre der Angriff per Hardware zu verhindern?
Ist der Angriff per Software zu verhindern?
Harvard-Architektur
ARM: enable MPU
Ist prinzipiell ein Angriff auf den Program Counter per Software zu
verhindern?
93/126
Fault Injection per Power / EM
Résumé
● Per Power-/ EM-Glitches lassen sich örtlich
ungezielt Bits kippen.
● Power oder EM-Glitches schlagen galvanisch /
induktiv / kapazitiv bis zu Kippstufen in SRAMZellen oder Registern durch.
● Die erforderliche Hardware ist billig.
● Exploits erfordern zusätzliche Schritte, z.B.
Reverse Engineering, insb. Timing-Analysen.
● Für nicht speziell gehärtete Chips ist die
Methode stark.
● Moderne Sicherheitschips lassen sich damit
meistens nicht mehr angreifen.
94/126
Fault Injection per Laser-Puls
Gezieltes Kippen von Registern und SRAM geht
auch, ist allerdings teurer: Laser oder
Doppellaser
95/126
Fault Injection - Gegenmaßnahmen
Hardware-Schutzmassnahmen:
● „Replication“, z.B. mit „Triple Modular
Redundancy“; Wichtig: „Voting“-Schaltkreise
ebenfalls härten.
● Checksummen
96/126
Fault Injection - Gegenmaßnahmen
Software-Schutzmassnahmen:
● Checksummen
● Execution-Randomisierung
● Execution-Redundanz
● Fehler-Erkennung durch zusätzliche
Berechnungen
97/126
Buffer Overflow
Kapitel 4: Jailbreaks
98/126
Jailbreaks
Targets:
iPhone, iPad, Apple TV
Ziel:
Laden unauthentisierter SW
Angreifer:
Jailbreak-Spezialisten (Identifikation)
Eigentümer des Geräts (Ausnutzung)
Schaden für Apple:
<100 Euro pro gebrochenem Gerät
Nutzen für Apple:
Erweitert den Kundenkreis
Garantie fällt weg
99/126
Jailbreak versus Hactivation
Hactivation:
● schaltet SIM-Karte frei
● ist genau dann möglich, wenn Bootrom-Exploit
existiert
● ist nicht mehr so relevant: ab iOS 7.1 kein
SIM-Lock mehr
100/126
Jailbreaks
Schutz der Software durch:
● Verschlüsselung
● Signatur
101/126
Jailbreaks
Boot-Sequenz:
Ab iPhone 3GS: Jede Komponente prüft die
Signatur und entschlüsselt das Image der
nächsten.
102/126
Jailbreaks
Boot-Sequenz:
Drei Software Update Modi:
Modus
DFU Mode
Recovery Mode
post boot
103/126
Boot Status
BootROM
iBoot
iOS
Schnittstelle
USB
USB
USB / Netz
Jailbreaks - Historie
iPhone
1
3G
3GS
Jahr
2007
2008
2009
iOS
1.0.0 – 3.1.3
2.0 – 4.2.1
3.0 – 6.1.6
Hauptprozessor Bootrom Exploits
Jailbreaks
S5L8900
Pwnage
Pwnage 2.0
S5L8900
Pwnage
Pwnage 2.0
S5L8920
0x24000 Segment Overflow
Limera1n
blackra1n
BootNeuter
redsn0w
4
2010
4.0 – 8.1
S5L8930
Limera1n
SHAtter
4s
2011
5.0 – 8.1
S5L8940
%
Geeksn0w
Greenpois0n
Absinthe
Pangu
%
evasi0n7
Pangu
%
evasi0n7
Pangu
5
5s
2012
2013
6.0 – 8.1
7.0 – 8.1
S5L8950
S5L8960
5c
2013
7.0 – 8.1
S5L8950
%
evasi0n7
Pangu
6
2014
8.0 – 8.1
T7000
%
Pangu8
6
2014
8.0 – 8.1
T7000
%
Pangu8
104/126
Jailbreaks mit BootROM Exploit
Bootrom-Exploit bringt BootROM zur Ausführung
eines unsignierten Payloads
Ein kompletter Jailbreak erfordert zusätzlich:
● LLB im Klartext auslesen und Signaturprüfung für
iBoot eliminieren
● iBoot im Klartext auslesen und Signaturprüfung für
iOS eliminieren
● LLB patch und iBoot patch ins Flash schreiben
Der BootROM-Exploit macht das alles möglich!
105/126
BootROM Exploit
Beispiel für BootROM Exploit:
0x24000 Segment-Overflow
●
●
●
●
Target: iPhone 3GS
Methode: Buffer-Overflow
Schwachstelle: BootROM prüft nicht ob LLB Image in Puffer
passt
Gefunden von: chronic, CPICH, ius, MuscleNerd, Planetbeing,
pod2g, posixninja, et al.
106/126
BootROM Ablauf
0x22000000
0x22024000
Puffer für (verschlüsselten) LLB
BSS
Heap
Stack
SRAM Start
BootROM
● kopiert (verschl.) LLB Image vom Flash in Puffer
● Im DFU Mode: Image von USB-Schnittstelle
● Triggert Berechnung von SHA1(LLB Code)
● Prüft, ob Signatur korrekt, d.h. ob
RSA_enc(ROM-Key, Signatur) == SHA1(verschl. LLB CODE)
● Entschlüsselt LLB Code
● Springt in LLB Code
107/126
Exploit Grundlage
●
●
●
●
SHA1 per Hardware
BSS enthält Adresse des 64 Byte SHA1 Engine Input
Registers
0x20024000 Segment Overflow nutzt fehlenden GrößenCheck, um diese Adresse zu verändern
Sprungbrett, um im nächsten Schritt eine Rücksprungadresse
im Stack zu verändern
108/126
BootROM - Pseudocode
WriteLLBImage2Buffer(){
//Fehlende Prüfung der Image-Größe
...
//Exploit: Überschreiben der Adresse des
//Sha1 Input Registers
}
doSha1(Puffer){
Sha1 = <64 Byte Initialwert>
for Block in Puffer{
sha1 = sha1 ^ Digest(Block)
}
return (sha1)
}
Digest(Block){
WriteSha1Input(Block) //Adresse aus BSS (!)
TriggerSha1Engine()
return(ReadSha1Output()) }
109/126
Jailbreak LLB Image
0x22024000
LLB DATA
LLB Image Buffer
doSha1 LR
Adr SHA1Eng
Reguläres Image
0x22000000
BSS
Stack
SHA1 Buffer
0x14
110/126
Payload
0x2202FE38
doSha1 LR
LLB DATA
0x22023000
0x2202FE24
0x22023000
Jailbreak Image
Heap
Jailbreak - Ablauf
●
●
●
●
●
Bauen LLB Jailbreak Image
Versetzen iPhone 3GS in DFU Mode und senden das Jailbreak
Image per USB-Kabel (DFU Protokoll).
WriteLLBImage2Buffer( ) schreibt das Exploit Image ins SRAM.
Die Input-Adresse der SHA1 Engine wird mit 0x2002FE24
überschrieben. Das ist 0x14 Bytes vor der Stackposition, an welcher
später die Rücksprungsadresse zu doSha1 gerettet wird.
DoSha1( ) ruft in der for-Schleife Digest(Block) auf, wobei
Block = SHA1 Buffer [0:63]
●
●
Vor Digest( ) wird dar PC (R15) von DoSha1 ins LR (R14) kopiert.
An Stelle 0x14 des Blocks steht 0x20030000, die Startadresse des
Payloads.
111/126
Jailbreak - Ablauf
●
●
Digest( ) ruft WriteSha1Input( ) auf
Zuerst werden die Register gerettet,
Rücksprungadresse zu doSha1 verschoben:
dabei
wird
die
R14 → 0x2002FE38
●
Digest( ) sucht die (überschriebene) SHA1 Engine Input Adresse in
BSS und kopiert den Block dahin.
Dabei wird die Rücksprungadresse zu doSHA1( ) mit der
Startadresse von Payload überschrieben.
●
Nach dem return( ) von Digest( ), startet jetzt Payload.
112/126
Untethered Jailbreak
Möglichkeiten des Payloads:
● Nutzung der Hardware AES-Engine und ihrer
Keys (GID Key, UID Key)
● Verschlüsseln / Entschlüsseln von Images
● Flashen von Images
● „Tethered Jailbreak“ (bisher) zum „Untethered
Jailbreak“ machen
113/126
Jailbreaks - Referenzen
[1] http://theiphonewiki.com/wiki/25C3_presentation_
%22Hacking_the_iPhone%22
[2] https://code.google.com/p/chronicdev/wiki/Bootrom
114/126
Schwache Protokolle
Kapitel 5:
Schwache Protokolle Beispiel EMV-Zahlung
115/126
Schwächen im EMV-Protokoll
Beispiel: Bezahlung mit Chipkarte
Verfahren: EMV offline
Teilnehmer:
● Karteninhaber
● Chipkarte (VISA Card mit DDA)
● Terminal
● Kassierer
Daten:
● PAN
● Betrag
116/126
Authentifizierung
Authetifizierung:
Wer? authentifiziert was? wie? gegenüber
wem?
117/126
Schwächen im EMV-Protokoll
Authetifizierung:
Wer? authentifiziert was? wie? gegenüber wem?
118/126
wer
was
wie
wem
Terminal
sich
nicht
Kunde
Kunde
sich
Besitz der
Chipkarte
Kassierer
Terminal
sich
nicht
Chipkarte
Chipkarte
sich
DDA
Terminal
Kunde
sich
PIN
Chipkarte
Chipkarte
Kunde
„9000“
Terminal
Chipkarte
Betrag
AC
Terminal
Chipkarte authentifiziert sich nicht gegenüber Kunde.
„Schuhkarton-Angriff“ ist immer möglich.
Täter: Aufsteller des Schuhkartons
● Bei bedienten Geräten ist der Kassierer
der erste Verdächtige.
● Keine Transaktion kommt zustande.
●
119/126
Chipkarte authentifiziert sich per DDA gegenüber Terminal.
120/126
Kunde authentifiziert sich per PIN gegenüber Chipkarte.
121/126
Chipkarte authentifiziert Kunden per 9000 gegenüber Terminal.
122/126
Man-in-the-midlle Angriff
Die 9000er Nachricht („PIN OK“) ist nicht signiert.
Man-in-the-middle-Angriff möglich.
● Täter: Karten-Dieb
● Geschädigter: OBI
● Angriff 2010 von Ross Anderson veröffentlicht
● War schon vorher bekannt.
●
123/126
Chipkarte authentifiziert Kunden per 9000 gegenüber Terminal.
Übung: Zeichnen Sie ein Kommunikationsdiagramm
für den beschriebenen Angriff.
124/126
Chipkarte authentifiziert Betrag per AC gegenüber Terminal.
Terminal erkennt falschen MAC nicht.
125/126
Verbesserung bei CDA-Unterstützung
Terminal erkennt falsche Signatur.
126/126