29 marzo, 2024

Kali en LXC (CTFs TryHackme)

Para la resolución de CTFs, TryHackme en nuestro caso, solemos utilizar una maquina Kali lo que veremos es como tener esta maquina Kali en un contenedor LXC.

En nuestro nuestras maquinas CTFs serán aprovisionadas por TryHackme y accederemos a ellas mediante una VPN (con el software openVPN) como ya se explico en CTF (Basic Pentesting) de TryHackMe. Al ejecutar la VPN en nuestro contenedor nuestra red estará más aislada de la red a examinar.

Esta solución no solo sirve para resolver retos de TryHackme como algunos de los comentados en esta página:

Entendemos que se tiene instalado el sistema de contenedores LXC, explicando solamente como crear el contenedor kali así como la configuración de este para poder ejecutar aplicaciones X11 (ejemplo Burp, ZAPproxy, etc. es necesario) y el uso de openvpn y un directorio montado en nuestro Host para intercambiar la información.

La idea es utilizar el contenedor Kali solo para pentesting, y desde nuestro host realizaríamos los informes necesarios, ademas veremos como instalar un proxy para que desde el firefox de nuestro host podamos ejecutar las páginas a analizar.

Instalación contenedor Kali

lo primero sera crear el contenedor con una distribución Kali (Distribución: kali, Release: current y Arquitectura: amd64) mediante el comando:

lxc-create -n MiKali -t download 

Una vez creado el contenedor fijaremos la IP, en el ficheros /etc/lxc/dnsmasq.conf, añadiendo la siguiente linea.

dhcp-host=MiKali,172.16.1.20

Con esto ya tenemos el contenedor así que añadiremos las aplicaciones necesarias, configuraciones de estas y usuarios.

# Iniciamos el contenedor
lxc-start -n MiKali

#Actualizamos
lxc-attach -n MiKali apt update
lxc-attach -n MiKali apt upgrade

#Instalamos el servidor ssh, proxy privproxy y paquetes por defecto de Kali
lxc-attach -n MiKali apt install openssh-server
lxc-attach -n MiKali apt install privproxy
lxc-attach -n MiKali apt install kali-linux-default 

# Cambiamos la clave de root y creamos un usuario, para su entrada con SSH
lxc-attach -n MiKali passwd
lxc-attach -n MiKali --clear-env adduser usu1
lxc-attach -n MiKali --clear-env adduser usu1 sudo

Ahora deberemos configurar el servidor ssh de nuestro contenedor, para usar otro puerto y que no dejar a root, modificando el fichero «/etc/ssh/sshd_config», reiniciandolo luego.

# Definimos puerto
Port 2992
# No permitimos acceso con root
PermitRootLogin no
# Obligamos a que sea necesario identificarse con clave
PasswordAuthentication yes
PermitEmptyPasswords no

Desde este momento ya podremos acceder por ssh «ssh -X -p 2992 usu1@172.16.1.20» y al usar la opción X podremos ejecutar programas X11.

Con esto ta podremos usar nuestro Kali, ahora nos queda un par de lineas en nuestro fichero de configuración «MiKali/config» para montar un directorio que comparta información entre el Host y el contenedor y ademas el directorio /dev/net para que podamos ejecutar correctamente nuestra red privada con TryHackme (openVPN) sin que nos de error TUN/TAP.

#Montaje de directorios
lxc.mount.entry = /home/usuario/PuntosMontaje/Kali mnt/miKali none defaults,bind,create=dir 0 0
# Solucion OpenVPN
lxc.mount.entry = /dev/net dev/net none bind,create=dir

OJO si dejamos así el directorio de montaje, solo podremos escribir ficheros desde host ya que los permisos son del usuario del host y son IDs distintos a los del contenedor ya que se mapean (por regla general empiezan en el 10000 que seria el root)

Esto tiene fácil solución, o dar total permiso «rwx» a otros en el directorio o solo dar permisos a los usuarios del contenedor que deseemos. Nosotros daremos permiso al grupo del usu1 desde el host.

Lo primero es obtener el ID del grupo host al que le sumaremos 10.000 en nuestro caso.

Ahora desde el host le daremos permiso al grupo de nuestro usu1 con la orden «setfacl -m g:101000:rwx .»

Y ya podemos escribir desde el contenedor en el, por ejemplo crear un certificado owas_zap y verlo tambien en el host. Vemos como se vería el mismo «ls» desde el contenedor y desde el host.

ls -l Creado* owasp_zap_root_ca.cer

nobody y nogroup es el grupo que da el contenedor cuando se usa un ID del host.

Acceso a paginas TryHackme con OpenVPN en contenedor

Para poder aceder a las paginas de nuestra red TryHackme desde nuestro host, con la VPN en el contenedor lo que haremos es:

  • Instalar un proxy en nuestro Kali «privproxy«
  • Configurar nuestro navegador para que se acceda a las páginas mediante el proxy.

La instalación es muy sencillas

lxc-attach -n MiKali apt install privoxy

# Configurar /etc/privoxy/config para situar el proxy en el puerto 8118
listen-address  127.0.0.1:8118
listen-address  172.0.3.20:8118
listen-address  [::1]:8118

Ahora deberemos configurar nuestro navegador, en nuestro caso instalaremos «foxyproxy» para así hacer que solo sean las direcciones de TryHackme las que utilicen el proxy (en nuestro caso 10.10.*)

Deberemos cambiar la IP por la de nuestro contenedor, si la ponemos fija nos evitaremos tener que cambiarla siempre, que en nuestra configuración del fichero «dndmasq.conf» es la IP:172.16.1.20

Luego configuraremos también los patrones de los servidores se desean se accedan por el proxy instalado en el contenedor «MiKali».

Y para que solo se acceda por proxy a los patrones definidos, le diremos a foxy «Use enabled proxies By pattern».

Para herramientas de captura y análisis del trafico web como: Burp y ZAPproxy que se comportan como proxy para así poder cambiar información de envío se podrían definir con el mismo puerto o cada herramienta en un puerto y con foxy decidir cual usar.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información básica sobre protección de datos Ver más

  • Responsable: Javier.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio. El Titular ha contratado los servicios de alojamiento web a Hostinger.es que actúa como encargado de tratamiento.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Ver
Privacidad