Kaboxer erlaubt das Paketieren von Anwendungen, die ansonsten aus verschiedenen Gründen in den Paketquellen von Distributionen fehlen.
Die Methode, wie Distributionen Software ausliefern, befindet sich im Wandel. Die neuen Paketformate Flatpak und Snap etwa breiten sich immer weiter aus, Container gewinnen selbst im Alltag von reinen Desktop-Anwendern zunehmend an Bedeutung. Die Gründe dafür sind vielfältig. Entwickler möchten ihre Software schneller beim Anwender sehen, ohne dafür Pakete in verschiedenen Formaten schnüren zu müssen. Manche Ansätze erlauben es außerdem, mehrere Versionen einer Software gleichzeitig zu installieren. Das Sandboxing als Sicherheitsmerkmal spielt ebenfalls eine Rolle.
Hinzu kommt, dass sich nicht jede Software mit den herkömmlichen Paketformaten leicht verpacken und aktuell halten lässt. Das betrifft besonders Distributionen wie Kali Linux, die Hunderte hochspezialisierter Anwendungen ausliefern. Davon liegen viele nicht im Debian-Repository vor, und andere lassen sich nur schwer paketieren, da sie etwa veraltete Bibliotheken erwarten, die kaum noch eine Distribution mitbringt. Ein weiterer Grund wäre, Apps zu isolieren, damit diese andere Programme nicht stören.
Kaboxer
In diesen Kontext ordnet sich das Framework Kaboxer [1] ein, das aus dem Umfeld der auf Penetrationstests und digitale Forensik spezialisierten Distribution Kali Linux stammt. Der Name steht als Abkürzung für Kali Applications Boxer. Kali Linux basiert auf Debian und nutzt dessen Paketmanager. Kaboxer erweitert das Debian-Paketsystem über Container, die es aber ins bestehende System einbindet und mittels Kaboxer transparent steuert.
Die Entwickler betonen in der Dokumentation die Kompatibilität dieses Ansatzes zu anderen Debian-Varianten. Dabei erstellen sie Docker-Images der Anwendungen, die sie in klassischen Debian-Paketen verlinken. Während der Installation laden diese Pakete dann die Images herunter. Zum Erstellen der DEBs hat das Kaboxer-Team Debians Paketierungswerkzeug Debhelper um die Option debhelper_kaboxer erweitert und das Build-System entsprechend angepasst. Der Anwender installiert die Pakete wie gewohnt über den Befehl sudo apt install, die Anwendungen stehen danach über das Hauptmenü bereit.
Docker macht’s möglich
Die Entscheidung für Docker schließt für die Zukunft weitere Container-Formate nicht aus. Die Wahl fiel lediglich deshalb zuerst auf Docker, weil dessen Container eine Vielzahl an Parametern für die Konfiguration mitbringen. So lassen sich die Images gut integrieren, und zwar sowohl mit dem Host-System als auch über mehrere Container hinweg.
Um die Verzahnung zu bewerkstelligen, nutzt Kaboxer vorhandene Docker-Funktionen wie Einhängepunkte und Port-Umleitungen. Das Erstellen von Menüeinträgen geschieht über von Kaboxer erstellte .desktop-Dateien. Alle Angaben für die Integration sowie die Anweisungen zum Erstellen oder Abrufen des Docker-Images liegen in einer einzigen YAML-Datei. Die wiederum ist in einer der DEB-Dateien verpackt, die das Kali-Projekt bereitstellt. Das Post-Inst-Skript dieser Pakete lädt das Image herunter, sodass sich die darin enthaltene Anwendung anschließend sofort nutzen lässt.
Transparent eingebunden
Nach dem Containerisieren einer App geht es bei Kaboxer als Nächstes darum, die Anwendung so bereitzustellen, dass Anwender sie mit den bekannten Befehlen für das Debian-Paketmanagement nutzen können. Zu den weiteren Aufgaben von Kaboxer zählt es, die Persistenz der vom Benutzer mit der jeweiligen App erstellten Daten sicherzustellen, selbst wenn der Anwender den entsprechenden Container löscht.
Kaboxer verfügt daher über Funktionen zum Konfigurieren von Volumes, die Host und Container gemeinsam nutzen. Für GUI- oder Webanwendungen fallen noch weitere Handgriffe an: So benötigen etwa GUI-Apps einen Zugriff auf den X11-Socket des Hosts. Für Webanwendungen gilt es, den HTTP-Port freizugeben und den Webbrowser mit der jeweiligen URL zu starten.
Kinderleicht
Die Kaboxer-Entwickler haben bisher drei Applikationen eingetütet. Wir sehen uns das aus Anwendersicht anhand von zwei Beispielen in der Praxis an. Dazu installieren wir eine GUI-App und eine Webanwendung.
Um die Beispiele nachzustellen, bringen Sie zuerst den Hauptdarsteller Kaboxer ins Spiel (Listing 1, erste Zeile). Stellen Sie anschließend sicher, dass das verwendete Benutzerkonto der Gruppe kaboxer angehört (Abbildung 1). Wollen Sie wissen, welche Anwendungen via Kaboxer zur Verfügung stehen und welche davon Sie installiert haben, nutzen Sie dazu den Befehl aus der zweiten Zeile des Listings (Abbildung 2).
Listing 1
Kaboxer testen
$ sudo apt install kaboxer $ apt search --names-only '\-kbx$' $ sudo apt install zenmap-kbx $ sudo apt install covenant-kbx

Abbildung 1: Wollen Sie das Container-Framework nutzen, stellen Sie sicher, dass Ihr Benutzerkonto der Gruppe kaboxer angehört.

Abbildung 2: Mit einer Suche via Apt stellen Sie schnell fest, welche Anwendungen im Kaboxer-Format vorliegen.
Als erste Anwendung testen wir Zenmap, ein grafisches Frontend für den Portscanner Nmap. Da Zenmap eine Abhängigkeit zu veralteten Python-2-Bibliotheken aufweist, gestaltet sich eine normale Installation der Software unter Debian und dessen Ablegern sehr umständlich, da die Maintainer der Distribution Python 2 aus den Repositories entfernt haben.
Deshalb haben die Kali-Entwickler Zenmap als eine der ersten Apps unter dem Namen zenmap-kbx via Kaboxer bereitgestellt, sodass sich das Paket ganz wie gewohnt einrichten lässt (Listing 1, Zeile 3). Abbildung 3 zeigt den Installationsvorgang, bei dem auch ein Eintrag in der Menüstruktur des Desktops entsteht (Abbildung 4). Auf dieselbe Weise richten Sie das Paket covenant-kbx ein (Zeile 4). Dabei handelt es sich um ein .NET-basiertes Command-and-Control-Framework samt Webfrontend (Abbildung 5).

Abbildung 3: Bei der Installation von Kaboxer-Paketen über das Paketsystem von Debian kommen die eigentlichen Inhalte als Docker-Image von der GitLab-Registry der Kali-Entwickler ins System.

Abbildung 4: Kaboxer erstellt automatisch einen Eintrag im Hauptmenü des Desktops, von wo aus Sie den Container starten.

Abbildung 5: Bei Covenant fällt etwas mehr Aufwand an, da Sie es über ein Web-Interface bedienen, das der Container im Browser startet.
Beide Apps funktionieren auf Anhieb, ohne dass auffiele, dass sie jeweils in einem Container laufen. Covenant startet automatisch sein Web-Interface. Auch die Entwicklerversion von Firefox als ausgewachsene GUI-Applikation zeigte im Test keine Auffälligkeiten.
Nicht nur Vorteile
Die Installation der Kaboxer-Apps dauert etwas länger als bei herkömmlichen DEB-Paketen. Bei den Tandem-Paketen zu einer Kaboxer-Applikation handelt es sich ja quasi nur noch um eine Art Metapakete, die den Inhalt per Docker-Image herunterladen und dann einrichten. Beim Start dieser Apps bemerkt man jedoch keine weitere Verzögerung.
Das Modell Kaboxer teilt einen Nachteil mit den Cousins Flatpak und Snap: die Dateigröße. Selbst eigentlich nur wenige Kilobytes große Programme schwellen im Kaboxer-Container gern auf 50 MByte Umfang und mehr an. Das liegt an den mit ausgelieferten Abhängigkeiten, die im Host-System nicht mehr bereitstehen (oder im widrigsten Fall sogar doppelt vorhanden sind), sowie am Overhead des Containers selbst. Aus diesem Grund bringt etwa Kali Linux entsprechende Anwendungen nicht in den Betriebssystem-Images mit, Sie müssen sie bei Bedarf von Hand nachinstallieren.
Selbst erstellt
Es ist beileibe kein Hexenwerk, Applikationen in Eigenregie für Kaboxer bereitzustellen. Die Dokumentation des Tools beschreibt die notwendigen Schritte ausführlich [2]. Sie umfassen das Erstellen und den Bau eines Docker-Images der entsprechenden Anwendung. Für den Einsatz im größeren Stil böte es sich an, den Vorgang per Gitlab CI zu automatisieren. Weitergehende Informationen über den in der Dokumentation beschriebenen Einstieg hinaus liefern die Manpages zu Kaboxer und kaboxer.yaml.
Fazit und Ausblick
Anwendern von Kali Linux bietet Kaboxer den Vorteil der Installation von Tools und Anwendungen, die ansonsten nicht oder nur sehr umständlich einzurichten wären. Dass hier statt regulärer DEB-Pakete Container im Spiel sind, merken Sie höchstens an der etwas längeren Installationszeit. Selbst Anwender können bei Bedarf und mit etwas Übung recht zügig eine einfache Anwendung verpacken. Ob sich letztendlich auch die Entwickler anderer Debian-Derivate die Technik von Kaboxer zunutze machen, bleibt abzuwarten. (agr/jlu)
Infos





