Linux als Interpreter gedacht
Zusammenfassung
Astrid untersucht Malware, die per kexec Linux ersetzt, und deutet den Kernel als Interpreter ausführbarer Formate.
Ideen
- Ein Shellskript bettet Kernel und initramfs als Base64-Daten ein.
- kexec startet einen neuen Kernel ohne Firmware-Neustart.
- Ein minimales initramfs kann seine Umgebung vollständig selbst bestimmen.
- Shebangs weisen dem Kernel einen Interpreter für Textprogramme zu.
- Dynamische ELF-Dateien benennen ebenfalls einen Interpreter: den Laufzeit-Linker.
- Aus Kernelsicht sind Shellskripte und ELF-Dateien Varianten derselben Ausführungsentscheidung.
Einsichten
- Ausführbarkeit entsteht durch Protokolle zwischen Dateiformat, Kernel und Interpreter.
- Bootmechanismen können zugleich nützliche Adminwerkzeuge und mächtige Angriffspfade bilden.
- Vertraute Systemgrenzen verschwimmen, sobald Code seine eigene Laufzeitumgebung ersetzt.
Fakten
- Das untersuchte Skript enthält rund 20 Megabyte Base64-Daten.
- Das extrahierte Archiv enthält einen Linux-Kernel und ein init-Shellskript.
- kexec kann Kernel und initramfs laden und anschließend direkt ausführen.
- Der ELF-Header kann den dynamischen Linker als Programminterpreter festlegen.
Empfehlungen
- Analysiere verdächtige Bootartefakte ausschließlich isoliert und ohne produktive Berechtigungen.
- Beschränke kexec auf Systeme und Rollen, die diese Funktion benötigen.
- Prüfe bei Ausführungsfehlern Dateiformat, Shebang und dynamischen Linker getrennt.
Referenzen
Der Link zur Originalquelle öffnet einen neuen Tab.