Wie kommt shellcode in den Speicher?

Dieses Thema im Forum "Sicherheit & Datenschutz" wurde erstellt von breaKdown.iNC, 26. September 2007 .

Schlagworte:
  1. 26. September 2007
    Hi,

    also ich befasse mich z.Z. mit Shellcodes, bin da aber noch nic so ganz am durchblicken.
    Um ganz genau zu sein, habe ich 2 Fragen.

    Angenommen ich schreibe nen exploit für die JPEG Bibliothek, also muss mein exploit doch so aufgebaut sein, das ich den Speicher zum überlaufen bringe...also Buffer Overflow und gleichzeitg meinen shellcode in den Speicher setze, richtig?
    Aber wann geschiet das? Und wieso wird der shellcode dann ausgeführt?

    Und meine 2. Frage ist folgende. Shellcode ist ja der Hexdump von meinem ASM Programm, mit diesen "/x"-en versehen. Muss ich jetzt aber für jede andere Prozessorarchitektur auch nen anderen Kompiler nehmen? Also angenommen ich schreibe nen exploit für nen PDA, die teile haben ja meistens nen MIPS Prozessor, brauch ich dann nen Kompiler, der mir das dann halt in ASM extra für das ding übersetzt?
    Wenn ja, wie baue ich dann den restlichen Sourcecode?

    Also um es mach deutlich zu machen, nehmen wir mal wieder das JPEG Beispiel. Angenommen ich möchte jetzt halt nen exploit schreiben, für die LibJPEG auf nem PDA.
    So, also schreibe ich halt ne DOS Anwendung für Windows XP, welche mir halt jede x-beliebige .jpg-Datei quasi "patcht".
    Der Sourcecode müsste doch dann so aufgebaut sein:

    1: Shellcode
    2: Buffer Overflow-Code

    richtig so oder?

    Und da kommt mein Kopf nen bisschen durcheinander. Der shellcode müsste dann ja logischer weise aus dem Hexdump, vom ASM-Code kommen, welchen mir der MIPS-Kompiler ausgespuckt hat.

    Den Buffer Overflow Code müsste ich dann aber immernoch mit meinem VC++ Kompiler schreiben nicht wahr? Also kann ich jetzt den Shellcode bedenkenlos in meinen restlichen Source einfügen und dann halt alles mit VC++ kompilieren? Bleibt der Shellcode dann unverändert, wenn ich das ganze nochmal mit nem anderen Kompiler durchgehe?

    Ich hoffe ihr versteht wie ich das meine^^ Das ist sauschwer zu erklären

    Thx im voraus!
     
  2. 26. September 2007
    AW: Wie kommt shellcode in den Speicher?

    zu 1.:
    Nach dem Puffer steht ne nette Adresse die dem OS sagt wos danach weiter geht - und genau die überschreibst du indem du zuviel in den Speicher packst. Auf die Art kannst du das OS dazu bringen dort weiterzumachen wo du willst. Wenn du also diese Adresse mit der Adresse deines Shellcodes überschreibst (oder mit der Adresse, welche auf einen Sprung zu deinem Shellcode verweist) gehts dort weiter und der Code wird ausgeführt.
    Nun zum Problem wie der Code in den Speicher kommt... ganz einfach .. die ASMbefehle (OPCODES) als String übergeben.
    Bei deinem Bsp. einfach ins Bild einbauen. Das Bild wird eingelesen - es gibt nen Fehler und du springst auf nen Verweis, welcher wiederrum auf den Teil im Bild zeigt an dem dein Shellocde liegt.


    2. Genau der Shellcode muss natürlich auf dem Zielprozessor laufen können. Was der Prozessor des Senders ist, ist egal - da der Code nur als String oder Hex im Exploit gespeichert wird und dann übergeben. Der Shellcode muss nicht auf deinem System lauffähig sein sondern nur auf dem Ziel.
    Dein Compiler ändert an dem String ja nichts .. kann somit auch das Exploit nicht zerstören.

    btw STARK vereinfacht ausgedrückt
    //edit:
    (wenn du inline asm nimmst um den Shellcode zu bauen / speichern ist es etwas anders - aber das macht so oder so fast keiner ^^)
     
  3. 26. September 2007
    AW: Wie kommt shellcode in den Speicher?

    besser kann man einen Buffer Overflow nicht erklären.
    jetzt hab es auch ich in der Theorie verstanden. Praktisch umsetzen könnte ich es nicht.
    Gibts da vllt Quellcodes eines einfachen Buffer Overflows??
     
  4. 26. September 2007
    AW: Wie kommt shellcode in den Speicher?

    kann man nicht per netcat ein script laufen lassen ?

    $ nano myscript.sh
    $ chmod 777 ./myscript.sh

    inhalt: cat /etc/shadow

    kann sein, dass ich mich irre ^^
     
  5. 26. September 2007
    AW: Wie kommt shellcode in den Speicher?

    sinn ?

    [g]Smashing The Stack For Fun And Profit[/g]
    http://community.core-sdi.com/~gera/InsecureProgramming/
    http://community.corest.com/~juliano/
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.