Kernel-Modul zur Überwachung von Systemaufrufen?

8

Ich möchte ein Kernel-Modul von Grund auf neu erstellen, das eine Verbindung zu einer Benutzersitzung herstellt und jeden Systemaufruf überwacht, der von Prozessen ausgeführt wird, die zu diesem Benutzer gehören.

Ich weiß, was alle denken - "benutze strace" - aber ich hätte gerne ein paar meiner eigenen Logs und Analysen mit den Daten, die ich sammle, und strace hat einige Probleme - eine Anwendung könnte "mmap" zum Schreiben verwenden in eine Datei, ohne dass der Dateiinhalt jemals als Argument eines "offenen" Systemaufrufs erscheint, oder eine Anwendung ohne Schreibberechtigung erstellt möglicherweise Coredumps, um sensible Daten zu kopieren.

Ich möchte in der Lage sein, mit diesen speziellen Fällen fertig zu werden und selbst Logging zu betreiben. Ich frage mich allerdings - wie kann ich alle syscalls durch mein Modul routen? Gibt es eine Möglichkeit, dies zu tun, ohne den Kernel-Code zu berühren?

Danke

    
PinkElephantsOnParade 16.10.2012, 15:17
quelle

2 Antworten

2

Ich habe in der Vergangenheit etwas Ähnliches gemacht, indem ich ein Kernelmodul verwendet habe, um die Systemaufruftabelle zu patchen. Jede gepatchte Funktion hat ungefähr Folgendes gemacht:

%Vor%

Beachten Sie, dass Ihr Modul versionsabhängig wird, wenn Sie in den Kernel-Datenstrukturen herumfummeln. Das Kernelmodul muss wahrscheinlich für die spezifische Kernelversion kompiliert werden, auf der Sie installieren.

Beachten Sie auch, dass dies eine Technik ist, die von vielen Rootkits verwendet wird. Wenn Sie also Sicherheitssoftware installiert haben, versucht es möglicherweise, Sie daran zu hindern, so etwas zu tun.

    
Dave Rager 16.10.2012, 15:49
quelle
3

Ich habe nicht die genaue Antwort auf Ihre Frage, aber ich habe vor ein paar Tagen eine Zeitung redigiert und es könnte für Sie nützlich sein:

Ссылка

    
Sebastian Breit 16.10.2012 15:24
quelle

Tags und Links