Todos saben que son seis bytes, generalmente representados en formato hexadecimal, asignados a la tarjeta de red en fábrica, y a primera vista parecen aleatorios. Algunos saben que los primeros tres bytes de la dirección son el identificador del fabricante, y los otros tres bytes les son asignados. También se sabe que es posible asignarse a uno mismo una dirección aleatoria . Muchos han oído hablar de las "direcciones aleatorias" en Wi-Fi.
Analicemos qué es esto.
La dirección MAC (dirección de control de acceso a medios) es un identificador único asignado a un adaptador de red, utilizado en redes de estándares IEEE 802, principalmente Ethernet, Wi-Fi y Bluetooth. Oficialmente se llama "identificador EUI-48". Como su nombre indica, la dirección tiene una longitud de 48 bits, es decir, 6 bytes. No hay un estándar común para escribir la dirección (a diferencia de la dirección IPv4, donde los octetos siempre se separan con puntos). Normalmente se escribe como seis números hexadecimales separados por dos puntos: 00:AB:CD:EF:11:22, aunque algunos fabricantes de hardware prefieren el formato 00-AB-CD-EF-11-22 e incluso 00ab.cdef.1122.
Históricamente, las direcciones se grababan en la memoria ROM del chip de la tarjeta de red sin posibilidad de ser modificadas sin un programador de flash, pero en la actualidad, la dirección puede ser cambiada por software desde el sistema operativo. Se puede establecer manualmente la dirección MAC en tarjetas de red en Linux y MacOS (siempre), Windows (casi siempre, si lo permite el controlador), Android (solo si está rooteado); con iOS (sin root), este truco es imposible.
Estructura de la dirección
La dirección consiste en una parte del identificador del fabricante, el OUI, y un identificador asignado por el fabricante. La asignación de identificadores OUI (Identificador Único Organizacional) es gestionada por la organización IEEE. En realidad, su longitud puede no ser solo de 3 bytes (24 bits), sino de 28 o 36 bits, de los cuales se forman bloques (Bloque de Dirección MAC, MA) de direcciones de tipos Grande (MA-L), Medio (MA-M) y Pequeño (MA-S) respectivamente. El tamaño del bloque asignado, en ese caso, será de 24, 20, 12 bits o 16 millones, 1 millón, 4 mil direcciones. En la actualidad, se han distribuido alrededor de 38 mil bloques, que se pueden consultar con numerosos herramientas en línea, por ejemplo, en o .
A quién pertenecen las direcciones
El procesamiento sencillo de la base de datos pública Número de bloques/registros
Proveedor
Número de direcciones, millones.
Cisco Systems Inc
Numero de bloques
888
14208
Apple
772
12352
Samsung
636
10144
Huawei Technologies Co. Ltd
606
9696
Intel Corporation
375
5776
ARRIS Group Inc.
319
5104
Nokia Corporation
241
3856
Privado
232
2704
Texas Instruments
212
3392
zte corporation
198
3168
IEEE Registration Authority
194
3072
Hewlett Packard
149
2384
Hon Hai Precision
136
2176
TP-LINK
134
2144
Dell Inc.
123
1968
Juniper Networks
110
1760
Sagemcom Broadband SAS
97
1552
Fiberhome Telecommunication Technologies Co. LTD
97
1552
Xiaomi Communications Co Ltd
88
1408
Guangdong Oppo Mobile Telecommunications Corp. Ltd
82
1312
En Google, hay solo 40, y no es sorprendente: ellos mismos no producen tantos dispositivos de red.
Los bloques MA no se ofrecen gratuitamente, se pueden adquirir a precios razonables (sin tarifa mensual) por $3000, $1800 o $755 respectivamente. Curiosamente, por un costo adicional (anual) se puede adquirir el 'ocultamiento' de la información pública sobre el bloque dedicado. Actualmente, como se puede ver arriba, hay 232 de estos.
Cuando se agoten las direcciones MAC
Todos estamos bastante cansados de las historias incesantes durante 10 años sobre que 'las direcciones IPv4 están a punto de acabarse'. Sí, obtener nuevos bloques de IPv4 ya no es fácil. Sin embargo, se sabe que las direcciones IP ; existen bloques gigantes y poco utilizados, pertenecientes a grandes corporaciones y entidades gubernamentales de EE. UU., aunque sin mucha esperanza de que sean redistribuidos en beneficio de quienes los necesitan. La difusión de NAT, CG-NAT e IPv6 ha hecho que el problema de la escasez de direcciones públicas no sea tan urgente.
En una dirección MAC hay 48 bits, de los cuales se pueden considerar 'útiles' 46 (¿por qué? lee más adelante), lo que da 2^46 o 1014 direcciones, que es 214 veces más que el espacio de direcciones IPv4.
En la actualidad, están distribuidas aproximadamente medio billón de direcciones, o solo el 0.73% del volumen total. Aún falta mucho, mucho tiempo para que se agoten las direcciones MAC.
Aleatoriedad de bits
Se puede suponer que las OUI se distribuyen aleatoriamente, y el vendedor luego asigna direcciones a los dispositivos de red individuales de manera también aleatoria. ¿Es esto cierto? Vamos a observar la distribución de bits en las bases de datos de direcciones MAC 802.11 de las que dispongo, recopiladas por sistemas de autorización en redes inalámbricas que funcionan . 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 802.3 en LAN cableada.
Descompondremos cada dirección MAC (seis bytes) de cada conjunto en bits byte a byte, y veremos la frecuencia de aparición del bit '1' en cada una de las 48 posiciones. Si el bit se establece de manera completamente aleatoria, la probabilidad de obtener un '1' debería ser del 50%.
Muestra de Wi-Fi No. 1 (RUS)
Muestra de Wi-Fi No. 2 (Bielorrusia)
Muestra Wi-Fi nº 3 (Uzbekistán)
Muestra LAN (Rusia)
Número de registros en la base de datos
5929000
1274000
366000
1000
Número de bit:
% bit «1»
% bit «1»
% bit «1»
% bit «1»
1
48.6%
49.2%
50.7%
28.7%
2
44.8%
49.1%
47.7%
30.7%
3
46.7%
48.3%
46.8%
35.8%
4
48.0%
48.6%
49.8%
37.1%
5
45.7%
46.9%
47.0%
32.3%
6
46.6%
46.7%
47.8%
27.1%
7
0.3%
0.3%
0.2%
0.7%
8
0.0%
0.0%
0.0%
0.0%
9
48.1%
50.6%
49.4%
38.1%
10
49.1%
50.2%
47.4%
42.7%
11
50.8%
50.0%
50.6%
42.9%
12
49.0%
48.4%
48.2%
53.7%
13
47.6%
47.0%
46.3%
48.5%
14
47.5%
47.4%
51.7%
46.8%
15
48.3%
47.5%
48.7%
46.1%
16
50.6%
50.4%
51.2%
45.3%
17
49.4%
50.4%
54.3%
38.2%
18
49.8%
50.5%
51.5%
51.9%
19
51.6%
53.3%
53.9%
42.6%
20
46.6%
46.1%
45.5%
48.4%
21
51.7%
52.9%
47.7%
48.9%
22
49.2%
49.6%
41.6%
49.8%
23
51.2%
50.9%
47.0%
41.9%
24
49.5%
50.2%
50.1%
47.5%
25
47.1%
47.3%
47.7%
44.2%
26
48.6%
48.6%
49.2%
43.9%
27
49.8%
49.0%
49.7%
48.9%
28
49.3%
49.3%
49.7%
55.1%
29
49.5%
49.4%
49.8%
49.8%
30
49.8%
49.8%
49.7%
52.1%
31
49.5%
49.7%
49.6%
46.6%
32
49.4%
49.7%
49.5%
47.5%
33
49.4%
49.8%
49.7%
48.3%
34
49.7%
50.0%
49.6%
44.9%
35
49.9%
50.0%
50.0%
50.6%
36
49.9%
49.9%
49.8%
49.1%
37
49.8%
50.0%
49.9%
51.4%
38
50.0%
50.0%
49.8%
51.8%
39
49.9%
50.0%
49.9%
55.7%
40
50.0%
50.0%
50.0%
49.5%
41
49.9%
50.0%
49.9%
52.2%
42
50.0%
50.0%
50.0%
53.9%
43
50.1%
50.0%
50.3%
56.1%
44
50.1%
50.0%
50.1%
45.8%
45
50.0%
50.0%
50.1%
50.1%
46
50.0%
50.0%
50.1%
49.5%
47
49.2%
49.4%
49.7%
45.2%
48
49.9%
50.1%
50.7%
54.6%
¿De dónde proviene esta injusticia en los bits 7 y 8? Allí casi siempre hay ceros.
De hecho, el estándar define estos bits como especiales ():

El octavo (desde el inicio) bit del primer byte de la dirección MAC se llama bit Unicast/Multicast y determina qué tipo de trama se transmite desde esta dirección, si es normal (0) o de difusión (1) (multicast o broadcast). Para una interacción unicast normal del adaptador de red, este bit se establece en «0» en todos los paquetes que se envían.
El séptimo (desde el inicio) bit 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 «grabadas por el fabricante» son globalmente únicas, por lo que la abrumadora mayoría de las direcciones MAC recopiladas contienen el séptimo bit establecido en «0». En la tabla de identificadores asignados OUI, solo alrededor de 130 registros tienen el bit U/L «1», y parece que son bloques de direcciones MAC para necesidades especiales.
De los bits seis a uno del primer byte, los bits del segundo y tercer byte en los identificadores OUI, y, aún más, los bits en los bytes 4-6 de la dirección, asignados por el fabricante, están distribuidos más o menos uniformemente.
Por lo tanto, en una dirección MAC real del adaptador de red, los bits son prácticamente equivalentes y no tienen significado técnico, excepto por los dos bits de servicio del byte más significativo.
Prevalencia
¿Cuáles son los fabricantes de equipos inalámbricos más populares? Unamos la búsqueda de la base OUI con los datos de la muestra nº 1.
Proveedor
Porcentaje de dispositivos, %
Apple
26,09
Samsung
19,79
Huawei Technologies Co. Ltd
7,80
Xiaomi Communications Co Ltd
6,83
Sony Mobile Communications Inc
3,29
LG Electronics (Mobile Communications)
2,76
ASUSTek COMPUTER INC.
2,58
TCT mobile ltd
2,13
zte corporation
2,00
no encontrado en la base de IEEE
1,92
Lenovo Mobile Communication Technology Ltd.
1,71
HTC Corporation
1,68
Murata Manufactuaring
1,31
InPro Comm
1,26
Microsoft Corporation
1,11
Shenzhen TINNO Mobile Technology Corp.
1,02
Motorola (Wuhan) Mobility Technologies Communication Co. Ltd.
0,93
Nokia Corporation
0,88
Shanghai Wind Technologies Co. Ltd
0,74
Lenovo Mobile Communication (Wuhan) Company Limited
0,71
La práctica muestra que cuanto más acomodados son los abonados de la red inalámbrica en este lugar, mayor es la proporción de dispositivos Apple.
Unicidad
¿Son únicos las direcciones MAC? En teoría sí, ya que cada uno de los fabricantes de dispositivos (propietarios del bloque MA) está obligado a proporcionar una dirección única para cada uno de los adaptadores de red que produce. Sin embargo, algunos fabricantes de chips, a saber:
- 00:0A:F5 Airgo Networks, Inc. (ahora Qualcomm)
- 00:08:22 InPro Comm (ahora MediaTek)
presentan los últimos tres bytes de la dirección MAC como un número aleatorio, aparentemente, después de cada reinicio del dispositivo. En mi muestra, encontré 82 mil de tales direcciones.
Se puede asignar una dirección no única ajena, por supuesto, mediante la configuración intencionada "como la del vecino", determinándola con un sniffer, o eligiéndola al azar. También es posible asignar accidentalmente una dirección no única, realizando, por ejemplo, una restauración de la copia de seguridad de la configuración de un enrutador como Mikrotik o OpenWrt.
¿Qué pasará si en la red hay dos dispositivos con la misma dirección MAC? Todo depende de la lógica del equipo de red (enrutador por cable, controlador de red inalámbrica). Lo más probable es que ambos dispositivos no funcionen o tengan un funcionamiento intermitente. Desde el punto de vista de las normas IEEE, se sugiere abordar la protección contra la falsificación de direcciones MAC mediante, por ejemplo, MACsec o 802.1X.
¿Qué sucede si asigno una MAC con el séptimo u octavo bit establecido en "1", es decir, una dirección local o multicast? Es probable que tu red no lo note, pero formalmente tal dirección no cumpliría con el estándar, y es mejor no hacerlo.
Cómo funciona la aleatorización
Sabemos que con el fin de prevenir el rastreo del movimiento de personas mediante el escaneo de aire y la recopilación de MAC, los sistemas operativos de smartphones han estado utilizando tecnología de aleatorización durante varios años. Teóricamente, al escanear el aire en busca de redes conocidas, el smartphone envía paquetes (grupos de paquetes) del tipo 802.11 probe request con la dirección MAC como fuente:

La aleatorización activada permite especificar no una dirección "quemada", sino otra dirección fuente del paquete, que cambia en cada ciclo de escaneo, con el tiempo o de alguna otra manera. ¿Funciona esto? Veamos la estadística de direcciones MAC recopiladas del aire por el denominado "Wi-Fi Radar":
Toda la muestra
Muestra solo con el séptimo bit en cero
Número de registros en la base de datos
3920000
305000
Número de bit:
% bit «1»
% bit «1»
1
66.1%
43.3%
2
66.5%
43.4%
3
31.7%
43.8%
4
66.6%
46.4%
5
66.7%
45.7%
6
31.9%
46.4%
7
92.2%
0.0%
8
0.0%
0.0%
9
67.2%
47.5%
10
32.3%
45.6%
11
66.9%
45.3%
12
32.3%
46.8%
13
32.6%
50.1%
14
33.0%
56.1%
15
32.5%
45.0%
16
67.2%
48.3%
17
33.2%
56.9%
18
33.3%
56.8%
19
33.3%
56.3%
20
66.8%
43.2%
21
67.0%
46.4%
22
32.6%
50.1%
23
32.9%
51.2%
24
67.6%
52.2%
25
49.8%
47.8%
26
50.0%
50.0%
27
50.0%
50.2%
28
50.0%
49.8%
29
50.0%
49.4%
30
50.0%
50.0%
31
50.0%
49.7%
32
50.0%
49.9%
33
50.0%
49.7%
34
50.0%
49.6%
35
50.0%
50.1%
36
50.0%
49.5%
37
50.0%
49.9%
38
50.0%
49.8%
39
50.0%
49.9%
40
50.0%
50.1%
41
50.0%
50.2%
42
50.0%
50.2%
43
50.0%
50.1%
44
50.0%
50.1%
45
50.0%
50.0%
46
50.0%
49.8%
47
50.0%
49.8%
48
50.1%
50.9%
La imagen es completamente diferente.
El octavo bit del primer byte de la dirección MAC sigue siendo consistente con la naturaleza Unicast de la dirección SRC en el paquete probe request.
El séptimo bit se establece en un 92.2% de los casos en Local, lo que significa que se puede considerar con un alto grado de confianza que esta es la cantidad de direcciones colectadas que pertenecen a las aleatorizadas, mientras que menos del 8% son reales. Además, la distribución de bits en OUI para tales direcciones reales coincide aproximadamente con los datos de la tabla anterior.
¿A qué fabricante pertenecen las direcciones aleatorizadas según OUI (es decir, con el séptimo bit en '1')?
Fabricante según OUI
Proporción entre todas las direcciones
no encontrado en la base de IEEE
62.45%
Google Inc.
37.54%
otros
0.01%
Todas las direcciones aleatorizadas asociadas a Google pertenecen a un único OUI cuyo prefijo es DA:A1:19. ¿Qué es este prefijo? Vamos a verlo en .
private static final MacAddress BASE_GOOGLE_MAC = MacAddress.fromString("da:a1:19:0:0:0");El Android estándar utiliza un OUI registrado especial al buscar redes inalámbricas, uno de los pocos con el séptimo bit establecido.
Calcular la MAC real a partir de una aleatoria
Veamos allí mismo:
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 tres bytes inferiores, es un puro Random.nextLong(). "La recuperación patentada de una MAC real" es un engaño. Se puede esperar con un alto grado de confianza que los fabricantes de teléfonos Android apliquen otros OUI no registrados. No tenemos los fuentes de iOS, pero es probable que utilicen un algoritmo similar.
Lo mencionado anteriormente no descarta el funcionamiento de otros mecanismos de desanonimización de abonados Wi-Fi, basados en el análisis de otros campos del marco de la solicitud de sondeo, o la correlación de la frecuencia relativa de las solicitudes enviadas por el dispositivo. Sin embargo, rastrear a un abonado de manera confiable con métodos externos es extremadamente problemático. Los datos colectados son más adecuados para analizar la carga promedio/pico por ubicación y tiempo, basándose en grandes números, sin vincularse a dispositivos y personas específicos. Solo quienes están 'dentro', los propios fabricantes de sistemas operativos móviles, y las aplicaciones instaladas tienen datos precisos.
¿Qué puede ser peligroso en que otra persona conozca 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, hay una cierta probabilidad de poder registrar el momento en que aparece en un lugar donde se ha instalado un sensor. Al sustituir la dirección, se puede intentar "hacerse pasar" por su dispositivo, lo que podría funcionar solo si no se aplican medidas de seguridad adicionales (autenticación y/o cifrado). El 99.9% de las personas aquí no tienen de qué preocuparse.
La dirección MAC es más complicada de lo que parece, pero más simple de lo que podría ser.
Fuente: habr.com
