Protocolo de Transmisión / Protocolo de Internet, En redes y en la era moderna es un protocolo del cual todos usamos para hacer una conexión a internet y realizar todo el envío de paquetes. el modelo OSI y el Modelo TCP-IP son modelos de referencia para la comunicación en redes, el modelo OSI es más detallado y teórico, mientras que el modelo TCP/IP es más simple y ampliamente implementado en la práctica.
Uno de los conocimientos fundamentales que todo aspirante a hacker ético o pentester debe tener es comprender en profundidad el modelo TCP/IP. Este modelo es esencial para entender cómo funciona la comunicación en redes y proporciona una base sólida para realizar evaluaciones de seguridad efectivas
Arquitectura de Red del Modelo TCP/IP:
El modelo TCP/IP, que significa Protocolo de Control de Transmisión/Protocolo de Internet, es un conjunto de protocolos utilizado para la comunicación en redes de computadoras. Comprender su arquitectura es fundamental para cualquier persona interesada en el hacking y el pentesting. El modelo se compone de cuatro capas:
- la capa de aplicación
- la capa de transporte
- la capa de Internet y la capa de enlace de datos.
Cada capa desempeña un papel crucial en el flujo de datos y en la seguridad de la red.
Identificar Vulnerabilidades en las Capas del Modelo TCP/IP
Al aprender el modelo TCP/IP, los hackers éticos y pentesters pueden identificar posibles vulnerabilidades en cada capa del modelo. Esto incluye comprender cómo funcionan los protocolos en cada capa y qué debilidades podrían ser explotadas. Desde ataques en la capa de aplicación, como inyección de código o ataques de fuerza bruta, hasta ataques a nivel de enlace de datos, como envenenamiento de ARP, el conocimiento profundo del modelo TCP/IP es esencial para descubrir y explotar vulnerabilidades.
Es muy importante tener en cuenta la serie de protocolos mas comunes tanto por TCP y UDP ya que es donde se llegan a emplear una gran cantidad de vulnerabilidades en ellos, en este punto hablamos de una capa de transporte y dicha capa se refiere al tipo de conectividad que tengamos con alguno de los protocolos por ello es importante mantener segura y cifrada en cada uno de estos protocolos de red. Con un puerto que este abierto es muy atractivo para un ciberdelincuente ya que puede realizar una conexión remota dependiendo del servidor y puerto que lleguemos a usar. Antes de entrar mas a detalle a los protocolos veremos los tipos de transporte que están en capa 3 del modelo TCP-IP y en que se diferencian
Capa de transporte - Modelo TPC-IP
La capa 3 del modelo TCP/IP se conoce como la capa de Internet o capa de red. Esta capa se encarga de proporcionar conectividad y enrutamiento de datos a través de la red. Su objetivo principal es enviar paquetes de datos desde el origen hasta el destino a través de una o varias redes interconectadas. En esta capa, se utilizan direcciones IP para identificar los dispositivos de origen y destino, y los protocolos de enrutamiento se encargan de determinar la mejor ruta para enviar los paquetes.
Dentro de la capa de Internet, se utilizan varios protocolos, entre los cuales los más conocidos son TCP (Transmission Control Protocol), UDP (User Datagram Protocol) y SCTP (Stream Control Transmission Protocol). A continuación describiré mas a detalle de cada uno de ellos
TCP (Transmission Control Protocol)
TCP es un protocolo orientado a la conexión y confiable. Proporciona un servicio de entrega de datos garantizado y ordenado. Es ampliamente utilizado para aplicaciones que requieren una entrega confiable de datos, como la transferencia de archivos, el envío de correos electrónicos y la navegación web. TCP establece una conexión entre el origen y el destino antes de enviar los datos y utiliza técnicas de confirmación y retransmisión para asegurar que los datos lleguen correctamente. También controla la congestión en la red para evitar la pérdida de paquetes. Este es de los mas comunes a la hora de conectarnos a internet y por lo cual debemos de aprenderlo muy bien ya que incluye unas flags y el proceso de establecimiento de conexión conocido como Three-Way Handshake.
Flags TCP
SYN (Synchronize): Se establece en el Segmento SYN y se utiliza para iniciar una conexión y sincronizar los números de secuencia iniciales.
ACK (Acknowledgment): Se utiliza para indicar que un paquete ha sido recibido correctamente. Se establece en el Segmento ACK y se utiliza tanto en el Three-Way Handshake como en la transferencia de datos para confirmar la recepción de paquetes.
FIN (Finish): Se establece en el Segmento FIN y se utiliza para finalizar una conexión de manera ordenada. Cuando un dispositivo desea cerrar la conexión, envía un Segmento con la flag FIN, y el otro dispositivo responde con un ACK para confirmar el cierre.
RST (Reset): Se establece en el Segmento RST y se utiliza para abortar abruptamente una conexión o para responder a una situación de error. Cuando un dispositivo recibe un Segmento con la flag RST, se entiende que la conexión debe ser reiniciada y se finaliza inmediatamente.
PSH(Push): indica al receptor que tiene que procesar los segmentos a medida que son recibidos y que no se deben almacenar en el buffer, esta flag se establece en el segmento TCP cuando se desea una entrega urgente de los datos y se utiliza para agilizar la transmisión y reducir la latencia en aplicaciones que requieren una transferencia más rápida y en tiempo real.
UR(Urgent): es parecido a la flag PSH, pero en este caso lo que hacemos es priorizar aquellos segmentos marcados como urgente sobre los no marcados. Cuando se establece la flag URG, se utiliza un puntero urgente dentro del encabezado TCP para indicar la posición del último byte de datos urgentes dentro del segmento.
Three-Way Handshake
Solicitud de Conexión (SYN)
- El dispositivo de origen envía un paquete TCP especial llamado Segmento SYN al dispositivo de destino.
- El Segmento SYN contiene una secuencia de números aleatorios (ISN - Initial Sequence Number) y la indicación de la sincronización (SYN flag) establecida
Respuesta y Solicitud de Confirmación (SYN-ACK)
- Si el dispositivo de destino está dispuesto a establecer la conexión, responde con un paquete TCP llamado Segmento SYN-ACK.
- El Segmento SYN-ACK contiene su propio ISN y tiene la indicación de sincronización (SYN) y la confirmación de recepción (ACK) establecidas.
- El dispositivo de destino también incrementa el número de secuencia inicial (ISN) para futuros segmentos.
Confirmación (ACK)
- Finalmente, el dispositivo de origen envía un paquete TCP denominado Segmento ACK para confirmar que ha recibido el Segmento SYN-ACK.
- El Segmento ACK tiene la indicación de confirmación (ACK) establecida y contiene el número de secuencia del siguiente byte que espera recibir.
Una vez completado el Three-Way Handshake, la conexión TCP se considera establecida y ambos dispositivos pueden comenzar a intercambiar datos de manera confiable.
UDP (User Datagram Protocol)
UDP es un protocolo sin conexión y no confiable. Proporciona un servicio de entrega de datos no garantizado, lo que significa que los paquetes pueden perderse o llegar desordenados. UDP se utiliza en aplicaciones que no requieren una entrega confiable de datos, como transmisiones en tiempo real, juegos en línea y servicios de streaming. Al ser un protocolo sin conexión, no se establece una conexión previa antes de enviar los datos, lo que lo hace más rápido y eficiente que TCP. Sin embargo, al no haber confirmación de entrega, el usuario o la aplicación deben manejar la detección y corrección de errores.
SCTP
SCTP (Stream Control Transmission Protocol): SCTP es un protocolo orientado a la conexión y confiable, similar a TCP. Sin embargo, a diferencia de TCP, SCTP es capaz de admitir múltiples flujos de datos dentro de una misma conexión. Esto significa que puede transmitir y recibir datos de forma paralela a través de distintos flujos. SCTP está diseñado para aplicaciones que requieren una mayor fiabilidad y rendimiento que UDP, pero no necesitan la complejidad y el control de congestión de TCP. Algunas de las aplicaciones de SCTP incluyen telefonía sobre IP, transferencia de archivos y aplicaciones de mensajería.
Wireshark - Explicación Three-Way Handshake
La captura de Wireshark muestra el proceso del Three-Way Handshake utilizando el protocolo TCP. El Three-Way Handshake como lo mencioné antes es el método utilizado por TCP para establecer una conexión confiable entre un dispositivo de origen y un dispositivo de destino antes de que se pueda intercambiar cualquier dato.
El dispositivo de origen envía un Segmento SYN al dispositivo de destino para iniciar la conexión. Este Segmento SYN contiene un número de secuencia inicial (ISN) aleatorio y la flag SYN establecida.
El dispositivo de destino responde al Segmento SYN con un Segmento SYN-ACK. En este Segmento SYN-ACK, el dispositivo de destino establece su propio ISN aleatorio y establece las flags SYN y ACK. La flag SYN indica la sincronización y la flag ACK confirma la recepción del Segmento SYN.
Finalmente, el dispositivo de origen envía un Segmento ACK para confirmar la recepción del Segmento SYN-ACK. Este Segmento ACK tiene la flag ACK establecida y contiene el número de secuencia del siguiente byte que espera recibir.
Protocolos mas comunes TCP
Protocolo | Descripción |
---|---|
21 - FTP | (File Transfer Protocol) – permite la transferencia de archivos entre sistemas. |
22 - SSH | (Secure Shell) – un protocolo de red seguro que permite a los usuarios conectarse y administrar sistemas de forma remota. |
23 - Telnet | un protocolo utilizado para la conexión remota a dispositivos de red. |
80 - HTTP | (Hypertext Transfer Protocol) – el protocolo que se utiliza para la transferencia de datos en la World Wide Web. |
443 - HTTPS | (Hypertext Transfer Protocol Secure) – la versión segura de HTTP, que utiliza encriptación SSL/TLS para proteger las comunicaciones web. |
137 - 139 NetBios | (Network Basic Input/Output System) proporciona servicios de nombres, servicios de sesión y servicios de datagramas para la comunicación entre computadoras en una red. |
53 - DNS | Domain Name System) – un sistema que traduce nombres de dominio en direcciones IP. |
445 - SMB | (Server Message Block) es un protocolo de red utilizado para compartir archivos, impresoras y otros recursos en una red local. SMB utiliza diferentes puertos dependiendo de la versión del protocolo y de cómo se implemente |
Protocolos mas comunes UDP
Protocolo | Descripción |
---|---|
53 - DNS | Domain Name System) – un sistema que traduce nombres de dominio en direcciones IP. |
67-69 DHCP | (Dynamic Host Configuration Protocol) – un protocolo utilizado para asignar direcciones IP y otros parámetros de configuración a los dispositivos en una red. |
69 - TFTP | (Trivial File Transfer Protocol) – un protocolo simple utilizado para transferir archivos entre dispositivos en una red. |
123 - NTP | (Network Time Protocol) – un protocolo utilizado para sincronizar los relojes de los dispositivos en una red |
161 - SNMP | (Simple Network Management Protocol) – un protocolo utilizado para administrar y supervisar dispositivos en una red. |