#Hackeando con docker
#Introducción
En este post principalmente voy a mostrar mi configuraciones de docker, la mayoría son sacadas de Docker Hub ya que considero que están muy bien hechas y si nos podemos ahorrar trabajo mucho mejor. Pero si que voy hablar de la docker que he creado para mi, para poder hacer los retos de HackTheBox, TryHackMe, Atenea,…
Primero voy a empezar explicando donde utilizo la docker, ya que si alguien le interesa puedo compartir como tengo hecha mi distribución. Así que, si únicamente te interesa como tengo mi docker recomiendo que saltes la primera parte.
#Mi distribución
Personalmente soy una persona que siempre me gustado Linux, así que era muy habitual para mi ir cambiando de distribuciones, me gustaba ver y entender porque eran distintas.
Al final he visto que algunas están mas enfocadas en sus respectivos temas, pero no quiero enfocar ese post en compararlas.
Primero me gustaría compartir un poco mi experiencia con las distribuciones dedicadas al pentesting.
Des de hace un par de años descubrí el mundo de la ciberseguridad me podría gustar, así que empecé a buscar en google como empezar y en todos los sitios me aparecía que tenia que usar Kali Linux, estoy seguro que sabes cual es. Después cuando sabia un poco más me pase a BlackArch ya que había estado con Majaro anteriormente y entendía como funcionaba la distribución de Arch. Y desde hace 1 año he estado trabajando con Parrot OS, personalmente es la que más me ha gustado y más cómodo he podido trabajar. Pero tener un único ordenador y dedicarlo el Pentesting sin verlo, se me llenaba de cosas que solo utilizaba una única vez y a veces solamente lo tenia porque creía que me ayudaría en un CTF. Por suerte soy una persona muy organizada y me gusta tenerlo todo en su sitio, aun así tenia el ordenador lleno. Mi única solución era virtualizar pero mi pc no es suficiente bueno como para tener el host y otra maquina virtualizada corriendo, y que no se congele o le pase algo que no pudiera trabajar cómodamente.
Así que al final me decidir hacer un cambio de nuevo. Actualmente estoy trabajando con Arch Linux, configurado con el entorno de bspwm. Mi intención no era tener de nuevo un host pentesting, pero si buscaba algo muy ligero y que menos que Arch linux.
Ahora la pregunta seria y, ¿Y como lo hago para dedicarme al pentest?
Y aquí el nombre del título. Recientemente aprendí a usar docker y me gusto mucho su funcionamiento así que decidir aprender mas y eso también ha sido uno de los motivos que he ha hecho cambiar de distribución.
Para quién no conozca docker, aquí os dejo una pequeña idea sacado de la Wikipedia.
Docker es un proyecto de código abierto que automatiza el despliegue de aplicaciones dentro de contenedores de software, proporcionando una capa adicional de abstracción y automatización de virtualización de aplicaciones en múltiples sistemas operativos. Docker utiliza características de aislamiento de recursos del kernel Linux, tales como cgroups y espacios de nombres (namespaces) para permitir que “contenedores” independientes se ejecuten dentro de una sola instancia de Linux, evitando la sobrecarga de iniciar y mantener máquinas virtuales.
Y si aun no sabés que és aqui te comparto unos enlaces la web oficial donde puedes encontrar que és un contenedor y aprofundir más.
https://www.docker.com/resources/what-container
#Mi configuración de docker
Ahora ya sabiendo un poco de mis problemas con los recursos de mi ordenador empezemos como tengo configurado mi docker.
Actualmente tengo varias imagenes pero algunas son temporales. Asi que me voy a centrar con las que más utilizo.
Como se puede apreciar una és la kali linux la core y la de bugbounty és inspirada con hackersploit/bugbountytoolkit.
Como he dicho la primera tiene referencia a la kali linux core, donde no hay nada instalado. Así que decidí montarlo a mi gusto.
Para crear un contenidor docker a tu gusto simplemente necessitas saber como funciona el archivo Dockerfile
.
Poco a poco iré añadiendo herramientas nuevas que vaya viendo a lo largo del tiempo, pero actualmente mi docker cuenta con:
#Tools
- tmux
- nmap
- nikto
- zsh
- dnsutil
- sqlmap
- wfuzz
- ffuf
- wpscan
- dnsrecon
- cracmapexe
- netcat
- dirsearch
- whatweb
- r2frida
- evil-winrm
- dnsenum
#Wordlist
- SecList
#Scripts
- enum4linux
- LinEnum
- pspy64
#Web shells
- simple-backdoor.php
- php-reverse-shell
- simple-php-shell
Esta es mi imagen y a partir de aquí creo los contenedores, y voy borrando y creando nuevos en función de lo que necesite. Así siempre esta organizado y cuando acabo tomo mis apuntes y elimino el contenido.
El contenido de mi Dockerfile
1 | FROM kalilinux/kali-rolling |
Lo comparto por aqui porque aun no és descargable ya que solamente funciona en mi pc, de momento o si eliminas los copy.
Decir que mi archivo .zshrc
lo tengo personalizado ya que me gusta ver el nombre de la maquina, donde lo estoy haciendo(HTB,THM,..), su ip y mi ip de la vpn. El thema es oxide.zsh-theme. Las linias que he añadido para lograr el siguiente resultado:
Lineas añadidas
1 | if [[ $(ifconfig tun0 2> /dev/null ) ]]; then |
Y el prompt se ha quedado asi
1 | PROMPT=$'\n%{$oxide_orange%} USER_NAME%{$oxide_reset_color%}@%{$oxide_limegreen%}DOMAIN_NAME %{$oxide_reset_color%}%{$oxide_fuego%} [ MACHINE_IP ] %{$oxide_reset_color%}%{$oxide_turquoise%} ${VPN} %{$oxide_reset_color%}%{$oxide_limegreen%}%~%{$oxide_reset_color%} ${vcs_info_msg_0_}\n%(?.%{%F{white}%}.%{$oxide_red%})%(!.#.❯)%{$oxide_reset_color%} ' |
A continuación hago el siguiente comando y ya tengo la imagen creada.
1 | sudo docker build -t marchortelano/pentestkali -f- /mnt/docker < Dockerfile |
Por acabar solo falta correr la imagen, como vemos aqui modificamos el prompt y le ponemos los datos que queremos. En la imagen anterior se puede apreciar que no coje el usuario de la maquina sino he modificado lo que quiero ver en mi prompt.
1 | sudo docker run -ti --name HTB_$name --cap-add=NET_ADMIN --device /dev/net/tun \ |