GNU/Linux >> Tutoriels Linux >  >> Linux

Kaboxer - Kali Applications Boxer

Par intermittence depuis 18 mois, nous avons travaillé sur Kaboxer , et juste avant Kali 2021.1, il est prêt à dire "Hello World" (il commencera alors à vous envoyer des applications) .

TL;DR - Qu'est-ce que c'est ?

De quoi s'appelle-t-il, Kaboxer ? Caleçon Applications Kali

Qu'est-ce que cela signifie ? Applications dans des conteneurs, pour les packages (une voie à suivre pour les applications difficiles à empaqueter correctement). Mais au lieu d'être des conteneurs autonomes, ils sont intégrés aux systèmes de gestion de packages Kali standard et peuvent être installés/supprimés via les commandes apt standard.

D'accord. Mais que fait Kaboxer ? Tous les outils ne sont pas faciles à emballer. Il y a divers critères à respecter, parfois des arbres de dépendance fous ou des modifications particulières du système. Vous devrez peut-être utiliser une bibliothèque héritée, ou vous devrez peut-être modifier une configuration de quelque chose qui casserait une autre application. Que fais-tu? Nous travaillons avec les auteurs d'outils pour essayer de le rendre plus facile, ou nous passons de nombreuses nuits à essayer de l'adapter ou nous sommes tout simplement incapables de l'emballer.

Entrez Kaboxer. À l'aide de conteneurs, nous pouvons placer un package non standard complexe dans un conteneur et l'intégrer au reste du système d'exploitation, puis le regrouper dans l'écosystème d'emballage. Cela signifie que vous pouvez apt-installer un programme Kaboxer et l'utiliser sans avoir à prendre de mesures particulières.

Quels sont les avantages de Kaboxer ? Kaboxer a quelques cas d'utilisation, selon qui l'utilise :

  • Pour les personnes utilisant Kali Linux, il est transparent, vous ne remarquerez donc pas quand vous l'utiliserez (c'est pourquoi vous ne le considérerez peut-être pas comme "un gros problème") . Vous obtenez simplement plus d'outils !
  • Pour nous, développeurs Kali, cela change la donne.
  • Pour les autres empaqueteurs Debian, cela peut attirer votre attention.
  • Pour les auteurs d'outils (qui veulent leur logiciel en Kali) , il y a encore de l'espoir pour vous;-)

Quel est l'inconvénient de Kaboxer ? La taille de l'application sera plus importante car elle entraînera la surcharge normale liée à l'utilisation de conteneurs. Bien que le package installé soit petit, son installation téléchargera le conteneur requis qui consommera jusqu'à plusieurs centaines de mégaoctets même pour une simple application.

Que va-t-il se passer à cause de Kaboxer ? Nous espérons commencer à inclure plus d'outils dans Kali Linux qui n'étaient auparavant pas compressibles, et vous ne réalisez pas que vous les utilisez via Kaboxer. Malheureusement, ces outils ne feront pas partie de notre installation par défaut car l'augmentation de la taille des images ISO serait trop importante.

Aperçu

Il existe divers outils qui seraient un avantage pour les utilisateurs de Kali, mais qui souffrent de problèmes qui les rendent difficiles à expédier correctement en tant que *.deb paquets. Cela peut être dû au fait que les outils :

  • Ne sont pas développés avec l'empaquetage et l'intégration du système à l'esprit. Ils supposent qu'ils peuvent installer des versions spécifiques de bibliothèques, ou des bibliothèques de correctifs, ou télécharger des logiciels au moment de l'exécution plutôt qu'au moment de l'installation. Cela va à l'encontre des normes d'emballage et constitue également une mauvaise pratique d'ingénierie logicielle.
  • Peut se sentir autorisé à faire ce qu'il veut avec le système d'exploitation ou d'autres applications. Ces actions ne doivent pas être autorisées et le logiciel doit être isolé. Nous avons vu des actions telles que :
    • Création d'utilisateurs avec des UID/GID spécifiques.
    • Utiliser des chemins qui vont à l'encontre de la norme FHS (Filesystem Hierarchy Standard).
    • Utiliser des ports TCP ou UDP qui sont généralement affectés à d'autres services.
    • Reconfiguration des services existants
  • Interagissez avec des serveurs externes (peut-être par une méthode non sécurisée), ainsi le logiciel lui-même ne peut pas être totalement fiable. Par conséquent, il peut être judicieux d'isoler ces logiciels des données précieuses ou sensibles susceptibles d'être présentes sur le système.

Une façon de fournir l'isolation requise par le haut serait d'utiliser la conteneurisation. Les conteneurs permettent d'exécuter une application dans un environnement isolé, avec des risques considérablement réduits d'interaction non planifiée avec le reste du système (utilisateurs, services, autres applications, fichiers existants, versions spécifiques de bibliothèques, etc.).

Choix de conception

Bien que nous n'excluons pas de prendre en charge d'autres solutions de conteneurisation, nous avons choisi de commencer avec Docker. Il est bien connu, largement utilisé et bénéficie d'un large écosystème d'images, assurant ainsi sa viabilité à long terme. Les conteneurs Docker peuvent être configurés de plusieurs façons pour réaliser les différentes intégrations dont nous avons besoin avec le système hôte ou même entre plusieurs conteneurs.

La valeur de Kaboxer réside dans la façon dont il facilite la liaison des conteneurs Docker avec le système hôte, via les fonctionnalités Docker habituelles telles que les points de montage et les redirections de ports, mais également via l'intégration avec les entrées de menu du bureau. Toutes ces intégrations, ainsi que les instructions pour créer ou récupérer l'image docker, sont spécifiées dans un seul fichier YAML.

C'est ce seul fichier YAML qui est livré dans le .deb que nous fournissons dans Kali et le script de post-installation de ces packages téléchargera l'image de manière transparente afin que l'application soit prête à être exécutée par la suite.

Construction d'images Docker

La construction des images docker est également médiatisée par Kaboxer mais il n'y a rien de magique, cela revient à appeler docker build sur un Dockerfile spécifique avec quelques variables.

C'est au conditionneur d'écrire ce Dockerfile mais cette étape peut être triviale lorsque le projet en amont a déjà un Dockerfile ou lorsqu'il fournit une image Docker prête à l'emploi.

Publication des images Docker

Cette étape est tellement ennuyeuse que nous l'avons automatisée avec GitLab CI. Chaque fois que nous apportons une modification à un référentiel dédié à une application "kaboxée", telle que covenant, GitLab CI reconstruira l'image docker associée et la stockera dans son registre d'images.

Intégration des images dans le système

Une fois l'application conteneurisée, nous devons encore la mettre à la disposition de l'utilisateur de manière transparente, d'une manière qui, idéalement, ne serait même pas perceptible. L'utilisateur ne devrait même pas avoir à savoir que l'application s'exécute dans un conteneur.

Nous avons déjà expliqué que les utilisateurs continuent d'interagir avec les packages Kali pour installer et supprimer les applications conteneurisées, même si ces packages sont pour la plupart des shells vides exécutant des commandes Kaboxer dans les différents scripts du responsable. Ils fournissent également .desktop fichiers pour que les applications puissent être lancées à partir du menu habituel du bureau, et des aides en ligne de commande pour qu'elles puissent être lancées à partir d'un terminal sans avoir à connaître Kaboxer.

Pour pouvoir exécuter des conteneurs Docker, les utilisateurs ont besoin de certaines autorisations élevées :nous avons modifié le programme d'installation de Kali pour accorder ces autorisations par défaut aux utilisateurs créés lors du processus d'installation initial. Pour les autres utilisateurs, il faudra les ajouter au groupe Kaboxer (adduser $USER kaboxer ).

Les utilisateurs souhaitent évidemment que leurs données d'application soient conservées. Kaboxer dispose donc d'installations pour configurer les volumes partagés entre l'hôte et le conteneur, offrant ainsi une persistance même si les conteneurs sont de courte durée. Et puis, selon le type d'application, vous aurez probablement besoin d'intégrations plus spécifiques :

  • Pour les applications GUI, nous avons besoin que le socket X11 de l'hôte soit accessible.
  • Pour les applications Web, nous souhaitons exposer le port HTTP et démarrer le navigateur Web sur l'URL appropriée.

Ces besoins de base sont couverts par les fonctionnalités actuelles de Kaboxer, mais il semble probable que d'autres types d'intégrations seront nécessaires à l'avenir.

Si vous souhaitez toujours en savoir plus sur Kaboxer, veuillez consulter sa page d'accueil (plus le code source) et notre documentation (avec l'exemple "Hello World").

Pour des exemples d'application "monde réel", vous pouvez regarder nos premières "applications Kaboxed":

  • Covenant, un framework pour mettre en évidence la surface d'attaque de .NET. Covenant se présente sous la forme d'un serveur démarré en arrière-plan, plus une application Web qui s'exécute dans le navigateur.
  • Firefox Developer Edition est un navigateur Web et nous l'avons choisi car il s'agit d'une grande application graphique complexe.
  • Zenmap, l'interface graphique officielle de NMAP. Zenmap s'appuie sur des bibliothèques Python 2 obsolètes qui ne sont pas disponibles dans Kali Linux.

Vous voulez vous salir les mains et essayer ?

[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]:~$

N'oubliez pas d'ouvrir https://localhost:7443 dans un navigateur Web !

Si vous souhaitez commencer à explorer Kaboxer lui-même et voir ce qui se passe sous le capot :

[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]:~$

Enfin, vous pouvez suivre les programmes qui utilisent Kaboxer dans Kali en recherchant les packages se terminant par -kbx :

[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. Thèmes de la communauté Kali

  2. Sécuriser Kali Pi (2022)

  3. Kali Unkaputtbar

  4. Améliorations de l'accessibilité de Kali Linux

  5. Version Kali Linux 1.0.7

Durcissement de Kali Linux

Comment installer Kali Linux

Téléchargement Kali Linux

Configuration système requise pour Kali Linux

Kali Linux contre Parrot

Autorisations d'application Snap