Una de las muchas cosas útiles que podemos hacer con APT es crear metapaquetes, que son paquetes vacíos que declaran una lista de otros paquetes como dependencias. Kali Linux incluye metapaquetes para descifrar contraseñas, radio definida por software, aplicaciones inalámbricas, web y más, pero si tiene necesidades específicas (como la mayoría de las personas), es rápido y fácil definir sus propios metapaquetes, que mostraremos en esta publicación.
Antes de comenzar, debemos instalar los devscripts paquete, que incluye una serie de herramientas y utilidades para la gestión de paquetes.
[email protected]:~# apt install devscripts
En Kali, todos los metapaquetes se definen en kali-meta con el nombre apropiado. paquete para que podamos clonarlo y modificarlo según nuestras necesidades.
[email protected]:~# git clone git://gitlab.com/kalilinux/packages/kali-meta
Cloning into 'kali-meta'...
remote: Counting objects: 998, done.
remote: Compressing objects: 100% (809/809), done.
remote: Total 998 (delta 365), reused 0 (delta 0)
Receiving objects: 100% (998/998), 179.90 KiB | 570.00 KiB/s, done.
Resolving deltas: 100% (365/365), done.
warning: remote HEAD refers to nonexistent ref, unable to checkout.
El mensaje anterior "no se puede realizar el pago" parece preocupante, pero solo significa que primero se debe verificar la rama predeterminada (kali/master), lo que se puede hacer de la siguiente manera.
[email protected]:~# cd kali-meta/
[email protected]:~/kali-meta# git checkout kali/master
Branch 'kali/master' set up to track remote branch 'kali/master' from 'origin'.
Switched to a new branch 'kali/master'
[email protected]:~/kali-meta#
Para crear un nuevo metapaquete (o actualizar uno existente), necesitamos editar el debian/control archivo con la información del paquete. Cada metapaquete es simplemente una lista separada por comas de dependencias de paquetes, como la de kali-linux-gpu se muestra a continuación.
Package: kali-linux-gpu
Architecture: any
Depends: ${misc:Depends},
kali-linux,
oclhashcat [amd64 i386],
pyrit,
oclgausscrack [amd64 i386],
truecrack,
Nuestro nuevo metapaquete se llamará "kali-linux-mytools" e instalará Vagrant, VirtualBox, LibreOffice y Chromium. Nuestra entrada para este metapaquete en debian/control se parece a esto:
[email protected]:~/kali-meta# tail -n 14 debian/control
Package: kali-linux-mytools
Architecture: any
Depends: ${misc:Depends},
kali-linux,
virtualbox,
vagrant,
libreoffice,
chromium,
Description: My required Kali tools
This is Kali Linux, the most advanced penetration testing and security
auditing distribution.
.
This metapackage depends on the tools I install most often.
Con el nuevo metapaquete definido, necesitamos cambiar el número de versión con 'dch' antes de construir el paquete. Esto abrirá un editor para que ingrese los detalles de sus cambios en debian/changelog .
[email protected]:~/kali-meta# dch --local dookie
[email protected]:~/kali-meta# head -n 5 debian/changelog
kali-meta (2018.3.2dookie1) UNRELEASED; urgency=medium
* Added kali-linux-mytools
-- dookie <[email protected]> Tue, 11 Sep 2018 09:40:10 -0600
Finalmente, podemos proceder a construir el nuevo paquete con el comando 'dpkg-buildpackage'. Dado que los metapaquetes son solo listas de dependencias, el proceso de compilación es muy rápido.
[email protected]:~/kali-meta# dpkg-buildpackage -us -uc -b
dpkg-buildpackage: info: source package kali-meta
dpkg-buildpackage: info: source version 2018.3.2dookie1
dpkg-buildpackage: info: source distribution UNRELEASED
dpkg-buildpackage: info: source changed by dookie <[email protected]>
dpkg-buildpackage: info: host architecture amd64
...
dpkg-deb: building package 'kali-linux-pwtools' in '../kali-linux-pwtools_2018.3.2dookie1_amd64.deb'.
dpkg-deb: building package 'kali-linux-top10' in '../kali-linux-top10_2018.3.2dookie1_amd64.deb'.
dpkg-deb: building package 'kali-linux-mytools' in '../kali-linux-mytools_2018.3.2dookie1_amd64.deb'.
dpkg-genbuildinfo --build=binary
dpkg-genchanges --build=binary >../kali-meta_2018.3.2dookie1_amd64.changes
dpkg-genchanges: info: binary-only upload (no source code included)
dpkg-source --after-build kali-meta
dpkg-buildpackage: info: binary-only upload (no source included)
Cuando se completa la compilación, nuestro nuevo metapaquete se puede instalar con 'apt' como cualquier otro paquete.
[email protected]:~/kali-meta# apt install ../kali-linux-mytools_2018.3.2dookie1_amd64.deb
...
[email protected]:~/kali-meta# apt-cache policy vagrant virtualbox libreoffice chromium
vagrant:
Installed: 2.1.2+dfsg-1
Candidate: 2.1.2+dfsg-1
Version table:
*** 2.1.2+dfsg-1 500
500 http://192.168.86.4/kali kali-rolling/main amd64 Packages
100 /var/lib/dpkg/status
virtualbox:
Installed: 5.2.18-dfsg-2
Candidate: 5.2.18-dfsg-2
Version table:
*** 5.2.18-dfsg-2 500
500 http://192.168.86.4/kali kali-rolling/contrib amd64 Packages
100 /var/lib/dpkg/status
libreoffice:
Installed: 1:6.1.1~rc1-2
Candidate: 1:6.1.1~rc1-2
Version table:
*** 1:6.1.1~rc1-2 500
500 http://192.168.86.4/kali kali-rolling/main amd64 Packages
100 /var/lib/dpkg/status
chromium:
Installed: 68.0.3440.75-2
Candidate: 68.0.3440.75-2
Version table:
*** 68.0.3440.75-2 500
500 http://192.168.86.4/kali kali-rolling/main amd64 Packages
100 /var/lib/dpkg/status
Así de sencillo, tenemos nuestro propio metapaquete que podemos almacenar en un recurso compartido de red o en alguna otra ubicación para instalar y configurar rápidamente nuestras nuevas instalaciones de Kali Linux.