GNU/Linux >> Linux Esercitazione >  >> Linux

Kaboxer - Kali Applications Boxer

Negli ultimi 18 mesi abbiamo lavorato a intermittenza su Kaboxer , e poco prima di Kali 2021.1, è pronto per dire "Hello World" (quindi inizierà a spedirti le applicazioni) .

TL;DR - Cos'è questo?

Qual ​​è il nome, Kaboxer? Boxer per applicazioni Kali

Cosa significa? App in contenitori, per i pacchetti (una soluzione per le applicazioni difficili da impacchettare correttamente). Ma invece di essere contenitori autonomi, sono integrati nei sistemi di gestione dei pacchetti Kali standard e possono essere installati/rimossi tramite i comandi apt standard.

Va bene. Ma cosa fa Kaboxer? Non tutti gli strumenti sono facili da impacchettare. Ci sono vari criteri da soddisfare, a volte alcuni alberi delle dipendenze folli o modifiche peculiari del sistema. Potrebbe essere necessario utilizzare una libreria legacy o potrebbe essere necessario modificare una configurazione di qualcosa che potrebbe interrompere un'altra applicazione. cosa fai? Collaboriamo con gli autori di strumenti per cercare di renderlo più semplice, oppure trascorriamo molte notti fino a tardi cercando di adattarlo o semplicemente non siamo in grado di impacchettarlo.

Entra Kaboxer. Usando i contenitori possiamo inserire un pacchetto non standard complesso in un contenitore e integrarlo con il resto del sistema operativo e raggrupparlo nell'ecosistema di confezionamento. Ciò significa che puoi apt-installare un programma Kaboxer e utilizzarlo senza dover eseguire passaggi speciali.

In che modo Kaboxer mi avvantaggia? Kaboxer ha alcuni casi d'uso, a seconda di chi lo sta usando:

  • Per le persone che usano Kali Linux, è trasparente, quindi non te ne accorgerai quando lo stai usando (motivo per cui potresti non vederlo come "un grosso problema") . Hai solo più strumenti!
  • Per noi sviluppatori Kali, questo è un punto di svolta.
  • Per altri packager Debian, questo potrebbe attirare la tua attenzione.
  • Per gli autori di strumenti (che vogliono il loro software in Kali) , c'è ancora speranza per te;-)

Qual ​​è il lato negativo di Kaboxer? La dimensione dell'applicazione sarà maggiore perché comporterà il normale sovraccarico di dover utilizzare i contenitori. Mentre il pacchetto installato sarà piccolo, la sua installazione scaricherà il contenitore richiesto che consumerà fino a diverse centinaia di megabyte anche per una semplice applicazione.

Cosa accadrà grazie a Kaboxer? Speriamo di iniziare a includere in Kali Linux più strumenti che in precedenza non erano impacchettabili e non ti rendi conto che li stai utilizzando tramite Kaboxer. Sfortunatamente, tali strumenti non entreranno nella nostra installazione predefinita poiché l'aumento delle dimensioni delle immagini ISO sarebbe troppo significativo.

Panoramica

Ci sono vari strumenti che sarebbero un vantaggio per gli utenti di Kali, ma soffrono di problemi che li rendono difficili da spedire correttamente come *.deb pacchi. Questo potrebbe essere perché, gli strumenti:

  • Non sono sviluppati pensando all'imballaggio e all'integrazione del sistema. Presumono di poter installare versioni specifiche di librerie o librerie di patch o scaricare parti di software in fase di esecuzione anziché durante l'installazione. Questo è contro gli standard di confezionamento ed è anche una cattiva pratica di ingegneria del software.
  • Potrebbero ritenere di avere il diritto di fare tutto ciò che vogliono con il sistema operativo o altre applicazioni. Queste azioni non dovrebbero essere consentite e il software deve essere isolato. Abbiamo visto azioni come:
    • Creazione di utenti con UID/GID specifici.
    • Utilizzo di percorsi contrari al Filesystem Hierarchy Standard (FHS).
    • Utilizzo di porte TCP o UDP che di solito sono interessate da altri servizi.
    • Riconfigurazione dei servizi esistenti.
  • Interagisci con server esterni (forse con un metodo non sicuro), quindi il software stesso non può essere completamente attendibile. Di conseguenza, potrebbe essere una buona idea isolare tale software dai dati preziosi o sensibili che potrebbero essere presenti nel sistema.

Un modo per fornire l'isolamento richiesto dall'alto sarebbe utilizzare la containerizzazione. I container consentono di eseguire un'applicazione in un ambiente isolato, con rischi drasticamente ridotti di interazioni non pianificate con il resto del sistema (utenti, servizi, altre applicazioni, file esistenti, versioni specifiche di librerie, ecc.).

Scelte di design

Anche se non stiamo escludendo il supporto di altre soluzioni di containerizzazione, abbiamo deciso di iniziare con Docker. È ben noto, ampiamente utilizzato e beneficia di un ampio ecosistema di immagini, garantendo così la sua fattibilità a lungo termine. I container Docker possono essere configurati in molti modi per ottenere le varie integrazioni di cui abbiamo bisogno con il sistema host o anche tra più container.

Il valore di Kaboxer sta nel modo in cui semplifica il collegamento dei contenitori docker con il sistema host, attraverso le consuete funzionalità docker come punti di montaggio e reindirizzamenti delle porte, ma anche attraverso l'integrazione con le voci del menu del desktop. Tutte queste integrazioni, così come le istruzioni per creare o recuperare l'immagine della finestra mobile, sono specificate in un unico file YAML.

È quel singolo file YAML che viene spedito nel .deb i file che forniamo in Kali e lo script post-installazione di quei pacchetti scaricheranno l'immagine in modo trasparente in modo che l'applicazione sia pronta per essere eseguita in seguito.

Creazione di immagini Docker

Anche la costruzione delle immagini docker è mediata da Kaboxer ma non c'è nulla di magico, si riduce a chiamare docker build su uno specifico Dockerfile con poche variabili.

Spetta al packager scrivere quel Dockerfile, ma questo passaggio può essere banale quando il progetto upstream ha già un Dockerfile o quando fornisce un'immagine Docker pronta per l'uso.

Pubblicazione di immagini Docker

Questo passaggio è così noioso che lo abbiamo automatizzato con GitLab CI. Ogni volta che apportiamo una modifica a un repository dedicato a un'applicazione "kaboxed", come covenant, GitLab CI ricostruirà l'immagine docker associata e la memorizzerà nel suo registro immagini.

Integrazione delle immagini nel sistema

Una volta che l'app è stata containerizzata, dobbiamo ancora renderla disponibile all'utente in modo trasparente, in un modo che idealmente non sarebbe nemmeno visibile. L'utente non dovrebbe nemmeno sapere che l'app viene eseguita in un contenitore.

Abbiamo già spiegato che gli utenti continuano a interagire con i pacchetti Kali per installare e rimuovere le applicazioni containerizzate, anche se quei pacchetti sono per lo più shell vuote che eseguono comandi Kaboxer nei vari script di manutenzione. Forniscono anche .desktop file in modo che le applicazioni possano essere avviate dal consueto menu del desktop e helper della riga di comando in modo che possano essere avviate da un terminale senza dover conoscere Kaboxer.

Per poter eseguire i contenitori docker, gli utenti necessitano di alcune autorizzazioni elevate:abbiamo modificato il programma di installazione di Kali per concedere tali autorizzazioni per impostazione predefinita agli utenti creati durante il processo di installazione iniziale. Per gli altri utenti, dovranno essere aggiunti al gruppo Kaboxer (adduser $USER kaboxer ).

Gli utenti ovviamente vogliono che i dati delle loro applicazioni vengano conservati, quindi Kaboxer ha strutture per configurare i volumi condivisi tra l'host e il container fornendo così persistenza anche se i container sono di breve durata. E poi, a seconda del tipo di applicazione, probabilmente avrai bisogno di integrazioni più specifiche:

  • Per le applicazioni GUI, è necessario che il socket X11 host sia accessibile.
  • Per le applicazioni web, vogliamo esporre la porta HTTP e avviare il browser web sull'URL appropriato.

Questi bisogni di base sono coperti dalle attuali funzionalità di Kaboxer, ma sembra probabile che in futuro saranno necessari altri tipi di integrazioni.

Se vuoi ancora saperne di più su Kaboxer, consulta la sua homepage (più il codice sorgente) e la nostra documentazione (con l'esempio "Hello World").

Per esempi di applicazioni nel "mondo reale", puoi guardare le nostre prime "app Kaboxed":

  • Covenant, un framework per evidenziare la superficie di attacco di .NET. Covenant viene fornito come un server avviato in background, oltre a un'app Web che viene eseguita nel browser.
  • Firefox Developer Edition, è un browser web e l'abbiamo scelto perché è un'applicazione GUI complessa e di grandi dimensioni.
  • Zenmap, la GUI ufficiale di NMAP. Zenmap si basa su librerie Python 2 obsolete che non sono disponibili in Kali Linux.

Vuoi sporcarti le mani e provare?

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

Non dimenticare di aprire https://localhost:7443 in un browser web!

Se desideri iniziare a esplorare Kaboxer stesso e vedere cosa sta succedendo sotto il cofano:

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

Infine, puoi tenere traccia dei programmi che utilizzano Kaboxer in Kali cercando i pacchetti che terminano con -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. Linux:esegui applicazioni Mac Os X su Linux?

  2. Miglioramenti all'accessibilità di Kali Linux

  3. Versione Kali Linux 1.0.7

  4. Versione Kali Linux 1.0.6

  5. Versione Kali Linux 1.1.0

Rafforzamento di Kali Linux

Come installare Kali Linux

Scarica Kali Linux

Requisiti di sistema di Kali Linux

Kali Linux vs Parrot

Autorizzazioni dell'applicazione Snap