Frage:
Malware Hooking INT 1 und INT 3
mrduclaw
2013-03-31 07:48:01 UTC
view on stackexchange narkive permalink

Ich verstehe, dass unter x86 INT 1 für Einzelschritte und INT 3 zum Setzen von Haltepunkten und einige andere Interrupts (normalerweise 0x80 für Linux und 0x2E für Windows) wurde früher für Systemaufrufe verwendet.

Wenn eine Malware die Interrupt Descriptor Table (IDT) einbindet und ihre eigenen Handler INT 1 und INT 3 ersetzt, die systemaufrufartig ausgeführt werden Funktionalität, wie kann ich einen Debugger verwenden, um seine Ausführung zu verfolgen? Oder kann ich keine statischen Analysewerkzeuge verwenden?

Eine Problemumgehung besteht darin, das Beispiel so zu patchen, dass die Hooks entweder entfernt oder in Interrupts verschoben werden, die das Debuggen nicht beeinträchtigen. Wissen Sie aus Neugier, ob es öffentlich verfügbare Beispiele gibt, die dies unter Windows tun?
Das Entfernen der Hooks ist einfach genug, wenn der Code die Hooks nicht für systemaufrufähnliche Funktionen verwendet. Das Verschieben auf einen anderen Interrupt scheint zu funktionieren. Das Problem ist jetzt, dass der Code ziemlich stark gepackt ist, sodass Änderungen ärgerlich sind. : / Und nein, keine öffentlich verfügbaren Proben, von denen ich weiß, sorry.
Nur um sicherzugehen, dass dies auch Debugger auf Kernel-Ebene stört, oder?
Dies ist eine Art Hagel-Mary-Ansatz, aber wenn Sie dies unter Linux tun, können Sie Ihren Kernel mit einem benutzerdefinierten IDT neu kompilieren und Ihren Debugger mit der neuen Zuordnung neu erstellen. Dies wäre wahrscheinlich nur dann wert, wenn Sie häufig auf diese Art von Samples stoßen.
@amccormack:, aber wenn die Malware darauf beruht, dass die Kernelfunktionalität an diesen Interruptvektoren vorhanden ist, funktioniert sie dann nicht nicht mehr? Ich gehe davon aus, dass Sie sehr vorsichtig sein müssen, wie Sie die Kernel-Modifikation durchführen ...
Einer antworten:
#1
+9
deroko
2013-03-31 18:33:58 UTC
view on stackexchange narkive permalink

Ich würde dies als Lösung vorschlagen http://accessroot.com/arteam/site/download.php?view.185, da ich ein ähnliches Problem in einem der Crackmes hatte. Was ich getan habe, war, meine eigenen Hooks für SoftICE zu schreiben, um ring0-Hooks von int 3 und int 1 zu umgehen. Könnte für Ihr Problem nützlich sein. Interessanter Abschnitt ist "SoftICE kommt zur Rettung".

Bitte zitieren Sie relevante Teile aus dem Link, anstatt nur den Link hier anzugeben.


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...