Explorando técnicas de escaneo de puertos con Nmap
Nmap es una herramienta poderosa en el campo de la ciberseguridad, especialmente cuando se trata de escaneo de puertos. El escaneo de puertos es un método utilizado para descubrir qué puertos en un sistema objetivo están abiertos y qué servicios pueden estar ejecutándose en esos puertos. Existen diferentes tipos de técnicas de escaneo de puertos, cada una con sus propias ventajas únicas y casos de uso específicos. En este paso, exploraremos algunas de estas técnicas escaneando nuestro servicio simulado.
Primero, realicemos un escaneo TCP connect básico específicamente dirigido a nuestro puerto 8888. Un escaneo TCP connect es una forma sencilla de comprobar si un puerto está abierto. Funciona intentando establecer una conexión TCP completa con el puerto objetivo. Si la conexión tiene éxito, se considera que el puerto está abierto.
nmap -p 8888 localhost
En este comando, la opción -p se utiliza para especificar qué puerto(s) queremos escanear. Aquí, le estamos diciendo a Nmap que escanee el puerto 8888 en el localhost, que se refiere a la máquina actual. Después de ejecutar este comando, deberías ver una salida similar a esta:
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-30 15:50 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000097s latency).
PORT STATE SERVICE
8888/tcp open sun-answerbook
Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds
Esta salida confirma que nuestro puerto 8888 está abierto. Nmap también ha identificado el nombre del servicio asociado con este puerto según su base de datos interna.
Ahora, probemos un escaneo SYN. Un escaneo SYN es un enfoque más sigiloso en comparación con el escaneo TCP connect. No completa la conexión TCP completa, lo que lo hace menos probable que sea detectado por los sistemas de detección de intrusiones.
sudo nmap -sS -p 8888 localhost
La opción -sS especifica que queremos realizar un escaneo SYN. Este tipo de escaneo requiere privilegios de root porque implica enviar paquetes de red sin procesar, que es una operación de bajo nivel. Por eso usamos el comando sudo. La salida debe ser similar al escaneo anterior:
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-30 15:55 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000097s latency).
PORT STATE SERVICE
8888/tcp open sun-answerbook
Nmap done: 1 IP address (1 host up) scanned in 0.04 seconds
A continuación, probemos un escaneo UDP. UDP (User Datagram Protocol) es un tipo diferente de protocolo de red en comparación con TCP. Mientras que TCP proporciona un servicio confiable y orientado a la conexión, UDP es un protocolo sin conexión. Usaremos un escaneo UDP para comprobar si el puerto 8888 está abierto para el tráfico UDP.
sudo nmap -sU -p 8888 localhost
La opción -sU especifica un escaneo UDP. Los escaneos UDP pueden ser más lentos que los escaneos TCP porque UDP no tiene el mismo mecanismo de reconocimiento incorporado que TCP, por lo que Nmap tiene que esperar más tiempo para determinar si un puerto está abierto o cerrado. La salida podría verse así:
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-30 16:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000097s latency).
PORT STATE SERVICE
8888/udp closed sun-answerbook
Nmap done: 1 IP address (1 host up) scanned in 0.15 seconds
Observa que el puerto UDP se muestra como cerrado. Esto es lo esperado porque nuestro servicio netcat está escuchando conexiones TCP, no UDP.
Finalmente, realicemos un escaneo de detección de versión de servicio. Este tipo de escaneo nos ayuda a identificar qué servicio específico y su versión están ejecutándose en un puerto en particular.
nmap -sV -p 8888 localhost
La opción -sV le dice a Nmap que realice la detección de servicio/versión. Intenta enviar sondas específicas a los puertos abiertos y analizar las respuestas para determinar el servicio y su versión. La salida podría verse así:
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-30 16:05 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000097s latency).
PORT STATE SERVICE VERSION
8888/tcp open http Apache httpd
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Nmap done: 1 IP address (1 host up) scanned in 6.51 seconds
La detección de versión puede no identificar con precisión nuestro servicio netcat como una aplicación genuina, pero demuestra cómo Nmap intenta determinar qué está ejecutándose en los puertos abiertos.
Guardemos nuestros hallazgos en un archivo para futuras referencias. Guardar los resultados del escaneo nos permite revisarlos más tarde, compartirlos con otros o utilizarlos para un análisis más profundo.
nmap -p 8888 localhost > /home/labex/project/nmap_scan_results.txt
En este comando, el símbolo > se utiliza para redirigir la salida del escaneo de Nmap a un archivo llamado nmap_scan_results.txt ubicado en el directorio /home/labex/project.
Puedes ver los resultados guardados con:
cat /home/labex/project/nmap_scan_results.txt
El comando cat se utiliza para mostrar el contenido de un archivo.
Con esto concluimos nuestra exploración de diferentes técnicas de escaneo de puertos de Nmap.