Lieber Zuschauer, dieser Untertitel wurde automatisch generiert von Trint und dementsprechend (sehr) fehlerhaft. Wenn du kannst, hilf uns bitte gute Untertitel zu erstellen: https://c3subtitles.de/talk/1175 Danke!
Unser nächster Sprecher bezeichnet
sich selbst als reverse engineering
Fetischist mit einer Vorliebe für
Spielekonsolen.
An dieser Vorliebe lässt er uns in seinem
Talk teilhaben.
Bitte begrüßt mit mir Morpheus 19
zu seinem Talk Exploit in PS4
Video Apps.
Hallo und danke fürs
Kommen.
Ja, Exploit Floating P.S.
vor Video Apps.
Ich denke mal, der
Titel sagt mehr oder weniger schon, worum
es in diesem Tag gehen wird.
Ich habe meine kleine Agenda vorbereitet,
es wird ein kleines Intro geben.
Dann werde ich halt zeigen, wie ich ganz
am Anfang halt so ein bisschen Analyse
bzw. Netzwerkanalyse betrieben habe,
um mein Ziel Code
Execution auf der PS4 zu erlangen.
Dazu erst mal kurz was über mich.
Ich will noch was.
1 7
Wer hat in der Szene unterwegs ist,
hat den Namen vielleicht schon aus einem
anderen Mal gehört.
Privat bin ich Softwareentwickler aus dem
ERP Bereich und
habe eine kleine Vorliebe für Reverse
Engineering und vor allem wenn es
um Spielekonsolen geht.
Am Anfang 15 hatte
meine Frau vor mir zum Geburtstag zu
schenken.
Da ich das Ding sowieso nicht wirklich
zum Spielen haben wollte und der
1 7 6a ihr Exploit
schon öffentlich war, habe ich dann
gesagt Pass auf, lautet sein,
du hast mir keine kaufen, ich hol mir
selber eine und habe mich dann auf der
Suche nach einem Modell mit Firma eins
eins sieben sechs gemacht und habe dann
bei Amazon ein Anbieter
gefunden, der angeblich noch ein
gewisses Wandel hatte.
Das hat mit dieser Firma Version kommen
sollte.
Ich habe es dann bestellt, hat
das Amazon Paket voller Freude aufgemacht
und habe dann quasi festgestellt ich
wurde übers Ohr gezogen, habe dann eine
einzelne Konsole mit zwei einzelnen
Spielen bekommen und als ich die Konsole
dann halt aufgemacht habe, hatte die
Firmware 13:15.
Jetzt hätte ich das Teil wieder
zurückschicken können.
Hab mir mal gedacht
na
dann suche ich halt selber weg,
irgendwie da reinzukommen.
Das erste, was ich dann halt gemacht
habe. Ähm, ich bin
halt hingegangen und habe versucht so
viel wie möglich über die Konsole
rauszufinden. Und das erste was ich
gemacht habe ich habe halt Netzwerk Paket
analysiert.
Zu Hause hatte ich dieses Setup.
Ich habe eine IP als Firewall.
Darüber geht hat der gesamte Netzwerk
Traffic bei mir zu Hause im Netz und
darauf habe ich dann einfach mal TCP am
laufen lassen und habe dann einfach mal
angefangen sämtliche Video Apps oder
Applikationen die ich halt auf der PS4
gibt zu starten
um halt ein bisschen Netzwerk Traffic zu
generieren um um das ganze dann später
zu analysieren.
Und dabei ist mir dann halt direkt
aufgefallen, dass
gewisse gewisse Video Apps beispielsweise
irgendwie wo
die benutzen noch eine ziemlich alte
Version
vom
Benutzen, noch eine ziemlich alte Version
von Apple Typekit und
was am allerbesten war die
benutzen kann SSL, der ganze Traffic, der
war für mich also quasi im Klartext
sichtbar.
Und dann habe ich mir gedacht Moment,
wenn ihr halt diese alte Widget Version
benutzen, dann müsste doch theoretisch
dieser öffentliche Webcam Exploit,
den es für vier sieben sechs gibt.
Dann müsste doch mit diesem Video
Apps noch funktionieren.
Und dann habe ich quasi folgendes
getan Ich bin einfach hingegangen,
habe zu Hause einen Webserver aufgesetzt,
habe dort den Exploit
für die 6 laufen lassen
und habe dann einfach die DNS Abfragen
dieser Videos auf meinen eigenen
Webserver umgeleitet.
Und auf dem PS4,
also auf dem
auf meinem auf ein TV zu Hause
bin ich dann halt diese Video Apps
gestartet habe, habe ich dann quasi
folgenden Output bekommen
und dieser Output sagt uns eigentlich,
dass dieser Exploit in diesem Video
absolut funktioniert.
Was hieran natürlich sofort auffällig war
für mich war egal wie oft ich die PS4 neu
gestartet habe, egal wie oft ich die
Anwendung neu gestartet habe, die
Adressen waren halt immer unverändert,
was für mich so viel bedeutet, dass halt
kein Eis mehr aktiv ist.
Und was mir das Leben halt
im Nachhinein halt auch noch ziemlich
einfach gemacht hat.
Dieser einzigen 6er Exploit,
der nur selten back in der Resort
Funktion aus und ist dann halt über
diesen Bug in der Lage,
den Zeiger von einem von einem Pointer
umzuschreiben.
Dadurch, dass wir in der Lage sind, die
Speicher Adresse umzuleiten, wo dieser
Pointer hin zeigt,
sind wir natürlich auch in der Lage dann
beliebige Speicher Adressen zu lesen und
zu schreiben.
Und dieser Exploit gibt halt
quasi gibt
ja quasi eine Base
Funktion darstellt mit z.B.
Funktion zur Verfügung. Dieses besten
kann halt verwendet werden um
die Speicher Adresse wo diese wo dieses
Array zeigt an
beliebige Stellen zu platzieren.
Und wenn man die dann halt einmal
platziert hat, kann man dann halt einfach
den ersten Wert in dem auslesen
und kann dann somit diese Speicher
schneller auslesen.
Oder man kann halt wie in der letzten
Zeile zu sehen, man kann halt einfach
beliebige Speicher Adressen beschreiben.
Wohnen. Nun war es für mich halt
interessant.
So viel wie möglich aus der Konsole
rausholen bzw.
so viel wie möglich rauszufinden.
Und dann bin ich erst mal hingegangen und
habe quasi sämtlichen Speicher der
Sonne wieder Applikation zur Verfügung
steht auszulesen.
Und dann habe ich ihn.
Jetzt kann ich quasi hingehen und mir den
Output am Fernseher angucken und dann in
Mexiko abschreiben, was halt nicht so
wirklich effektiv ist.
Oder ich habe mir dann halt gedacht Ja
gut, dann schreibt sie ja eine kleine
Software am PC, die Macht hatten http
Server auf und empfängt dann halt
quasi die Daten von der PS4.
Pferdedieb Pickett
und
die PS4 versucht halt die eigene App
Seite zu erreichen. Wird halt auf dem
Exploit umgeleitet und der Exploit ließ,
sondern speichert Adressen aus und macht
dann halt einen Ajax Kollern in
Tampa und
der Code dazu sieht halt quasi so
aus. Ist nicht wirklich groß.
Ganz am Anfang setzen wir halt die
Adresse, die wir,
die wir lesen wollen, die wir auslesen
wollen
und dann
suchen wir dann halt weiter und man wird
dann halt einfach in Jacks
Befehl abgesetzt, der dann halt das ganze
Zeug per HTTP an den PC
sendet.
Dieses Auslesen, das funktioniert
natürlich nur auf Speicher Bereiche, auf
die die App ohnehin Zugriff hat.
Also man muss halt den Hieb der App lesen
schreiben können
und
man hat natürlich Zugriff auf alle
Systeme Module, die geladen werden, weil
die muss die App ja auch irgendwie
ausführen können.
Wenn ich versucht habe ein falsches in
eine falsche Speicher Adresse auszulesen,
dann ändere das manchmal in einem
Crash von der App.
Aber manchmal ist die PS4 auch komplett
abgestürzt und die musste dann halt
reboot und das waren immer 2 3 Minuten
gedauert.
Kleine Tracks auslesen hat für mich quasi
das beste Ergebnis geliefert.
4 KB auf einmal waren war halt immer
mal super und man konnte halt aber auch
variieren. Wenn ich jetzt so ein 10b
Modul auslese ist natürlich sehr
mühselig, wenn ich halt bei jedem Versuch
nur 2 kg auslesen kann.
Da ist man halt ewig ewig mit
beschäftigt.
Ja, die Anwendung selber
läuft wie auf einem ganz normalen FreeBSD
unter und unter 400000 hexadezimal,
während der HEP irgendwo bei 200
Millionen hexadezimal war.
Bei diesem Dumping Verfahren ist mir halt
relativ schnell aufgefallen, dass die
Module jeweils 60 Kilometer voneinander
entfernt liegen.
Und in späteren Forschungen habe ich
herausgefunden, dass die 60 Kilo genau
die Page Seite wie Page Seite vom Orbis
uses, also vom Betriebssystem der PS4.
Dieses Auslesen hat halt sehr sehr sehr
sehr lange Zeit in Anspruch genommen,
weil manchmal konnte ich halt zwei
Kilometer am Stück auslesen, manchmal
konnte ich halt ein ganzes Stück
auslesen, manchmal konnte ich aber auch
nur 22 Byte auslesen, obwohl ich
halt gültige Speicherbereich auslesen
wollte. Woran das liegt,
habe ich nicht rausgefunden.
Das war halt auch immer wieder mehr oder
weniger random.
Aber um halt quasi alle Module
auszulesen.
Ich war damit ungefähr 2 Monate
beschäftigt, jeden Abend 2 3 Stunden
um.
Das hat nicht wirklich viel Spaß gemacht.
Aber wenn man
Langeweile hat, nimmt man das in Kauf.
Nichtsdestotrotz habe ich irgendwann
dann wirklich alle Speicher Module aus,
also alle Speicherbereich ausgelesen
und hatte dann halt quasi eine nette
Sammlung. Und das Gute, das Gute an
dieser Geschichte ist.
Das sind alles Bereiche.
Und dadurch, dass ich quasi eigenen Code
ausführen möchte und und auf der PS4,
DP, DP aktiv
ist Datei Krisenprävention
hat mir das natürlich sehr geholfen, weil
dann konnte ich halt für meine Gadgets
suchen.
Wie geht es nun weiter?
Ich habe jetzt quasi Speicher ausgelesen
und wir wollen ja eigentlich
Code ausführen. Aber wie kann ich denn
jetzt mit einem Exploit
den eigentlich nur erlaubt,
Speicherbereich zu lesen und zu
schreiben? Wie kann ich denn da jetzt mit
dem Programm Plus übernehmen?
Und da ist die Antwort ganz klar
mittels VTB Hebels.
So was. Was ist eine VTB?
In jeder objektorientierten
Programmiersprache, in der
quasi Object Instanzen zur Laufzeit
angelegt werden, werden also
Tablets verwendet, um.
Wir haben zu einen, zu einem haben wir
quasi für jedes Objekt.
Jedes Objekt hat ja Eigenschaften und
Methoden und die Instanz
des Objektes, die hip oder irgendwo
im Speicher liegt.
Die diese die Eigenschaften vom Objekt
selber, die liegen halt quasi auch mit
auf dem Hieb.
Was? Was durchaus Sinn macht.
Aber die Vorteile der Methoden, dass wir
halt halt relativ schwachsinnig
für jede, für jede Methode, die
hat ihn zum Objekt benutzt wird.
Wenn ich alle drei Instanzen von einem
und demselben Objekt habe, macht das
natürlich relativ wenig Sinn.
Diesen Code und diesen Code bereichert
auch für jeden, die für jede Objekt
Instanz wieder mit in den Speicher zu
packen. Und deswegen wird
der Code der Methoden
halt im IM
im Red Execute Speicherbereich
abgelegt und in
den Objekten selber, die auf dem Ghibli,
die auf dem Chip liegen, die wir lesen,
schreiben können.
Da gibt es einfach nur eine Referenz zu
dieser Tabelle, wo halt quasi
die verschiedenen Methoden im Speicher
liegen.
So aber mit dem Wissen, dass wir halt
ähm,
dass die VTB selber
mit dem Wissen, dass sie VTB selber in
einem Speicherbereich liegt, den wir nur
lesen und ausführen können, der Pointer
zu dieser Tabelle aber in dem Bereich
liegt, den wir lesen
und
beschreiben können, um
mit diesem Wissen können wir natürlich
hingehen und diese VTB einfach
austauschen.
Mit einer VTB, die halt
ja die Sachen enthält, die uns
zu nutzen sind, die wir halt ausnutzen
können. Und daraufhin habe ich dann quasi
folgenden folgenden Plan geschmiedet.
Das erste, was wir machen müssen, ist
jetzt Reinhold erst mal ganz viele
Objekte auf den Job
suchen, dann halt eins dieser Objekte
finden. Die finden die VTB von dem
Objekt, tauschen die aus
und versuchen dann die Rope Execution
zu triggern,
um Objekte auf dem HIP sprayen.
Dadurch, dass wir uns hier im JavaScript
bewegen, ist relativ einfach.
Ich bin dann halt einfach hingegangen und
habe um ganz viele Text
Areas gesprayt und habe in diesen Text
Areas in der Eigenschaft
Rostrot Code reingeschrieben
wird. Code ist halt ein Wert von bei dem
bin ich halt ausgegangen.
Der ist halt auf dem HIP nicht ganz so
oft zu finden.
Und somit haben wir schon
mal erst mal ganz viele Objekte auch auf
dem HIP gesprayt.
Als nächstes müssen wir das Objekt
finden, also eines dieser Objekte, die
wir gesprüht haben, müssen wir natürlich
auf dem Hieb finden.
Und wenn wir dieses Hip Spring betreiben,
dann wird natürlich nicht dann, wenn die
Objekte natürlich nicht hintereinander
auf dem Speicher abgelegt, sondern
die werden halt irgendwie wild verteilt.
Und das ist der Grund, warum wir jetzt
über den Yip gehen müssen und eins dieser
Objekte finden müssen.
Das Suchen der Objekte ist halt auch
nicht wirklich schwer.
Ganz ganz oben sehen wir halt,
dass ich mit dieser Base Funktion, dieses
Array, was wir zum Auslesen benutzen.
Das setzt sich halt einfach an den Haken,
an den Anfang vom Hieb und dann,
wenn ich ihn in 4 Byte
schritten über den hier drüber
und und
versuch den Wert der Code zu finden.
Wenn ich diesen Wert gefunden
habe, dann
ermittle ich mir halt die Startposition
vor meinem von meinem Objekt, weil die
brauche ich für den brauche ich zu einem
späteren Zeitpunkt und änder diese
und ändert diesen Wert im Wettbewerb.
Das tue ich, weil
wenn ich jetzt dieses z.B.
wenn ich jetzt den Code in der umändern,
dann
muss ich natürlich.
Dann muss ich. Ja, ich muss natürlich
irgendwie rausfinden.
Ich weiß ja nicht in meinem.
In meinem Array, den ich GesprAche habe.
Ich weiß jetzt nicht welche,
welches Objekt ich geändert habe.
Also die Eigenschaft von welchem, von
welchem Index nehme ich ab
da abgeändert habe.
Und somit gehe ich nun halt quasi
im nächsten Schritt einfach wieder über
mein Array und guck in
welchem Objekt steht denn jetzt in der
Eigenschaft der drin?
Und somit kenne ich und an der Stelle bin
ich dann halt einfach sicher, dass ich,
dass ich die Speicher Adresse von meinem
Objekt kenne. Und ich kenne halt auch den
Index von meinem Objekt immer in meinem
gesprayt up
und dann zum Schluss gehe ich halt
einfach nochmal hin und da
und in diesem Wettbewerb in
den Code Make up und prüft dann halt
noch mal
im
in der Speicher Adresse, die ich ja quasi
ermittelt habe. Ich les die Nummer aus
und wenn ich da dann wirklich Code bei
drinstehen hat, dann bin ich mir sicher,
ich kenne jetzt den Index von meinem
Objekt in Speicher und ich kenne halt
auch die.
Also ich kenne die. Ich kenne das Offset
von meinem Speicher und ich kenne ich
kenne halt auch den Index in meinem
Array.
Nachdem wir das gemacht haben, kommt als
nächstes müssen wir als nächstes die VTB
des Objekts finden, damit wir diese
später ersetzen können.
Die VTB finden.
Zu finden ist halt relativ einfach.
Wir kennen ja wir kennen die
die Adresse im Speicher von und von
unserem Objekt Instanz.
Und da wir ja gerade gesehen
haben, dass die VTB von einem Objekt
immer im Code Bereich liegt, der halt
nur gelesen und nur ausgeführt werden
kann, muss sich halt an der Stelle
einfach nur nach einem Pointer in so
einem Code Bereich suchen und
das ist halt relativ einfach.
Sobald ich einen Pointer gefunden habe,
habe ich einfach geguckt was was steht
an dieser Stelle im Speicher.
Und wenn ich dann halt quasi so was
gefunden habe.
Daran erkennt man halt relativ einfach.
Man sieht jetzt zwei Blöcke und mir ist
halt nichts anderes als ein Array von von
Offset, die halt irgendwo in den
Bereich rein rein zeigen.
Und wenn man so was sieht, dann weiß man
in der Regel Okay, das ist Def Table
und somit haben wir auch den den Pointer
profitabel im Objekt gefunden.
So.
Wie triggern wir denn jetzt als nächstes
die Execution?
Diese Methode mit der VTB,
die Sorgfalt, quasi die Methode
mit der VTB.
Hier sorgt man quasi dafür,
dass wir genau ein Gadget ausführen
können.
Und dieses Gadget muss dann natürlich ein
Gadget sein, das dem steckt Pointer und
unter unserer Kontrolle bringt.
Da wir Rob Execution haben
möchten
und es gab jetzt quasi in
all diesen Modulen, die ich ausgelegten
gelesen habe, wirklich nur ein
Gadget, was ich noch was dafür geeignet
war. Und das war natürlich und das war
Push x Pop resp.
Was nichts anderes macht, als den Wert
vom Register r x in
den Registern, also in den Stick Pointer
Register einzuschreiben.
Und somit wäre dann
quasi bei der nächsten Instruktion unser
Stack Pointer auf unsere Chain
und die Ausführung könnte weitergehen.
So, jetzt stehen wir aber vor dem
nächsten Problem.
Wir können nur speichern lesen und wir
können Speicher lesen und schreiben.
Wir sind aber nicht in der Lage
irgendwelche CPU Register auszulesen.
Und das war dann halt wirklich so der
Punkt, wo ich wirklich kurz vorm
verzweifeln war, weil ich habe da jetzt
mehrere Monate Arbeit reingesteckt und
ich wusste halt einfach nicht mehr
weiter.
Und dann hat mich halt ein Kollege
darauf hingewiesen, sagte zu mir Na, das
ist doch ein FreeBSD, was
auf der PS4 läuft.
Versucht er doch einfach dieses
Versuche doch einfach diese Testumgebung
in der virtuellen Maschine nachzubilden.
Und genau das habe ich dann auch.
Genau das habe ich dann auch getan.
Und zwar habe ich mir eine PCB in den
neuen VM aufgesetzt, die dann
zufälligerweise und zu meinem Glück
mit einer alten Midori Version kam,
die halt quasi auch für den selben
Bug anfällig war.
Und dann muss ich jetzt natürlich noch
hingehen und den Exploit
von der PS4 auf den
PC portieren.
Das war aber nicht wirklich sehr
kompliziert, weil man halt am PC mit
GdB und so weiter diese
Offsets Unterschiede die es da so gibt
relativ relativ einfach ausmachen,
ausfindig machen kann.
Und ja,
dann habe ich mir ein Breakpoint an genau
der richtigen Stelle gesetzt.
Hat die Ausführung.
Habe versucht die Rubik zu triggern
am PC selber und
konnte dann halt und durfte dann
feststellen,
dass er x
x Register den wir brauchen genau
auf die VTB zeigt.
Was natürlich eine super Sache für
uns ist, weil das bedeutet, dass wir
genau an dieser Stelle, also genau in
die VTB bzw.
die FAQ Vorteile, die wir lesen,
schreiben können.
Da können wir jetzt unsere.
Da können wir unsere Gadgets platzieren.
Und diese Selektion Staat
ist
ist der Eintrag 30 von dieser Fake
Portable. Das bedeutet, dass alles was
vor 30 kommt, von uns erst mal benutzt
werden kann, um eine kleine
Roxane auszuführen.
Sumpf.
Und genau das
tue ich an der Stelle als allererstes
gehe ich hin und such mir die.
Ja genau und hol mir die, hol mir die
Speicher Stelle und mir die Speicher
Adresse der VTB.
Als nächstes
lege ich halt die Fake Portable im
Speicher an und um Platz
innerhalb der Fake Portable.
Überall unser Gadget.
Der halt in den Wert von Rex
in den Spiegel verschiebt.
Einfach um sicher zu sein.
Ich hätte jetzt einfach nur den
dreißigsten Eintrag ändern
können, aber.
Ich glaube ich glaube ich war einfach zu
faul rauszufinden, ob es wirklich ein 30
ist oder nicht. Dann habe ich mir gedacht
ja, viel hilft, viel ändert er das Ding
halt einfach komplett ab,
denn wir brauchen ja nur die ersten drei
Einträge um um
unsere
kleine robbt Shantanu noch mal zu einer 5
von einer etwas größeren Rodschenkow zu,
um zu schieben um zu schubsen.
Aber auf jeden Fall die Facebook Tabelle
wird vorbereitet und ganz zum Schluss
ja, er setzt sich dann den
Wert der originalen Tabelle mit dem Wert
von von von der Tabelle.
So sauber
wie gerade im Beispiel, wie gerade im
Beispiel schon erwähnt
kann, wenn die Rippchen an der Stelle
steht,
kann die rot sein, wenn die quasi an der
Stelle steht, wo sie steht um.
Die Drachin ist quasi
maximal so groß, wie unsere VTB groß
ist. Das bedeutet, wir können nicht
wirklich viele Gadgets
dahin platzieren.
Was wiederum bedeutet, wenn wir eine
größere Rutsche haben wollen
oder eine größere Rotation ausführen
möchten, müssen wir natürlich
eine zweite, also unsere echte Royal halt
irgendwo anders in den Speicher
hinschieben und dann mit den mit den
ersten paar Gadgets, die wir ausführen,
den Stack Pointer zu dieser richtigen
Rodschenkow hinschieben
und.
Ja und genau das tun wir ja quasi hier in
dem Code ganz am Anfang
sieht man halt wie
ja ganz am Anfang geh ich halt zu unserer
Facebook Tabelle hin und ersetze
die ersten drei Gadgets das erste Mal
mit, das erste Mal mit einem Knopf.
Da passiert da, dann passiert gar nichts.
Und das zweite macht einen Pop resp.
Rap-Szene. Und dieses zweite Gadget
sorgt hat quasi dafür,
dass unsere
dieses zweite Rachedurst Pathologin,
das dritte Gadget sogar quasi dafür, dass
das die ESP Adresse halt wieder woanders
hin zeigt auf dem HIP.
Und zwar auf unsere zweite
Rap-Szene, die wir halt unten,
die Welt unten sehen, die halt auch erst
mal nichts anderes macht als
einfach nur ein endlos Loop.
Erst mal ein paar Noobs und dann halt ein
finales Loop. So, warum mache ich das?
Warum mache ich das auf diese Art und
Weise?
Weil wenn ich halt quasi.
Ich könnte das endlos Love hat quasi auch
direkt an der ersten Stelle reinpacken.
Aber dann haben sie natürlich das Problem.
Jetzt weiß ich nicht, läuft meine Roche
jetzt wirklich durch oder?
Oder ist sie oder wird halt wirklich nur
das erste Gadget ausgeführt?
Und genau aus diesem Grund lege ich halt
erst mal ein paar Loops an.
Und wenn ich dann halt unten in so einem
Club lande, dann weiß ich Okay, die
Gadgets davor, die wurden halt quasi
auch ausgeführt.
Wie kann ich denn, nachdem ich das Ganze
jetzt vorbereitet habe?
Ich habe ja quasi
die
ich habe ja quasi die ganzen Speicher
Adressen gefunden, habe die Faxen Tabelle
mit einer Facebook Tabelle ausgetauscht.
Wie kann ich da jetzt kontrollieren, dass
meine Rogoshin halt auch wirklich
getriggert wird?
Und die Antwort ist halt relativ
einfach.
Ich habe ganz unten zum Schluss.
Da gibt es dieses App, das macht nichts
anderes, als auf dem
Display eine PS4 angeschlossen
ist,
um
dieses Feld auszugeben.
Und in einer idealen Welt, wo halt
diese wo dieses Triggern der robbt schön
funktioniert hat,
darf diese Zeile natürlich nicht
ausgeführt werden.
Es wird quasi ich hole mir ganz oben
das Objekt, also das Objekt mit dem
Index, den ich ermittelt habe und trigger
halt einfach dieses Set Selection Start.
Und wenn dieses Feld nicht ausgeführt
wird und dieses Feld nicht ausgeführt
wird, dann hat alles funktioniert.
Und in meinem Fall war es Gott sei
Dank so, dass das halt problemlos
funktioniert hat.
Wir haben in den Folien davor gesehen,
wie müde, wie mühselig es quasi
sein kann, eine Roxane auf diese Art und
Weise auszuführen.
Das macht natürlich. Das macht natürlich
wenig Spaß, erst recht, wenn die
Rothstein den Rückstand hat, viel, viel
größer wird.
Und aus diesem Grund bin ich quasi
hingegangen und habe mir so ein kleines
hat mir so ein kleines Framework.
Mir hat mir so ein kleines Framework
gebaut, mit dem ich wohl
im Framework selber habe ich halt quasi
die Adressen zu den verschiedenen Gadgets
definiert, sodass ich dann halt zu einem
späteren Zeitpunkt einfach in der Lage
war, mit mir mit dem Framework
halt quasi meine Gadgets, also ein
bisschen leserlich zu schreiben und so in
der Lage war, halt auch ein paar etwas
komplexere Obszönes auszuführen.
In dem Fall, was diese Blockchain
hier macht.
Die macht nichts anderes als die öffnet
halt quasi ganz oben,
ganz oben öffnet die halt quasi die,
die weiß Ordner
ließ den aus, macht dann Socket auf
und schickt das was ausgelesen
wurde halt wieder zum PC zurück.
Das ist halt alles nicht wirklich schön
und
auch nicht leserlich, aber es
funktioniert halt.
Und somit konnte man und somit war ich in
der Lage eigene James über
Video Apps auszuführen.
Ja, jetzt gibt es natürlich.
Jetzt gibt es natürlich.
Es gibt natürlich noch einige Dinge, die
mit Videos nicht ganz so schön sind.
Video Apps benötigen natürlich hat immer
PSN Zugriff, was
eine sehr unschöne Sache ist.
Das bedeutet nämlich immer, dass man auf
der letzten Filmversion sein muss
und man muss halt online sein.
Und jedes Mal wenn das Ding abstürzt
werden halt sofort Crash Logs an
an Sony raus gesendet und
dementsprechend können die Dinger halt
relativ schnell gefixt werden, wenn sie
denn gefixt werden.
Dann haben Video Apps auch kein Zugriff
auf auf den Just in time Compiler,
den man halt aus dem Browser kennt.
Das ist aber ab Version 3 15 sowieso
nicht mehr ganz so relevant, denn ob
diese denn ich glaube irgendwann
gegen Firma 2.0
hatten sowieso normale Apps keinen
Zugriff auf den Compiler.
Von daher muss man halt damit leben.
Ja, man unterstützen Video Apps kein
Trading, was natürlich
auch sehr unschön ist.
Was bedeutet natürlich, dass man nicht
alle, nicht alle Arten von Exploits
wirklich ausführen kann.
Zum Beispiel wenn man Connections hat,
die man, die man irgendwie dann noch
danach noch triggern möchte, wo man halt
verschiedene Threads braucht, um halt den
Kontext mal auszuführen.
Das ist dann natürlich auch eher
suboptimal, aber wenn man
den Kontext nur triggern möchte, der halt
keiner, der da hat keine
keine Threads benötigt, ist
vollkommen okay.
Dann hat man natürlich noch das Problem
Video Apps haben quasi
die laufen mit einer Sandbox wie der
Browser auch.
Nichtsdestotrotz sie sind halt trotzdem
noch ein bisschen eingeschränkter als der
Browser. Das heißt, man hat auch nicht
auf alle Devices Zugriff, wo man die
man natürlich auch noch im Browser hat.
Das heißt die, die ja die die
Angriffs Oberfläche, die man vielleicht
quasi noch die man hat, vielleicht noch
mit einem Browser Exploit hat.
Die fallen mit Video Apps natürlich
auch noch direkt weg.
Was sie jetzt nicht auf der Folie steht.
Videos haben auch keinen Zugriff auf auf
den Lippen. Philipp ist halt quasi die
dynamische Kompilation, die dynamische
Bibliotheken bzw.
Funktionsaufruf zur Laufzeit, auf den man
halt auch im Browser Zugriff hat,
also viel bedeutet. Man kann halt quasi
bei Videos keine Zusatz Module zur
Laufzeit laden, um dann irgendwelche
weiteren Funktionen auszuführen,
die halt nicht mit in der App kompiliert
sind. Das kann man zum Beispiel
mit einem Browser Export machen.
Das ist natürlich super, wenn man da halt
einmal Code Execution hat und man möchte
halt gewisse Funktionen ausführen, die
halt ganz normal für unser Land
normalerweise zu haben sind.
Da kann man sich halt einfach das Modul
bzw. die die Library die Funktion
enthält, zur Laufzeit laden.
Und das geht bei Video Apps
natürlich nicht.
Was halt natürlich auch
doof ist.
Und dann kommt natürlich noch dazu.
Dadurch, dass es halt eine App ist,
kann ja ganz einfach per Update gefixt
werden.
Ob ob sie jetzt per Update fix werden
oder nicht,
weiß ich nicht. Die Methode, die ist es
also. Wie gesagt, die ist auch aus 15,
ich habe sie damals entwickelt.
Ich weiß auch gar nicht, ob das jetzt
noch läuft. Ich wüsste nicht, warum
nicht. Man kann es ausprobieren.
Ja, das ist halt so ein bisschen die
Nachteile, die man hat. Aber
nichtsdestotrotz man darf nicht vergessen
dadurch, dass man halt wirklich komplette
User nennt, Code Execution erlangt,
ist das ganze natürlich vollkommen okay,
um halten können zu triggern.
Das ist ja wirklich, das ist nur der
Einstieg, der Einstiegspunkt.
Und ja.
Ja jetzt auch ein bisschen schneller
durch als gedacht
um.
Ich weiß gar nicht, ob ich was vergessen
habe, ich hoffe nicht.
Aber ja
ja,
dann bedanke ich mich erst mal!
Und falls noch Fragen
dazu würde ich auch gerade kommen.
Erstmal vielen Dank an dich.
Wenn es Fragen gibt ihr findet 2
Mikrofone dort im Publikum.
Könnt euch dort dahinter stellen
und dann die Fragen stellen.
Wenn nicht, fange ich mal an.
Du hattest geschrieben, dass
die PS4 von deiner Frau ein Geschenk
war. Ja, hat sie denn gesagt, als du
angefangen hast, die PS4
auseinanderzunehmen?
Die fand ja
genau, du hast ja nicht mehr alles,
was ich jetzt halt auch im Vortrag nicht
gesagt habe.
Ich habe ihr ausgepackt und ich habe ihr
nicht so von angemacht, sondern ich habe
die sofort aufgeschraubt.
Man fand sie auch nicht so lustig, aber
es ist halt so, was
Hacker halt so tun.
Hast du dahinten eine Frage?
Dann das Mikrofon bitte.
Hi, eine Frage wie bist du auf die Idee
gekommen, explizit Video Apps zu nehmen?
Hinweise oder es gab gar keine Hinweise
darauf?
Es war ganz einfach ich
gerade. Ich habe ganz am Anfang einfach
sämtliche Pakete sämtlichen Netzwerk
Traffic mitgeschnitten und
habe dann wirklich sämtliche Apps einmal
ausprobiert, alle Video Apps Spiele
gestartet und so weiter und so fort.
Und Video Videos waren halt die einzigen,
wo der Traffic halt nicht
SSL verschlüsselt war und da
konnte man es lesen.
Und das hat dann natürlich auch
verraten, dass es da eine alte Webcast
Version das war eine alte
Web gibt Versionen zum Einsatz gekommen
ist. Sehr cool, aber.
Danke schön!
Gibt es noch weitere Fragen?
Wenn nicht, dann nochmal herzlichen Dank,
großen Applaus und dann
geht es um 13 Uhr weiter
mit Neusprech
und.