1. Foren
  2. Kommentare
  3. Security
  4. Alle Kommentare zum Artikel
  5. › Counter-Strike Go: Bei Abschuss…

Und wie führt man dann den code aus?

  1. Thema

Neues Thema Ansicht wechseln


  1. Und wie führt man dann den code aus?

    Autor: honna1612 22.07.17 - 20:15

    Hier fehlt ein detail dass ich nicht ganz verstehe. Ich schreibe über den Buffer hinaus. Aber wie bringe ich als angreifer source dazu dort auch hinzuspringen und das auszuführen?
    Aufklärung wäre gut

  2. Re: Und wie führt man dann den code aus?

    Autor: masterx244 22.07.17 - 21:04

    Wenn der Buffer aufm Stack liegt und das Layout bekannt ist wo der im Speicher herumgammelt kann man die Rücksprungadresse der Funktion verbiegen und in den Schadcode reinhüpfen lassen

  3. Re: Und wie führt man dann den code aus?

    Autor: mambokurt 22.07.17 - 21:50

    Afair gibts da 2 Lösungen: a) du kennst die Rücksprungadresse der Funktion, dann biegste die einfach um b) du kennst sie nicht, dan pflasterst du einfach den kompletten Speicher mit "GOTO X" zu und hängst an Adresse X deine Funktion ein.

    Aber ich bin da auch ganz weit weg von, Aussage ohne Gewähr und zu 90% unvollständig oder falsch.

  4. Re: Und wie führt man dann den code aus?

    Autor: blacksheeep 22.07.17 - 23:02

    Ja das ist schon so etwa richtig.

    Der Programmstack wächst umgekehrt zu den Adressen mit denen du ein Array auf dem Stack indiziert.
    Bevor du eine Funktion aufrufst wird der aktuelle Instruction Pointer auf dem Stack abgelegt und dann der Instruction Pointer der Funktion geladen.

    Wird jetzt die Grenze eines Arrays nicht geprüft, kannst du drüber rausschreiben und somit den Instruction Pointer überschreiben.

    Beim returnen aus einer Funktion wird jetzt der Instruction Pointer vom Stack wiederhergestellt, der ja überschrieben wurde.
    Wird der Instruction Pointer mit einer sinnvollen Adresse überschrieben, dann macht das Programm wo anders weiter.

    Nennt sich ROP = Return Oriented Programming

    Ist aber eigentlich nicht ganz so einfach. Mit NX bits werden Daten im Speicher als nicht ausführbar erklärt, somit kann keine beliebige Stelle mehr ausgeführt werden. Weiter verhindert ASLR dass library Funktionen verwendet werden können, da die Adressen der libraries bei jeden Systemstart verändert werden.
    Stack cookies sind random zahlen vor dem gespeicherten Instruction Pointer. Wird die Zahl bei der Ausführung verändert, wird das Programm beendet, da möglicherweise auch der gespeicherte Instruction Pointer geändert wurde.

    Ist das alles aktiv, ist es schon relativ schwer einen Bufferoverrun noch auszunutzen. Aber möglich ;-).

    Was jetzt noch im kommen ist, ist Control flow integrity, was die Rücksprungadressen trackt und das Programm bei Veränderung dieser beendet. Damit sollen solche Angriffe noch schwerer werden.

    Edit: Für Clang gibt es ne Compiler Erweiterung die Softbound heißt. Diese garantiert das Einhalten von Arraygrenzen und somit werden ROP Angriffe verhindert.



    3 mal bearbeitet, zuletzt am 22.07.17 23:08 durch blacksheeep.

  5. Re: Und wie führt man dann den code aus?

    Autor: mambokurt 23.07.17 - 00:36

    Wie gesagt, bin ich ganz weit weg von, ich verstehe es wenn es jemand erklärt aber das zu implementieren wäre nochmal ne ganz andere Nummer voller Tränen ;)
    Ich persönlich bin auch der Meinung dass man an der Stelle den neueren Programmiersprachen wie Rust folgen sollte, die so etwas schon im Ansatz reparieren, statt sich da auf Compiler Magic zu verlassen. Ich finds schwachsinnig sich da auf den Compiler zu verlassen, der ja eigentlich nur rät.

  6. Re: Und wie führt man dann den code aus?

    Autor: xomox 23.07.17 - 13:16

    Zuerst einmal muss man unterscheiden ob ein Buffer overflow auf dem Stack oder Heap stattfindet. Laut der Quelle im Text ist es der Stack was tendenziell leichter auszunutzen ist.

    Auf dem Stack werden bei einem Funktionsaufruf Verwaltungsdaten wie die Rücksprungadresse abgelegt, die sich bei falscher Verwendung der strcpy() Funktion überschreiben lässt. Dies ist auch der Grund weshalb man strncpy() verwenden sollte. Durch Überschreiben der Rücksprungadresse kann man, sofern das NX-Bit nicht gesetzt ist, direkt an Code der im Datensegment liegt springen, wodurch dieser ausgeführt wird. Durch das NX-Bit wird das Datensegment als nicht ausführbar markiert, sodass man dadurch keinen Code in diesem Segment mehr ausführen kann. Das NX-Bit alleine lässt sich allerdings durch Return-oriented-programming (ROP) relativ leicht umgehen. Bei ROP springt man dann an Stellen im Speicher welche ausführbar sein müssen (z.B. .text Segment) , die in einem ret Statement enden. Diese Statements werden ROP-Gadgets genannt und ermöglichen es beliebigen Code auszuführen ohne dabei eigenen Code einzuschleusen.

  1. Thema

Neues Thema Ansicht wechseln


Um zu kommentieren, loggen Sie sich bitte ein oder registrieren Sie sich. Zum Login

Stellenmarkt
  1. Statistisches Bundesamt, Wiesbaden
  2. Phoenix Contact GmbH & Co. KG, Blomberg
  3. Stadtverwaltung Bretten, Bretten
  4. Swyx Solutions GmbH, Dortmund

Golem pur
  • Golem.de ohne Werbung nutzen

Anzeige
Top-Angebote
  1. 199,99€ (Vergleichspreis 269€)
  2. (aktuell u. a. AMD Ryzen Threadripper 2920X für 399€ inkl. Versand)
  3. 159€ (neuer Tiefpreis)
  4. 119,90€ (Vergleichspreis 148,95€)


Haben wir etwas übersehen?

E-Mail an news@golem.de


IT-Gehälter: Je nach Branche bis zu 1.000 Euro mehr
IT-Gehälter
Je nach Branche bis zu 1.000 Euro mehr

Wechselt ein ITler in eine andere Branche, sind auf dem gleichen Posten bis zu 1.000 Euro pro Monat mehr drin. Welche Industrien die höchsten und welche die niedrigsten Gehälter zahlen: Wir haben die Antworten auf diese Fragen - auch darauf, wie sich die Einkommen 2020 entwickeln werden.
Von Peter Ilg

  1. Softwareentwickler Der Fachkräftemangel zeigt sich nicht an den Gehältern

Elektroautos in Tiefgaragen: Was tun, wenn's brennt?
Elektroautos in Tiefgaragen
Was tun, wenn's brennt?

Was kann passieren, wenn Elektroautos in einer Tiefgarage brennen? Während Brandschutzexperten dringend mehr Forschung fordern und ein Parkverbot nicht ausschließen, wollen die Bundesländer die Garagenverordnung verschärfen.
Eine Analyse von Friedhelm Greis

  1. Mercedes E-Econic Daimler elektrifiziert den Müllwagen
  2. Umweltprämie für Elektroautos Regierung verzögert Prüfung durch EU-Kommission
  3. Intransparente Preise Verbraucherschützer mahnen Ladenetzbetreiber New Motion ab

Europäische Netzpolitik: Die Rückkehr des Axel Voss
Europäische Netzpolitik
Die Rückkehr des Axel Voss

Elektronische Beweismittel, Nutzertracking, Terrorinhalte: In der EU stehen in diesem Jahr wichtige netzpolitische Entscheidungen an. Auch Axel Voss will wieder mitmischen. Und wird Ursula von der Leyen mit dem "Digitale-Dienste-Gesetz" wieder zu "Zensursula"?
Eine Analyse von Friedhelm Greis

  1. Mitgliederentscheid Netzpolitikerin Esken wird SPD-Chefin
  2. Nach schwerer Krankheit FDP-Netzpolitiker Jimmy Schulz gestorben

  1. Pick-up: Rivian baut Ford den Elektrobaukasten
    Pick-up
    Rivian baut Ford den Elektrobaukasten

    Rivian will Ford den Elektrobaukasten liefern, während der Autohersteller die Karosserie und die Innenausstattung zur Verfügung stellt.

  2. Karlsruhe: Erste 5G-Antennen von 1&1 Drillisch kommen von ZTE
    Karlsruhe
    Erste 5G-Antennen von 1&1 Drillisch kommen von ZTE

    Die ersten 5G-Antennen von 1&1 Drillisch wurden gesichtet und begutachtet. United Internet setzt hier von Anfang an auf einen chinesischen Hersteller.

  3. Umweltprämie: Hyundai und Renault gewähren Elektrobonus vor dem Staat
    Umweltprämie
    Hyundai und Renault gewähren Elektrobonus vor dem Staat

    Da die staatliche Erhöhung der Umweltprämie auf sich warten lässt, gewähren Hyundai und Renault Käufern den Herstelleranteil schon jetzt. Bei Hyundai-Fahrzeugen gibt es insgesamt 8.000, bei Renault 6.000 Euro Abzug.


  1. 08:34

  2. 08:19

  3. 07:48

  4. 07:24

  5. 11:38

  6. 10:35

  7. 10:11

  8. 13:15