Todo el mundo sabe que estos son seis bytes, que generalmente se muestran en formato hexadecimal, asignados a una tarjeta de red en la fábrica y, a primera vista, son aleatorios. Algunas personas saben que los primeros tres bytes de la dirección son el identificador del fabricante, y los tres bytes restantes se les asignan. También se sabe que puede establecer una dirección arbitraria . Muchos han escuchado sobre las "direcciones aleatorias" en Wi-Fi.
Averigüemos qué es.
Dirección MAC (dirección de control de acceso a medios): un identificador único asignado a un adaptador de red; se utiliza en redes con estándares IEEE 802, principalmente Ethernet, Wi-Fi y Bluetooth. Oficialmente, se llama un "identificador de tipo EUI-48". Es obvio por el nombre que la dirección tiene 48 bits de longitud, es decir 6 bytes No existe un estándar generalmente aceptado para escribir una dirección (a diferencia de una dirección IPv4, donde los octetos siempre están separados por puntos). Generalmente se escribe como seis números hexadecimales, separados por dos puntos: 00: AB: CD: EF: 11: 22, aunque algunos fabricantes de equipos prefieren escribir como 00 -AB-CD-EF-11-22 e incluso 00ab.cdef.1122.
Históricamente, las direcciones se cosían en la ROM del conjunto de chips de la tarjeta de red sin la posibilidad de su modificación sin un programador flash, pero en la actualidad la dirección se puede cambiar mediante programación, desde el sistema operativo. Puede configurar manualmente la dirección MAC de la tarjeta de red en Linux y MacOS (siempre), Windows (casi siempre, si el controlador lo permite), Android (solo root); con iOS (sin root) un truco similar es imposible.
Estructura de direcciones
La dirección consta de una parte del identificador del fabricante, OUI y el identificador asignado por el fabricante. El IEEE asigna el OUI (Identificador Organizacionalmente Único). De hecho, su longitud puede ser no solo de 3 bytes (24 bits), sino también de 28 o 36 bits, a partir de los cuales se forman los bloques del Bloque de direcciones MAC (MA) de tipo Grande (MA-L), Medio (MA-M) y Pequeño. (MA-S) respectivamente. El tamaño del bloque emitido, en este caso, será de 24, 20, 12 bits o 16 millones, 1 millón, 4 mil piezas de direcciones. En este momento, se distribuyen unos 38 mil bloques, que se pueden ver con numerosas herramientas en línea, por ejemplo, IEEE o Wireshark .
Quién posee las direcciones
El simple procesamiento de la base de datos de carga IEEE disponible públicamente proporciona mucha información. Por ejemplo, algunas organizaciones han tomado muchos bloques OUI. Aquí están nuestros héroes:
Google tiene solo 40 de ellos, y esto no es sorprendente: ellos mismos no producen tantos dispositivos de red.
Los bloques MA no se proporcionan de forma gratuita, se pueden comprar por dinero razonable (sin una tarifa mensual) por $ 3000, $ 1800 o $ 755, respectivamente. Es interesante que por el dinero extra (por año) puede comprar la "ocultación" de la información pública sobre el bloque asignado. Hay 232 de ellos ahora, como se puede ver arriba.
¿Cuándo se agotará la dirección MAC?
Todos estamos cansados de la historia de diez años de que "las direcciones IPv4 están a punto de agotarse". Sí, los nuevos bloques de IPv4 ya no son fáciles de obtener. También se sabe que las direcciones IP se distribuyen de manera extremadamente desigual ; Sin embargo, hay bloques gigantescos y poco utilizados propiedad de grandes corporaciones y del gobierno de los Estados Unidos, sin mucha esperanza de su redistribución en favor de los necesitados. La proliferación de NAT, CG-NAT e IPv6 ha hecho que el problema de la falta de direcciones públicas sea menos grave.
La dirección MAC tiene 48 bits, de los cuales 46 son útiles (¿por qué? Siga leyendo), lo que da 2 46 o 10 14 direcciones, que es 2 14 veces el espacio de direcciones IPv4.
En este momento, se distribuyen aproximadamente medio billón de direcciones, o solo el 0.73% del volumen total. El agotamiento de las direcciones MAC todavía está muy, muy lejos.
Bit aleatorio
Se puede suponer que las OUI se distribuyen aleatoriamente, y el proveedor también asigna aleatoriamente direcciones a dispositivos de red individuales. Es asi? Veamos la distribución de bits en las bases MAC de las direcciones que tengo a mi disposición para dispositivos 802.11 recopilados por sistemas de autorización de trabajo en redes inalámbricas WNAM . Las direcciones pertenecen a dispositivos reales que se han conectado a Wi-Fi durante varios años en tres países. Además, hay una pequeña base de dispositivos LAN con cable 802.3.
Dividimos cada dirección MAC (seis bytes) de cada una de las muestras en bits por bytes, y observamos la frecuencia de aparición del bit "1" en cada una de las 48 posiciones. Si el bit se establece de forma completamente arbitraria, la probabilidad de obtener "1" debería ser del 50%.
¿De dónde viene esta injusticia en los bits 7 y 8? Casi siempre hay ceros.
De hecho, el estándar define estos bits como especiales ( Wikipedia ):

El octavo bit (desde el principio) del primer byte de la dirección MAC se llama bit de unidifusión / multidifusión y determina qué tipo de trama (trama) se transmite con esta dirección, normal (0) o difusión (1) (multidifusión o difusión). Para la interacción normal del adaptador de red de unidifusión, este bit se establece en "0" en todos los paquetes que se le envían.
El séptimo bit (desde el principio) del primer byte de la dirección MAC se llama bit U / L (Universal / Local) y determina si la dirección es globalmente única (0) o localmente única (1). Por defecto, todas las direcciones "cosidas por el fabricante" son globalmente únicas, por lo tanto, la gran cantidad de direcciones MAC recopiladas contiene el séptimo bit establecido en "0". En la tabla de identificadores OUI asignados, solo alrededor de 130 entradas tienen un bit U / L "1", y lo más probable es que sean bloques de direcciones MAC para necesidades especiales.
Desde el sexto hasta el primer bit del primer byte, los bits del segundo y tercer bytes en los identificadores OUI, y aún más los bits en 4-6 bytes de la dirección asignada por el fabricante, se distribuyen de manera más o menos uniforme.
Por lo tanto, en la dirección MAC real del adaptador de red, los bits son prácticamente equivalentes y no tienen un significado tecnológico, con la excepción de dos bits de servicio del byte alto.
Prevalencia
Me pregunto qué fabricantes de equipos inalámbricos son los más populares. Combine la búsqueda de OUI con los datos de muestra No. 1.
La práctica muestra que cuanto más próspero sea el contingente de suscriptores inalámbricos en este lugar, mayor será la proporción de dispositivos Apple.
Singularidad
¿Son únicas las direcciones MAC? En teoría, sí, ya que cada uno de los fabricantes de dispositivos (propietarios de la unidad MA) debe proporcionar una dirección única para cada uno de sus adaptadores de red. Sin embargo, algunos fabricantes de chips, a saber:
- 00: 0A: F5 Airgo Networks, Inc. (ahora Qualcomm)
- 00:08:22 InPro Comm (ahora MediaTek)
configura los últimos tres bytes de la dirección MAC en un número aleatorio, aparentemente después de cada reinicio del dispositivo. Había 82 mil de esas direcciones en mi muestra No. 1.
Puede establecerse un extraño, no una dirección única, por supuesto, configurándolo a propósito "como un vecino", definiéndolo como un rastreador, o eligiendo al azar. También es posible establecer accidentalmente una dirección no única realizando, por ejemplo, restaurando una configuración de respaldo de un enrutador como Mikrotik u OpenWrt.
¿Qué sucede si dos dispositivos con la misma dirección MAC están presentes en la red? Todo depende de la lógica del equipo de red (enrutador con cable, controlador de red inalámbrica). Lo más probable es que ambos dispositivos no funcionen o funcionen de manera intermitente. Desde el punto de vista de los estándares IEEE, se propone resolver la protección contra la falsificación de direcciones MAC utilizando, por ejemplo, MACsec o 802.1X.
¿Qué pasa si te pones un MAC con el séptimo u octavo bit establecido en "1", es decir dirección local o multidifusión? Lo más probable es que su red no preste atención a esto, pero formalmente, dicha dirección no se ajustará al estándar, y es mejor no hacerlo.
Cómo funciona la aleatorización
Sabemos que para evitar rastrear el movimiento de personas escaneando el aire y recolectando los sistemas operativos MAC de los teléfonos inteligentes, hemos estado utilizando la tecnología de aleatorización durante varios años. Teóricamente, cuando escanea el aire en busca de redes conocidas, el teléfono inteligente envía un paquete (grupo de paquetes) del tipo de solicitud de sonda 802.11 con la dirección MAC como fuente:

La aleatorización incluida le permite especificar no "flasheado", sino alguna otra dirección de origen del paquete, que cambia con cada ciclo de exploración, a tiempo o de alguna manera. ¿Esto funciona? Echemos un vistazo a las estadísticas de las direcciones MAC recopiladas desde el aire con el llamado "Radar de Wi-Fi":
La imagen es completamente diferente.
El octavo bit del primer byte de la dirección MAC todavía coincide con la naturaleza Unicast de la dirección SRC en el paquete de solicitud de la sonda.
El séptimo bit en el 92.2% de los casos se establece en Local, es decir con bastante certeza, podemos suponer que tantas direcciones recopiladas son aleatorias y menos del 8% son reales. Además, la distribución de bits en la OUI para tales direcciones reales coincide aproximadamente con los datos de la tabla anterior.
Según OUI, ¿a qué fabricante pertenecen las direcciones aleatorias (es decir, con el séptimo bit en "1")?
Además, todas las direcciones aleatorias asignadas a Google pertenecen a una OUI con el prefijo DA: A1: 19 . ¿Qué es este prefijo? Veamos el código fuente de Android .
private static final MacAddress BASE_GOOGLE_MAC = MacAddress.fromString("da:a1:19:0:0:0");
El stock de Android utiliza un OUI registrado especial, uno de los pocos con el conjunto de séptimo bit, en la búsqueda de redes inalámbricas.
Calcular MAC real a partir de aleatorio
Miremos allí:
private static final long VALID_LONG_MASK = (1L << 48) - 1; private static final long LOCALLY_ASSIGNED_MASK = MacAddress.fromString("2:0:0:0:0:0").mAddr; private static final long MULTICAST_MASK = MacAddress.fromString("1:0:0:0:0:0").mAddr; public static @NonNull MacAddress createRandomUnicastAddress(MacAddress base, Random r) { long addr; if (base == null) { addr = r.nextLong() & VALID_LONG_MASK; } else { addr = (base.mAddr & OUI_MASK) | (NIC_MASK & r.nextLong()); } addr |= LOCALLY_ASSIGNED_MASK; addr &= ~MULTICAST_MASK; MacAddress mac = new MacAddress(addr); if (mac.equals(DEFAULT_MAC_ADDRESS)) { return createRandomUnicastAddress(base, r); } return mac; }
La dirección completa, o sus al menos tres bytes, es pura Random.nextLong () . "Recuperación patentada de MAS real" - un fraude. Con un alto grado de certeza, se puede esperar que los fabricantes de teléfonos Android utilicen otras OUI no registradas. No tenemos ninguna fuente de iOS, pero lo más probable es que se use un algoritmo similar allí.
Lo anterior no cancela la operación de otros mecanismos de desanonimización de suscriptores de Wi-Fi, en base al análisis de otros campos del marco de solicitud de la sonda, o la correlación de la frecuencia relativa de solicitudes enviadas por el dispositivo. Sin embargo, el seguimiento confiable de un suscriptor por medios externos es extremadamente problemático. Los datos recopilados son más adecuados para analizar la carga promedio / pico por ubicación y tiempo, en función de grandes cantidades, sin referencia a dispositivos y personas específicos. Los datos precisos son solo para aquellos que están "dentro", los propios fabricantes de sistemas operativos móviles, las aplicaciones instaladas.
¿Qué podría ser peligroso si otra persona descubre la dirección MAC de su dispositivo? Para redes cableadas e inalámbricas, se puede organizar un ataque de denegación de servicio. Para un dispositivo inalámbrico, además, con cierta probabilidad es posible fijar el momento de aparición en el lugar donde está instalado el sensor. Al suplantar la dirección, puede intentar simular que es su dispositivo, lo que puede funcionar solo si no se aplican medidas de seguridad adicionales (autorización y / o cifrado). El 99.9% de las personas aquí no tienen nada de qué preocuparse.
La dirección MAC es más compleja de lo que parece, pero más simple de lo que podría ser.