Aprenderemos de una forma muy sencilla a crear nuestro propio Laboratorio de Pentesting, Pentest 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
Nos posicionaremos sobre el directorio descargado.
Para acceder al menú de ayuda ejecutaremos el siguiente comando:
β― ./lab.sh -h
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:
Para comprobar si tenemos instaladas todas las dependencias necesarias para arrancar el laboratorio introducimos el comando:
β― ./lab.sh –check-dependencies
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.
Para levantar los servicios introducimos el comando:
β― ./lab.sh --up --all-services
Podemos consultar la información del laboratorio con el siguiente comando:
β― ./lab.sh --info
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:
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í.
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.
Nos logueamos con las credenciales por defecto admin:password
Pulsamos Create / Reset Database
¡Y al volver a iniciar sesión estará todo listo para practicar pentesting web!
También podemos probar el Servicio de monitoreo Grafana localhost:8000
Nos logueamos con las credenciales por defecto admin:admin
Y podremos ver las gráficas con el monitoreo de los recursos de nuestro laboratorio.
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"
Podemos utilizar varias de las herramientas que vienen con Kali Linux.
Ejemplo con la herramienta Nmap:
Ejemplo con la herramienta whatweb:
Para parar los Servicios del laboratorio usaremos el siguiente comando:
β― ./lab.sh --down
Si hacemos una comprobación después de introducir dicho comando, nos indica que el laboratorio de pentesting parece no estar activo.
Agregar servicios:
10.5.0.200
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
.
./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 Un ejemplo de un servicio a la víctima sería:
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
- 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 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. 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 SSH: Para una fácil conexión al servicio Kali se puede añadir lo siguiente a
User root Hostname 10.5.0.5 UserKnownHostsFile /dev/null StrictHostKeyChecking accept-new Así que en lugar de:
User root Hostname 10.5.0.5 UserKnownHostsFile /dev/null StrictHostKeyChecking accept-new RequestTTY yes RemoteCommand tmux -L tmux new-session -As hacktheplanet
./lab.sh
con las opciones correspondientes. Para desactivar permanentemente un servicio, eliminaremos la extensión del archivo .yml.
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:./lab.sh -p | --prune
. Esto borrará todos los recursos propiedad del laboratorio.
10.5.0.5
10.5.0.5
10.5.0.50
10.5.0.100
10.5.0.200
./etc/services_info
. El contenido de este archivo se imprimirá tal como está, línea por línea, ejecutando ./lab.sh -i
. $HOME/.ssh/cofig
:
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: