È noto che consistono in sei byte, generalmente visualizzati in formato esadecimale, attribuiti alla scheda di rete in fabbrica e, a prima vista, sembrano casuali. Alcuni sanno che i primi tre byte dell'indirizzo sono l'identificatore del produttore, mentre gli ultimi tre vengono assegnati a loro. È anche risaputo che è possibile impostare un indirizzo . Molti hanno sentito parlare anche degli "indirizzi casuali" nel Wi-Fi.
Vediamo di cosa si tratta.
L'indirizzo MAC (media access control address) è un identificatore unico assegnato all'adattatore di rete, utilizzato nelle reti standard IEEE 802, principalmente Ethernet, Wi-Fi e Bluetooth. È ufficialmente chiamato "identificatore di tipo EUI-48". Dalla denominazione è evidente che l'indirizzo ha una lunghezza di 48 bit, cioè 6 byte. Non esiste uno standard comune per la scrittura dell'indirizzo (a differenza dell'indirizzo IPv4, dove gli ottetti sono sempre separati da punti). Di solito è scritto come sei numeri esadecimali separati da due punti: 00:AB:CD:EF:11:22, anche se alcuni produttori di hardware preferiscono la scrittura del tipo 00-AB-CD-EF-11-22 e persino 00ab.cdef.1122.
Storicamente, gli indirizzi venivano scritti nella ROM del chipset della scheda di rete senza possibilità di modifica senza un programmatore flash, ma attualmente l'indirizzo può essere cambiato programmaticamente, dal sistema operativo. È possibile impostare manualmente l'indirizzo MAC sulla scheda di rete in Linux e MacOS (sempre), Windows (quasi sempre, se il driver lo consente), Android (solo rootato); con iOS (senza root) questo trucco non è possibile.
Struttura dell'indirizzo
L'indirizzo è composto da una parte dell'identificatore del produttore, OUI, e dall'identificatore assegnato dal produttore. Gli identificatori OUI (Organizationally Unique Identifier) sono gestiti un'organizzazione IEEE. In realtà, la sua lunghezza può essere di 3 byte (24 bit), ma anche di 28 o 36 bit, da cui si formano i blocchi (MAC Address Block, MA) degli indirizzi dei tipi Large (MA-L), Medium (MA-M) e Small (MA-S) rispettivamente. La dimensione del blocco assegnato in tal caso sarà di 24, 20, 12 bit, o 16 milioni, 1 milione, 4 mila indirizzi. Attualmente, sono stati distribuiti circa 38.000 blocchi, che possono essere consultati tramite molti strumenti online, ad esempio o .
A chi appartengono gli indirizzi
Elaborazione semplice di un database pubblico IEEE fornisce molte informazioni. Ad esempio, alcune organizzazioni hanno acquisito molti blocchi OUI. Ecco i nostri eroi:
Fornitore
Numero di blocchi/record
Numero di indirizzi, mln.
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
Privato
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
Google ne ha solo 40, e non sorprende: producono loro stessi non molti dispositivi di rete.
I blocchi MA non sono forniti gratuitamente, possono essere acquistati a un costo ragionevole (senza canone) per $3000, $1800 o $755 rispettivamente. È interessante notare che è possibile acquistare 'la copertura' delle informazioni pubbliche su un blocco dedicato per un costo aggiuntivo (annuale). Al momento sono 232, come visibile sopra.
Quando finiranno gli indirizzi MAC
Siamo tutti piuttosto stanchi delle storie che si trascinano da circa 10 anni su come 'gli indirizzi IPv4 stanno per finire'. Sì, ottenere nuovi blocchi IPv4 è diventato difficile. È noto, però, che gli indirizzi IP ; esistono blocchi enormi e poco utilizzati, appartenenti a grandi aziende e enti governativi degli Stati Uniti, comunque senza particolari speranze di una loro ridistribuzione a favore di chi ne ha bisogno. La diffusione di NAT, CG-NAT e IPv6 ha reso meno acuta la questione della scarsità di indirizzi pubblici.
L'indirizzo MAC è di 48 bit, dei quali ne possono essere considerati 'utili' 46 (perché? leggi oltre), il che fornisce 246 o 1014 indirizzi, che sono 214 volte più dello spazio indirizzi IPv4.
Attualmente sono stati distribuiti circa mezzo trilione di indirizzi, ovvero solo lo 0,73% dell'intero volume. C'è ancora molta strada da fare prima di esaurire gli indirizzi MAC.
Casualità dei bit
Si potrebbe supporre che gli OUI siano distribuiti casualmente e che il fornitore poi assegni anch'esso casualmente gli indirizzi ai singoli dispositivi di rete. È davvero così? Diamo un'occhiata alla distribuzione dei bit nelle basi di dati MAC degli apparecchi 802.11 in mio possesso, raccolte da sistemi di autenticazione attivi in reti wireless. . Gli indirizzi appartengono a dispositivi reali che si sono connessi al Wi-Fi per diversi anni in tre paesi. In aggiunta, c'è una piccola base di dati di dispositivi 802.3 della rete LAN cablata.
Analizzeremo ogni indirizzo MAC (sei byte) di ciascun campione bit per bit e osserveremo la frequenza del bit «1» in ciascuna delle 48 posizioni. Se il bit è impostato in modo completamente casuale, la probabilità di ottenere un «1» dovrebbe essere del 50%.
Campione Wi-Fi n. 1 (RF)
Campione Wi-Fi n. 2 (Bielorussia)
Campione Wi-Fi n. 3 (Uzbekistan)
Campione LAN (RF)
Numero di registrazioni nel database
5929000
1274000
366000
1000
Numero del bit:
% di bit «1»
% di bit «1»
% di bit «1»
% di 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%
Da dove proviene questa ingiustizia nei bit 7 e 8? Lì ci sono quasi sempre zeri.
Infatti, lo standard definisce questi bit come speciali ():

L'ottavo (dal principio) bit del primo byte dell'indirizzo MAC è chiamato bit Unicast/Multicast e determina che tipo di frame viene trasmesso con questo indirizzo, normale (0) o broadcast (1) (multicast o broadcast). Per l'interazione unicast normale dell'adattatore di rete, questo bit è impostato a «0» in tutti i pacchetti inviati.
Il settimo bit del primo byte dell'indirizzo MAC è chiamato bit U/L (Universale/Locale) e determina se l'indirizzo è globalmente unico (0) o localmente unico (1). Di default, tutti gli indirizzi "programmati dal produttore" sono globalmente unici, pertanto la stragrande maggioranza degli indirizzi MAC assegnati ha il settimo bit impostato su "0". Nella tabella degli identificatori OUI assegnati, solo circa 130 voci hanno il bit U/L impostato su "1", e apparentemente si tratta di blocchi di indirizzi MAC per scopi speciali.
Dal sesto al primo bit del primo byte, i bit del secondo e terzo byte negli identificatori OUI, e tanto più i bit nei byte 4-6 dell'indirizzo, assegnati dal produttore, sono distribuiti in modo più o meno uniforme.
Pertanto, nel reale indirizzo MAC dell'adattatore di rete, i bit sono di fatto equivalenti e non portano un significato tecnologico, ad eccezione dei due bit di servizio del byte più significativo.
Prevalenza
È interessante sapere quali produttori di dispositivi wireless sono i più popolari? Uniamo la ricerca nel database OUI ai dati del campione n. 1.
Fornitore
Quota di dispositivi, %
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
non trovato nel database IEEE
1,92
Lenovo Mobile Communication Technology Ltd.
1,71
HTC Corporation
1,68
Murata Manufacturing
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 pratica mostra che quanto più benestante è il gruppo di abbonati di una rete wireless in un luogo, tanto maggiore è la quota di dispositivi Apple.
Unicità
Gli indirizzi MAC sono unici? In teoria, sì, poiché ciascun produttore di dispositivi (proprietario del blocco MAC) è obbligato a garantire un indirizzo unico per ogni adattatore di rete che produce. Tuttavia, alcuni produttori di chip, in particolare:
- 00:0A:F5 Airgo Networks, Inc. (ora Qualcomm)
- 00:08:22 InPro Comm (ora MediaTek)
generano gli ultimi tre byte dell'indirizzo MAC come un numero casuale, apparentemente dopo ogni riavvio del dispositivo. Nella mia selezione n. 1 sono stati trovati 82 mila di questi indirizzi.
È possibile impostare un indirizzo non unico, ovviamente, impostandolo deliberatamente "come il vicino", determinandolo con uno sniffer o scegliendolo a caso. È anche possibile impostarlo accidentalmente non unico, ad esempio, eseguendo il ripristino di un backup di configurazione di un router come Mikrotik o OpenWrt.
Cosa succede se ci sono due dispositivi nella rete con lo stesso indirizzo MAC? Tutto dipende dalla logica dell'hardware di rete (router cablato, controller della rete wireless). Probabilmente, entrambi i dispositivi non funzioneranno o funzioneranno in modo irregolare. Secondo gli standard IEEE, la protezione contro la contraffazione degli indirizzi MAC dovrebbe essere affrontata, ad esempio, mediante MACsec o 802.1X.
Cosa succede se impostiamo un MAC con il settimo o ottavo bit impostato a "1", ossia un indirizzo locale o multicast? Probabilmente, la tua rete non ci farà caso, ma formalmente tale indirizzo non sarà conforme allo standard e sarebbe meglio evitarlo.
Come funziona la randomizzazione
Sappiamo che, per prevenire il tracciamento dei movimenti delle persone tramite la scansione delle onde e la raccolta degli indirizzi MAC, i sistemi operativi degli smartphone utilizzano da alcuni anni la tecnologia di randomizzazione. Teoricamente, durante la scansione delle onde alla ricerca di reti note, lo smartphone invia un pacchetto (gruppo di pacchetti) di tipo 802.11 probe request con l'indirizzo MAC come sorgente:

La randomizzazione attivata consente di specificare non un indirizzo 'fissato', ma un altro indirizzo sorgente del pacchetto, che cambia ad ogni ciclo di scansione, nel tempo o in altro modo. Funziona davvero? Diamo un'occhiata alle statistiche degli indirizzi MAC raccolti dall'onda noto come 'Wi-Fi Radar':
Tutto il campione
Campione con il 7° bit nullo
Numero di registrazioni nel database
3920000
305000
Numero del bit:
% di bit «1»
% di 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 situazione è completamente diversa.
L'ottavo bit del primo byte dell'indirizzo MAC corrisponde ancora alla natura Unicast dell'indirizzo SRC nel pacchetto probe request.
Il 7° bit è impostato nel 92,2% dei casi su Local, cioè con una sufficiente certezza si può ritenere che il numero di indirizzi raccolti sia riconducibile alla randomizzazione, mentre meno dell'8% sono reali. Inoltre, la distribuzione dei bit nell'OUI per questi indirizzi reali coincide approssimativamente con i dati della tabella precedente.
A quale produttore appartengono gli indirizzi randomizzati secondo l'OUI (cioè con il settimo bit impostato a «1»)?
Produttore secondo l'OUI
Quota tra tutti gli indirizzi
non trovato nel database IEEE
62.45%
Google Inc.
37.54%
altri
0.01%
Tutti gli indirizzi randomizzati associati a Google appartengono a un OUI con il prefisso DA:A1:19. Qual è questo prefisso? Diamo un'occhiata a .
private static final MacAddress BASE_GOOGLE_MAC = MacAddress.fromString("da:a1:19:0:0:0");Android stock cerca le reti wireless utilizzando un OUI registrato, uno dei pochi con il settimo bit impostato.
Calcola il MAC reale da un randomico
Diamo un'occhiata lì:
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;
}
L'indirizzo completo, o i suoi tre byte inferiori, è un Random.nextLong(). «Il ripristino brevetto del MAC reale» è una truffa. È lecito aspettarsi con un alto grado di certezza che i produttori di telefoni Android usino anche altri OUI non registrati. Non abbiamo il codice sorgente di iOS, ma è probabile che utilizzi un algoritmo simile.
Quanto sopra non esclude il funzionamento di altri meccanismi di de-anonimizzazione degli abbonati Wi-Fi, basati sull'analisi di altri campi del frame probe request o sulla correlazione della frequenza relativa delle richieste inviate dai dispositivi. Tuttavia, rintracciare con certezza un abbonato mediante strumenti esterni è estremamente problematico. I dati raccolti sono più adatti per l'analisi del carico medio/pico in base alla posizione e al tempo, utilizzando grandi numeri, senza legami con dispositivi e persone specifici. Solo coloro che sono «dentro», ovvero i produttori di sistemi operativi mobili e le applicazioni installate, hanno dati precisi.
Quali rischi ci sono nel fatto che qualcun altro conosca l'indirizzo MAC del tuo dispositivo? Per le reti cablate e wireless, è possibile organizzare un attacco di tipo "denial of service". Inoltre, per un dispositivo wireless, c'è la possibilità di monitorare il momento in cui si presenta in un'area dove è posizionato un sensore. Sostituendo l'indirizzo, si può tentare di "fingere" di essere il tuo dispositivo, il che può funzionare solo se non vengono utilizzati ulteriori strumenti di protezione (autenticazione e/o crittografia). Il 99,9% delle persone non ha nulla di cui preoccuparsi.
L'indirizzo MAC è più complesso di quanto sembri, ma più semplice di quanto potrebbe essere.
Fonte: habr.com
