Laboratorio de Pentesting — Docker 01

CrhystamiL
3 min readMay 21, 2019

--

Hace mucho me nació la idea de hacer un laboratorio de pentesting donde pueda realizar pruebas pero al mismo tiempo pueda servir a muchas personas, me puse a buscar soluciones y docker fue una gran solución ya que hay bastantes imágenes vulnerables.

Diagrama de la red

Bueno ahora que ya tengo la idea de como sera el laboratorio, debo tener un servidor en la nube para poder crear la VPN y los dockers.

La VPN me servirá para poder realizar las pruebas en un entorno controlado y solo las personas con el certificado podrán conectarse, para no publicar los puertos del dockers y que algún amigo de otro país intente atacar el servidor.

Usare un droplet de DigitalOcean ya que es muy sencillo hacerlo, crearemos un servidor de 20 $ que tiene buenas especificaciones.

1. Iniciando Configuración

Empezaremos configurando la VPN, me encontré un repositorio en github donde ya realiza esta tarea solo nos toca configurar e iniciar.

# git clone https://github.com/kylemanna/docker-openvpn.git
# cd docker-openvpn/
# docker build -t docker-vpn
# mkdir vpn-data
# docker run -v /root/vpn-data/:/etc/openvpn --rm docker-vpn ovpn_genconfig -u udp://159.20.6.14:3000
# docker run -v /root/vpn-data/:/etc/openvpn --log-driver=none --rm -it docker-vpn ovpn_initpki
# docker run -v /root/vpn-data/:/etc/openvpn -d -p 3000:1194/udp --cap-add=NET_ADMIN docker-vpn
Creamos una llave VPN para poder conectarnos y validar la conexión.# docker run -v /root/vpn-data/:/etc/openvpn --rm -ti docker-vpn easyrsa build-client-full nombre_file_vpn nopass
# docker run -v /root/vpn-data/:/etc/openvpn --rm -ti cpp-vpn ovpn_getclient nombre_file_vpn> llave_vpn.ovpn

En el repositorio nos da algunas guías de como funciona y que beneficios tenemos al usarlo.

Después de validar nuestra conexión con la VPN dentemos el docker.

2. Búsqueda o creación de imágenes docker vulnerables.

Una idea al principio fue crear mis propias imágenes vulnerables y así lo hice, pero esto lleva mucho tiempo y aveces tiempo es lo que no tengo, pero gracias a github y dockerhub encontré algunas imágenes con vulnerabilidades conocidas.

https://hub.docker.com/u/vulnerables

https://github.com/vulhub/vulhub/

Ahora ya tenemos imágenes vulnerables para crear nuestro laboratorio.

3. Creación del docker-compose

Ahora que ya tenemos nuestra VPN y nuestras imágenes debemos crear una red donde se comunique nuestra vpn y nuestros dockers.

`version: '3'
services:
docker-vpn:
image: docker-vpn
volumes:
- /root/vpn-data:/etc/openvpn
cap_add:
- NET_ADMIN
ports:
- "3000:1194/udp"
networks:
lab_docker:
ipv4_address: 172.21.0.2
mutillidae_web:
image: crhystamils/mutillidae
links:
- mutillidae_db
depends_on:
- mutillidae_db
networks:
lab_docker:
ipv4_address: 172.21.20.7
mutillidae_db:
image: mysql:5.5
environment:
MYSQL_ROOT_PASSWORD: mutillidae
MYSQL_DATABASE: mutillidae
MYSQL_USER: admin
MYSQL_PASSWORD: admin
networks:
- lab_db
networks:
lab_docker:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.21.0.0/16
lab_db:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.22.0.0/16

Podemos ver que se creo 2 redes donde la aplicación web tiene una IP asignada y solo la aplicación tiene acceso a la base de datos y la VPN este en la red lab_docker para que pueda acceder a la red de los docker vulnerables.

El archivo completo se vera de esta manera si creamos mas dockers vulnerables:

Aquí les dejo algunas capturas de como esta funcionando el servidor con los dockers.

Estadísticas de consumo
Lista de dockers vulnerables.

Para agregar las maquinas windows a nuestra red lo único que tenemos que hacer es generar certificados de conexión e instalar openvpn para que el equipo se conecte. (lo publicare en otro post)

Dentro de poco actualizare el docker-compose con mas dockers vulnerables y así puedan crear una red de dockers vulnerables, que podría servir para dar un curso de Pentesting.

Happy Hacking.

--

--

CrhystamiL
CrhystamiL

Written by CrhystamiL

CEH, CyberSecurity Researcher,Ethical Hacker, GNU/Linux Lover.

No responses yet