27
El nivel de transporte: TCP y UDP Puertos José María Morales Vázquez [email protected]

Vip genial conceptos de red 127145558 capa-de-transport-e

Embed Size (px)

Citation preview

El nivel de transporte:TCP y UDP

Puertos

José María Morales Vá[email protected]

Funciones

● En la capa de enlace teníamos un servicio de entrega de mensajes entre equipos de la misma red.

● La capa de transporte es la encargada de entregar mensajes entre equipos aunque no estén en la misma red.

● En la familia TCP/IP tenemos dos protocolos en este nivel: uno fiable y orientado a conexión (TCP) y otro no fiable y no orientado a conexión (UDP)

Diferencias entre TCP y UDP

● TCP (Transmission Control Protocol) entrega los envíos en orden y se asegura de que no hay pérdidas enviando acuses de recibo que, si no llegan, sirven para que el emisor reenvíe los paquetes

● UDP (User Datagram Protocol) no entrega en orden ni asegura la entrega de todos los paquetes.

● La conexión con TCP se “negocia” y se “cierra” formalmente pero en UDP no

● UDP se usa cuando es más importante la velocidad que la fiabilidad. Todos los envíos de vídeo y sonido por red, por ejemplo, lo usan.

Puertos● La capa de transporte añade el concepto de

puerto, un número de 16 bits.

● Tenemos un máximo de 65536 puertos.

● El uso de puertos es lo que permite que existan múltiples conexiones simultaneas

● Cada aplicación que requiere de la red se asocia a uno o varios puertos, según su necesidad, tanto para el envío como para la recepción de información. El puerto usado no tiene que (y no suele) ser el mismo en cada extremo de la conexión

● Los puertos son usados tanto por TCP como por UDP y son independientes para cada uno de ellos.

Identificación de los puertos

● Los puertos del 0 al 1023 son los “bien conocidos” (well-knows) y están asociados a aplicaciones de uso generalizado y asignados por la IANA.

● Entre el 1024 y el 49151 se encuentran los llamados “registrados” y del 49152 en adelante se llaman “temporales, dinámicos, efímeros o privados”. Todos ellos se suelen usar para conexiones temporales, pero los registrados, además, pueden ser usados por aplicaciones de cliente que no tienen un puerto asignado por la IANA

Listas de puertos

● Podemos ver los puertos y sus aplicaciones asociadas en:● http://www.iana.org/assignments/port-numbers● En windows en:

c:\windows\system32\drivers\etc\services● En GNU/Linux: en /etc/services

TCP

● Es un protocolo fiable porque garantiza que los datos llegan correctamente. Para ello, el receptor envía una confirmación por cada paquete de datos que recibe. Si pasado un tiempo el emisor no recibe confirmación de algún paquete, lo retransmite. El mecanismo usado para esto se llama protocolo de ventana deslizante.

● Los paquetes enviados se numeran para reordenarlos y para facilitar estas confirmaciones.

● Es un protocolo orientado a la conexión pues se establece una negociación previa a la transmisiń de los datos que se cierra formalmente una vez terminada la transmisión.

Protocolo de ventana deslizante

● Se usa para recibir las confirmaciones de envío y para no inundar al receptor con mensajes que no puede procesar.

● El emisor divide su envío en paquetes. En un protocolo de ventana deslizante de tamaño 8, por ejemplo, el emisor mantiene hasta 8 paquetes sin confirmación de envío.

● El receptor envía un ACK por el último envío recibido correctamente y el emisor desplaza la ventana cuando esto ocurre.

● Los mensajes llevan un código CRC que les permite corregir o detectar la mayoría de los errores.

Establecimiento de la conexión

Cierre de la conexión

UDP

● UDP no es fiable porque los mensajes pueden llegar dañados, duplicados o no llegar.

● UDP incorpora un mecanismo de checksum para ver si los mensajes llegan dañados, pero no hace nada por repararlos o reclamarlos.

● En una transmisión UDP no se realiza una conexión previa ni un cierre ordenado. Se empieza a retransmitir sin más.

● La transmisión UDP es unidireccional y el receptor no puede contestar al emisor.

Escáneres de puertos

● netstat es una utilidad del sistema operativo, disponible en windonws y en linux (aunque con algunas diferncias en el significado de los argumentos), que nos permite ver los puertos que está usando nuestro equipo, tanto de conexiones entrantes como salientes.

● Existen aplicaciones denominadas escáneres de puertos que sirven para ver las aplicaciones que un equipo tiene a la escucha y los puertos que usa.

● Los escáneres de puertos son ampliamente usados en seguridad y ataques de intrusión.

netstat en windows

● Proporciona información sobre el estado de la red y las conexiones abiertas. Algunos ejemplos:

● Estadísticas: netstat -e● Estadísticas por protocolo: netstat -es● Visualiza todas las conexiones activas o en escucha:

netstat -a● Da el nombre del binario que ha abierto la conexión: netstat

-b● Da el nombre de todos los archivos (dll, etc) involucrados en

la conexión: netstat -bv● Añadiendo un número al final en casi todas la anteriores

indicamos un intervalo de refresco en segundos y muestra la información continuamente. Por ejemplo, netstat -a 10

netstat en Linux● Ejemplos:

● Información de los interfaces de red: netstat -i● Estadísticas de uso: netstat -s● Muestra todas las conexiones, activas o a la escucha,

y el nombre del programa involucrado: netstat -antpe● Idem al anterior pero sólo muestra las conexiones a

la escucha: netstat -lntpe● Idem al anterior pero sólo muestra las conexiones

activas: netstat -ntpe● La opción c añadida a casi todas las anteriores

muestra la información en modo continuo. Por ejemplo netstat -cntpe

nmap

● nmap es el mejor escaner de puertos. Es gratuito, de código libre y capaz no sólo de ver los puertos abiertos de una máquina sino el servicio y la versión del mismo que está ejecutándose al otro lado, la versión del sistema operativo, si existe algún tipo de cortafuegos o filtro de paquetes, etc.

● Es multiplataforma y aunque se prefiere la versión en línea de comando, dispone de una interfaz gráfica llamada Zenmap.● http://nmap.org/download.html● http://www.nmap.org/zenmap/

nmap en línea de comando

Zenmap, la interfaz gráfica de nmap

Auditoría con nmap

● Empezamos con un Ping Scan (-sP) para saber que hosts existen y están accesibles

Auditoría con nmap (y II)

● Podemos especificar las direcciones de diferentes formas:● nmap 192.168.1.1● nmap 192.168.1.0/24● nmap 192.168.1.128-255● nmap 192.168.1.1 192.168.1.10 192.168.1.13● nmap www.elpais.com

● Haz una prueba y observa las diferencias en los resultados cuando escaneamos hosts en nuestra propia red o en otra.

Auditoría con nmap (y III)

● Ahora vamos a elegir objetivo y tratar de identificar puertos abiertos, servicios, versiones, etc.

● Por defecto, nmap escanea sólo los 1000 puertos más comunes.

● Con la opción -F (fast) limita a los 100 más comunes.

● Con la opción --top-ports N limita a los N más comunes

● Con la opción -p podemos especificar que puertos

un número determinado: -p 22,25,110

un rango: -p1-1000

todos los los puertos: -p-● Cuantos más puertos elijamos más lento será el escaneo

Auditoría con nmap (y IV)● Algunas otras opciones interesantes:

-v (de verbose) da explicaciones acerca de lo que está haciendo el scanner

-vv muestra aún más información

--reason Da razones acerca de los resultados que da sobre los puertos

-sS lanza el mensaje de SYN y espera la respuesta, pero no establece la conexión

-A realiza una detección automática del sistema operativo y de los servicios que escuchan en los puertos abiertos

-sU escanea los servicios UDP en lugar de los TCP

-f fragmenta los envíos para que sean más difíciles de detectar por un cortafuegos o un IDS/IPS

Auditoría con nmap (y V)

Auditoría con nmap (y VI)

Auditoría con nmap (y VII)

● Las últimas versiones admiten ataques por fuerza bruta a algunos servicios

Auditoría con nmap (y VIII)

● Scripts para ataques por fuerza bruta incluidos en la versión actual:● afp-brute, domcon-brute, drda-brute, ftp-brute,

http-brute, http-form-brute, informix-brute, iscsi-brute, ldap-brute, ms-sql-brute, mysql-brute, netbus-brute, oracle-brute, oracle-sid-brute, pgsql-brute, pop3-brute, smb-brute, snmp-brute, svn-brute, telnet-brute, vnc-brute

Auditoría con nmap (y IX)

● Existen muchos otros scripts útiles para nmap: para interrogar servidores dhcp (dhcp-discover), para leer las cabeceras de los servidores web (http-headers), para ver si un servidor de ftp admite acceso ańonimo (ftp-anon), para saber si un servidor de correo está abierto y se puede usar para enviar spam (smtp-open-relay), etc.

● La lista completa y la referencia de para que sirven está aquí:● http://nmap.org/nsedoc/index.html

nmap y el cine

● nmap es tan popular entre los hackers que aparece en numerosas películas: Matrix, La Jungla de Cristal, Battle Royale, Millenium, el ultimatum de Bourne, etc.