GNU/Linux >> Tutoriales Linux >  >> Linux

Kaboxer - Aplicaciones de Kali Boxer

De forma intermitente durante los últimos 18 meses hemos estado trabajando en Kaboxer , y justo antes de Kali 2021.1, está listo para decir "Hola mundo" (luego comenzará a enviarle aplicaciones) .

TL;DR - ¿Qué es esto?

¿De qué se trata el nombre, Kaboxer? Boxeador de aplicaciones de Kali

¿Qué significa eso? Aplicaciones en contenedores, para paquetes (un camino a seguir para las aplicaciones que son difíciles de empaquetar correctamente). Pero en lugar de ser contenedores independientes, están integrados en los sistemas de administración de paquetes estándar de Kali y se pueden instalar/eliminar mediante comandos apt estándar.

Está bien. Pero, ¿qué hace Kaboxer? No todas las herramientas son fáciles de empaquetar. Hay varios criterios para cumplir, a veces algunos árboles de dependencia locos o modificaciones peculiares del sistema. Es posible que deba usar una biblioteca heredada o que deba cambiar una configuración de algo que dañaría otra aplicación. ¿A qué te dedicas? Trabajamos con los autores de herramientas para tratar de hacerlo más fácil, o pasamos muchas noches intentando que se ajuste o simplemente no podemos empaquetarlo.

Entra Kaboxer. Usando contenedores, podemos colocar un paquete complejo no estándar en un contenedor e integrarlo con el resto del sistema operativo, y empaquetarlo en el ecosistema de empaque. Esto significa que puede instalar apt un programa Kaboxer y usarlo sin necesidad de realizar ningún paso especial.

¿Cómo me beneficia Kaboxer? Kaboxer tiene algunos casos de uso, dependiendo de quién lo esté usando:

  • Para las personas que usan Kali Linux, es transparente, por lo que no notará cuando lo está usando (por lo que es posible que no lo vea como "un gran problema") . ¡Simplemente obtienes más herramientas!
  • Para nosotros, los desarrolladores de Kali, esto es un cambio de juego.
  • Para otros empaquetadores de Debian, esto puede llamar su atención.
  • Para autores de herramientas (que quieren su software en Kali) , aún hay esperanza para ti;-)

¿Cuál es el lado negativo de Kaboxer? El tamaño de la aplicación será mayor porque conllevará la sobrecarga normal de tener que usar contenedores. Si bien el paquete instalado será pequeño, su instalación descargará el contenedor requerido que consumirá varios cientos de megabytes incluso para una aplicación simple.

¿Qué va a pasar a causa de Kaboxer? Esperamos comenzar a incluir más herramientas en Kali Linux que anteriormente no se podían empaquetar, y no se dio cuenta de que las está usando a través de Kaboxer. Desafortunadamente, estas herramientas no se incluirán en nuestra instalación predeterminada, ya que el aumento de tamaño de las imágenes ISO sería demasiado significativo.

Resumen

Hay varias herramientas que serían beneficiosas para los usuarios de Kali, pero tienen problemas que dificultan su distribución como *.deb paquetes Esto podría deberse a que las herramientas:

  • No están desarrollados teniendo en cuenta la integración del sistema y el empaquetado. Asumen que pueden instalar versiones específicas de bibliotecas, o bibliotecas de parches, o descargar piezas de software en tiempo de ejecución en lugar de en el momento de la instalación. Esto va en contra de los estándares de empaquetado y también es una mala práctica de ingeniería de software.
  • Pueden sentir que tienen derecho a hacer lo que quieran con el sistema operativo u otras aplicaciones. Estas acciones no deben permitirse y el software debe aislarse. Hemos visto acciones como:
    • Creación de usuarios con UID/GID específicos.
    • Usar rutas que van en contra del estándar de jerarquía del sistema de archivos (FHS).
    • Utilizando puertos TCP o UDP que normalmente se ven afectados a otros servicios.
    • Reconfiguración de los servicios existentes.
  • Interactuar con servidores externos (tal vez mediante un método inseguro), por lo que no se puede confiar plenamente en el software en sí. Como resultado, puede ser una buena idea aislar dicho software de datos valiosos o confidenciales que puedan estar presentes en el sistema.

Una forma de proporcionar el aislamiento requerido desde arriba sería usar contenedores. Los contenedores permiten ejecutar una aplicación en un entorno aislado, con riesgos drásticamente reducidos de interacción no planificada con el resto del sistema (usuarios, servicios, otras aplicaciones, archivos existentes, versiones específicas de bibliotecas, etc.).

Opciones de diseño

Si bien no estamos excluyendo la compatibilidad con otras soluciones de contenedorización, hemos optado por comenzar con Docker. Es bien conocido, ampliamente utilizado y se beneficia de un gran ecosistema de imágenes, lo que garantiza su viabilidad a largo plazo. Los contenedores Docker se pueden configurar de muchas maneras para lograr las diversas integraciones que necesitamos con el sistema host o incluso entre varios contenedores.

El valor de Kaboxer radica en cómo facilita la vinculación de los contenedores docker con el sistema host, a través de las funciones habituales de docker, como los puntos de montaje y las redirecciones de puertos, pero también a través de la integración con las entradas del menú del escritorio. Todas esas integraciones, así como las instrucciones para compilar o recuperar la imagen de la ventana acoplable, se especifican en un único archivo YAML.

Es ese único archivo YAML que se envía en el .deb Los archivos que proporcionamos en Kali y el script posterior a la instalación de esos paquetes descargarán la imagen de forma transparente para que la aplicación esté lista para ejecutarse después.

Creación de imágenes de Docker

La construcción de las imágenes de la ventana acoplable también está mediada por Kaboxer, pero no hay nada mágico, todo se reduce a llamar a docker build en un Dockerfile específico con algunas variables.

Depende del empaquetador escribir ese Dockerfile, pero ese paso puede ser trivial cuando el proyecto ascendente ya tiene un Dockerfile o cuando proporciona una imagen de Docker lista para usar.

Publicación de imágenes de Docker

Este paso es tan aburrido que lo hemos automatizado con GitLab CI. Cada vez que hacemos un cambio en un repositorio dedicado a una aplicación "en caja", como un convenio, GitLab CI reconstruirá la imagen acoplable asociada y la almacenará en su registro de imágenes.

Integración de las imágenes en el sistema

Una vez que la aplicación está en un contenedor, todavía tenemos que ponerla a disposición del usuario sin problemas, de una manera que, idealmente, ni siquiera se notaría. El usuario ni siquiera debería saber que la aplicación se ejecuta en un contenedor.

Ya explicamos que los usuarios continúan interactuando con los paquetes de Kali para instalar y eliminar las aplicaciones en contenedores, aunque esos paquetes son en su mayoría shells vacíos que ejecutan comandos de Kaboxer en los diversos scripts de mantenimiento. También proporcionan .desktop archivos para que las aplicaciones puedan iniciarse desde el menú habitual del escritorio, y ayudantes de línea de comandos para que puedan iniciarse desde un terminal sin necesidad de conocer Kaboxer.

Para poder ejecutar contenedores docker, los usuarios necesitan algunos permisos elevados:modificamos el instalador de Kali para otorgar esos permisos de forma predeterminada a los usuarios creados durante el proceso de instalación inicial. Para otros usuarios, deberán agregarse al grupo Kaboxer (adduser $USER kaboxer ).

Obviamente, los usuarios quieren que se conserven los datos de su aplicación, por lo que Kaboxer tiene instalaciones para configurar volúmenes compartidos entre el host y el contenedor, lo que proporciona persistencia incluso si los contenedores tienen una vida corta. Y luego, dependiendo del tipo de aplicación, es probable que necesite integraciones más específicas:

  • Para aplicaciones GUI, necesitamos que el socket X11 del host sea accesible.
  • Para las aplicaciones web, queremos exponer el puerto HTTP e iniciar el navegador web en la URL adecuada.

Esas necesidades básicas están cubiertas con las funciones actuales de Kaboxer, pero parece probable que se requiera otro tipo de integraciones en el futuro.

Si aún desea obtener más información sobre Kaboxer, consulte su página de inicio (más el código fuente) y nuestra documentación (con el ejemplo "Hello World").

Para ver ejemplos de aplicaciones del "mundo real", puede consultar nuestras primeras "aplicaciones Kaboxed":

  • Covenant, un marco para resaltar la superficie de ataque de .NET. Covenant viene como un servidor que se inicia en segundo plano, además de una aplicación web que se ejecuta en el navegador.
  • Firefox Developer Edition, es un navegador web y lo elegimos porque es una aplicación GUI grande y compleja.
  • Zenmap, la GUI oficial de NMAP. Zenmap se basa en bibliotecas obsoletas de Python 2 que no están disponibles en Kali Linux.

¿Quieres ensuciarte las manos y probarlo?

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

No olvides abrir https://localhost:7443 en un navegador web!

Si desea comenzar a explorar Kaboxer y ver qué sucede debajo del capó:

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

Por último, puede rastrear qué programas están usando Kaboxer en Kali buscando paquetes que terminen 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. Temas de la comunidad de Kali

  2. WireGuard en Kali

  3. Frambuesa Pi 4 y Kali

  4. ¡Kali por todas partes!

  5. Lanzamiento de Kali Linux 2021.2 (Kaboxer, Kali-Tweaks, Bleeding-Edge y puertos privilegiados)

Endurecimiento de Kali Linux

Cómo instalar Kali Linux

Descargar KaliLinux

Requisitos del sistema Linux Kali

Kali Linux contra Parrot

Permisos de aplicaciones instantáneas