03.-Escaneo de servicios
Una vez recopiladas las direcciones IP de los hosts dentro del alcance de las pruebas, el siguiente paso es identificar los servicios activos en cada equipo, los puertos TCP/UDP en los que operan y sus versiones. Esto permite:
- Determinar las funciones de cada equipo dentro de la infraestructura.
- Detectar posibles vulnerabilidades asociadas a las versiones de software identificadas.
Herramientas para Escaneo de Servicios¶
nc (Netcat)¶
Netcat o nc
, es una herramienta de red que permite:
- Abrir puertos TCP/UDP para que queden a la escucha.
- Asociar una shell a un puerto específico.
- Forzar conexiones TCP/UDP para realizar escaneos de puertos o transferencias de archivos.
Uso básico:
- Conexión a un puerto específico
nc dirección_ip puerto
└─$ nc 172.31.1.1 22
SSH-2.0-ROSSSH
- Comunicación en un puerto UDP
nc -u dirección_ip puerto
# Escaneo de un rango de puertos
nc -zv dirección_ip pto_inicial-pto_final
nmap¶
nmap
es una herramienta de red que permite realizar escaneos para:
- Identificar puertos abiertos.
- Reconocer servicios activos y sus versiones.
- Localizar vulnerabilidades conocidas.
Comandos básicos: - Escaneo de servicios con detección de versiones
nmap [IP/rango] -p [puerto/rango] -sV
- Escaneo con scripts específicos de la categoría "version"
nmap [IP/rango] -p [puerto/rango] --script "version"
- Escaneo avanzado (incluye detección de sistema operativo y traceroute)
nmap [IP/rango] -p [puerto/rango] -A
Ejemplos¶
Escaneo de Puertos en Redes Auditadas
En una red auditada, pueden existir protecciones a nivel de red, como firewalls, que bloqueen o restrinjan el acceso a ciertos servicios. Sin embargo, es posible emplear diversas técnicas de escaneo para determinar si un puerto está abierto.
En el caso del protocolo TCP, se puede aprovechar el mecanismo del "three-way handshake", que es fundamental para establecer la comunicación.
El siguiente comando en nmap realiza un escaneo utilizando la opción -sT, que establece una conexión completa para identificar puertos abiertos:
└─$ nmap -Pn 10.20.50.1 -sT
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-01-09 17:31 CET
Nmap scan report for 10.20.50.1
Host is up (0.0041s latency).
Not shown: 993 closed tcp ports (conn-refused)
PORT STATE SERVICE
22/tcp open ssh
53/tcp open domain
80/tcp open http
443/tcp open https
1723/tcp open pptp
2000/tcp open cisco-sccp
8291/tcp open unknown
Nmap done: 1 IP address (1 host up) scanned in 0.18 seconds
Identificación de Servicios y Software en Puertos Abiertos
Además de verificar si un puerto está abierto en un sistema remoto, es fundamental identificar:
- El servicio activo en ese puerto (por ejemplo, servidor web, base de datos, etc.).
- El software utilizado y su versión (por ejemplo, Microsoft IIS como servidor web).
Esta información permite tener una visión más exhaustiva de los servicios operativos en cada sistema remoto y comprender mejor la función de dicho equipo dentro de la infraestructura. Además, conocer el tipo y versión del software ayuda a localizar vulnerabilidades específicas asociadas a la versión concreta en uso.
Técnica de "Banner Grabbing"
El banner grabbing es una técnica que consiste en observar la información devuelta por cada aplicación remota al establecer una comunicación activa. La mayoría de los servicios, en su configuración predeterminada, exponen al menos el tipo y la versión del software que están ejecutando.
Uso de Nmap para "Banner Grabbing"
Para ejecutar esta técnica con nmap
, es necesario realizar un escaneo TCP (full scan o stealth scan) o UDP y añadir el operador -sV
(Service Version). Este operador permite que nmap solicite el banner del servicio, lo compare con su base de datos y devuelva el software utilizado y su versión (o, en algunos casos, una aproximación).
Ejemplo de Comando Nmap:
└─$ nmap -Pn 10.20.50.2 -sV
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-01-09 17:40 CET
Nmap scan report for 10.20.50.2
Host is up (0.018s latency).
Not shown: 996 closed tcp ports (reset)
PORT STATE SERVICE VERSION
22/tcp open ssh Cisco SSH 1.25 (protocol 2.0)
23/tcp open telnet Cisco router telnetd (password required but not set)
80/tcp open http Cisco IOS http config
443/tcp open ssl/https?
MAC Address: 00:17:95:8C:FD:41 (Cisco Systems)
Service Info: OS: IOS; Device: router; CPE: cpe:/o:cisco:ios
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 8.53 seconds
Uso de Scripts de Nmap para Descubrimiento Avanzado
Además de las funcionalidades básicas, nmap incluye una serie de scripts que permiten realizar consultas avanzadas sobre los objetivos. Estos scripts forman parte del Nmap Scripting Engine (NSE) y están organizados en diferentes categorías, diseñadas para tareas específicas.
Una de estas categorías es "version", que se enfoca en realizar tareas adicionales de descubrimiento de servicios. Estos scripts proporcionan información detallada sobre ciertos servicios, ampliando las capacidades de detección de software y versión más allá del simple "banner grabbing".
Comando para Usar los Scripts de la Categoría "version"
El siguiente comando invoca todos los scripts de la categoría "version":
nmap -Pn -p [puerto/rango] --script version [IP/rango]
Parámetros Explicados
- -Pn
: Desactiva el escaneo previo de ping.
- -p [puerto/rango]
: Indica el puerto o rango de puertos que deseas escanear. Por ejemplo, -p 80 o -p 1-1000.
- --script version
: Invoca todos los scripts relacionados con la categoría version
.
- [IP/rango]
: Especifica la dirección IP o rango de direcciones objetivo.
└─$ nmap -Pn -p 22-2000 --script version 10.20.50.1
Starting Nmap 7.95 ( https://nmap.org ) at 2025-01-16 16:49 CET
Nmap scan report for 10.20.50.1
Host is up (0.012s latency).
Not shown: 1973 closed tcp ports (reset)
PORT STATE SERVICE
22/tcp open ssh
53/tcp open domain
80/tcp open http
443/tcp open https
1723/tcp open pptp
2000/tcp open cisco-sccp
MAC Address: DC:2C:6E:D6:9F:EC (Routerboard.com)
Service Info: Host: rt-net-tic-01
Nmap done: 1 IP address (1 host up) scanned in 30.30 seconds
Tipos de Escaneo en nmap
¶
TCP Connect (Full Open Scan)¶
La técnica de escaneo de puertos descrita corresponde al "Escaneo TCP Connect" (-sT
en Nmap). Es el método por defecto utilizado por Nmap si no se tienen privilegios de administrador en el sistema (cuando no se puede enviar paquetes TCP personalizados).
Detalles del "TCP Connect Scan"¶
- Realiza una conexión completa mediante el three-way handshake:
- Envío de un paquete
SYN
al puerto objetivo. - Si el puerto está abierto, se recibe un paquete
SYN/ACK
. - A continuación, se envía un paquete
ACK
para completar la conexión.
- Envío de un paquete
- Si el puerto está cerrado:
- Se recibe un paquete
RST
(Reset) como respuesta.
- Se recibe un paquete
- Una vez identificado el estado del puerto, se cierra la conexión inmediatamente.
Ventajas:¶
- No requiere privilegios de superusuario porque utiliza las funciones estándar del sistema operativo para establecer conexiones.
- Es más fiable en entornos donde no se pueden usar técnicas de escaneo que manipulen paquetes directamente.
Desventajas:¶
- Es más fácil de detectar porque se generan registros en los sistemas de registro del servidor objetivo, ya que la conexión se completa.
Uso en Nmap:¶
Para realizar un escaneo -sT
, simplemente usa:
nmap -sT [IP/rango] -p [puerto/rango]
└─$ nmap -sT 10.20.50.1 -p 22
Starting Nmap 7.95 ( https://nmap.org ) at 2025-01-16 16:54 CET
Nmap scan report for 10.20.50.1
Host is up (0.010s latency).
PORT STATE SERVICE
22/tcp open ssh
MAC Address: DC:2C:6E:D6:9F:EC (Routerboard.com)
Nmap done: 1 IP address (1 host up) scanned in 0.21 seconds
Stealth Scan (SYN Scan)¶
Envía un paquete SYN pero no completa el handshake, haciendo el escaneo más rápido.
nmap -sS [IP/rango] -p [puerto/rango]
FIN Scan¶
Envía un paquete TCP con el flag FIN. Es útil para evadir firewalls.
nmap -sF [IP/rango] -p [puerto/rango]
XMAS Scan¶
Envía un paquete TCP con múltiples flags activos (ACK, RST, SYN, URG, PSH). Funciona solo en sistemas UNIX.
nmap -sX [IP/rango] -p [puerto/rango]
NULL Scan¶
Envía un paquete TCP sin ningún flag activado. Útil para evadir firewalls.
nmap -sN [IP/rango] -p [puerto/rango]
UDP Scan¶
Detecta puertos UDP abiertos enviando datagramas UDP.
nmap -sU [IP/rango] -p [puerto/rango]
Autoevaluación¶
Pregunta:
¿Cuáles de las siguientes herramientas realizan un escaneo pasivo de los hosts en la red?
- Wireshark
- Netdiscover
- Nmap
- Arp-scan
Solución: - 1. Correcto: Wireshark es pasivo porque no genera tráfico activo. - 2. Incorrecto: Netdiscover utiliza mensajes ARP, lo que implica tráfico activo. - 3. Incorrecto: Nmap genera tráfico durante el escaneo. - 4. Incorrecto: Arp-scan realiza consultas activas en la red.