Todo el mundo conoce VMWare o VirtualBox, además, en otro artículo sobre Kali Linux en Docker vimos también Docker. Sin embargo, estas no son las únicas alternativas para tener y ejecutar Linux. Hoy vamos a ver como se puede instalar Kali Linux con interfaz gráfica en Windows gracias a WSL (Windows Subsystem for Linux).

Instalación de Kali Linux

Primero de todo nos dirigimos a la Microsoft Store y buscamos el sistema operativo Linux que queramos instalar, en nuestro caso Kali. Una vez lo encontremos, lo instalamos:

Instalación de Kali Linux desde Microsoft Store

Asimismo, si no lo tenemos instalado, recomiendo instalar la Windows Terminal:

Windows Terminal en Microsoft Store

Una vez tenemos instalado ambas cosas, o al menos el Kali, miramos si el WSL está habilitado, para ello, comprobamos las características de Windows:

Acceso a Panel de Control de Windows

Activar características de Windows - WSL

Si está marcado, genial, no tocamos nada, sino, lo activamos, en ese caso probablemente tendremos que reiniciar el equipo.

Una vez hecho esto, abrimos Kali Linux:

Icono de Kali Linux en Windows

La primera vez que lo abrimos tendremos que esperar un poco a que se instale:

Proceso de instalación de Kali Linux

Configuración inicial de usuario en Kali

Una vez termine, nos pedirá que le indiquemos el usuario y contraseña a crear, y hecho esto ya tendremos nuestro Kali en Windows:

Terminal de Kali Linux funcionando en Windows

Una vez lo tenemos, una de las primeras cosas a hacer sería ejecutar un apt update:

Actualización de paquetes con apt update

Este kali viene bastante vacío por defecto, por lo que es recomendable también instalar por ejemplo el siguiente paquete:

sudo apt install kali-linux-default

Podemos encontrar mas conjunto de paquetes en la documentación oficial.

Una vez hecho todo esto, es hora de instalar la parte gráfica del Kali, para ello instalamos el siguiente paquete:

sudo apt install -y kali-win-kex

Instalación de kali-win-kex

Win-Kex es el paquete que proporciona esta característica. Con él, vienen tres posibles modos que podemos usar para ver el escritorio de nuestro kali:

  • Window Mode
  • Enhanced Session Mode
  • Seamless Mode

Vamos a ver las tres opciones que tenemos:

Seamless Mode

El modo Seamless integra el entorno de escritorio KDE directamente en el escritorio de Windows, se vería así:

Kali Linux en modo Seamless

Esto permite que las aplicaciones de Linux se ejecuten como si fueran aplicaciones nativas de Windows. Las ventanas de las aplicaciones aparecen junto a las aplicaciones de Windows sin la barrera visual de estar trabajando dentro de una ventana de VM distinta.

Personalmente, he intentado habilitar este modo pero nunca he tenido la suerte de que me funcionase. En cualquier caso, si queremos hacer uso de él, teóricamente debemos de ejecutar uno de los siguientes comandos:

  • Dentro del Kali
kex --sl -s
  • Desde una CMD o PowerShell
wsl -d kali-linux kex --sl -s

No tenemos que ejecutar ambos comandos, simplemente uno de ellos.

Enhanced Session Mode

El modo de Enhaced Session permite utilizar el protocolo RDP para conectarse a Kali de manera gráfica. Para habilitarlo, de nuevo, tendremos que ejecutar uno de los siguientes dos comandos, el que queramos desde donde queramos:

  • Desde del Kali
kex --esm --ip -s
  • Desde una CMD o PowerShell
wsl -d kali-linux kex --esm --ip -s

Si lo ejecutamos por ejemplo desde el Kali, ocurre lo siguiente:

Iniciando Win-KeX en modo Enhanced Session

Se inicia el cliente de Win-Kex, y tras esperar unos segundos, se nos abrirá el cliente RDP de Windows pidiendo conectarse al Kali, simplemente le damos que si y nos habremos conectado:

Conexión RDP a Kali Linux

Este modo está bastante bien ya que se integra muy cómodamente con Windows. El único problema que le he visto es que no le gusta mucho el que redimensiones la ventana, ya que no se adapta:

Problema de redimensionamiento en modo RDP

Es un buen modo si vas a hacer uso de la ventana completa siempre, de otra manera, creo que es bastante coñazo.

Windows Mode

Este para mi es el mejor modo. Básicamente permite tener el Kali en una ventana independiente en Windows y conectado por VNC. En resumen, es lo mismo que estar conectado por RDP, pero en este caso la ventana si se redimensiona si cambias el tamaño.

Para hacer uso de él, ejecutamos uno de los siguientes comandos:

  • Desde el Kali
kex --win -s
  • Desde CMD o PowerShell
wsl -d kali-linux kex --win -s

Si lo ejecutamos, pasa un poco lo mismo que antes, se iniciará el servicio de VNC (al cual la primera vez tendremos que ponerle una contraseña):

Configuración inicial de VNC en Kali

Y tras unos segundos, se abrirá en pantalla completa el Kali:

Kali Linux en pantalla completa con VNC

En este caso, de primeras no se nos abre en ventana ni nada, sino que abarca la pantalla al completo. Para salirnos y convertirlo en modo ventana, presionamos F8:

Menú de opciones VNC

Y se nos abre el menú de VNC. Aquí simplemente damos click en Full screen (que estará marcado) y entonces el Kali pasará al modo ventana:

Kali Linux en modo ventana

Y de esta manera podremos tener el Kali en una ventanita del Windows : )

Acceso directo desde Windows Terminal

Es posible crear un acceso directo en Windows Terminal para que cada vez que queramos hacer uso de la parte gráfica, no tengamos que sabernos y escribir el comando. Para ello, nos dirigimos a los ajustes y abrimos el JSON de configuración:

En este caso voy a configurar el Windows Mode. Si quisieses configurar otro simplemente mira el comando en la documentación oficial de Kali Win-KeX.

Ajustes de Windows Terminal

Abrir archivo JSON de configuración

Una vez tenemos el archivo abierto simplemente tendremos que agregar a la lista el acceso directo que queremos crear. En este caso para el Windows Mode sería el siguiente código:

{
      "guid": "{55ca431a-3a87-5fb3-83cd-11ececc031d2}",
      "hidden": false,
      "name": "Win-KeX",
      "commandline": "wsl -d kali-linux kex --wtstart -s",
},

Configuración JSON de Windows Terminal

Una vez agregado, guardamos el archivo sin que contenga errores del formato JSON y si todo está bien, nos aparecerá en el desplegable de Windows Terminal:

Acceso directo Win-KeX en Windows Terminal

Si lo pulsamos, se nos abre la siguiente ventana:

Iniciando Win-KeX desde Windows Terminal

Donde simplemente tendremos que esperar un poco a que se inicie el servicio y cuando ocurra, se nos abrirá el Kali:

Kali Linux abierto desde Windows Terminal

Acceder al sistema de archivos de Kali desde Windows

Sea cual sea la opción que hayamos elegido gráficamente, es importante saber como podemos acceder al sistema de archivos de Kali desde Windows. Para ello hay distintas maneras:

Desde el explorador de archivos:

Acceso a Linux en el explorador de Windows

Selección de Kali-Linux en el explorador

Sistema de archivos de Kali en Windows

Desde la terminal:

\\wsl$\Kali-Linux\

Ruta UNC de Kali Linux en Windows

Usando Explorer.exe:

Otra opción que tenemos es directamente ejecutar explorer.exe dentro del Kali, seleccionando el directorio de Kali que queremos que se nos abre, por ejemplo el directorio actual:

explorer.exe .

Abrir explorador de Windows desde Kali

Acceder al sistema de archivos de Windows desde Kali

Por otra parte, ¿Cómo accedemos al sistema de archivos de Windows desde Kali? Pues básicamente podemos encontrar los discos montados en el directorio /mnt:

Listado de discos montados en mnt

Acceso al disco C desde Kali

Sistema de archivos de Windows desde Kali

Redirección de puertos - De Windows a Kali

Otra cosa bastante útil de usar el WSL es que podemos realizar una redirección de puertos de Windows a Kali, es decir, si Windows no está usando un puerto y recibe una solicitud de lo que sea en ese puerto, lo reenviará al Kali. Esto es super útil para infinidad de cosas, como por ejemplo recibir reverse shells.

Sea lo que sea, para configurarlo tendremos que crear el archivo .wslconfig en el directorio del usuario de Windows:

Creación del archivo wslconfig

Y escribiremos la opción que ves en la imagen:

localhostForwarding=true

De esta manera, si por ejemplo creamos un servidor HTTP en el Kali en el puerto 8000:

Servidor HTTP en Kali Linux

Podremos acceder a él desde Windows poniendo localhost:

Acceso desde navegador Windows a servidor Kali

Contenido del servidor desde Windows

Referencias