En este proyecto veremos lo que es un diodo de datos. Como bien indica en su nombre se trata de un conducto de informacion en un unico sentido. El objetivo será que el agente que envie informacion no sea capaz de recibirla, de manera que el sistema crítico se encontrará completamente aislado de comunicaciones externas y será capaz de transmitir información para su monitorización, registro y gestión.

Para empezar debemos entender que protocolos de comunicación vamos a utilizar en este ejercicio.

Architecture1

TCP

El protocolo TCP (Transmission Control Protocol) es un protocolo fundamental en la comunicación de datos a través de redes informáticas garantizando una transmisión confiable y ordenada de la información entre dispositivos. Tiene un funcionamiento que se divide principalmente en tres partes:

  • SYN -> El cliente inicia la conexión enviando un paquete SYN al servidor. Este paquete contiene un número de secuencia aleatorio que se utilizará para identificar los paquetes enviados por el cliente.
  • SYN ACK -> El servidor, al recibir el SYN, responde con un paquete SYN-ACK. Este paquete incluye el número de secuencia del cliente incrementado en uno y un nuevo número de secuencia para la comunicación del servidor al cliente.
  • ACK -> El cliente recibe el SYN-ACK y envía un último paquete ACK al servidor, confirmando la conexión y utilizando el número de secuencia del servidor incrementado en uno.

Como podemos ver, en esta comunicacion se requiere contacto entre los dos agentes, tanto como para iniciar la conexion como para finalizarla.

UDP

El protocolo UDP (User Datagram Protocol) es un protocolo de red que permite el envío de datos sin necesidad de establecer una conexión previa entre emisor y receptor, a diferencia de TCP. Esto significa que UDP envía datagramas (paquetes de datos) de forma independiente y no garantiza la recepción, el orden ni la integridad de los datos. Su principal ventaja es la velocidad y eficiencia, ideal para aplicaciones donde la latencia es crítica, como streaming de video o juegos online.

Funcionamiento:

  • UDP divide los datos en paquetes (datagramas) y los envía a la dirección IP y puerto de destino, sin establecer una conexión formal.
  • No hay establecimiento de conexión previo ni confirmación de recepción, lo que permite una comunicación rápida.
  • UDP no garantiza que los datagramas lleguen a destino, ni que lleguen en el orden correcto o sin errores.

Entornos de uso

Este tipo de dispositivos se situan en entornos críticos como Plantas Industriales/Nucleares, laboratorios de ciberseguridad o zonas de máxima seguridad.
Gracias a esta metodología seremos capaces de monitorizar desde un SOC exterior todo el entorno al otro lado del Diodo, pudiendo registrar y recibir lecturas de temperatura en centrales industriales o evitando que un virus informático logre una conexion externa con un atacante mientras se hacen pruebas.

Architecture2

Equipo y Montaje

Actualmente existen varios proveedores de dispositivos que realizan esta funcion y esta implementada directamente en el hardware que distribuyen.
Nosotros utilizaremos una solucion más económica y casera a traves de convertidores de Fibra Óptica a Cobre. Es importante que estos convertidores dispongan de dos entradas (Rx) y salidas (Tx) ya que en esa division nos permitirá separar el tráfico para hacer el diodo.

Convertidores

Una vez tengamos estos dispositivos procederemos a conectar la fibra y el cobre de la siguiente manera:
Architecture3

Funcionamiento

Veremos que el equipo que envía se conecta directamente al equipo que recibe a traves de Tx y Rx sin embargo hay un convertidor de fibra a cobre entre los dos equipos que no tiene salida de cobre, este será el “vacio”. El equipo receptor intentará dar una respuesta, comprobará que la puede enviar, y la enviará a este “vacio” a través de Tx a Rx pero no será recibida por ningun equipo.
Este engaño se produce tambien para el equipo que envia ya que realizará una comprobacion en Rx para ver si puede recibir informacion en la red preparada, al estar conectado el cable de fibra interpretará que la conexion es correcta pero nunca recibirá nada ya que viene de el convertidor “vacio”.

¡IMPORTANTE!
Los dos equipos no disponen de ningun servidor DHCP ni de ninguna figura intermediaria que sea capaz de redireccionar el trafico en la conexion. Deberemos de preparar una direccion IP para cada uno y añadir en las tablas ARP las direcciones MAC de los dos equipos.
Utilizaremos el siguiente comando en una consola con permisos de administrador:

arp -s {direccion IP} {direccion mac}

Para comprobar que se ha añadido correctamente usaremos arp -a.

Puesta en marcha

Utilizaremos un rastreador de paquetes en el equipo que recibe de manera que cuando establezcamos una conexion TCP podramos ver la recepcion del paquete y un envio fallido de respuesta, por el contrario en una conexion UDP podremos ver la recepcion del paquete y ninguna respuesta.

Existen multiples herramientas para rastrear esta conexion como tcpdump que funciona a nivel de consola o wireshark que posee una interfaz más amigable.

En este caso utilizaremos wireshark y lo prepararemos en la máquina receptora escuchando en la interfaz en la que estén conectados los equipos.

Ahora desde “CMD” enviaremos el comando de ping desde la maquina que envia a la que recibe, podremos ver como aparecen los mensajes en la interfaz, su origen y direccion.

Ping

Podremos ver como la maquina receptora intenta devolver el ping, sin embargo en el equipo que inicia la conexion no estamos recibiendo respuesta.

Pingmal

En cuanto a la conexion UDP enviaremos un mensaje al receptor con el la herramienta netcat y el comando nc64.exe -u 192.168.2.12 1234. Desde el lado del receptor estaremos escuchando en wireshark y abriremos una consola de comandos “CMD” y escribiremos el siguiente comando nc64.exe -ulvp 1234.

Una vez establecida esta conexion procederemos a escribir cualquier caracter en la consola del equipo que envia, podremos ver como aparece en la consola del que recibe. Desde wireshark se verá como llega el paquete con su longitud y protocolo UDP.

Consola: UDPLetra

Wireshark: UDP

El flujo de los datos de este procedimiento será de la siguiente manera.

Architecture4

Conclusion

Este tipo de tecnologías se utilizan en entornos muy críticos, es imprescindible conocer el funcionamiento de las conexiones TCP y UDP que se van a utilizar para poder comprender el flujo de los datos.
De esta manera aseguramos un sistema en el que podremos recibir o enviar informacion exclusivamente en un sentido. A diferencia de un firewall que se regula por las reglas establecidas por el administrador de sistemas en cuestion, este metodo asegura una imposibilidad de flujo más que logica …. ES FISICA!! El acceso a el sistema por la parte bloqueada del diodo esta restringida sin acceso fisico a la instalacion, lo cual da un grado de seguridad dificilmente evadible.