9. Training Hub I: Vulnerabilities Analyst – PD-WRL-007 | Funciones Básicas de Evaluación y Gestión de la Vulnerabilidad | Fundamentos de Internet

Resumen

¿Sabes qué es Internet? ¿Cómo funciona? ¿Qué protocolos usan los equipos para comunicarse? Esto y más en el siguiente lab 😉

Definiciones

En este paso veremos algunas definiciones y conceptos básicos. Veremos también cómo se generan, envían y reciben 0s y 1s, es decir, cómo funciona el lenguaje de los ordenadores, cómo están interconectados entre ellos para conseguir lo que se conoce como internet, cuál es la estructura o jerarquía que existe en internet y por último veremos la compartición de recurso dentro de los núcleos de la red de internet.

Tras esta breve introducción pasamos a las definiciones anteriormente comentadas.

¿Qué es una red de ordenadores?

No es más que un conjunto de equipos informáticos conectados entre sí de forma indirecta o directa (cable).

Siguiendo la definición anterior, para que un equipo que esté en una red A consiga conectarse a otro que está en otra red B, se necesita un encaminador, es decir, un dispositivo que se encarga de reenviar el paquete entre una red (sistema de interconexión que posibilita la comunicación entre aplicaciones) y otra.

Además, al conjunto de estas dos redes se le llama Inter-red (conjunto de redes). Si nos fijamos, Internet es una Inter-red, pero con extensión mundial.

Para que dos equipos se logren comunicar (ya sea en la misma red o en otra), tienen que transmitir (escribir), recibir e interpretar (leer) 0s y 1s. Para eso, cuentan con NICs o tarjetas de red, que son las encargadas de conectar los dispositivos a nivel de enlace. Esas NICs, leen y escriben 0s y 1s, y a la velocidad a la que lo hacen, es lo que se conoce como régimen binario.

¿Qué es un servicio?

Es una tarea que se realiza por un usuario, que puede ser un ente físico o un proceso (o procesos) entre dos entidades que colaboran para dar el servicio.

Para que el servicio se pueda llegar a dar, los procesos entre dos entidades pares se tienen que comunicar. Para lograr esa comunicación, dichos mensajes deben tener un formato, orden y se deben realizar una serie de acciones para que el mensaje sea recibido, y esto es lo que se conoce como protocolo. Es decir, el protocolo es el que define el formato y el orden de los mensajes enviados y recibidos, así como de las acciones que se tienen que llegar a hacer para que ese mensaje sea recibido.

Antes, se comentó el uso de encaminadores para que un mensaje viajase desde una red A hacia otra B. Los paquetes que viajan entre las redes pueden llegar a dar más de un salto (pasan por más de un encaminador) hasta llegar a la red destino. Los encaminadores usan el encaminamiento y el reenvío para lograr que el paquete origen llegue al destino deseado. ¿Pero a qué hacen referencia estos dos términos?

  • El encaminamiento es la determinación global del mejor camino entre un origen y un destino siguiendo un criterio.
  • El reenvío es la determinación del siguiente salto de un paquete en cada nodo.

Los sistemas binarios (digitales) se usan porque presentan una serie de características como son la inmunidad frente al ruido, bajo consumo, diseño simple, tamaño mínimo, precisión, respuesta dinámica y Fan In/ Fan Out.

Se ha hablado del uso de 0s y 1s, pero ¿cómo conseguimos esos 0s y 1s a nivel físico? La tecnología que hay detrás, son los denominados transistores.

En los circuitos se suelen implementar lo que se conocen como puertas lógicas, los cuales están compuestos de transistores. La placa de un PC está compuesta de millones de estos transistores.

En la siguiente imagen, se puede apreciar un circuito simple con un transistor BJT (existen otros que se llaman Mosfet), el cual tiene una resistencia en base y otra en el colector. Si aumentamos la tensión de entrada (Vi) que está conectada a la base del transistor, la tensión de salida (Vo) se va a ir a un mínimo rozando el 0, considerándose un 0 lógico. Por otro lado, si disminuyéramos Vi, aumentaría la tensión de salida (Vo) consiguiendo un 1 lógico. Por tanto, los 0s y 1s no son más que representaciones de valores de tensión. Esos valores de tensión que se consideran 0s o 1s dependerán de la implementación de cada puerta y del tipo de transistor usado:

Para entender mejor lo mencionado, veamos la siguiente imagen:

Se puede apreciar una puerta lógica donde en la entrada se considera un 1 lógico si recibe valores de tensión entre 3.5 y 5 V (Voltios), y un 0 lógico si recibe valores de tensión entre 0 y 1.5 V. Además, la misma sacará un 0 o un 1 dependiendo de si los valores de tensión que tiene en la salida están comprendidos entre 4.4 y 5 V (siendo en ese caso un 1 lógico) o comprendidos entre 0 y 0.33 V (siendo en ese caso un 0 lógico). Es otras palabras, será un 0 o 1 dependiendo de las características técnicas de los componentes utilizados.


Pregunta 1

2⁸ = 256

Formas de Interconexión

Tras ver ya los lenguajes que entienden los ordenadores, así como algunas definiciones relevantes, vamos a profundizar en las formas de conexión existentes entre los equipos.

Las formas de interconexión a grandes escalas son dos: directa e indirecta. En la directa se usa un enlace para comunicar a dos o más equipos de la misma red, mientras que en la indirecta se hace uso de conmutadores de paquetes.

Dentro de las conexiones directas existen dos subtipos:

1. Punto a punto: un cable une a dos equipos a nivel de enlace.

2. Acceso múltiple: existen muchos equipos conectados entre sí a través de un mismo cable conocido como BUS.

Dentro las conexiones indirectas, existen dos subtipos:

1. Redes conmutadas (LAN): donde se usan switches y es una red de área local.

2. Conjunto de redes conmutadas (Internet): son necesarios el uso de los routers o encaminadores.

Estructura de Internet

Internet hemos visto que es el conjunto de equipos y redes que se comunican entre sí. La forma estructural de internet se podría dividir de la siguiente forma:

1. Borde de la Inter-red: es donde residen los hosts o nodos (equipos finales ejecutando Apps).

2. Redes de acceso: son las que le proporcionan a los hosts finales la conexión con el resto de internet.

3. Redes de núcleo: es el conjunto de redes interconectadas a través del mundo . En ellas están los ISP’s o proveedores de Internet. Los ISPs tienen una jerarquía donde los de menor tamaño se comunican a través de los de mayor tamaño y la interconexión directa entre ISP’s se da mediante puntos de intercambio de tráfico (IXP).

Por último, los enlaces comparten su régimen binario entre todos los usuarios de internet.

Núcleo de la red. Compartición de recursos

Nosotros como usuario final en el entorno local, solo generamos tráfico y sólo dependemos del régimen binario de nuestra tarjeta de red. Sin embargo, cuando se hace una consulta a través de internet, esos paquetes viajan atravesando el núcleo de la red (los distintos routers conectados a través de enlaces), es decir de los distintos equipos que hay en el mundo, reenviando el paquete hasta llegar al destino. Por tanto, si escalamos el mismo escenario a muchos usuarios llegamos a la conclusión de que todos compartimos esos recursos/enlaces obligando a buscar una forma de compartir los recursos. En otras palabras, el uso de enlaces compartidos entre los usuarios obliga a fijar una forma de “repartir” el uso de la capacidad de conmutación de los conmutadores de paquetes y del régimen binario de sus enlaces. Existen dos formas:

1. Conmutación de circuitos: se usa por ejemplo en la red telefónica y se dedica un circuito (se reserva parte del régimen binario de cada enlace en el camino para la comunicación) para cada comunicación durante toda su duración. Es lo que se conoce como multiplexión por división en el tiempo.

Como podemos ver en la siguiente imagen,  hay un equipo que está ejecutando Discord que se quiere conectar a otro equipo que también lo está ejecutando. En esa llamada telefónica se podría reservar un (camino rojo), con parte del régimen binario de los enlaces,  para que cuando surja otra llamada (camino azul) , se le pueda llegar a dar otro circuito (otro trozo de régimen binario) y la llamada se pueda cursar en caso de coincidencia de enlaces. 

2. Conmutación de paquetes: los datos se envían a la red en paquetes o bloques sin dedicación de recursos exclusiva, es decir, cada paquete usa toda la capacidad del canal (todo el régimen binario) cuando le toca ser servido. Esto hace que sea necesario un búfer (
un almacén para los paquetes hasta que se puedan procesar y enviar)  y se reduzca la probabilidad de pérdidas. Es lo que se conoce como multiplexión estadística.

Aplicaciones distribuidas

Una aplicación distribuida no es más que un servicio que se le ofrece a un usuario y para el cual cooperan procesos distintos equipos informáticos. Pueden ir desde un buscador web como google hasta la redes de bitcoin.

En las aplicaciones distribuidas cada proceso necesita usar primitivas del servicio de transporte de mensajes entre procesos para enviar o recibir mensajes y se necesita establecer una organización de esos procesos. Para indicar la organización de la aplicación entre varios procesos, es decir, como los diferentes procesos que componen la aplicación se comunican entre sí se usa lo que se conoce como una Arquitectura. Se distinguen tres tipos de arquitecturas:

1. Cliente-Servidor: un cliente inicia la comunicación con el servidor. Éste último siempre está activo, tiene una dirección IP permanente conocida por los clientes y está en escucha de peticiones de muchos clientes. No existen comunicación entre clientes. Ej: Buscador web

2. Peer to peer (P2P): es un cliente + servidor pero con características de sólo clientes, por lo que sólo hay comunicación entre clientes. Ej: Bitcoin, BitTorrent, Freenet, Ares, GNutella, etc.

3. Mixta: los peers consultan servidores para saber con qué peers deben comunicarse y obtener lo que buscan. Ej: Skype, utorrent, etc.

Cada aplicación elige el nivel de transporte que más se adecúe a sus necesidades. Por ejemplo, una aplicación web tradicional usa el protocolo de aplicación HTTP (no seguro ya que no cifra) y el servicio de transporte que usa es TCP. Por otro lado un servicio de streaming multimedia puede usar HTTP o RTP (RFC 1889) como protocolo de aplicación y  TCP o UDP como protocolo de transporte.

Modelo de capas

Previamente hemos comentado que los procesos de las aplicaciones distribuidas necesitan comunicarse para cooperar y ofrecer un servicio. Dicha comunicación requiere resolver múltiples problemas, y el modelo de capas da una solución modular que requiere descomponer varios servicios interdependientes donde:

  • El servicio pertenecerá a un nivel o capa según las tareas que realice, y dependerá del servicio de nivel inferior (usa al nivel inferior).
  • Cada servicio tendrá su forma propia de solicitarlo y un protocolo que permita la colaboración de entidades pares.


En la siguiente imagen podemos observar una aplicación distribuida de multiplicación donde en cada equipo se ejecuta un proceso y  la capa de aplicación necesita apoyarse sobre la capa de red y transporte para lograr comunicarse con el otro extremo. La idea es observar como un servicio que ofrecen las aplicaciones distribuidas se puede descomponer en varios niveles o capa, donde en cada uno se realiza una tarea distinta. Por ejemplo,  en el de aplicación  es donde se realizaría las tareas en sí de la aplicación pero ese servicio requieren utilizar la capa de red para poder comunicarse con el proceso remoto (en otra red o en la misma) que ocurre en otro equipo informático que a su vez necesita de la capa de enlace para establecer un medio físico por donde viajarán los 0s y 1s correspondientes del mensaje.

Modelo OSI

Es un estándar de referencia para el intercambio de datos entre procesos de aplicación (Standard ISO/IEC 7498/ITU-X.200), desarrollado por la Organización Internacional de Normalización ISO en 1984, cuya arquitectura  se basa en 7 capas/niveles donde:

  • Cada capa ofrece un servicio a la capa superior y usa los servicios del nivel inferior.
  • Las entidades pares de cada capa cooperan para ofrecer un servicio.

En las siguiente imágenes se describen los funciones y objetivos de cada nivel.

Como ya hemos comentado,  las entidades pares deben colaborar entre ellas y para eso deben intercambiar mensajes y dar así el servicio. Los mensajes intercambiados entre entidades de un mismo nivel se conoce como PDU (unidad de datos del protocolo), y por tanto cada capa tiene una N-PDU (donde N es el nivel o capa).

Una N-PDU está compuesta por:

  • N-PCI o información de control del protocolo: información intercambiada entre entidades N para coordinar su operación conjunta.
  • N-SDU o unidad de datos del servicio: son los datos que le ha pasado la entidad superior (N+1) a la N.

Además, una N-PDU suele encapsular la PDU de nivel superior tal y como se muestra en la siguiente imagen:

De tal forma que la 2-PDU se podría expresar como: 2-PCI+3-PCI+4-PCI+5-PCI+6-PCI+7-PCI+7-SDU o 2-PCI+3-PCI+3-SDU, etc.

Por último, al igual que una capa superior usa una inferior, también hemos dicho que una inferior puede solicitar un servicio de la superior, pero ¿cómo? Pues existe un Interfaz de Uso del servicio que define cómo solicitar los servicios de una entidad de una capa:

En la imagen anterior además, se pueden observar dos términos importantes a la hora de comprender esa solicitud del servicio. El primer término es SAP, que son los puntos de acceso al servicio e identifica a la entidad que ofrece el servicio. El otro término es primitiva, que es el protocolo de interacción, es como la función que permite solicitar ese servicio. Por otro lado se habla de encapsular y desencapsular. Cada vez que el mensaje baja una capa se dice que se encapsula ya que añade la cabecera y el mensaje encapsulándolo en la SDU de nivel inferior. Cuando el procedimiento es al contario, es decir, cuando es el servicio inferior el que usa al superior (se sube en una capa) se desencapsula el mensaje ya que se desmenuza la SDU de nivel inferior, descubriendo la PCI y SDU de nivel superior.

Modelo TCP/IP

Modelo creado por Vinton Cerf y Robert Khan en 1970. Es el que hay en internet actualmente y fue implantando en la red ARPANET ( primera red de área amplia o WAN), también conocido como modelo DoD o DARPA ya que fue desarrollado por encargo de DARPA ( Departamento de Defensa de los Estados Unidos).

Este modelo describe un conjunto de guías generales de operaciones para permitir que un equipo se pueda comunicar en una red, especificando cómo los datos deberían ser formateados, direccionados, transmitidos, enrutados y recibidos. El mismo se divide en 4 capas.

Si lo comparamos con el modelo OSI, éste no es un modelo de capas independientes, más bien es un conjunto de protocolos interrelacionados que pueden ser clasificados como pertenecientes a una capa OSI en función del servicio que prestan. Tal y como se ve en la siguiente imagen , la capa de aplicación del modelo TCP/IP englobaría las capas de Aplicación, Presentación y Sesión del modelo OSI. Así mismo las de Host del modelo TCP/IP englobaría a la capa de Enlace y Físico del modelo OSI.

Por último, según en qué capa analicemos el mensaje, el mismo adquiere distinta terminología:

  • El mensaje que se genere en la capa de aplicación se conoce como mensaje.
  • Una vez que estemos hablando del mensaje en la capa 4 del modelo OSI o de la capa 3 del modelo de internet, pasaría a conocerse como segmento, es decir, la cabecera de transporte más el mensaje (en el modelo TCP/IP) es lo que conoce como un segmento.
  • Si estuviéramos en el nivel 3 se conoce como datagrama. Cuando hablamos de datagrama nos estamos refiriendo a la cabecera de red, más la cabecera de transporte más todos los datos que van encapsulados de las capa de aplicación.
  • Cuando estamos a nivel de enlace se denomina trama: que sería la cabecera de enlace,  más cabecera de red, más cabecera de transporte, más el mensaje de la aplicación. La trama es lo que se envía al medio físico.

Torre de protocolos

Es un conjunto de protocolos implementados en un sistema ordenados según su posición en el modelo y permite definir las entidades que se comunican y el nivel al que lo hacen.

Una torre de protocolos es un despliegue de los distintos protocolos en la capa correspondiente para ver qué es lo que se está ejecutando en la comunicación de cada equipo y cómo se comunican esos equipos.

En la siguiente imagen se pueden apreciar los distintos dispositivos que nos podríamos encontrar en una red y a la capa que son capaces de llegar. Podemos ver que:

– El  repetidor (o HUB) tan sólo es capaz de llegar a la capa 1, ya que sólo se encarga de reenviar los 0s y 1s que recibe (lo que le entra por un lado lo saca por el otro).

– El puente OSI (o switch) es capaz de llegar hasta la capa de enlace. Se usan para conectar equipos a las redes.

– El encaminador (o router) que capaz de alcanzar la capa de red. Recordemos que es el encargado de encaminar y reenviar los paquetes entre distintas redes.

– El sistema final que llega hasta la capa de aplicación. Recordemos que son en los equipos finales donde se ejecutan los procesos de las aplicaciones distribuidas.

Además, en la imagen anterior podemos apreciar que el equipo final origen tiene que encapsular su mensaje para que pueda atravesar los distintos equipos intermedios, los cuales desencapsularán los mensajes hasta la capa que puedan llegar (exceptuando el repetidor que no desencapsula nada ya que solo copia en la salida los 0s y 1s que recibe en la entrada).

Por último vamos a proceder a ver un ejemplo completo de torre de protocolos siguiendo el modelo que se sigue en internet.

En la imagen anterior se puede apreciar que en un host final se está ejecutando un navegador web chrome y al otro lado otro host está ejecutando un servidor apache. La torre de protocolos del host final, tendría http si es una navegación no segura, en la capa de transporte estaríamos ejecutando tcp, en la de red estaría IP, en la capa de enlace estaríamos ejecutando la 802.11 ya que estaríamos utilizando enlace WIFI y en la física está la 802.11ax que la d es uno de los protocolos WiFI que ha salido recientemente.

En el primer encaminador (mirando de izquierda a derecha) se estaría ejecutando en el enlace físico el 802.11ax para que sea una entidad par con el emisor, y como es un Router, tan solo llega hasta el nivel 3. En la otra pata que se comunica con otro router a través de un enlace punto a punto, la capa IP se mantiene pero la de enlace pasa a ser PPP, y después ya tendría alguno físico correspondiente al enlace dado.

En el segundo encaminador, la primera pata coincide con la entidad par del otro router y la otra pata que está conectada conectada a un servidor apache, como es un enlace ethernet estaría ejecutando en red IP, en enlace la 802.3 que es donde se define ethernet y en físico estaría por ejemplo la que observamos en la imagen, la 802.3ab.

El equipo final donde se ejecuta el servidor apache tendría lo mismo que el router hasta la capa de red para que sea entidad par, añadiendo TCP como transporte y HTTP como aplicación, para que sean entidades pares con las del equipo final donde se ejecuta el navegador web.

Como conclusión, vemos cómo hay una comunicación entre entidades pares, entre hosts finales que los dos llegan hasta aplicación y con el mismo protocolo, en transporte y red igual y lo que va cambiando o alternándose son los distintos protocolos de enlace y físico porque en esa comunicación va variando esas capas en los distintos equipos intermedios, pasando de wifi a ppp y de ahí a ethernet.

Comunicación App-Transporte. Sockets

Hemos hablado de que las capas de entidades pares se comunican y que para hacerlo necesitan hacer uso o prestar un servicio a las otras capas. Si una aplicación quiere enviar un mensaje, debe usar el servicio de la capa de transporte y para ello se crean lo que se conocen como sockets.

Los sockets son como APIs ofrecidas por el S.O para usar la red y que ayuda al flujo de datos entre procesos. Además:

  • Es lo que permite que un proceso de App acceda a los servicios de transporte. Es como establecer un destino para que la aplicación pueda comunicarse con esa capa de transporte.
  • El socket creado es identificado de forma única localmente usando el par IP:puerto.
  • En un host puede haber múltiples aplicaciones y cada aplicación puede crear múltiples sockets. La forma que tiene el S.O de diferenciarlos es a partir del par IP:puerto
  • Para que la aplicación solicite el servicio de transporte, necesita usar Primitivas de Acceso al servicio. Por ejemplo, es como alguien que quiera viajar de España a Francia quiera solicitar el transporte de un avión, pues antes necesita comprar el billete. Haciendo la analogía, una aplicación para poder enviar un mensaje del emisor al destino necesita solicitar el servicio de transporte necesario y para ello utiliza los sockets.

Por último, existen librerías con dichas primitivas para el uso de sockets.

La capa de transporte

Tras entender qué es una aplicación distribuida, el modelo de capas, cómo se comunican entre ellas y entre entidades pares,  vamos a explicar un poco más en detalle la capa de transporte.

La capa de transporte ofrece una comunicación lógica entre procesos de aplicación de equipos distintos.

El funcionamiento básico sería el siguiente:

  • El emisor recibe mensajes de aplicación y genera segmentos (T-PDU). En la cabecera de segmento se identifican los procesos de aplicación destino y origen con puerto destino y origen.
  • El receptor recibe segmentos, lee la cabecera (T-PCI) y avisa al proceso app destino.

Se ha hablado de puerto origen y destino pero, ¿qué es un puerto? 

Un puerto es un entero de 16 bits ( 2^16 valores posibles -> 0-65535). Los posibles valores que toman son:

  • < 1024 (well-known ports): puertos reservados para aplicaciones generales registradas en IANA.
  • 1024-49151( puertos registrados ): se usan para aplicaciones no tan generales
  • > 49151: puertos dinámicos o efímeros