馃捇聽ReconBox 馃捇
馃摝馃攳 Script en bash para la fase de reconocimiento de las m谩quinas de Hack The Box. 馃攳馃摝
鈿欙笍鈿欙笍 Requisitos Previos 鈿欙笍鈿欙笍
Antes de utilizar el script, aseg煤rate de tener las herramientas necesarias instaladas en tu sistema:
Nmap: Para escanear puertos y servicios.
WhatWeb: Para identificar tecnolog铆as web utilizadas por un servidor.
WFuzz: Para realizar fuzzing y encontrar directorios o archivos ocultos en aplicaciones web.
Rsync: Para realizar escaneos de posibles directorios compartidos.
MongoDB tools: Para interactuar con bases de datos MongoDB.
馃馃 Descripci贸n del Script 馃馃
El script est谩 dise帽ado para realizar un escaneo completo en una m谩quina objetivo. Utiliza una combinaci贸n de herramientas de escaneo como Nmap, WhatWeb, WFuzz, Rsync y MongoDB tools para obtener informaci贸n detallada sobre la m谩quina objetivo. A continuaci贸n, desglosamos los pasos clave de su funcionamiento:
馃敼 1. Verificaci贸n de la Conexi贸n
El script comienza verificando si la m谩quina objetivo est谩 accesible a trav茅s de ping. Si la m谩quina responde, contin煤a con los siguientes pasos. En caso de que la conexi贸n falle, se detiene y muestra un mensaje de error.
validation=$(ping -c 1 $ip | grep received | awk '{print $4}')
if [ $validation -eq 1 ]; then
echo -e "\n${verde}[+] Estado de la conexi贸n: ${azul}Conectado${finColor}${verde}"
馃敼 2. Detecci贸n del Sistema Operativo
Una vez confirmada la conectividad, el script intenta identificar el sistema operativo de la m谩quina objetivo utilizando el script wichSystem.py (probablemente un script personalizado o uno de herramientas comunes de OS detection como nmap o p0f). Si el sistema operativo es Linux o Windows, se imprime la informaci贸n en la consola.
so="$(wichSystem.py $ip | awk '{print $5}' | column)"
if [[ $so = "Linux" || $so = "Windows" ]]; then
echo -e "\n[+] Sistema Operativo = ${azul}$so${finColor}${verde}"
else
echo -e "\n[+] Sistema Operativo Desconocido."
fi
馃敼 3. Escaneo de Puertos con Nmap
El script realiza un escaneo completo de puertos utilizando Nmap, que identifica puertos abiertos en la m谩quina objetivo. Si el archivo de resultados portScan ya existe, pregunta al usuario si desea realizar un nuevo escaneo. De no ser as铆, se reutiliza el archivo anterior.
if [ -e "./portScan" ]; then
echo -e "\n [+] El archivo ${azul}portScan${verde} ya existe, desea volver a realizar el Escaneo? [s/n]"
read respuesta
if [ "$respuesta" = "s" ]; then
sudo nmap -p- -sS --open --min-rate 5000 -v -n $ip -oG portScan 2&>/dev/null
fi
else
sudo nmap -p- -sS --open --min-rate 5000 -v -n $ip -oG portScan 2&>/dev/null
fi
Los puertos abiertos se extraen del archivo portScan y se muestran al usuario en la consola.
ports="$(cat portScan | grep -oP '\d{1,5}/open' | awk '{print $1}' FS='/' | xargs | tr ' ' ',')"
echo -e "\n [+] Puertos abiertos: ${azul}$ports${finColor}${verde}"
馃敼 4. Escaneo de Servicios en Puertos Espec铆ficos
Para los puertos m谩s comunes como 21 (FTP), 22 (SSH), 80 (HTTP) y 443 (HTTPS), el script realiza escaneos adicionales para obtener m谩s informaci贸n sobre los servicios y aplicaciones corriendo en esos puertos. En el caso del puerto 80 (HTTP), tambi茅n utiliza WhatWeb para identificar tecnolog铆as web.
if [[ "$ports" == *"80"* ]]; then
sudo whatweb "$ip"
# Si WhatWeb detecta tecnolog铆as web, se ofrece la posibilidad de realizar fuzzing.
echo -e "\n${verde}[+] Realizar Fuzzing ${azul}http://$ip/FUZZ${finColor}${verde}: [s/n] \n"
read respuesta2
if [ "$respuesta2" = "s" ]; then
wfuzz -w /usr/share/wordlists/directory-list-2.3-big.txt --hc 404 http://$ip/FUZZ
fi
fi
馃敼 5. Fuzzing y Escaneo de Directorios con WFuzz
El script permite realizar fuzzing en aplicaciones web encontradas en el puerto 80 o 443. Esto ayuda a identificar directorios o archivos ocultos que podr铆an contener informaci贸n sensible.
wfuzz -w /usr/share/wordlists/directory-list-2.3-big.txt --hc 404 http://$ip/FUZZ
馃敼 6. Escaneo de Otros Puertos Espec铆ficos
El script tambi茅n est谩 dise帽ado para realizar escaneos espec铆ficos en otros puertos, como Rsync (puerto 873) o MongoDB (puerto 27017). En el caso de MongoDB, el script intenta realizar un dump de la base de datos para obtener posibles flags.
if [[ "$ports" == *"27017"* ]]; then
mongodump --host $ip --port 27017
rutaflag="$(find ./dump | grep flag.bson)"
if [[ -n "$rutaflag" ]]; then
echo -e "\n[+] Hemos encontrado la palabra flag en la siguiente ruta:\n\n ${azul}${rutaflag}${verde}"
catRutaFlag=$(cat $rutaflag | tr -d '\0')
echo -e "\n[+] Con el siguiente contenido:"
echo -e "\n ${azul}$catRutaFlag${verde}"
fi
fi