Análisis de
la detección de la dirección MAC destino
Fecha: marzo del 2020
Escenario
Cuando estudiamos CCNA, aprendemos la operación AND para determinar la red a la
que pertenece una dirección IP y también aprendemos que cuando una placa de red
recibe una trama ethernet, analiza los primeros 48 bits que pertenecen a la dirección
de destino, si esta coincide con su propia dirección MAC, la trama es aceptada, si no
coincide, la trama es descartada, pero que operación lógica ejecuta ?
Este laboratorio analiza la lógica necesaria para tomar esta decisión, no es una disección
de una placa de red real, aqui representamos el proceso de forma sencilla para poder
entender mas que nada la lógica de Boole implicada.
Fuente: Lund
University
La dirección MAC está compuesta por dos partes de 24 bits cada una, en los 24 bits
superiores (la izquierda de la dirección) es el OUI o fabricante, y los 24 bits del orden
inferior (la mitad derecha) es el número de serie de la placa.
Esto en principio era un número “quemado” en ROM, pero actualmente es modificable
o “flasheable”, e incluso pued ser alterado por ejemplo mediante aplicaciones para
realizar spoofing, ataques de layer 2, etc.
Esquema sencillo de 4 bits
Comparamos C0 con B0, C1 con B1, etc y cada resultado dará un 0 o un 1, que luego
una compuerta AND dependiendo de las entradas 0 o 1, determinará el resultado
final: 0 o 1 (coincide o no coincide).
Tabla XNOR Tabla AND
0 y 0 = 1 ___ 0 y 0 =0
0 y 1 = 0 | 0 y 1= 0
1 y 0 = 0 | 1 y 0= 0
1 y 1 = 1 ____|___ 1 y 1= 1 = la trama coincide y será procesada
Esquema con los 48 bits de una MAC address:
Ejemplo con la MAC address 00:1B:38:7E:F1:71 contra la MAC address 00:1B:38:7E:F1:71 siendo
el resultado final 1 (coincide). Podemos ver también que la operación AND final se compone
de la salida de 3 bloques que comprenden 16 bits cada uno (16 x 3=48), mas adelante veremos
el motivo.
Ejemplo con la MAC address 00:1B:38:7E:F1:71 contra 00:1B:38:7E:F1:61, al ser diferentes, la
comparación XNOR devuelve un 0 y por lo tanto todas las AND devolverán 0, determinando
que la dirección no es la propia y la trama ethernet deberá descartarse.
Esquema analizando 16 bits por vez (en 3 rondas en total):
Tratándose de un sistema con chipsets y memorias de 16 bits, las placas de red necesitan
al menos 3 rondas para comparar los 48 bits de una dirección MAC.
Esta tarea no la realiza la CPU principal del equipo sino en un procesador aparte incluído en
la placa de red, la operación de comparación se ejecuta en software (firmware) y no con
compuertas lógicas, utilizando memoria y buffers incluídos también en la placa de red.
El procedimiento es leer un valor en la memoria donde se encuentra la trama recibida, los
primeros 16 bits, cargarlos en un registro, compararlo con el patrón determinado por la MAC
de la placa de red y cargar un registro (no encontré documentación pero lo llamaremos A),
luego repetir la operación para los siguientes 16 bits y para los últimos 16 bits. Luego se
realiza una operación AND con los tres registros A, B y C, si estos son 1 el resultado será 1
por lo tanto la MAC comparada es igual a la MAC de la placa de red.
Entonces, la trama ethernet pasa a la memoria principal de equipo mediente el canal DMA.
Modo promiscuo de una placa de red:
La placa de red puede omitir la comparación antes analizada cuando trabaja en modo
promíscuo, esto es mediante de un driver que anula dicha función y nos sirve para
realizar capturas de trafico por ejemplo con Wireshark o TCPDump, y analizar todo
el tráfico que llega a la placa.
Tráfico multicast:
La placa de red puede configurarse para recibir tráfico multicast, y esta deberá
aceptar direcciones MAC que comiencen con 01005E siendo estos los primeros
24 bits y los siguientes 24 bits dependerán de la dirección multicast que utilice
la aplicación.
La aceptación de direcciones multicast por parte de la placa de red es compleja
y tiene cierta problemática binaria que no cubriremos en este laboratorio.
Fuente: TCP
Guide
Tráfico broadcast:
Todo el tráfico broadcast recibido será admitido y procesado, descartándose o
procesándose en las capas superiores, esto ya es función del sistema operativo.
(2020) Low
level for lonely people
Rosario, Argentina