Interpretación y análisis de los resultados del escaneo
En este paso, aprenderemos cómo entender y analizar los resultados de nuestros escaneos de Nmap. Cuando se trata de seguridad de redes, ser capaz de leer la salida del escaneo es esencial. Te ayuda a tomar decisiones informadas sobre la seguridad de tu red. Por ejemplo, puedes identificar posibles vulnerabilidades o puntos de acceso no autorizados basándote en los resultados del escaneo.
Comparación de diferentes tipos de escaneos
Realicemos algunos tipos más de escaneos para ver cómo difieren sus salidas. Primero, realizaremos un escaneo completo. Este tipo de escaneo incluye todas las opciones comunes, lo que nos da una vista detallada del objetivo.
nmap -A -p 8080 localhost > /home/labex/project/comprehensive_scan.txt
En este comando, la bandera -A
es muy importante. Habilita opciones de escaneo agresivo. Estas opciones incluyen detectar el sistema operativo del objetivo, averiguar la versión de los servicios en ejecución, escanear scripts disponibles y realizar un traceroute. Al usar esta bandera, podemos recopilar mucha información útil sobre el objetivo.
Ahora, echemos un vistazo a los resultados de este escaneo completo.
cat /home/labex/project/comprehensive_scan.txt
La salida será bastante detallada. Contendrá información sobre el servicio que se ejecuta en el puerto 8080, cualquier posible script que se pueda ejecutar contra el servicio y otros detalles relevantes. Esta información detallada puede ayudarnos a entender mejor la situación de seguridad del objetivo.
Comprensión de los estados de los puertos
Nmap informa varios posibles estados para los puertos. Cada estado nos dice algo diferente sobre el estado del puerto.
- open: Esto significa que una aplicación está aceptando activamente conexiones TCP o paquetes UDP en este puerto. Es como una puerta abierta y lista para recibir visitantes.
- closed: El puerto es accesible, pero no hay ninguna aplicación escuchando en él. Es como una puerta desbloqueada pero sin nadie dentro para responder.
- filtered: Nmap no puede determinar si el puerto está abierto porque el filtrado de paquetes impide que sus sondas lleguen al puerto. Es como si hubiera un guardia de seguridad bloqueando la vista de Nmap a la puerta.
- unfiltered: El puerto es accesible, pero Nmap no puede decir si está abierto o cerrado. Es como mirar una puerta y no poder decir si hay alguien dentro.
- open|filtered: Nmap no puede determinar si el puerto está abierto o filtrado. Es un estado incierto en el que no estamos seguros si la puerta está abierta o bloqueada.
- closed|filtered: Nmap no puede determinar si el puerto está cerrado o filtrado. Similar al estado anterior, no estamos seguros si la puerta está cerrada o bloqueada.
Veamos cómo aparecen estos estados en nuestros resultados de escaneo al escanear un rango de puertos.
nmap -p 8080-8085 localhost > /home/labex/project/port_states.txt
Después de que se complete el escaneo, podemos ver los resultados.
cat /home/labex/project/port_states.txt
Deberías ver que el puerto 8080 se informa como abierto, mientras que los otros puertos en el rango probablemente se informen como cerrados. Esto nos da una idea de qué puertos se están utilizando activamente y cuáles no.
Análisis práctico de los resultados
Ahora, creemos un informe resumido extrayendo la información clave de nuestros resultados de escaneo. Usaremos el comando grep
para filtrar los puertos abiertos. Los puertos abiertos son muy importantes para la evaluación de seguridad porque son posibles puntos de entrada para los atacantes.
grep "open" /home/labex/project/comprehensive_scan.txt > /home/labex/project/open_ports.txt
Después de filtrar, podemos ver los resultados.
cat /home/labex/project/open_ports.txt
Esta salida filtrada nos permite centrar nuestra atención más fácilmente en los puertos abiertos. En lugar de mirar el informe de escaneo detallado completo, podemos ver rápidamente qué puertos están abiertos y comenzar a evaluar sus riesgos de seguridad.
Implicaciones de seguridad
Comprender las implicaciones de seguridad de los resultados de tu escaneo es crucial. Aquí hay algunos puntos clave a tener en cuenta.
- Puertos abiertos innecesarios: Cualquier puerto abierto es un posible punto de entrada para los atacantes. Si un servicio no es necesario, debe deshabilitarse. Por ejemplo, si tienes un puerto abierto para un servicio que ya no utilizas, un atacante podría utilizar ese puerto para acceder a tu sistema.
- Servicios desactualizados: Las versiones antiguas de servicios pueden tener vulnerabilidades conocidas que los atacantes pueden explotar. Es importante mantener tus servicios actualizados para evitar estos riesgos.
- Servicios mal configurados: Incluso los servicios actualizados pueden ser vulnerables si están mal configurados. Un pequeño error en la configuración puede exponer tu sistema a ataques.
En nuestro entorno de laboratorio, abrimos intencionalmente el puerto 8080 para el servidor HTTP. Pero en un entorno de producción del mundo real, necesitarías evaluar cuidadosamente si este servicio es necesario y si está adecuadamente protegido.
Detener el servidor HTTP
Antes de terminar este paso, limpiemos deteniendo el servidor HTTP que iniciamos anteriormente. Primero, necesitamos encontrar su ID de proceso.
ps aux | grep "python3 -m http.server"
Cuando ejecutes este comando, busca la línea que muestra nuestro proceso de servidor HTTP. La segunda columna en la salida contiene el ID de proceso (PID). Una vez que encuentres el PID, puedes usarlo para detener el servidor.
kill <PID>
Reemplaza <PID>
con el ID de proceso real de la salida del comando anterior.
Como alternativa, puedes usar el siguiente comando para encontrar y matar el proceso en un solo paso.
pkill -f "python3 -m http.server"
Después de detener el servidor, necesitamos verificar que ya no esté en ejecución.
ss -tuln | grep 8080
Si no hay salida, significa que el servidor se ha detenido correctamente.