GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Kaboxer - Kali Anwendungen Boxer

In den letzten 18 Monaten haben wir immer mal wieder an Kaboxer gearbeitet , und kurz vor Kali 2021.1 ist es bereit, „Hello World“ zu sagen (dann beginnt es mit dem Versand Ihrer Anwendungen) .

TL;DR - Was ist das?

Worum geht es in dem Namen, Kaboxer? Kali Anwendungen Boxer

Was bedeutet das? Apps in Containern für Pakete (ein Weg nach vorn für Anwendungen, die schwer richtig zu verpacken sind). Aber anstatt eigenständige Container zu sein, sind sie in die standardmäßigen Kali-Paketverwaltungssysteme integriert und können über standardmäßige apt-Befehle installiert/entfernt werden.

In Ordnung. Aber was macht Kaboxer? Nicht jedes Werkzeug ist einfach zu verpacken. Es gibt verschiedene Kriterien zu erfüllen, manchmal einige verrückte Abhängigkeitsbäume oder eigenartige Systemmodifikationen. Möglicherweise müssen Sie eine Legacy-Bibliothek verwenden oder eine Konfiguration ändern, die eine andere Anwendung beschädigen würde. Wie geht's? Wir arbeiten mit Tool-Autoren zusammen, um es einfacher zu machen, oder wir verbringen viele Nächte damit, es passend zu machen, oder wir sind einfach nicht in der Lage, es zu verpacken.

Geben Sie Kaboxer ein. Mithilfe von Containern können wir ein komplexes, nicht standardmäßiges Paket in einen Container packen und es mit dem Rest des Betriebssystems integrieren und es in das Verpackungs-Ökosystem bündeln. Das bedeutet, dass Sie ein Kaboxer-Programm apt-installieren und verwenden können, ohne besondere Schritte unternehmen zu müssen.

Welche Vorteile bietet mir Kaboxer? Kaboxer hat ein paar Anwendungsfälle, je nachdem, wer es verwendet:

  • Für Leute, die Kali Linux verwenden, ist es transparent, sodass Sie es nicht bemerken, wenn Sie es verwenden (weshalb Sie es vielleicht nicht als „große Sache“ ansehen) . Du bekommst einfach mehr Tools!
  • Für uns Kali-Entwickler ist dies ein Wendepunkt.
  • Für andere Debian-Paketierer könnte dies Ihre Aufmerksamkeit wecken.
  • Für Tool-Autoren (die ihre Software in Kali haben möchten) , es gibt noch Hoffnung für dich;-)

Was ist der Nachteil von Kaboxer? Die Größe der Anwendung wird größer, da sie den normalen Overhead der Verwendung von Containern mit sich bringt. Während das installierte Paket klein sein wird, lädt seine Installation den erforderlichen Container herunter, der selbst für eine einfache Anwendung bis zu mehreren Hundert Megabyte verbrauchen wird.

Was wird wegen Kaboxer passieren? Wir hoffen, mehr Tools in Kali Linux integrieren zu können, die zuvor nicht packbar waren, und haben Sie nicht bemerkt, dass Sie sie über Kaboxer verwenden. Leider schaffen es solche Tools nicht in unsere Standardinstallation, da die Größenzunahme für die ISO-Images zu groß wäre.

Übersicht

Es gibt verschiedene Tools, die für Kali-Benutzer von Vorteil wären, aber unter Problemen leiden, die es schwierig machen, sie ordnungsgemäß als *.deb zu versenden Pakete. Dies könnte daran liegen, dass die Tools:

  • Werden nicht im Hinblick auf Paketierung und Systemintegration entwickelt. Sie gehen davon aus, dass sie bestimmte Versionen von Bibliotheken oder Patch-Bibliotheken installieren oder Softwareteile zur Laufzeit statt zur Installationszeit herunterladen können. Dies verstößt gegen Verpackungsstandards und ist außerdem eine schlechte Software-Engineering-Praxis.
  • Möglicherweise das Gefühl haben, dass sie berechtigt sind, mit dem Betriebssystem oder anderen Anwendungen zu tun, was sie wollen. Diese Aktionen sollten nicht zugelassen werden und die Software muss isoliert werden. Wir haben Aktionen gesehen wie:
    • Erstellen von Benutzern mit bestimmten UIDs/GIDs.
    • Pfade verwenden, die gegen den Filesystem Hierarchy Standard (FHS) verstoßen.
    • Verwendung von TCP- oder UDP-Ports, die normalerweise von anderen Diensten betroffen sind.
    • Bestehende Dienste neu konfigurieren.
  • Mit externen Servern interagieren (möglicherweise durch eine unsichere Methode), daher kann der Software selbst nicht vollständig vertraut werden. Daher kann es eine gute Idee sein, solche Software von wertvollen oder sensiblen Daten zu isolieren, die möglicherweise auf dem System vorhanden sind.

Eine Möglichkeit, die erforderliche Isolierung von oben bereitzustellen, wäre die Verwendung von Containern. Container ermöglichen die Ausführung einer Anwendung in einer isolierten Umgebung mit drastisch reduziertem Risiko einer ungeplanten Interaktion mit dem Rest des Systems (Benutzer, Dienste, andere Anwendungen, vorhandene Dateien, bestimmte Versionen von Bibliotheken usw.).

Designauswahl

Obwohl wir die Unterstützung anderer Containerisierungslösungen nicht ausschließen, haben wir uns entschieden, mit Docker zu beginnen. Es ist bekannt, weit verbreitet und profitiert von einem großen Ökosystem von Bildern, wodurch seine langfristige Lebensfähigkeit sichergestellt wird. Docker-Container können auf viele Arten konfiguriert werden, um die verschiedenen Integrationen zu erreichen, die wir mit dem Hostsystem oder sogar zwischen mehreren Containern benötigen.

Der Wert von Kaboxer liegt in der einfachen Verknüpfung von Docker-Containern mit dem Hostsystem durch die üblichen Docker-Funktionen wie Einhängepunkte und Portumleitungen, aber auch durch die Integration mit Desktop-Menüeinträgen. Alle diese Integrationen sowie die Anweisungen zum Erstellen oder Abrufen des Docker-Images werden in einer einzigen YAML-Datei angegeben.

Es ist diese einzelne YAML-Datei, die in .deb ausgeliefert wird Dateien, die wir in Kali bereitstellen, und das Post-Installationsskript dieser Pakete laden das Image transparent herunter, sodass die Anwendung anschließend betriebsbereit ist.

Build von Docker-Images

Der Build der Docker-Images wird ebenfalls von Kaboxer vermittelt, aber es ist nichts Zauberhaftes, es läuft darauf hinaus, docker build aufzurufen auf einem bestimmten Dockerfile mit ein paar Variablen.

Es ist Sache des Paketierers, diese Dockerfile zu schreiben, aber dieser Schritt kann trivial sein, wenn das Upstream-Projekt bereits eine Dockerfile hat oder wenn es ein gebrauchsfertiges Docker-Image bereitstellt.

Veröffentlichung von Docker-Images

Dieser Schritt ist so langweilig, dass wir ihn mit GitLab CI automatisiert haben. Jedes Mal, wenn wir eine Änderung an einem Repository vornehmen, das einer „kaboxed“-Anwendung wie Covenant gewidmet ist, erstellt GitLab CI das zugehörige Docker-Image neu und speichert es in seiner Image-Registrierung.

Einbindung der Bilder in das System

Sobald die App containerisiert ist, müssen wir sie dem Benutzer immer noch nahtlos zur Verfügung stellen, auf eine Weise, die idealerweise nicht einmal bemerkt wird. Der Benutzer soll nicht einmal wissen müssen, dass die App in einem Container läuft.

Wir haben bereits erklärt, dass Benutzer weiterhin mit Kali-Paketen interagieren, um die containerisierten Anwendungen zu installieren und zu entfernen, obwohl diese Pakete größtenteils leere Shells sind, auf denen Kaboxer-Befehle in den verschiedenen Betreuer-Skripten ausgeführt werden. Sie stellen auch .desktop bereit Dateien, damit die Anwendungen aus dem üblichen Desktop-Menü gestartet werden können, und Befehlszeilen-Hilfsprogramme, damit sie von einem Terminal aus gestartet werden können, ohne etwas über Kaboxer wissen zu müssen.

Um Docker-Container ausführen zu können, benötigen die Benutzer einige erhöhte Berechtigungen:Wir haben das Kali-Installationsprogramm so geändert, dass diese Berechtigungen standardmäßig Benutzern gewährt werden, die während des Erstinstallationsprozesses erstellt wurden. Andere Benutzer müssen der Kaboxer-Gruppe hinzugefügt werden (adduser $USER kaboxer ).

Die Benutzer möchten offensichtlich, dass ihre Anwendungsdaten beibehalten werden, daher verfügt Kaboxer über Möglichkeiten, Volumes zu konfigurieren, die zwischen dem Host und dem Container gemeinsam genutzt werden, und so für Persistenz zu sorgen, selbst wenn Container nur von kurzer Dauer sind. Und je nach Art der Anwendung benötigen Sie wahrscheinlich spezifischere Integrationen:

  • Für GUI-Anwendungen müssen wir auf den Host-X11-Socket zugreifen können.
  • Für Webanwendungen möchten wir den HTTP-Port verfügbar machen und den Webbrowser über die entsprechende URL starten.

Diese grundlegenden Anforderungen werden mit den aktuellen Kaboxer-Funktionen abgedeckt, aber es scheint wahrscheinlich, dass in Zukunft andere Arten von Integrationen erforderlich sein werden.

Wenn Sie dennoch mehr über Kaboxer erfahren möchten, sehen Sie sich bitte seine Homepage (plus Quellcode) und unsere Dokumentation (mit „Hello World“-Beispiel) an.

Beispiele für Anwendungen in der „echten Welt“ finden Sie in unseren ersten „Kaboxed-Apps“:

  • Covenant, ein Framework zur Hervorhebung der Angriffsfläche von .NET. Covenant wird als Server geliefert, der im Hintergrund gestartet wird, sowie als Webanwendung, die im Browser ausgeführt wird.
  • Firefox Developer Edition ist ein Webbrowser und wir haben ihn ausgewählt, da es sich um eine komplexe große GUI-Anwendung handelt.
  • Zenmap, die offizielle NMAP-GUI. Zenmap stützt sich auf veraltete Python 2-Bibliotheken, die in Kali Linux nicht verfügbar sind.

Willst du dir die Hände schmutzig machen und es ausprobieren?

[email protected]:~$ sudo apt update && sudo apt -y install covenant-kbx
...
[email protected]:~$
[email protected]:~$ covenant-kbx
Usage: covenant-kbx start|stop
[email protected]:~$
[email protected]:~$ covenant-kbx start
>>> Initializing user data in ~/.local/covenant/data
>>> Starting covenant
Please wait during the start, it can take a long time...
>>> Opening https://127.0.0.1:7443 with a web browser
covenant/default started
Press ENTER to exit
[email protected]:~$
[email protected]:~$ ss -at | grep 7443
LISTEN 0      4096         0.0.0.0:7443        0.0.0.0:*
[email protected]:~$

Vergessen Sie nicht, https://localhost:7443 zu öffnen in einem Webbrowser!

Wenn Sie anfangen möchten, Kaboxer selbst zu erkunden und zu sehen, was unter der Haube passiert:

[email protected]:~$ kaboxer
usage: kaboxer [-h] [-v] {run,start,stop,get-meta-file,get-upstream-version,prepare,upgrade,list,ls,build,install,clean,push,save,load,purge} ...
kaboxer: error: the following arguments are required: action
[email protected]:~$
[email protected]:~$ kaboxer ls
App       Installed version    Available version    Packaging revision from YAML    Packaging revision from image
--------  -------------------  -------------------  ------------------------------  -------------------------------
covenant  0.6                  -                    1                               1
[email protected]:~$

Schließlich können Sie verfolgen, welche Programme Kaboxer in Kali verwenden, indem Sie nach Paketen suchen, die mit -kbx enden :

[email protected]:~$ apt-cache search --names-only '\-kbx$'
covenant-kbx - .NET command and control framework
firefox-developer-edition-en-us-kbx - Mozilla Firefox web browser - Developer Edition - en-US
zenmap-kbx - The Network Mapper Front End
[email protected]:~$

Linux
  1. Linux – Mac OS X-Anwendungen unter Linux ausführen?

  2. Verbesserungen der Barrierefreiheit von Kali Linux

  3. Kali Linux 1.0.7-Veröffentlichung

  4. Kali Linux 1.0.6-Veröffentlichung

  5. Kali Linux 1.1.0-Veröffentlichung

Härten von Kali Linux

So installieren Sie Kali Linux

Kali-Linux-Download

Kali Linux-Systemanforderungen

Kali Linux gegen Papagei

Snap-Anwendungsberechtigungen