Introducción
Kali Linux es una distribución Linux de auditoría de seguridad basada en Debian GNU/Linux. Kali está dirigida a profesionales de la seguridad y administradores de TI, y les permite realizar pruebas de penetración avanzadas, análisis forenses y auditorías de seguridad. Debian GNU/Linux es una de las principales distribuciones genéricas de Linux, conocida por su calidad y estabilidad. Kali Linux se basa en el trabajo del proyecto Debian y añade más de 400 paquetes de propósito especial propios, todos relacionados con la seguridad de la información, en particular el campo de las pruebas de penetración. Las imágenes ISO por defecto se pueden descargar desde la página web de Kali.
La herramienta live-build ofrece un montón de opciones de configuración para personalizar la imagen ISO resultante. Modificaremos la imagen para establecer el español de España como idioma por defecto junto a la zona horaria de España peninsular y la distribución del teclado, desactivaremos los pitidos del menu del bootloader y personalizaremos las particiones para copiar la imagen de Kali en una memoria USB y guardar los datos de Kali en una partición persistente cifrada y no cifrada. Incluiremos una versión actualizada de la herramienta aircrack-ng y los drivers de la tarjeta de red Realtek RTL8812AU. Finalmente crearemos un archivo de configuración que permita realizar una instalación del sistema operativo casi automática.
Instalación de las dependencias
En primer lugar, instalaremos las dependencias requeridas para live-build y para la creación de archivos .dpkg con devscripts.
$ sudo apt update
$ sudo apt install curl git live-build -y
$ sudo apt install devscripts -y
Clonado del repositorio con la configuración de live-build
A continuación clonaremos el repositorio que contiene la configuración predeterminada para crear imágenes de Kali Linux.
$ git clone https://gitlab.com/kalilinux/build-scripts/live-build-config
$ cd live-build-config
Creación de la nueva variante de Kali
En la carpeta kali-config se encuentran varias configuraciones para cada tipo de escritorio (XFCE, KDE, GNOME, etc) en las carpetas variant-*, para los diferentes instaladores en las carpetas installer-* y una configuración común para todos en la carpeta common. Vamos a crear nuestra propia variante llamada custom que contendrá los paquetes básicos kali-linux-core y kali-desktop-live junto a kali-linux-default (si queremos que se instalen las herramientas de la imagen predeterminada) o kali-tools-top10 (si queremos que se instalen únicamente las diez herramientas más utilizadas). Seleccionaremos el escritorio KDE con el paquete kali-desktop-kde. El archivo a crear es kali-config/variant-custom/package-lists/kali.list.chroot.
$ mkdir -p kali-config/variant-custom/package-lists
$ cat<<EOF>kali-config/variant-custom/package-lists/kali.list.chroot
kali-linux-core
kali-desktop-live
kali-tools-top10
#kali-linux-default
kali-desktop-kde
EOF
Idioma personalizado en la imagen y en la instalación
En este caso el idioma a configurar es el idioma español de España (es_ES.UTF-8) junto con la zona horaria de Madrid (Europe/Madrid) y la distribución del teclado. En primer lugar configuraremos el archivo auto/config para precargar la configuración antes de iniciar la instalación y que no se nos sea requerida posteriormente. Se cambia la línea:
--bootappend-install "net.ifnames=0" \
a:
--bootappend-install "net.ifnames=0 language=es country=ES locale=es_ES.UTF-8 keymap=es" \
A continuación cambiaremos el idioma en la configuración de la imagen “live” que es la que se ejecuta directamente sin ser instalada y permite guardar datos en una partición persistente. Añadiremos unas variables al archivo kali-config/common/includes.chroot/etc/live/config.conf.d/kali.conf.
$ cat<<EOF>>kali-config/common/includes.chroot/etc/live/config.conf.d/kali.conf
# español de España
LIVE_LOCALES="es_ES.UTF-8"
LIVE_TIMEZONE="Europe/Madrid"
LIVE_KEYBOARD_LAYOUTS="es"
EOF
Desactivar los pitidos del bootloader al inicio
Para desactivar los pitidos en el bootloader al iniciarse el sistema se comentarán estas dos líneas en el archivo kali-config/common/bootloaders/grub-pc/config.cfg.
insmod play
play 960 440 1 0 4 440 1
Añadir el driver de la tarjeta de red Realtek RTL8812AU
Añadir el driver de la tarjeta de red Realtek RTL8812AU, no presente de forma predeterminada en las imágenes de Kali Linux, será tan simple como añadir el nombre del paquete realtek-rtl88xxau-dkms al archivo kali-config/common/package-lists/standard.list.chroot.
$ echo 'realtek-rtl88xxau-dkms' >> kali-config/common/package-lists/standard.list.chroot
Modificación de los nombres de las particiones persistentes
Con la utilización del modo persistente de Kali Linux se permite el guardado de los archivos generados en la ejecución de una versión live en una memoria USB. De forma predeterminada el sistema busca una partición con el nombre persistence. En este caso vamos a cambiar el nombre de la partición persistente sin cifrar a p3rs1st y el de la partición cifrada a p3rs1stenc. Modificaremos en primer lugar la configuración del bootloader ISOLINUX (si se utiliza BIOS en el proceso de arranque) y luego la del bootloader GRUB (usando UEFI). Con ISOLINUX modificamos estas dos líneas del archivo kali-config/common/bootloaders/syslinux_common/live.cfg.in:
append boot=live username=kali hostname=kali persistence
append boot=live persistent=cryptsetup persistence-encryption=luks username=kali hostname=kali persistence
a:
append boot=live username=kali hostname=kali persistence-label=p3rs1st persistence
append boot=live persistent=cryptsetup persistence-encryption=luks username=kali hostname=kali persistence-label=p3rs1stenc persistence
Con GRUB se modifican las líneas del archivo kali-config/common/bootloaders/grub-pc/grub.cfg:
linux @KERNEL_LIVE@ @APPEND_LIVE@ persistence
linux @KERNEL_LIVE@ @APPEND_LIVE@ persistent=cryptsetup persistence-encryption=luks persistence
a:
linux @KERNEL_LIVE@ @APPEND_LIVE@ persistence-label=p3rs1st persistence
linux @KERNEL_LIVE@ @APPEND_LIVE@ persistent=cryptsetup persistence-encryption=luks persistence-label=p3rs1stenc persistence
Actualización de la herramienta aircrack-ng
En los repositorio de Kali se incluyen generalmente las últimas versiones de las herramientas. Pero en el caso de algunas, como aircrack-ng, se actualizan escasamente por lo que para obtener sus últimas novedades (aunque no se haya actualizado la versión) es necesario compilarla desde el código fuente y generar un paquete .dpkg. En primer lugar obtendremos el código fuente de la aplicación desde el repositorio oficial (pkg.kali.org) descargando el archivo con formato .dsc, en este caso de la version 1:1.7-5:. Luego se procederá a la descarga del código fuente con la aplicación dget.
Con el código fuente de Kali se descargará el código fuente actualizado del repositorio y se copiará la carpeta debian del código fuente procedente de Kali al código fuente actualizado. Después se entrará a la carpeta con el código fuente actualizado y se actualizará el control de cambios con la herramienta dch. Finalmente se instalarán las dependencias necesarias para compilar la herramienta y se generará el paquete .dpkg con la herramienta dpkg-buildpackage.
$ dget http://http.kali.org/pool/main/a/aircrack-ng/aircrack-ng_1.7-5.dsc
$ git clone https://github.com/aircrack-ng/aircrack-ng aircrack-ng-updated
$ cd aircrack-ng-updated
$ cp -r ../aircrack-ng-1.7/debian .
$ dch --local custom -m "Updated upstream"
$ sudo apt build-dep ./
$ dpkg-buildpackage -us -uc -b
En el directorio padre se habrá generado el paquete aircrack-ng_1.7-5custom1_amd64.deb.
$ cd ..
$ ls -1 aircrack*deb
aircrack-ng_1.7-5custom1_amd64.deb
aircrack-ng-dbgsym_1.7-5custom1_amd64.deb
Copiaremos este archivo al directorio kali-config/common/packages.chroot.
$ mkdir -p kali-config/common/packages.chroot
$ cp aircrack-ng_1.7-5custom1_amd64.deb kali-config/common/packages.chroot
Instalación semiautomática
Para realizar una instalación casi automatizada (solo tendrán que configurarse las particiones) añadiremos una serie de configuraciones como el nombre del equipo, el dominio del equipo, el nombre de usuario, su contraseña y la zona horaria al archivo kali-config/common/includes.installer/preseed.cfg.
$ cat<<EOF>>kali-config/common/includes.installer/preseed.cfg
# Unattended install
d-i netcfg/get_hostname string kali-machine
d-i netcfg/get_domain string KL.local
d-i passwd/user-fullname string kaliuser
d-i passwd/username string kaliuser
d-i passwd/user-password password password
d-i passwd/user-password-again password password
d-i time/zone string EU/Madrid
EOF
Creación de la imagen, copia y particionado de la memoria USB
Para la creación de la imagen usaremos el script ./build.sh.
$ ./build.sh --variant custom --verbose
Al terminar el proceso encontraremos la imagen .iso en el directorio images.
$ ls -l images/*.iso
Habiendo introducido la memoria USB e identificada como /dev/sdb se copiará la imagen usando la herramienta dd (se perderán todos los datos de la memoria USB).
$ sudo dd if=images/kali-linux-rolling-live-custom-amd64.iso of=/dev/sdb bs=4M
Finalmente se creará la partición persistente no cifrada p3rs1st y la partición persistente cifrada p3rs1st con la herramienta parted, mkfs.ext4 y cryptsetup.
$ sudo parted /dev/sdb
(parted) mkpart primary 3591M 5691M
(parted) mkpart primary 5691M 100%
$ sudo mkfs.ext4 -L p3rs1st /dev/sdb3
$ sudo mount /dev/sdb3 /mnt
$ echo "/ union" | sudo tee /mnt/persistence.conf
$ sudo umount /dev/sdb3
$ sudo cryptsetup luksFormat /dev/sdb4
$ sudo cryptsetup open /dev/sdb4 p3rs1stenc
$ sudo mkfs.ext4 -L p3rs1stenc /dev/mapper/p3rs1stenc
$ sudo mount /dev/mapper/p3rs1stenc /mnt
$ echo "/ union" | sudo tee /mnt/persistence.conf
$ sudo umount /dev/mapper/p3rs1stenc
$ sudo cryptsetup close /dev/mapper/p3rs1stenc
Conclusión
Aparte de las modificaciones realizadas es posible configurar de una forma más profunda y configurar imágenes de Kali Linux más complejas. Estas se encuentran en el curso Kali Linux Revealed de OffSec.