É bem conhecido que esses seis bytes, geralmente exibidos em formato hexadecimal, são atribuídos à placa de rede na fábrica e, à primeira vista, parecem aleatórios. Alguns sabem que os primeiros três bytes do endereço são o identificador do fabricante, enquanto os outros três são atribuídos a ele. Também é sabido que é possível configurar um endereço aleatório. Muitos também ouviram sobre os 'endereços aleatórios' no Wi-Fi.
Vamos entender o que é isso.
O endereço MAC (endereço de controle de acesso à mídia) é um identificador único atribuído a um adaptador de rede, utilizado em redes dos padrões IEEE 802, principalmente Ethernet, Wi-Fi e Bluetooth. Ele é oficialmente chamado de 'identificador do tipo EUI-48'. Como o nome sugere, o endereço tem 48 bits de comprimento, ou seja, 6 bytes. Não existe um padrão universal para a escrita do endereço (ao contrário do endereço IPv4, onde os octetos são sempre separados por pontos). Geralmente, é escrito como seis números hexadecimais separados por dois pontos: 00:AB:CD:EF:11:22, embora alguns fabricantes de hardware prefiram a notação 00-AB-CD-EF-11-22 e até 00ab.cdef.1122.
Historicamente, os endereços eram gravados em ROM do chipset da placa de rede sem a possibilidade de modificação sem um programador de flash, mas atualmente o endereço pode ser alterado por software, a partir do sistema operacional. É possível definir manualmente o endereço MAC da placa de rede em Linux e MacOS (sempre), Windows (quase sempre, se o driver permitir), Android (apenas com root); com iOS (sem root) tal truque não é possível.
Estrutura do endereço
O endereço é composto por uma parte do identificador do fabricante, OUI, e um identificador atribuído pelo fabricante. Os identificadores OUI (Identificador Único Organizacional) são atribuídos pela organização IEEE. Na verdade, seu comprimento pode não ser apenas de 3 bytes (24 bits), mas sim de 28 ou 36 bits, dos quais se formam blocos (Bloco de Endereço MAC, MA) de endereços dos tipos Grande (MA-L), Médio (MA-M) e Pequeno (MA-S), respectivamente. O tamanho do bloco atribuído, nesse caso, será de 24, 20, 12 bits ou 16 milhões, 1 milhão, 4 mil endereços. Atualmente, cerca de 38 mil blocos estão distribuídos, e podem ser visualizados por meio de inúmeras ferramentas online, como na ou .
A quem pertencem os endereços
Um processamento simples de banco de dados publicamente acessível Número de blocos/registros
Fornecedor
Número de endereços, em milhões.
Cisco Systems Inc
Cisco Systems Inc
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
No Google, existem apenas 40 deles, e isso não é surpreendente: eles próprios não fabricam muitos dispositivos de rede.
Os blocos MAC não são fornecidos gratuitamente, eles podem ser adquiridos a preços razoáveis (sem taxa de assinatura) por $3000, $1800 ou $755, respectivamente. Curiosamente, por um valor adicional (anualmente), é possível adquirir a 'ocultação' de informações públicas sobre um bloco dedicado. Atualmente, existem 232 deles, como mostrado acima.
Quando acabarão os endereços MAC
Estamos todos bastante cansados das incessantes histórias há 10 anos sobre a iminente escassez de endereços IPv4. Sim, obter novos blocos de IPv4 já não é fácil. Entretanto, sabe-se que os endereços IP ; existem blocos gigantes e pouco utilizados, pertencentes a grandes corporações e entidades governamentais dos EUA, embora sem grandes esperanças de redistribuição em benefício dos necessitados. A disseminação de NAT, CG-NAT e IPv6 tornou o problema da escassez de endereços públicos menos premente.
Um endereço MAC tem 48 bits, dos quais 46 podem ser considerados 'úteis' (por quê? leia mais adiante), o que dá 246 ou 1014 endereços, que é 214 vezes maior do que o espaço de endereçamento IPv4.
Atualmente, cerca de meio trilhão de endereços estão distribuídos, ou seja, apenas 0,73% de todo o volume. Estamos muito, muito longe de esgotar os endereços MAC.
Aleatoriedade dos bits
Pode-se supor que os OUI são distribuídos aleatoriamente, e o fornecedor então também atribui aleatoriamente endereços a dispositivos de rede individuais. Será que é assim? Vamos olhar a distribuição dos bits nos bancos de dados de endereços MAC de dispositivos 802.11 que possuo, coletados por sistemas de autorização operacionais em redes sem fio. . Os endereços pertencem a dispositivos reais que se conectaram ao Wi-Fi ao longo de vários anos em três países. Além disso, há uma pequena base de dados de dispositivos 802.3 de LANs com fio.
Vamos dividir cada endereço MAC (seis bytes) de cada uma das amostras em bits byte a byte e ver a frequência de ocorrência do bit '1' em cada uma das 48 posições. Se o bit for definido de forma totalmente aleatória, a probabilidade de obter '1' deve ser 50%.
Amostra Wi-Fi nº 1 (Rússia)
Amostra Wi-Fi nº 2 (Bielorrússia)
Amostra Wi-Fi nº 3 (Uzbequistão)
Amostra LAN (PT)
Número de registros no banco de dados
5929000
1274000
366000
1000
Número do 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 onde vem essa injustiça nos bits 7 e 8? Quase sempre são zeros.
De fato, o padrão define esses bits como especiais ():

O oitavo (do início) bit do primeiro byte do endereço MAC é chamado de bit Unicast/Multicast e define que tipo de quadro (frame) está sendo transmitido com este endereço, normal (0) ou de broadcast (1) (multicast ou broadcast). Para interações unicast normais do adaptador de rede, esse bit é definido como "0" em todos os pacotes enviados para ele.
O sétimo (do início) bit do primeiro byte do endereço MAC é chamado de bit U/L (Universal/Local) e determina se o endereço é globalmente único (0) ou localmente único (1). Por padrão, todos os endereços "programados pelo fabricante" são globalmente únicos, portanto, a grande maioria dos endereços MAC coletados contém o sétimo bit definido como "0". Na tabela de identificadores OUI atribuídos, apenas cerca de 130 registros têm o bit U/L "1", e aparentemente, são blocos de endereços MAC para necessidades especiais.
Do sexto ao primeiro bit do primeiro byte, os bits do segundo e terceiro byte nos identificadores OUI, e muito menos os bits nos bytes 4-6 do endereço, atribuídos pelo fabricante, estão distribuídos mais ou menos uniformemente.
Dessa forma, em um endereço MAC real do adaptador de rede, os bits são, na prática, equivalentes e não têm sentido tecnológico, exceto pelos dois bits de serviço do byte superior.
Prevalência
É interessante saber quais fabricantes de equipamentos sem fio são os mais populares? Vamos combinar a pesquisa no banco de dados OUI com os dados da amostra nº 1.
Fornecedor
Participação 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
não encontrado na base 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
A prática mostra que quanto mais abastado o público de assinantes de uma rede sem fio neste local, maior a participação de dispositivos da Apple.
Unicidade
Os endereços MAC são únicos? Em teoria, sim, uma vez que cada fabricante de dispositivos (proprietário do bloco MAC) é obrigado a garantir um endereço exclusivo para cada um de seus adaptadores de rede produzidos. No entanto, alguns fabricantes de chips, a saber:
- 00:0A:F5 Airgo Networks, Inc. (agora Qualcomm)
- 00:08:22 InPro Comm (agora MediaTek)
apresentam os últimos três bytes do endereço MAC como um número aleatório, aparentemente após cada reinicialização do dispositivo. Na minha amostra nº 1, foram encontrados 82 mil desses endereços.
Você pode, claro, configurar um endereço não exclusivo de outra pessoa, intencionalmente, ajustando-o "como o do vizinho", identificando-o com um sniffer, ou escolhendo ao acaso. Também é possível acidentalmente configurar um endereço não exclusivo, por exemplo, restaurando um backup de configuração de algum roteador como Mikrotik ou OpenWrt.
O que acontece se houver dois dispositivos na rede com o mesmo endereço MAC? Tudo depende da lógica do equipamento de rede (roteador com fio, controlador de rede sem fio). Provavelmente, ambos os dispositivos não funcionarão ou terão funcionamento intermitente. Do ponto de vista dos padrões IEEE, a proteção contra falsificação de endereços MAC deve ser tratada, por exemplo, com MACsec ou 802.1X.
E se você configurar um MAC com o sétimo ou oitavo bit definido como "1", ou seja, endereço local ou multicast? Provavelmente, sua rede não notará, mas formalmente, tal endereço não estará em conformidade com o padrão, e é melhor não fazer isso.
Como funciona a randomização
Sabemos que, com o objetivo de prevenir o rastreamento de movimentos das pessoas por meio da varredura do espectro e coleta de endereços MAC, os sistemas operacionais de smartphones já utilizam a tecnologia de randomização há vários anos. Teoricamente, ao escanear o espectro em busca de redes conhecidas, o smartphone envia um pacote (grupo de pacotes) do tipo 802.11 probe request com o endereço MAC como fonte:

A randomização ativada permite especificar não um endereço "gravado", mas algum outro endereço de fonte do pacote, alterando-se a cada ciclo de escaneamento, no tempo ou de outra forma. Isso funciona? Vamos observar as estatísticas dos endereços MAC coletados do espectro pelo chamado "Wi-Fi Radar":
Toda a amostra
Amostra apenas com o 7º bit zero
Número de registros no banco de dados
3920000
305000
Número do 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%
A imagem é completamente diferente.
O 8º bit do primeiro byte do endereço MAC ainda corresponde à natureza Unicast do endereço SRC no pacote probe request.
O 7º bit é definido como Local em 92,2% das vezes, ou seja, podemos afirmar com um bom grau de certeza que essa é a proporção de endereços coletados que são aleatórios, enquanto menos de 8% correspondem a endereços reais. Além disso, a distribuição dos bits no OUI para esses endereços reais coincide aproximadamente com os dados da tabela anterior.
A qual fabricante, segundo o OUI, pertencem os endereços aleatórios (ou seja, com o 7º bit em “1”)?
Fabricante segundo o OUI
Proporção entre todos os endereços
não encontrado na base IEEE
62.45%
Google Inc.
37.54%
outros
0.01%
Todos os endereços aleatórios associados ao Google pertencem a um único OUI com o prefixo DA:A1:19. Que prefixo é esse? Vamos dar uma olhada em .
private static final MacAddress BASE_GOOGLE_MAC = MacAddress.fromString("da:a1:19:0:0:0");O Android de fábrica, ao buscar redes sem fio, utiliza um OUI registrado especial, um dos poucos com o 7º bit definido.
Calcular o MAC real a partir de um aleatório
Vamos olhar lá também:
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;
}
O endereço completo, ou seus três últimos bytes, é simplesmente Random.nextLong(). "Ressarcimento patenteado do MAC real" é uma farsa. É razoavelmente certo que os fabricantes de telefones Android utilizam OUI não registrados. Não temos o código-fonte do iOS, mas provavelmente ele emprega um algoritmo similar.
O que foi dito acima não elimina a efetividade de outros mecanismos de desanonimização de assinantes Wi-Fi, que se baseiam na análise de outros campos do quadro de requisições probe, ou na correlação da frequência relativa dos pedidos enviados pelo dispositivo. Contudo, rastrear um assinante através de meios externos é extremamente problemático. Os dados coletados são mais adequados para analisar a carga média/pico por localização e tempo, com base em grandes números, sem vínculo a dispositivos ou pessoas específicas. Os dados precisos estão somente com aqueles que estão 'por dentro', como os próprios fabricantes de sistemas operacionais móveis e aplicativos instalados.
O que pode ser perigoso se alguém descobrir o endereço MAC do seu dispositivo? Em redes com e sem fio, é possível organizar um ataque de 'negação de serviço'. Para um dispositivo sem fio, além disso, pode haver uma probabilidade de capturar o momento em que ele aparece em um local onde um sensor está instalado. Ao falsificar o endereço, é possível tentar 'se passar' pelo seu dispositivo, o que pode funcionar apenas se não houver medidas adicionais de segurança (autenticação e/ou criptografia). 99,9% das pessoas aqui não têm com o que se preocupar.
O endereço MAC é mais complicado do que parece, mas mais simples do que poderia ser.
Fonte: habr.com
