Pentest Lab – Laboratorio de pentesting local con Docker-Compose πŸ”¬πŸ‹

Aprenderemos de una forma muy sencilla a crear nuestro propio Laboratorio de PentestingPentest Lab aprovecha docker-compose para poner en marcha múltiples servicios de víctimas y un servicio de atacante que ejecuta Kali Linux.

 

Instalación:

En primer lugar nos descargaremos el laboratorio desde el repositorio oficial de GitHub con el siguiente comando:

❯ git clone https://github.com/oliverwiegers/pentest_lab

image


 Nos posicionaremos sobre el directorio descargado.

image



 

Para acceder al menú de ayuda ejecutaremos el siguiente comando:

❯ ./lab.sh -h 

image

 

Comandos de uso más comunes:

  • ./lab.sh --help
  • ./lab.sh --check-dependencies
  • ./lab.sh --up --all-services
  • ./lab.sh --info
  • ./lab.sh --overview all
  • ssh root@kali -o "UserKnownHostsFile /dev/null"
  • ./lab.sh –down

 

Uso:

El laboratorio debería funcionar de forma inmediata si todas las dependencias necesarias están instaladas. Al iniciar el laboratorio se ejecutará una comprobación de dependencias.


Dependencias:

  • bash
  • find
  • sed
  • yq
  • docker
  • docker-compose


Para comprobar si tenemos instaladas todas las dependencias necesarias para arrancar el laboratorio introducimos el comando:

❯ ./lab.sh –check-dependencies 

image

 

En mi caso tenia una versión diferente de yq, pero la propia herramienta nos facilita dónde descargar la versión específica.

Tras instalarlo y volver a introducir el comando, nos aparece que todas las dependencias necesarias están instaladas correctamente.

image

 

Para levantar los servicios introducimos el comando:

❯ ./lab.sh --up --all-services

image


Podemos consultar la información del laboratorio con el siguiente comando:

❯ ./lab.sh --info

image

 

Para ver una vista más detallada en formato tabla (ID del Contenedor Docker, IP, Hostname, Puerto, Exposed at y Nivel) escribiremos:

❯ ./lab.sh --overview all

 

Como podemos comprobar tenemos 4 tipos de Servicios:

  • Red Team
  • Blue Team
  • Victim
  • Monitoring

 

image

 

Para facilitar el uso viene con una interfaz Heimdall que se expone en localhost:7000. Todos los servicios que están expuestos a tu máquina local y pueden ser accedidos a través del navegador están listados allí.

Accedemos a Heimdal a través del navegador y nos aparecerá algo así.

image


Para comprobar su uso accederemos a DVWA (Damn Vulnerable Web Application), es un proyecto de software que incluye vulnerabilidades de seguridad web y tiene fines educativos.

image

 

Nos logueamos con las credenciales por defecto admin:password

image

 

Pulsamos Create / Reset Database

image

 

¡Y al volver a iniciar sesión estará todo listo para practicar pentesting web!

image

 

image

 

También podemos probar el Servicio de monitoreo Grafana localhost:8000

Nos logueamos con las credenciales por defecto admin:admin

image

 

Y podremos ver las gráficas con el monitoreo de los recursos de nuestro laboratorio.

image

 

Para acceder a nuestro Servicio Read Team (Kali Linux), deberemos acceder a el a través de SSH con el comando:

❯ ssh root@10.5.0.5 -o "UserKnownHostsFile /dev/null"


image

 

image

 

Podemos utilizar varias de las herramientas que vienen con Kali Linux.

Ejemplo con la herramienta Nmap:

image

 

Ejemplo con la herramientaimage whatweb:

 

Para parar los Servicios del laboratorio usaremos el siguiente comando:

❯ ./lab.sh --down

image

 

Si hacemos una comprobación después de introducir dicho comando, nos indica que el laboratorio de pentesting parece no estar activo.

image

 

Agregar servicios:

  • Los servicios de monitoreo comienzan en 10.5.0.200
  • Los servicios de monitoreo comienzan en 10.5.0.200

  • Para agregar servicios adicionales docker-compose.yml, necesitamos un poco de conocimiento de los archivos. El docker-compose.yml en la raíz de este repositorio se genera automáticamente cuando se inicia el laboratorio. Este proceso utiliza los archivos yaml ubicados bajo ./etc/services.

     

    ➜  pentest_lab tree ./etc/services

    ./etc/services

    β”œβ”€β”€ blue_team

    β”‚   └── endlessh.yml

    β”œβ”€β”€ default.yml

    β”œβ”€β”€ monitoring

    β”‚   β”œβ”€β”€ cadvisor.yml

    β”‚   β”œβ”€β”€ grafana.yml

    β”‚   β”œβ”€β”€ loki.yml

    β”‚   └── prometheus.yml

    β”œβ”€β”€ red_team

    └── victim

        β”œβ”€β”€ beginner

        β”‚   β”œβ”€β”€ bwapp.yml

        β”‚   β”œβ”€β”€ dvwa.yml

        β”‚   β”œβ”€β”€ hackazon.yml

        β”‚   β”œβ”€β”€ tiredful.yml

        β”‚   β”œβ”€β”€ webgoat.yml

        β”‚   └── xvwa.yml

        β”œβ”€β”€ expert

        β”‚   └── juice-shop.yml

        └── intermediate

            └── ninjas.yml


     

    Los servicios que se inician se controlan invocando ./lab.sh con las opciones correspondientes. Para desactivar permanentemente un servicio, eliminaremos la extensión del archivo .yml.

     

    Un ejemplo de un servicio a la víctima sería:

     

    bwapp:

      labels:

        class: 'victim'

        cluster: 'pentest_lab'

        level: 'beginner'

      image: raesene/bwapp

      ports:

        - '8080:80'

      networks:

        pentest_lab:

          ipv4_address: 10.5.0.100

      hostname: bwapp

      volumes:

        - bwapp-data:/var/lib/mysql


     

    Nota: Si un servicio requiere algún tipo de instalación en su primer uso, utilizaremos docker inspect <nombre_imagen> para averiguar dónde almacena los datos la imagen docker y añadiremos un volumen que apunte a este directorio. En el ejemplo anterior esto es:

     

    volumes:

        - bwapp-data:/var/lib/mysql

     

     

    Esto asegura que no tengamos que configurar el servicio de nuevo cada vez que reiniciemos el laboratorio. Pero, si queremos reiniciar el laboratorio y empezar completamente de nuevo podemos usar ./lab.sh -p | --prune . Esto borrará todos los recursos propiedad del laboratorio.

     

     

    Rangos de IP:

    La razón por la que se usa direcciones IP estáticas es que Kali Linux necesita tener una dirección IP que no cambie para simplificar el inicio de sesión SSH. Más información en la sección Consejos/Trucos a continuación.

     

    • Los servicios del Red Teamcomienzan en 10.5.0.5
      • El servicio Kali tiene 10.5.0.5
    • Los servicios del Blue Team comienzan en 10.5.0.50
    • Los servicios para las víctimas comienzan en 10.5.0.100
    • Los servicios de monitoreo comienzan en 10.5.0.200

     

    Información de servicio:

    Si añadimos servicios y hay información adicional que es útil para cualquiera que ejecute este laboratorio, podemos agregar esta información a ./etc/services_info . El contenido de este archivo se imprimirá tal como está, línea por línea, ejecutando ./lab.sh -i .

     

     

    SSH:

    Para una fácil conexión al servicio Kali se puede añadir lo siguiente a  $HOME/.ssh/cofig :

     

    Host kali

        User root

        Hostname 10.5.0.5

        UserKnownHostsFile /dev/null

        StrictHostKeyChecking accept-new


     

    Así que en lugar de:


    ssh root@10.5.0.5 -o "UserKnownHostsFile /dev/null" uno podría ejecutar ssh kali.


    Para los usuarios de tmux lo siguiente se adjuntará a una sesión de tmux automáticamente:

     

    Host kali

        User root

        Hostname 10.5.0.5

        UserKnownHostsFile /dev/null

        StrictHostKeyChecking accept-new

        RequestTTY yes

        RemoteCommand tmux -L tmux new-session -As hacktheplanet


     


    Licencia de Creative Commons

    Este obra estΓ‘ bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional.