El descubrimiento de sistemas es el proceso a través del cual identificaremos hosts conectados en una red. En un test de penetración utilizaremos esta información para identificar víctimas potenciales para montar nuestro ataque a posteriori. Identificando estos hosts podremos hacernos una idea de la distribución dentro de la red de los mismos a través de sus IP. Este proceso lo podemos dividir en los diferentes protocolos que utilizaremos dependiendo de a la capa del modelo OSI a la cual correspondan.

Por lo general los protocolos que utilizan capas bajas del modelo OSI, como los que veremos a continuación, incluyen una respuesta del host de destino por lo que aprovecharemos este factor para nuestro escaneo. Para cada una de estas capas vamos a ver brevemente el protocolo que utilizaremos y los pros y los contras de cada uno de ellos.

Descubrimiento en capa 2 con ARP

El protocolo ARP (Address Resolution Protocol) se utiliza para traducir direcciones IP (capa 3) en direcciones físicas MAC (Capa 2). Cuando un sistema necesita localizar la dirección física de un IP envía un paquete broadcast ARP request al segmento local de red. Este paquete simplemente pregunta quién tiene esta IP? En ese momento el sistema con esa IP responderá de vuelta con otro paquete ARP reply y el sistema emisor actualizará su cache ARP.

Como no se emplea ningún método previo de identificación podemos utilizar este método recolectar información de la red lanzando toda una série de peticiones ARP.

Ventajas

  • Muy rápido
  • Altamente confiable

Desventajas

  • No podremos descubrir hosts remotos ya que ARP no es enrutable

Descubrimiento en capa 3 con ICMP

Este suele ser el método más común de descubrimiento de hosts conectados. El comando Ping utiliza ICMP (Internet Control Message Protocol). Una función particularmente útil de ICMP es el uso de peticiones echo y las correspondientes respuestas echo. Podemos entender estás peticiones como un “Estás ahí?”. Utilizando este protocolo podremos obtener rápidamente un listado de IPs conectadas en una red, la desventaja de este sistema es que posiblemente esté filtrado por lo que las respuestas no serán del todo fiables almenos no tanto como con el método anterior con ARP.

Ventajas

  • Puede descubrir sistemas remotos (enrutable)
  • Relativamente rápido

Desventajas

  • Más lento que el descubrimiento con ARP
  • A menudo filtrado por Firewalls

Descubrimiento en capa 4 con TCP

En este caso el procedimiento consistirá en enviar paquetes TCP a potenciales sistemas en la red con diferentes flag bits activados. Cada una de estas configuraciones activará una respuesta diferente que pueden ser usadas a su vez para identificar hosts conectados. Paquetes no solicitados del tipo Finish (FIN) o Acknowledge (ACK) suelen activar respuestas del tipo Reset (RST). Paquetes Synchronize (SYN) pueden provocar respuestas SYN+ACK o RST dependiendo del estado del servicio.. En este momento del test de penetración el objetivo no es tanto el de obtener una respuesta en concreto sino el de recibir alguna respuesta para poder identificar al host objetivo como conectado.

Ventajas

  • Puede descubrir sistemas remotos (enrutable)
  • Más fiable que ICMP (Debido a que es más dificil de filtrar de manera efectiva)

Desventajas

  • Los Firewalls pueden producir resultados poco fiables
  • Es una técnica mucho más lenta que las anteriores

Descubrimiento en capa 4 con UDP

En este caso la técnica es lanzar paquetes UDP contra diferentes puertos para tratar de arrancar una respuesta al host de destino. Esta técnica puede ser efectiva contra sistemas con todos los servicios TCP filtrados. Es una técnica que en ocasiones puede ser poco fiable ya que sistemas de este tipo pueden responder a la petición UDP con una respuesta ICMP (que puede ser a su vez filtrada por un Firewall) mientras que otros pueden responder con respuestas únicas para el servicio en cuestión.

Ventajas

  • Puede descubrir sistemas remotos (enrutable)
  • Puede descubrir sistemas con todos los servicios TCP filtrados

Desventajas

  • Utilizarlo de manera masiva arroja resultados inconsistentes
  • Cada servicio requiere configuraciones individuales por lo que el tiempo de escaneo aumenta

En próximos artículos veremos ejemplos prácticos de cómo realizar estos tipos de escaneo en nuestro laboratorio con programas como Scapy, Metasploit, Nmap, etc...