GNU/Linux >> Znalost Linux >  >> Linux

Kaboxer - Kali Applications Boxer

Posledních 18 měsíců jsme pracovali na Kaboxeru a těsně před Kali 2021.1 je připraven říct „Ahoj světe“ (pak vám začne doručovat aplikace) .

TL;DR – Co je to?

Jaké je jméno, Kaboxer? Kali Applications Boxer

Co to znamená? Aplikace v kontejnerech, pro balíčky (cesta vpřed pro aplikace, které je obtížné správně zabalit). Ale namísto samostatných kontejnerů jsou integrovány do standardních systémů správy balíčků Kali a lze je nainstalovat/odebrat pomocí standardních příkazů apt.

Dobře. Ale co dělá Kaboxer? Ne každý nástroj lze snadno zabalit. Existují různá kritéria, která je třeba splnit, občas bláznivé stromové závislosti nebo zvláštní modifikace systému. Možná budete muset použít starší knihovnu nebo možná budete muset změnit konfiguraci něčeho, co by narušilo jinou aplikaci. Co děláš? Spolupracujeme s autory nástrojů, abychom to usnadnili, nebo trávíme mnoho pozdních nocí tím, že se snažíme, aby se vešly, nebo je prostě nejsme schopni zabalit.

Zadejte Kaboxer. Pomocí kontejnerů můžeme složit komplexní nestandardní balíček vložit do kontejneru a integrovat jej se zbytkem operačního systému a zapojit do obalového ekosystému. To znamená, že můžete apt nainstalovat program Kaboxer a používat jej, aniž byste museli podnikat nějaké speciální kroky.

Jak mi Kaboxer prospívá? Kaboxer má několik případů použití v závislosti na tom, kdo jej používá:

  • Pro lidi, kteří používají Kali Linux, je transparentní, takže si toho nevšimnete, když ho používáte (proto to možná nevidíte jako „velký problém“) . Získáte jen více nástrojů!
  • Pro nás vývojáře Kali je to změna hry.
  • U ostatních balíčků Debianu to může upoutat vaši pozornost.
  • Pro autory nástrojů (kteří chtějí svůj software v Kali) , je tu pro vás ještě naděje;-)

Jaká je nevýhoda Kaboxeru? Velikost aplikace bude větší, protože ponese běžnou režii nutnosti použití kontejnerů. I když bude nainstalovaný balíček malý, jeho instalace stáhne požadovaný kontejner, který i pro jednoduchou aplikaci spotřebuje až několik stovek megabajtů.

Co se stane kvůli Kaboxerovi? Doufáme, že do Kali Linuxu začneme začleňovat více nástrojů, které dříve nebyly balitelné, a neuvědomujete si, že je používáte přes Kaboxer. Bohužel se takové nástroje nedostanou do naší výchozí instalace, protože zvětšení velikosti ISO obrazů by bylo příliš významné.

Přehled

Existují různé nástroje, které by byly pro uživatele Kali přínosem, ale trpí problémy, kvůli kterým je obtížné je správně odeslat jako *.deb balíčky. Může to být proto, že nástroje:

  • Nebyly vyvinuty s ohledem na balení a integraci systému. Předpokládají, že mohou instalovat konkrétní verze knihoven nebo knihoven oprav nebo stahovat části softwaru za běhu, nikoli v době instalace. To je proti standardům balení a také je to špatná praxe softwarového inženýrství.
  • Mohou mít pocit, že mají právo dělat si s operačním systémem nebo jinými aplikacemi, co chtějí. Tyto akce by neměly být povoleny a software je třeba izolovat. Viděli jsme akce jako:
    • Vytváření uživatelů s konkrétními UID/GID.
    • Používání cest, které jsou v rozporu se standardem Filesystem Hierarchy Standard (FHS).
    • Použití portů TCP nebo UDP, které jsou obvykle ovlivněny jinými službami.
    • Překonfigurování stávajících služeb.
  • Komunikujte s externími servery (možná nezabezpečenou metodou), takže samotnému softwaru nelze plně důvěřovat. V důsledku toho může být dobrý nápad izolovat takový software od cenných nebo citlivých dat, která mohou být přítomna v systému.

Způsobem, jak zajistit izolaci požadovanou shora, by bylo použití kontejnerizace. Kontejnery umožňují spouštění aplikace v izolovaném prostředí s drasticky sníženým rizikem neplánované interakce se zbytkem systému (uživatelé, služby, další aplikace, existující soubory, konkrétní verze knihoven atd.).

Možnosti návrhu

I když nevylučujeme podporu jiných řešení kontejnerizace, rozhodli jsme se začít s Dockerem. Je dobře známý, široce používaný a těží z velkého ekosystému obrázků, což zajišťuje jeho dlouhodobou životaschopnost. Docker kontejnery lze konfigurovat mnoha způsoby, abychom dosáhli různých integrací, které potřebujeme s hostitelským systémem nebo dokonce mezi více kontejnery.

Hodnota Kaboxeru je v tom, jak usnadňuje spojení kontejnerů dockerů s hostitelským systémem prostřednictvím obvyklých funkcí dockeru, jako jsou přípojné body a přesměrování portů, ale také prostřednictvím integrace s položkami nabídky na ploše. Všechny tyto integrace, stejně jako pokyny k vytvoření nebo načtení obrazu dockeru, jsou specifikovány v jediném souboru YAML.

Je to jediný soubor YAML, který je dodáván v .deb soubory, které poskytujeme v Kali a skript po instalaci těchto balíčků transparentně stáhne obraz, aby byla aplikace poté připravena ke spuštění.

Sestavení obrázků Docker

Sestavení obrázků dockeru je také zprostředkováno Kaboxerem, ale není to žádná magie, scvrkává se na volání docker build na konkrétním Dockerfile s několika proměnnými.

Je na poskytovateli balíčků, aby tento Dockerfile napsal, ale tento krok může být triviální, pokud upstreamový projekt již má soubor Dockerfile nebo když poskytuje hotový obraz dockeru.

Zveřejnění obrázků Docker

Tento krok je tak nudný, že jsme ho zautomatizovali pomocí GitLab CI. Pokaždé, když provedeme změnu v úložišti vyhrazeném pro „kaboxovanou“ aplikaci, jako je covenant, GitLab CI znovu sestaví přidružený docker image a uloží jej do svého registru obrázků.

Integrace obrazů do systému

Jakmile je aplikace kontejnerizována, musíme ji uživatelům zpřístupnit hladce, způsobem, který by v ideálním případě nebyl ani patrný. Uživatel by ani neměl vědět, že aplikace běží v kontejneru.

Již jsme vysvětlili, že uživatelé pokračují v interakci s balíčky Kali, aby instalovali a odebírali kontejnerizované aplikace, i když tyto balíčky jsou většinou prázdné shelly s příkazy Kaboxer v různých skriptech správce. Poskytují také .desktop soubory, takže aplikace lze spouštět z obvyklé nabídky na ploše, a pomocníky příkazového řádku, takže je lze spouštět z terminálu, aniž byste museli vědět o Kaboxeru.

Aby uživatelé mohli spouštět kontejnery dockerů, potřebují určitá zvýšená oprávnění:upravili jsme instalační program Kali tak, aby tato oprávnění ve výchozím nastavení uděloval uživatelům vytvořeným během procesu počáteční instalace. Ostatní uživatelé budou muset být přidáni do skupiny Kaboxer (adduser $USER kaboxer ).

Uživatelé zjevně chtějí, aby jejich aplikační data byla uchována, takže Kaboxer má zařízení pro konfiguraci svazků sdílených mezi hostitelem a kontejnerem, čímž poskytuje perzistenci, i když kontejnery mají krátkou životnost. A pak v závislosti na druhu aplikace budete pravděpodobně potřebovat konkrétnější integrace:

  • Pro aplikace GUI potřebujeme, aby byl hostitelský soket X11 přístupný.
  • U webových aplikací chceme odhalit port HTTP a spustit webový prohlížeč na příslušné adrese URL.

Tyto základní potřeby jsou pokryty současnými funkcemi Kaboxeru, ale zdá se pravděpodobné, že v budoucnu bude zapotřebí jiný druh integrace.

Pokud se přesto chcete dozvědět více o Kaboxeru, podívejte se prosím na jeho domovskou stránku (plus zdrojový kód) a naši dokumentaci (s příkladem „Hello World“).

Pro příklady aplikací „reálného světa“ se můžete podívat na naše první „aplikace Kaboxed“:

  • Covenant, rámec pro zvýraznění útočné plochy .NET. Covenant přichází jako server, který se spouští na pozadí, plus webová aplikace, která běží v prohlížeči.
  • Firefox Developer Edition je webový prohlížeč a vybrali jsme jej, protože se jedná o složitou velkou aplikaci s grafickým rozhraním.
  • Zenmap, oficiální grafické uživatelské rozhraní NMAP. Zenmap se spoléhá na zastaralé knihovny Pythonu 2, které nejsou dostupné v Kali Linuxu.

Chcete si ušpinit ruce a zkusit to?

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

Nezapomeňte otevřít https://localhost:7443 ve webovém prohlížeči!

Pokud byste chtěli začít prozkoumávat samotný Kaboxer a podívat se, co se děje pod pokličkou:

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

Nakonec můžete sledovat, jaké programy používají Kaboxer v Kali vyhledáním balíčků končících na -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 – Spouštět aplikace Mac OS X na Linuxu?

  2. Témata komunity Kali

  3. Secure Kali Pi (2022)

  1. Kali Unkaputtbar

  2. WireGuard na Kali

  3. Raspberry Pi 4 a Kali

  1. Vylepšení přístupnosti Kali Linuxu

  2. Vydání Kali Linux 1.0.7

  3. Kali všude!