Quote:
Originally Posted by IceFire32
Das ist mir auch klar, aber wiso führt die Sicherheitslücke Code aus? Kennt da zufällig jemand ein Tut zu? xD
|
Ja ich habe irgendwo auf meinem rechner noch einiges zu diesem thema.
Um das zu verstehen braucht man aber schon einiges an wissen und es ist auch schwer das in ein paar sätzen zu erklären.
Einfachgesagt der shellcode wird über eine funktion(z.b. scanf oder memcpy) in eine Variable geschrieben.Und diese funktionen sind die eigentliche sicherheitslücke den sie überprüfen nicht ob das was in die variable reingeschrieben wird überhaupt von der größe her in die variable reinpasst (diese funktionen nennt man auch "Unsichere Funktionen").
Das bedeutet man kann mehr in eine variable reinschreiben als speicherbereich für sie deklariert wurde (Buffer Overflow). Nun muss man wissen das variablen am ende ihres speicherbereichs eine sogenannte "Rücksprung Addresse" haben diese enthalt das Offset von dem Programmcode der nach dem lesen der Variable ausgeführt werden soll.
Da man aber jetzt mit einer dieser unsicheren funktionen über den eigentlichen speicherbereich hinausschreiben kann kann man das Offset an der Rücksprung Addresse mit einem anderen überschreiben.
Und wen man diese sicherheitslücke ausnutzen will dan lässt man 2dinge über die unsichere funktion einlesen. Als erstes den shellcode der so groß ist das gerade der Speicher/variable nicht überläuft und als 2tes das neue offset(Das ist das offset wo sich der Shellcode befindet also meistens die eigenen variable(wobei drauf zu achten ist das das offset dynamisch ist allerdings ist das offset trotzdem so zu 80% immer gleich) wobei dan der speicher überleuft und Die Rücksprung Addresse mit der neuen überschrieben wird.
Und wen dan die Variable gelesen wird bzw danach springt dan der computer
zu dem shellcode und führt diesen aus.
So und wie ihr gesehen habt ist soetwas ziemlich schei?e zu erklären:p