Post-Exploitation nach File Fuzzing / Byteswap

Hi Leute,

folgender Standpunkt:

Ich habe eine Applikation, nennen wir sie mal "VideoPlayer". :D
Zudem habe ich eine Input-Datei, nennen wir sie mal "input.mpeg".

Von der Inputdatei erstelle ich nun verschiedene Versionen, in denen ich einzelne Bytes vertausche.

Nun bringt eine der generierten Dateien das Programm zum Absturz. Ich erhalte eine Read-Access-Violation oder eine Write-Access-Violation.

Als Debugger verwende ich WinDBG, mit dem Modul "!exploitable" (klick mich, ich bin ein Link) . !exploitable sagt mir nun, dass sich der identifizierte Fehler ausnutzen lässt.

Die große Frage ist nun aber: wie? Wenn ich eine Read/Write Access Violation erhalte, habe ich ja (noch) keine Kontrolle über den EIP, sprich, ich möchte beispielsweise den EIP überschreiben.

Wie gehe ich nun am besten vor? Gibt es dort spezielle Techniken? Oder brauch man noch mehr Debugger Info, um das ganze bewerten zu können?

Gruß,

icehill
 
Debugger ist schon einmal ein guter Ansatz. Zunächst solltest du herausfinden warum genau die Access Violation ausgelöst wurde und wieviel Einfluss du darauf nehmen kannst. Als nächstes musst du herausfinden, ob du mit dem Fehler einen Codepointer (zB Returnadresse, oder Funktionspointer der GOT, vtable..) überschreiben und im Anschluss die entsprechende Funktion triggern kannst. Wichtig ist auch, dass nicht jeder Fehler automatisch zur Kontrolle des IP führt.
 
Debugger ist schon einmal ein guter Ansatz. Zunächst solltest du herausfinden warum genau die Access Violation ausgelöst wurde und wieviel Einfluss du darauf nehmen kannst. Als nächstes musst du herausfinden, ob du mit dem Fehler einen Codepointer (zB Returnadresse, oder Funktionspointer der GOT, vtable..) überschreiben und im Anschluss die entsprechende Funktion triggern kannst. Wichtig ist auch, dass nicht jeder Fehler automatisch zur Kontrolle des IP führt.

Thx. Gibt es denn für deartige Access Violations spezielle Techniken? Ich habe ja keine direkte Kontrolle über den EIP o.Ä. Wenn ich jetzt beispielsweise eine Access Violation durch eine Sicherheitslücke im Browser hätte, würde ich Heap Spraying verwenden. Das funktioniert aber nur, weil ich in dem Fall eine gewisse Kontrolle über den Heap habe. Habe ich ja hier leider nicht. Gibt es ähnliche Techniken, welche sich für solche Fälle verwenden lassen? Evtl. ein Stichwort?
 
Heapspraying ist nichts Browserspezifisches, sondern kann auch in anderen Programmen benutzt werden. Und "Acesses Violation" ist nur eine Oberklasse für ein Haufen Fehler. Ohne genauere Informationen über den Fehler, kann man hier nichts genaueres sagen. Wie gesagt, analysiere erst einmal warum/wie genau der Fehler ausgelöst wird.
 
Zurück
Oben