Neue Rootkit-Technik für Linux vorgestellt

Der Linux-Experte Anthony Lineberry hat eine Methode vorgestellt, Rootkits über das Interface /dev/mem einzubinden und zu verstecken. Die von ihm entwickelte Bibliothek libmemrk soll dabei helfen.

In Pocket speichern vorlesen Druckansicht 204 Kommentare lesen
Lesezeit: 3 Min.
Von
  • Uli Ries
  • Daniel Bachfeld

Der Linux-Experte Anthony Lineberry will in Kürze die Library libmemrk veröffentlichen. Das hat er während seines Vortrags "Alice in User-Land: Hijacking the Linux Kernel via /dev/mem" auf der aktuell in Amsterdam stattfindenden IT-Sicherheitskonferenz Black Hat bekannt gegeben. Libmemrk soll in 32- und auch 64-Bit-Umgebungen funktionieren.

Mit libmemrk soll Entwicklern von Rootkits ein neuer Weg offen stehen, um Files oder Prozesse zu verstecken oder den Netzwerkverkehr zu beeinflussen. Der Trick: libmemrk nutzt den Gerätetreiber /dev/mem, um ohne weitreichende Berechtigung aus dem Userland beliebigen Code in den Arbeitsspeicher zu schreiben. /dev/mem ist ein Interface, um den physikalisch adressierbaren Speicher zu nutzen und wird beispielsweise von XServer oder DOSEmu verwendet. Das Einbringen von Rootkits über /dev/mem soll zudem weniger auffällig sein, als der herkömliche Weg über Loadable Kernel Modules (LKM)

Die Library nimmt den Rootkit-Programmierern zudem die "mühsame" Arbeit ab, die virtuellen Speicheradressen in physikalische umzusetzen und die für den Angriff nutzbaren Speicherbereiche zu identifizieren. Erst wenn die passenden, normalerweise vom Kernel genutzten Bereiche gefunden sind, kann der Angreifer die vorhandenen System Calls überschreiben und durch eigenen Code ersetzen. Der eigentliche, vom Kernel in den Speicher geschriebene Inhalt wird derweil in einen Buffer ausgelagert.

Welche Schritte für eine erfolgreiche Attacke im Einzelnen nötig sind und von libmemrk übernommen werden, beschreibt Lineberry in einem Whitepaper Malicious Code Injection via /dev/mem (PDF). Allerdings schreibt Lineberry dort, dass der Angriff in virtuellen Umgebungen scheitert, da sich der Hypervisor anders als nicht virtualisierte Hardware verhält. Lineberry gibt auch zu bedenken, dass trotz libmemrk sämtlicher Angriffe von Hand in Assembler programmiert werden muss. In Zukunft soll auf libcc zugegriffen werden, um auch diese Hürde zumindest zu senken.

Linux-Fachmann Lineberry hat auch gleich einige Tipps parat, wie sich die Linux-Welt vor Rootkits dieser Art schützen kann. So soll es seiner Ansicht nach genügen, wenn der Speichertreiber dahingehend modifiziert wird, dass er den Schreib-/Lesezeiger lseek nicht in den Speicherbereiche suchen lässt, die über 16 Kilobyte hinaus gehen. Von Haus aus sicher sind aktuelle Versionen von Red Hat und Fedora, da in deren Kernel bereits die Neuerungen von SELinux innewohnen.

Laut Lineberry gibt es auch in der Version 2.6.26 des Mainline-Kernels entsprechende Verbesserungen. Dem Kernel wurden dafür zwei neue Funktionen spendiert: range_is_allowed() und devmem_is_allowed(). Der Schutz soll jedoch nicht greifen, wenn nicht gleichzeitig die Funktion STRICT_DEVMEM aktiviert wurde, da range_is_allowed() stets positive Rückmeldungen bringt. Laut Lineberry wird STRICT_DEVMEM aber beim Kompilieren des Kernels nicht von Haus aus aktiviert. Wann libmemrk zum Download steht, konnte Lineberry noch nicht sagen. Er sei im Moment noch damit beschäftigt, letzte Schwächen zu beseitigen.

Ganz neu ist die Technik mit dem /dev/mem-Interface allerdings nicht. Bereits 2001 erschien der Artikel Linux on-the-fly kernel patching without LKM in Phrack, der einen ähnlichen Weg über /dev/kmem/ beschrieb. Die Autoren dachten damals auch schon über die Nutzung von /dev/mem nach, probieren sie aber nicht aus. (Uli Ries) / (dab)