Capa de Transporte del modelo OSI

La siguiente es una reseña del CCNA sobre el nivel de transporte OSI. Os lo dejo aquí: Reseña a Capa de Transporte del modelo OSI

Netstat

Netstat (network statistics) es una herramienta de línea de comandos que muestra un listado de las conexiones activas de un ordenador, tanto entrantes como salientes. Se utiliza principalmente para encontrar problemas en una red y para medir el tráfico de red como una forma de calcular el desempeño de ésta.

Para conocer las opciones de netstat en Windows puedes escribir el comando netstat /?. En Linux debes utilizar man netstat.

Una descripción de los estados es la siguiente:

  • CLOSED : No hay conexión activa ni pendiente.
  • LISTEN: El servidor espera una llamada.
  • SYN RCVD: Llegó una solicitud de conexión; espera ACK.
  • SYN SENT: La aplicación comenzó a abrir una conexión.
  • ESTABLISHED: Estado normal de transferencia de datos.
  • FIN WAIT 1: La aplicación dijo que ya terminó.
  • FIN WAIT 2: El otro lado acordó liberar.
  • TIMED WAIT: Espera a que todos los paquetes mueran.
  • CLOSING: Ambos lados intentaron cerrar simultáneamente.
  • CLOSE WAIT: El otro lado inició una liberación.
  • LAST ACK: Espera a que todos los paquetes mueran.

Actividad 1. Configura una red con PacketTracer que incluya un PC y un servidor. Configura el PC del siguiente modo:

  • IP: 192.168.1.10
  • Máscara: /24
  • Puerta de enlace: 192.168.1.1

Después configura el servidor del siguiente modo:

  • IP: 192.168.1.2
  • Máscara: /24
  • Puerta de enlace: 192.168.1.1

Finalmente, activa el modo de simulación y realiza los siguientes apartados:

  1. Abre un navegador web y accede al servidor web escribiendo su dirección IP en la barra de direcciones.
  2. Toma capturas de pantalla donde se muestre la cabecera de la PDU de transporte durante la secuencia de conexión TCP. Para ello, resalta el bit o los bits de control activados.
  3. Una vez que se haya producido la conexión TCP, toma una captura de las cabeceras HTTP, tanto de solicitud del cliente, como de respuesta del servidor.
  4. Finalmente, toma una captura de cada una de las cabeceras TCP que llevan a cabo el cierre de la conexión. Para ello, resalta el bit o los bits de control activados.

Entrega las capturas, comprimidas en un archivo llamado Act1-transporte.zip

Actividad 2. Configura una topología con PacketTracer como la siguiente:

Configura el servidor DNS de manera que resuelva la url "ejemploudp.com" con la IP 192.168.1.5. Después realiza el siguiente apartado:

Activa el modo de simulación. En el ordenador cliente, abre un navegador web, y escribe en la barra de direcciones la url "ejemploudp.com". Captura las cabeceras UDP, así como el contenido de la PDU de UDP (DNS) utilizadas durante la resolución de la url.

Entrega las capturas, comprimidas en un archivo llamado Act2-transporte.zip

Práctica 3. Observa la siguiente topología:

Configura junto con otro compañero la topología indicada. Acuerda con tu compañero el direccionamiento de red, y realiza las acciones necesarias para que sea posible acceder desde una red a la otra. Para ello, puedes utilizar probar a acceder al servidor web desde el cliente Windows de la otra red.

Una vez configurada la topología, realiza un telnet a servidor web de la otra red desde el cliente windows. Para ello, debes utilizar el comando siguiente: telnet <ip-servidor> 80

Una vez hecho esto, realiza las siguientes tareas:

  • Obtén una lista de las conexiones activas de tu máquina TCP y UDP empleando el comando netstat. Determina las conexiones iniciadas al puerto 80.
  • Para cada conexión, analiza su estado y explica lo que significa.

Realiza una captura del resultado obtenido al ejecutar el comando netstat, y guárdala con el nombre Act3-transporte.png. Guarda el documento de texto explicativo con el nombre Act3-transporte.txt.

Práctica 4. Ponte de acuerdo con un compañero, e inicia una sesión de escritorio remoto en su ordenador (o máquina virtual) empleando la aplicación TeamViewer. Una vez hecho esto, utiliza el comando netstat para averiguar la conexión que estás utilizando para dicha sesión.

Realiza una captura donde se pueda ver resaltada la conexión establecida por TeamViewer, y guárdala con el nombre Act4-transporte.png.

Para la siguiente actividad, es conveniente recordar el contenido de la cabecera TCP:

  • El número de puerto de origen TCP pertenece al host de la sesión TCP que inició una conexión. Generalmente el valor es un valor aleatorio superior a 1023.
  • El número de puerto de destino se utiliza para identificar el protocolo de capa superior o la aplicación en un sitio remoto. Los valores dentro del intervalo 0 - 1023 representan a los llamados "puertos bien conocidos" y están asociados con servicios y aplicaciones conocidos (como se describe en RFC 1700, telnet, File Transfer Protocol (FTP), HyperText Transfer Protocol (HTTP), etc.). La combinación de campo cuádruple (dirección IP de origen, puerto de origen, dirección IP de destino, puerto de destino) identifica de manera exclusiva la sesión, tanto del emisor como del receptor.
  • El número de secuencia especifica el número del último octeto en un segmento.
  • El número de acuse de recibo especifica el próximo octeto que espera el receptor.
  • Los bits de código tienen un significado especial en la administración de sesión y en el tratamiento de los segmentos. Entre los valores interesentes se encuentran:
    • ACK (Acuse de recibo de un segmento),
    • SYN (Sincronizar, configurar sólo cuando una sesión TCP nueva se negocia durante un protocolo de enlace de tres vías).
    • FIN (Finalizar, solicitud para cerrar la sesión TCP).
  • El tamaño de la ventana es el valor de la ventana deslizante; cuántos octetos se pueden enviar antes de esperar un acuse de recibo.
  • El puntero urgente se utiliza sólo con un señalizador URG (Urgente) cuando el emisor necesita enviar datos urgentes al receptor.
  • Opciones: La única opción definida actualmente es el tamaño de segmento TCP máximo (valor opcional).

Práctica 5. Abre Wireshark e inicia la escucha en la interfaz de red con la que te conectas a Internet. Aplica el filtro TCP, para poder ver solamente los paquetes TCP. Abre una página web, y recoge el tráfico TCP generado. Después, céntrate en los paquetes TCP correspondientes a un inicio de sesión TCP, y registra los siguientes datos:

  • Valor de los campos de control SYN y ACK
  • Dirección IP de origen
  • Dirección IP destino
  • Número de puerto de origen
  • Número de puerto de destino
  • Número de secuencia
  • Número de acuse de recibo
  • Longitud del encabezado
  • Tamaño de la ventana

Entrega un documento de texto con los datos obtenidos, llamado Act5-transporte.txt.

Práctica6. Continua analizando el tráfico capturado en el ejercicio anterior, pero ahora céntrate en los paquetes TCP relativos a un cierre de sesión. Registra los siguientes datos:

  • Valor de los campos de control FIN y ACK
  • Dirección IP de origen
  • Dirección IP destino
  • Número de puerto de origen
  • Número de puerto de destino
  • Número de secuencia
  • Número de acuse de recibo
  • Longitud del encabezado
  • Tamaño de la ventana

Entrega un documento de texto con los datos obtenidos, llamado Act6-transporte.txt.

Práctica 7. Vuelve a capturar el tráfico mediante Wireshark, mientras abres la página www.yahoo.es. En esta ocasión, aplica el filtro UDP para poder ver solamente los paquetes UDP. Deberás ver al menos los paquetes UDP relativos a la resolución del nombre www.yahoo.es. Céntrate en el primer paquete UDP que encuentres, y registra la siguiente información:

  • Dirección IP de origen
  • Dirección IP destino
  • Número de puerto de origen
  • Número de puerto de destino
  • Longitud de mensaje UDP
  • Checksum de UDP

Entrega un documento de texto con los datos obtenidos, llamado Act7-transporte.txt.

NMAP

Ahora que sabemos lo que es el nivel de transporte, y lo que son los puertos, voy a hablaros un poco de una herramienta para el análisis de puertos de máquinas remotas.

Nmap es una aplicación con solera. Es aparentemente modesta respecto de otras más sofisticadas, con atractivos entornos gráficos. Sin embargo, Nmap sigue siendo ampliamente usado. Podeis encontrar un fantástico manual sobre Nmap en http://nmap.org/man/es/index.html.

Nosotros no nos vamos a meter a fondo en esto, ya que nuestro tema de interés no es la seguridad sino los puertos TCP y UDP. Para entender bien esto, tendríamos que ver primero técnicas para proteger un equipo o una red. Esto se ve en 2º de ASIR, así que paciencia.

En primer lugar hay que descargarse Nmap. Si estáis en Linux, usad los repositorios disponibles. En sistemas basados en Debian, ya sabeis (aptitude install nmap). Si estáis en Windows, podeis usar un exe para Nmap (http://download.insecure.org/nmap/dist/nmap-4.20-setup.exe).

Una vez instalado, podemos ejecutarlos desde una consola de comandos.

Análisis de puertos con NMAP

Nota: El texto siguiente ha sido obtenido de http://nmap.org

Nmap comenzó como un analizador de puertos eficiente, aunque ha aumentado su funcionalidad a través de los años, aquella sigue siendo su función primaria. La sencilla orden nmap ip_destino analiza más de 1660 puertos TCP del equipo . Aunque muchos analizadores de puertos han agrupado tradicionalmente los puertos en dos estados: abierto o cerrado, Nmap es mucho más descriptivo. Se dividen a los puertos en seis estados distintos: abierto, cerrado, filtrado, no filtrado, abierto|filtrado, o cerrado|filtrado.

Estos estados no son propiedades intrínsecas del puerto en sí, pero describen como los ve Nmap. Por ejemplo, un análisis con Nmap desde la misma red en la que se encuentra el objetivo puede mostrar el puerto 135/tcp como abierto, mientras que un análisis realizado al mismo tiempo y con las mismas opciones, pero desde Internet, puede presentarlo como filtrado.

  • Estado abierto: Una aplicación acepta conexiones TCP o paquetes UDP en este puerto. Son los empleados por los atacantes para vulnerar la seguridad de una máquina.
  • Estado cerrado: Puerto inaccesible. Recibe y responde a las sondas de Nmap, pero no tiene una aplicación escuchando en él.
  • Estado filtrado: Nmap no puede determinar si un dispositivo de filtrado (reglas de un router, firewall dedicado o por software) previene su sondeo descartando los paquetes.
  • Estado no filtrado: El puerto es accesible, pero NMap no puede determinar si el puerto está abierto o cerrado.
  • Estado abierto|filtrado: Nmap no sabe si el puerto está abierto o filtrado.
  • Estado cerrado|filtrado: Nmap no sabe si un puerto se encuentra cerrado o filtrado.

Vamos a ver algunos ejemplos de ejecución de nmap:

Para hacer un análisis de puertos TCP abiertos de ip-destino

nmap ip-destino

Para activar la detección de sistema operativo:

nmap -O

Para hacer un sondeo de puertos TCP/UDP:

A) Sondeo SYN: Se envía un paquete SYN, como si se fuera a abrir una conexión real y después se espera una respuesta. Si se recibe un paquete SYN/ACK esto indica que el puerto está en escucha (abierto), mientras que si se recibe un RST (reset) indica que no hay nada escuchando en el puerto. Si no se recibe ninguna respuesta después de realizar algunas retransmisiones entonces el puerto se marca como filtrado. También se marca el puerto como filtrado si se recibe un error de tipo ICMP no alcanzable

nmap -sS ip-destino

B) Sondeo connect(): Es similar al sondeo SYN, pero para situaciones en que no se puede emplear SYN directamente (probablemente por falta de privilegios).

nmap -sT ip-destino

C) Sondeo UDP: Aunque la mayoría de los servicios más habituales en Internet utilizan el protocolo TCP, los servicios UDP también son muy comunes. Tres de los más comunes son los servicios DNS, SNMP, y DHCP (puertos registrados 53, 161/162, y 67/68 respectivamente).

namp -sU ip-destino

Existen muchos más sondeos que puedes conocer aquí (http://nmap.org/man/es/man-port-scanning-techniques.html). Para especificar los puertos y el orden de sondeo, tenemos los siguientes ejemplo:

Para escanear un conjunto de puertos UDP:

nmap -sU -p U:53,111,137 ip-destino

Para escanear un conjunto de puertos TCP:

nmap -sT -p T:21-25,80,139 ip-destino

Para conocer la versión del software asociado a un puerto:

nmap -sT -sV -p T:21-25,80,139 ip-destino

Nmap es mucho más extenso que todo esto, aunque nos sirve para afianzar lo aprendido en teoría.

Podemos encontrar muchas herramientas para hacer análisis de puertos. Algunas pueden determinar la aplicación que corre detrás del puerto, e incluyen informes de vulnerabilidades de la aplicación, aunque suelen ser de pago, como por ejemplo, GFI Languard (http://www.gfi.com/lannetscan).

Práctica 7. Estudia los puertos tanto TCP como UDP que tiene abiertos el servidor indicado en el aula. Haz una lista con los resultados, distinguiendo entre puertos well-known y registrados. Averigua también cuál es la versión más probable de cada aplicación y del sistema operativo. Indaga sobre la funcionalidad del/los puerto/s que has encontrado abierto/s.

Entrega dos archivos. El primero de ellos será una captura de pantalla llamada Act7-transporte.png donde se pueda ver tu nombre y además se muestre la ejecución del comando. El segundo archivo será un documento de texto llamado Act7-transporte.txt

Práctica 8. Realiza el ejercicio anterior pero ahora utiliza como objetivo la máquina de otro compañero.

Entrega dos archivos. El primero de ellos será una captura de pantalla llamada Act8-transporte.png donde se pueda ver tu nombre y además se muestre la ejecución del comando. El segundo archivo será un documento de texto llamado Act8-transporte.txt

Saludos.