¡Esta es una revisión vieja del documento!
Tabla de Contenidos
Nmap como herramienta de escáner de puertos
Módulo perteneciente al curso Python avanzado para proyectos de seguridad
Nmap es una herramienta para la exploración de la red y la auditoría de seguridad. Permite realizar escaneados con ping (determinando que máquinas están activas), utilizando diferentes técnicas de escaneado de puertos, detección de versiones (determinando los protocolos de los servicios y las versiones de las aplicaciones que están escuchando en los puertos), e identificación mediante TCP/IP (identificando el sistema operativo de la máquina o el dispositivo).
La herramienta nmap se utiliza principalmente para reconocimiento y escaneo de puertos en un determinado segmento de red.
En la página oficial nos podemos descargar la última versión disponible dependiendo del sistema operativo sobre el cual queramos instalarlo.
Tipos de escaneo con nmap
Si ejecutamos la herramienta nmap desde la consola, vemos que tenemos los siguientes tipos de escaneo:
IMAAAAAAAAAAAAAAAAAAAAGEN
Entre las principales opciones que podemos utilizar destacan:
- sT (TCP Connect Scan): Es la opción que se suele utilizar para detectar si un puerto está abierto o cerrado, pero también suele ser el mecanismo más auditado y vigilado por sistemas de detección de intrusos. Con esta opción, un puerto se encuentra abierto si el servidor responde con un paquete que contenga el flag ACK al enviar un paquete con el flag SYN.
- sS (TCP Stealth Scan): Tipo de escaneo basado en el TCP Connect Scan con la diferencia de que la conexión en el puerto indicado no se realiza de forma completa. Consiste en comprobar el paquete de respuesta del objetivo ante un paquete con el flag SYN habilitado. Si el objetivo responde con un paquete que tiene el flag RST, entonces se puede comprobar si el puerto está abierto o cerrado.
- sU (UDP Scan): Tipo de escaneo basado en el protocolo UDP donde no se lleva a cabo un proceso de conexión, sino que simplemente se envía un paquete UDP para determinar si el puerto está abierto. Si la respuesta es otro paquete UDP, significa que el puerto está abierto. En el caso de que el puerto no esté abierto se recibirá un paquete ICMP del tipo 3(destino inalcanzable).
- sA (TCP ACK Scan): Tipo de escaneo que permite saber si nuestra máquina objetivo tiene algún tipo de firewall en ejecución. Lo que hace este escaneo es enviar un paquete con el flag ACK activado y se envía a la máquina objetivo. En el caso de que la máquina remota responda con un paquete que tenga el flag RST activado, se puede determinar que el puerto no se encuentra filtrado por ningún firewall. En el caso de que el no responda o lo haga con un paquete ICMP del tipo se puede determinar que hay un firewall filtrando los paquetes enviados en el puerto indicado.
- sN (TCP NULL Scan): Tipo de escaneo que envía un paquete TCP a la máquina objetivo sin ningún flag. Si la máquina remota no emita ninguna respuesta, se puede determinar que el puerto se encuentra abierto. Si la máquina remota devuelve un flag RST, podemos decir que el puerto se encuentra cerrado.
- sF (TCP FIN Scan): Tipo de escaneo que envía un paquete TCP a la máquina objetivo con el flag FIN. Si la máquina remota no emita ninguna respuesta, se puede determinar que el puerto se encuentra abierto. Si la máquina remota devuelve un flag RST, podemos decir que el puerto se encuentra cerrado.
- sX (TCP XMAS Scan): Tipo de escaneo que envía un paquete TCP a la máquina objetivo con los flags PSH, FIN, URG. Si la máquina remota no emita ninguna respuesta, se puede determinar que el puerto se encuentra abierto. Si la máquina remota devuelve un flag RST, podemos decir que el puerto se encuentra cerrado. Si en el paquete de respuesta obtenemos uno del tipo ICMP del tipo 3, entonces el puerto se encuentra filtrado.
El tipo de scan por defecto puede variar en función del usuario que lo esté ejecutando, por aquello de los permisos de enviar paquetes durante el scan. La diferencia entre unos y otros scan radica en el “ruido” generado, y en su capacidad de evitar ser detectados por sistemas de seguridad como pueden ser los firewalls o los sistemas detección de intrusos.
Si queremos crear un escáner de puertos, tendríamos que crear un hilo por cada socket que abriese una conexión en un puerto y gestionar el uso compartido de la pantalla mediante un semáforo. Con esto tendríamos un código largo y además solo haríamos un scanning simple TCP, pero no ACK, SYN-ACK, RST o FIN proporcionados por el toolkit Nmap.
Actividad práctica: Utilizar nmap para realizar un escaneo en una máquina y lista de puertos específica con el objetivo de detectar puertos y servicios abiertos
Determinar los puertos abiertos y filtrados para los siguientes dominios:
adrformacion.compython.org
Solución
Nmap scan report for adrformacion.com (34.255.218.111) Host is up (0.042s latency). Other addresses for adrformacion.com (not scanned): 63.33.142.19 34.249.78.102 rDNS record for 34.255.218.111: ec2-34-255-218-111.eu-west-1.compute.amazonaws.com Not shown: 998 filtered ports PORT STATE SERVICE 80/tcp open http 443/tcp open https Nmap scan report for python.org (45.55.99.72) Host is up (0.10s latency). Not shown: 997 closed ports PORT STATE SERVICE 80/tcp open http 443/tcp open https 646/tcp filtered ldp Nmap scan report for ftp.be.debian.org (195.234.45.114) Host is up (0.039s latency). Other addresses for ftp.be.debian.org (not scanned): 2a05:7300:0:100::2 rDNS record for 195.234.45.114: mirror.as35701.net Not shown: 993 closed ports PORT STATE SERVICE 21/tcp open ftp 22/tcp open ssh 80/tcp open http 443/tcp open https 646/tcp filtered ldp 873/tcp open rsync 9999/tcp open abyss
