Pentestdocker, es una imagen docker con las herramientas más usadas para CTF, Pentesting, Bug Bounty, para ser desplegada fácil y rápidamente en diferentes entornos.
Nota: Pentestdocker puede ser desplegado en la nube de Google o Digital Ocean, se anexa un cupon de crédito gratuito para Digital Ocean
- Características
- Requerimientos
- Utilerías Instaladas
- Como usar
- Despliegue en la nube
- Cosas por hacer
- Agradecimientos
- Cuenta con herramientas para CTF, Pentesting y Bug Bounty
- Conexión a plataformas CTF como hackthebox y tryhackme
- Servicios de proxy para enviar tráfico web para analisis local con burpsuite
- Uso de shell zsh con diferentes plugins
- Tener instalado el servicio de docker
- Probado en docker desktop for Mac 3.10 (51484), Enginie 20.10.2
- apache2
- ccat
- chromium-browser
- cifs-utils
- curl
- dos2unix
- jq
- ftp
- gotop
- html2text
- htop
- locate
- lsof
- nano
- neofetch
- p7zip
- rdate
- squid
- ssh
- tmux
- tree
- vim
- wget
- unrar
- unzip
- xcplip
- zsh, oh-my-zsh
- chisel
- dnsenum
- dnstools (dig, nslookup)
- fping
- host
- iputils-ping
- netcat
- netcat (win:nc32.exe,nc64.exe)
- net-tools (arp, ifconfig, iptunnel)
- openvpn
- prips
- rlwrap
- socat
- tcpdump
- telnetsql
- traceroute
- whois
- awscli
- git
- go - 1.17.5
- nodejs
- mysql-client
- php
- python2
- python3
- python3-pip
- ruby
- sqlite3
- anew
- aquatone
- amass
- cmseek
- dirsearch
- [enum4linux] (https://github.com/CiscoCXSecurity/enum4linux)
- finddomain
- ffuf
- gowitness
- gobuster
- httpx
- joomscan
- linenum
- linpeas
- knockpy ??
- nbtscan
- nikto
- nuclei
- recon-ng
- shodan ??
- smbclient
- smbmap
- subfinder
- Sublist3r
- waybackurls
- wfuzz
- wpscan
- whatweb
- mƒ√can
- naabu
- nmap
- binwalk
- exiftool
- foremost
- hexeditor
- pngcheck
- steghide
- strings
- ztesg
- crackmapexec
- evil-winrm
- fcrackzip
- hashcat
- hashid
- hydra
- impacket
- john
- medusa
- metasploit
- php-reverse-shell
- pspy
- rsactftool
- searchsplotit
Clonar el repositorio y construir la imagen de pentestdocker localmente:
git clone https://github.com/hackadvisermx/pentestdocker.git
cd pentestdocker
docker build -t pentestdocker .
docker run --rm -it -name pentestdocker pentestdocker /bin/zsh
Descargar la imagen preconstruida de pentestdocker desde dockerhub:
docker pull hackadvisermx/pentestdocker
docker run --rm -it -name pentestdocker hackadvisermx/pentestdocker /bin/zsh
Puedes utilizar el contenedor para pentesting en red local, exponiendo el puerto 80, con persistencia de datos en la carpeta /hackdata:
docker run --rm -it --name pentestdocker -p 80:80 -v /ruta/hackdata:/root/hackdata \
hackadvisermx/pentest-docker /bin/zsh
Puedes usar pentestdocker con soporte vpn, o modo ctf (hackthebox, tryhackme), con el puerto 80 expuesto y persistencia de datos en la carpeta /hackdata. Exponiendo el puerto 3128 para proxy squid lo que permite acceder a http/https de las máquinas dentro de la vpn, además exponiendo el rango de puertos 8080-8090 para servicios adicionales:
docker run --rm -it --name pentest --cap-add=NET_ADMIN --device=/dev/net/tun \
--sysctl net.ipv6.conf.all.disable_ipv6=0 -v /ruta/vpn:/root/vpn -v /ruta/hackdata:/root/hackdata \
-p 3128:3128 -p 80:80 -p8080-8090:8080-8090 hackadvisermx/pentestdocker /bin/zsh
Una vez dentro del contenedor puedes usar los alias definidos shell/alias, de la siguiente forma:
apacheup - iniciar servidor apache
squidup - iniciar proxy squid
vpnhtb - conectar a vpn de hackthebox
vpntry - conectar a vpn de tryhackme
vpncli - conectar a vpn personalizada
- Notas generales para 1 y 2:
- /ruta/vpn, es la ruta donde están los archivos .ovpn, ahí se guarda el historial del shell también.
- /ruta/hackdata, es la ruta donde estan los archivos de trabajo, poner ahí lo que se desea persistir entre contenedor y host local
- Arsenio Aguirre: su repo ha sido mi inspiración: https://github.com/aaaguirrep/offensive-docker
- Leandro Pintos: su repo igual me ha servido de base: https://github.com/l34r00t
- Usar pipenv para un mejor control de dependencias en la instalación de las utilerías python.
- Analizar entre descargar y compilar o bajar el release de la herramienta (reducir tiempo vs herramienta actualizada).
- Automatizar la verificación de las últimas versiones de las herramientas.
- Personalizar las configuraciones de algunas herramientas: api keys, tokens, etc.
- Desplegar el pentestdocker en la nube de amazon y microsoft
- Mejorar la documentación.
- Abrir a la colaboración (pull requests).