Exploit(s) - Erklärung für Anfänger und Fortgeschrittene

  • Einleitung


    Ich denke es ist an der Zeit für Soetwas, damit auch ein Neuling versteht was ein Exploit ist und wie die Funktionsweise ist.


    Ich versuche hier die Definition und Funktionsweise ein wenig zu umrahmen und nutzerfreundlich ('einfach') zu erklären.


    Hoffentlich bleibt es trotzdem für fortgeschrittene Anwender interessant. ;)



    FAQ


    F: Was ist ein Exploit?
    A: Ein Exploit ist die 'Ausnutzung' ['to exploit'] einer 'Anfälligkeit'/Schwäche/Sicherheitslücke ['Vulnerability'] eines Systems und/oder Programms.
    Ein Exploit besitzt immer eine Softwarekomponente, oder Bezug auf eine Software und kann Hardware-Elemente beinhalten.


    Praktisch jedes 'Einfallstor' wird im User-Jargon gerne Exploit, Softmod, oder Jailbreak genannt, wobei sich auf technischer Ebene alle unterscheiden... (siehe 3.Post)
    Ein ähnliches Phänomen lässt sich bei BIOS, Firmware, BOOT-ROM erkennen.
    Es ist der Unwissenheit der User (nicht als Angriff gemeint) und dem leichteren Verständnis geschuldet, dass dies 'Gang und Gäbe' ist.



    F: Was kann man damit machen?
    A: Es ermöglicht einem 'Angreifer', das System oder Programme/Prozesse/etc. in einer Weise zu beeinflussen, wie es vom Hersteller/Administrator/etc. nicht gedacht und/oder gewollt ist.



    F: Was bringt einem das?
    A: Es ermöglicht einem eigenen Programmcode auszuführen/zu dumpen/etc. und dadurch weiter in ein System einzudringen oder aus einer Umgebung auszubrechen!


    Dadurch wiederum werden weitere Systemhacks, Homebrew, Backups, usw. zumindest wahrscheinlicher, wenn nicht sogar schon möglich!



    F: Was ist denn noch nötig?
    A: Manchmal müssen weitere Sicherheitsmaßnahmen überwunden werden (z.B. via 'mehrerer' Exploits, die der Einfachheit halber meist wie ein Exploit gehandhabt werden).


    Zum Beispiel kann man manchmal Backups aber kein Homebrew starten/nutzen (zur Zeit bei den neueren PS3), oder umgedreht Homebrew aber keine Backups abspielen (PS2, ohne ESR).



    F: ? (eure Fragen, die noch offen sind und hier hin passen)
    A: !

  • Funktionsweise(n):


    Das ist ein genereller Überblick über ein paar Varianten, aber es gibt natürlich noch mehr.


    Es gibt manchmal verschiedene Variationen der hier genannten Exploit-Typen, aber ich versuche es an den einfachen Varianten zu erklären.



    Bufferoverflow-Exploit - Einer der einfachsten und ältesten Exploits


    Bei dieser Variante wird ein Buffer/Puffer/'Zwischenspeicher'/etc. 'überfüllt' und die nachfolgenden Speicherbereiche überschrieben, bis man an der richtigen Speicheradresse ist, die von einer Rücksprungadresse (=Zeiger auf einen Speicherbereich) belegt ist, die von einem vom System/(Unter-)Programm genutzten Prozess genutzt wird und schreibt da seinen eigenen Programmcode hin.


    Der 'Pufferüberlauf' heißt im Englischen 'Buffer-Overflow'... und dementsprechend ist der Name einfach davon abgeleitet... Das deutsche normale Wort neben Puffer wäre allerdings ganzschön lang... :D


    Man kann auch die Rücksprungadresse auf den vom eigenen Code belegten Speicherbereich ändern (zumindest auf Systemen ohne einen Schutz wie 'nicht ausführbarer Speicher[bereich]' {'NX-Bit' und Ähnliches}).



    Ein Beispiel hierfür ist z.B. der 'Independence Exploit'/PS1-Exploit für die PS2, der einen Bufferoverflow durch einen modifizierten Eintrag in der 'TITLE.DB' (die 'pro Spiel'-Konfigurationen der integrierten PS1-Kompatibilität beinhaltet) erzeugt, der durch injezieren von eigenem Programmcode die Ausführung von ELFs (Programmen) ermöglicht.



    'Return-oriented-programming', a.k.a. 'ROP'


    (return to *library*)
    Return-to-libc


    Das ist wohl die bekannteste Variante dieser Art Exploits.


    Dieser Typ Exploit basiert im generellen auf der Manipulation des 'Aufrufstapels' ['call stack'] eines Programms/Systems/etc.


    Ein Stack ist wie ein großer Pfannkuchenstapel, also ist ein Buffer mit umgedrehter Funktionsweise.


    Was zuletzt 'draufgepackt wird', kommt als erstes weg ['Last In, First Out'/LIFO].
    Beim Buffer kommt 'am anderen Ende' das zuerst raus, was 'am einen Ende' zuerst rein ging ['First In, First Out'/FIFO].


    In einem Stack werden also 'Programmbefehle' (eines Tasks) 'gelagert', die ein Prozessor/VM/(Betriebs)System, etc. abarbeiten soll.


    Dadurch das nur System-Funktionen über einen vom Prozess/System bereitgestellten 'stack' ausgeführt werden, können manche Sichererheitsmechanismen wie 'nicht ausführbarer Speicher(bereich)' [NX-Bit, etc.] umgangen werden, da der zu manipulierende Stack ja ausführbar sein muss, damit ein Programm läuft.


    Es gibt nützliche Programme/Tools, mit denen man Programme/Binaries nach ROP-Exploits durchsuchen lassen kann, wie z.B. 'ROPgadget', die einem also beim 'Exploiten' behilflich sein können.



    Ein Beispiel hierfür sind die zuletzt erschienen PS3/PS4-Webkit-Exploits die teilweise anscheinend auch eine Reihe/Kette/'chain' dieser nutzen.



    Jump-oriented-programming, a.k.a. 'JOP'


    Das ist eine Weiterentwicklung der ROP-Exploits!


    Sie basiert nicht auf 'return'-Werten, sondern auf Sprüngen zu anderen Funktionen.


    Man braucht also eine Liste an Befehlen und einen Manager für diese.


    ~eine bessere ausführlichere Erklärung wird später hinzugefügt~

  • Unterscheidung Exploits, Softmods, 'Custom Firmware'/CFW, Jailbreak:


    Exploits sind das generelle Einfallstor im Softwarebereich. Sie selbst ermöglichen Abgesehen von der Code-Ausführung meistens alleine nicht viel. Die 'Magie' kommt dann erst von nachgeladener/gestarteter Software.



    Softmods umfassen praktisch fast Alles, was KEINE Hardware-Modifikation beinhaltet. Das beinhaltet von Swap-Disks welche technisch eigentlich kein 'echter Softmod' ist, bis zur CFW, oder Brickschutz, verschiedene Sachen.
    Technisch nutzt ein Softmod typischerweise mindestens einen, oder auch eine Reihe von Exploits aus, um sich zu installieren, ausgeführt zu werden oder die volle gewünschte Funktionsweise zu erreichen.



    'Custom Firmware'/CFW umfasst normalerweise die Modifikation eines Betriebssystems eines Gerätes, ähnlich der 'Custom ROM' bei Smartphones.
    'Echte CFW' ersetzen auf einem internen Speicher-Chip ein, oder Teile eines Betriebssystem um zusätzliche Funktionen zu ermöglichen/'freizuschalten'. Eine 'Temporary CFW', oder ein Softmod wie 'FMCB'/'FHDB' sind somit von der Definition her eigentlich keine 'echten CFWs', auch wenn sie die selben Funktionen bieten (können)!
    Eine CFW enthält meist mehrere Jailbreaks, um Homebrew und Backups auszuführen.



    Jailbreak umfasst praktisch zumindest das A-Z an Homebrew und Backups. Es umfasst meist mehrere Exploits, um schlussendlich 'Bezahlinhalte' kostenlos und 'selbst geschriebene Programme/Homebrew' auf einem Zielgerät - auf denen dass ausführen eben jener Sachen limitiert ist/sind -, zu ermöglichen. Ein Jailbreak beinhaltet ein wenig das Ziel, 'Bezahlinhalte' auf dem Endgerät so original wie möglich auszuführen und vollen Hardwarezugriff für die eigenen Programme zu erlangen, (im ersteren Fall) damit keine Kompatibilitätsprobleme entstehen. --> Somit ist ESR z.B. kein Jailbreak, FMCB hingegen eine Art Softmod+Jailbreak, der auf dem MagicGate-Exploit beruht. Der FMCB-Loader ist die vorher erwähnte 'Magie'/Payload und durch den KELF/MG-Exploit kann der gestartet werden...



    Payload ist der Code 'der sich auszahlt' (pay), der NACH dem Exploit geladen (load) wird.




    Zusätzliches:


    Für Profis und Neugierige geht es hier weiter (Englisch-Kenntnisse vorausgesetzt):
    https://www.psx-place.com/thre…ng-ps3-development.15826/
    (eher allgemein gehalten, aber am Beispiel der PS3)
    ...und hier...
    https://github.com/PS3Xploit/pett
    (PS3-Spezifische Exploit-Info)
    ...und hier...
    https://cturt.github.io/ps4.html
    (sehr PS4-spezifisch)


    Es bleibt natürlich beim Beispiel der Konsolen! ;)



    Post 1 und Post 2 werden weiter editiert.
    Post 3 ist für zusätzliche Informationen reserviert!


    Falls Fragen bestehen, oder ihr Fehler findet, postet einfach und ich werde es ergänzen/korrigieren!


    ...auch falls etwas zu kompliziert erklärt ist, oder zuviel oder zu wenig Informationen vorhanden sind, weißt mich drauf hin und ich werde es verbessern/ergänzen/entfernen...


    Ich belege mal ungewollt noch den 3ten Post und werde dafür noch ein paar Exploit-Arten in Kurzfassung und vereinfacht erklären (und hoffentlich ein Beispiel im Konsolen-Bereich finden) und die dann oben einfügen.


    Habt ihr weitere Ideen und/oder Fragen? Die Likes sind zwar schön, aber eure Fragen und Ideen würden helfen den Thread zu verbessern! :)


    Die ersten beiden Posts werden heute oder morgen noch erweitert.


    Edit: Post 1, 2 und 3 wurden bereits etwas verändert, aber zum großen Teil so gelassen. Ich editiere ihn später, damit er zu den ersten beiden posts passt, besser aussieht und sinnvollere Informationen als jetzt enthält.


    Also Leute! Eure Initiative mit Ideen ist gefragt! :D


    An alle die selbst anfangen wollen Fehler zu finden und auszunutzen/zu exploiten: Happy 41414141!

  • OK - @Plastic - Du wolltest es so... ;)


    Ich würde es gut finden, wenn Du wirklich konkret auf den PS4 Exploit eingehen würdest (eigener Thread),
    und dort weniger die Funktionsweise im Hintergrund, sondern die Funktion und Unteschiede im Vordergund beschreiben würdest.
    Gerade im Moment dreht sich alles um den PS4 Exploit, und die meisten User wollen einfach das das Ding bei Ihnen flutscht -
    warum ist im Prinzig egal.
    Und sehr oft hackt es schon bei den Begrifflichkeiten oder technischen "Zuständen" der PS4.
    z.B.: Unterschied zw. Exploit und Payload, Unterschied Payload per Javascript oder per bin Datei.
    Diverse Zustände - warten auf Payload, Payload ausgeführt...


    Ist nur so ne Idee...


    Danke für die Mühe bis jetzt - für die User die mehr Interesse am Hintergrund haben (mich eingeschlossen) ist das super Interessant. :thumbup:


    PS: das das nicht als Entmutigung sehen -
    die Erfahrung zeigt leider (zumindest habe ich das Gefühl), desto mehr Inhalt zu lesen ist, desto weniger wird es gelesen....

  • Kann ich machen.


    Wird aber nicht sofort. In ner Woche mal, o.k.?
    Ich sammel dazu mal ein paar Ideen.


    PS4-Exploit: Stichwort 'ROP' --> 'return oriented programming' schneidet das Thema (oben) an. Es ist natürlich jetzt nicht auf den/die PS4-Exploit/-s 'getrimmt'!



    Soll ich da richtig tief in die Materie gehen? Ich bin zwar nicht der Typ für Java und Java-Script, aber ich kann es versuchen. Es wird nur nicht ganz leicht, dass auf einfache Weise zu erklären...




    Zu diesem Thread:


    Ich habe die Funktionsweise mal in den zweiten Post verschoben, den zweiten Post teilweise in den dritten und hab bei allen ein paar kleine 'Schönheitskorrekturen' durchgeführt.


    Für die, die also die Likes beim ersten Post sehen... Die waren teilweise auch mit auf die Funktionsweise (mit den Beispielen) bezogen, denke ich...

  • @Plastic
    Du mußt hier aufpasse, das es nicht zu unübersichtlich wird...
    und mach Dir mal wegen der Likes keinen Kopf... ;)


    zum Thema:
    Ich würde beim PS4 Exploit erklären NICHT in die Tiefe gehen - warum habe ich ja schon oben geschrieben.
    Eine Übersicht für Neulinge und reine Anwender würde imho reichen.
    (z.B.: Javascribt - Befehle die über Webseiten ausgeführt werde -
    d.H. die PS4 geht mit dem Browser auf die Exploit Webseite und, dadurch werden im Hintergrund über das JvaScipt Programmeschritte auf der PS4 ausgeführt,
    die dadurch die PS4 "hacken"/öffnen - bereit machen unsignierte Programme (z.B. bin Datein auszuführen)
    Der Exploit selbst wir über eine Webseite zur Verfügung gestellt, die über einen Webserver gehostet wird,


    Ich würde das auch getrennt vom detailierten erklären der diversesn Exploits sehen und posten.


    Aber ich sehe schon - da kommst Du vom 100sten ins 1000ste -
    mußt letztendlich Du selbst wissen, ob Du die Zeit dafür hast.


    PS: Sollte in meinen Beispielen nicht alles korrekt sein - man möge mir vergeben - denn darum schreibt ja auch @Plastic den Beitrag... :D

  • Als kurze Erklärung reicht da auch dein Post! :D

  • Also zumindest ausführlicher als deinen Post, ja? :grinn:


    Bin gerade oben noch etwas am verändern...

  • Mal wieder ne super Sache @Plastic :D

  • Weitere Fragen, Dinge die ich ergänzen kann/soll oder Ideen?


    Ich hab paar Fehler (Wortdreher) gefunden, aber inhaltlich sollte es verständlich sein.

  • Im 3. Post ist eine sehr kurze Erklärung für 'Payload' hinzugekommen... ;)

  • Mich würde die komplexität von Ps2/Psp Exploits zu heutigen Exploits Interessieren.


    Früher waren es ja einzelne exploits und heute ganze Ketten damit es geht, vorausgesetzt ich habe das so richtig verstanden.

  • Ich weiß ja nicht, ob spezifisch zu den PS4-Exploits so ein Thread (noch) benötigt wird, da dass Meiste wohl in dem Hacking-Thread steht.


    Wegen Komplexität... Naja, die sind alle mehr oder weniger komplex, basierend auf ihrer Idee...


    Selbst neue Exploits auf wesentlich 'gesicherteren' Systemen, können einfach zu verstehen sein.


    Manchmal liegt es eben nur am Schutz, den zu verstehen und die Implementierung eines wirksam und stabil laufenden Exploits hin zu bekommen.


    Die Komplexität ist aber eigentlich oft vergleichbar... Nur das 'Hacking' an sich und/oder das Herauszufinden, ist meistens schwieriger! ;)



    Ich habe bei den oberen Posts mal noch ein paar Rechtschreibfehler korrigiert.

  • Ich habe oben im 3.Post bei 'Zusätzliches' mal diesen Link für Profis, Neugierige und Wannabe-Hacker hinzugefügt! :D


    --> https://www.psx-place.com/thre…ng-ps3-development.15826/



    Edit: Ich werde demnächst noch ganz generell etwas mehr in die technischen Details der Funktionsweise dieser Exploits gehen...


    Ich versuche es dann so einfach wie möglich zu erklären.



    Beispiel: Buffer-Overflow/Overrun-Exploits basieren darauf, dass eine genutzte Funktion kein 'Boundary check' besitzt, das heißt Funktionen wie 'strncpy()' testen nicht ob die angegebene Länge eines übermittelten Strings passt oder zu lang (respektive bei fixierter angenommener Länge zu kurz ist [siehe Buffer-Underrun])!



    Wer hat schonmal programmiert?
    Man lernt ziemlich am Anfang auch Etwas über den sogenannten '0-Terminator', der dass Ende eines übermittelten Strings definiert/'anzeigt'...



    Zu den Erklärungen die ich noch hinzufüge:
    Dazu gibt es dann für 'Fortgeschrittene' weiterführende Erklärungen, aber ich versuche es trotzdem so verständlich wie möglich für Anfänger/Noobs zu halten.



    Edit.2: Im 3.Post ist noch ein weiterer Link für Interessierte und (Wannabe-?) Hacker hinzugekommen... --> https://cturt.github.io/ps4.html
    Dort geht es speziell um die PS4(!), ihr Sicherheitssystem und ROP-Chain-Exploitation!


    Im Psx-place.com-Thread ist es eher allgemein gehalten und am Beispiel der PS3!



    Edit.3:...und noch ein PS3-Exploit-spezifischer Link ist im 3.Post hinzugekommen. --> https://github.com/PS3Xploit/pett
    (PETT='PS3 Exploitation Tutorial Template')

  • Seid ihr an mehr Infos zu dem Thema interessiert? :)


    Es kommen ja zur Zeit überall die unterschiedlichsten Dinge raus, oder sind seit meinem letzten Post herausgekommen.


    Bei Free DVD Boot kommt z.B. ein Bufferoverflow-Exploit zum Einsatz. Genauer gesagt, ist es ein "NOP Sled/Slide" und eine weitere Anfälligkeit.

    Abgesehen davon, ist dass auch ein gutes Beispiel für einen Programmierfehler der auf einer falschen Annahme beruht ("IFO-Dateien sind immer klein") und damit eine andere Art "Overrun-Exploit darstellt.


    Ich würde wirklich gerne mehr Leute sehen, die sich mal mit Sowas beschäftigen!


    Sonst hört man ja immer nur:

    • Wann, für XYZ?
    • Die Hacker veröffentlichen nix.
    • "Immer nur, closed..."
    • usw.


    Selbst ist der Mann, oder auch die Frau... :D

  • Denke die Leute die das interessiert forken sich das git und Spielen mit den Code rum bzw treiben sich auf discords des devs rum.


    das Forum ist doch eher für Leute, die Hilfe bei der Benutzung der fertigen binarys brauchen.

    Am besten ein Linux von scratch bauen und dann Powerd by psXtools mit rein schreiben (spaß), da ist ArchLinux in 20Min schneller auf der SSD;)

  • Beide Kommentare haben nicht wirklich etwas mit dem Thema zu tun... @Punki's Post ist spezifisch auf EINEN Exploit (irgend)eines Devs bezogen und der Post von mbs18 war vollkommen off-topic, IMO...

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!