Escaneo de puertos
recon & enum
La enumeración de puertos es una tarea crucial en las pruebas de penetración y seguridad de redes ya que nos permite enumerar los servicios expuestos de una maquina para poder vulnerar la misma, vamos a ver varios métodos para enumerar puertos abiertos en una maquina
Nmap
Nmap, o Network Mapper, es una herramienta de código abierto que permite escanear redes y detectar vulnerabilidades. Es una de las herramientas más usadas en ciberseguridad.
Haz click aquí para ver la guia completa de nmap
si queremos enumerar los puertos abiertos de una maquina podemos usar las siguiente metodología :
nmap -p- -sS -vvv --open --min-rate 5000 introduce.direccion.ip.aqui
# -p- : escanear todos los puertos
# -sS : Stealth Scan (silencioso)
# -vvv : verbose
# --open : solo mostrar los puertos abiertos
# --min-rate : minimo de X paquetes por segundos# luego del primer escaneo, con los puertos abiertos hacemos el siguiente comando :
nmap -sCV -p 12,23
# en este ejemplo el 12 y 23
# este sera un escaneo mas avanzado y te dara mas información Enumeración de puertos abiertos con /dev/tcp
/dev/tcp Para realizar la enumeración de puertos utilizando /dev/tcp en Bash, es posible crear un script que realice una conexión a cada puerto de interés y compruebe si el puerto está abierto o cerrado en función de si se puede enviar o recibir datos. Una forma de hacer esto es mediante el uso de comandos como “echo” o “cat“, aplicando redireccionamientos al /dev/tcp. El código de estado devuelto por el comando se puede utilizar para determinar si el puerto está abierto o cerrado.
Aunque esta alternativa puede ser menos precisa y más lenta que el uso de herramientas especializadas como Nmap, es una opción interesante y viable para aquellos que buscan una solución rápida y sencilla para la enumeración de puertos en sistemas Unix. Además, este enfoque puede proporcionar una mejor comprensión de cómo funcionan los descriptores de archivo en los sistemas Unix y cómo se pueden utilizar para realizar tareas de red.
También es gracias a los descriptores de archivo en Linux, que es como se hace la "petición"
#!/bin/bash
function ctrl_c(){
echo -e "\n\n[!] Saliendo...\n\n"
tpu cnorm; exit 1
}
#Ctrl_C
trap ctrl_c SIGINT
declare -a ports=( $(seq 1 65535) )
function checkPort(){
exec 3<> /dev/tcp/$1/$2 2>/dev/null
if [ $? -eq 0 ]; then
echo "[+] Host : $1 - Port $2 (OPEN)"
fi
exec 3<&-
exec 3<&-
}
tput civis
if [ $1 ]; then
for port in ${ports[@]}; do
checkPort $1 $port &
done
else
echo -e "\n\n[!] Uso : $0 <ip-address>\n"
fi
wait
tput cnorm
Enumeración de puertos abiertos internamente
Hay que veces cuando lanzamos escaneos por ejemplo, de nmap no nos va a listar todos los puertos abiertos de la maquina y es muy común, esto pasa gracias a firewalls y reglas que estén configuradas en la red, dificultando un poco el reconocimiento preciso de los puertos de la maquina. Si ya hemos accedido a la maquina podremos enumerar de otras maneras los puertos que estén abiertos internamente con varios comandos y herramientas.
El uso de estas técnicas puede ayudarnos a explotar vulnerabilidades preferiblemente para escalar privilegios y completar el reconocimiento a la maquina.
Técnicas que usaremos :
netstat
ss
/proc/net/tcp
nmap
Enumeración
# Todos estos comandos nos ayudaran a enumerar la informacion que queremos
netstat -nat
ss -nltp
cat /proc/net/tcp
# este archivo los tendra en hexadecimal por lo que tendremos que hacer un decode
nmap -p- --open 127.0.0.1
echo '' > /dev/tcp/127.0.0.1/puerto_a_revisar # mejor hacer este automatico con un script en bash
# podemos utilizar tambien las demas tecnicas de reconocimiento convencinales pero ya dentro de la maquinaMasscan
esta herramienta se considera la mas rápida para la enumeracion de puertos abiertos
la guia de uso esta en el repositorio.
Last updated
