È noto a tutti che si tratta di sei byte, di solito visualizzati in formato esadecimale, assegnati alla scheda di rete in fabbrica e che, a prima vista, sembrano casuali. Alcuni sanno che i primi tre byte dell'indirizzo sono identificatori del produttore, mentre gli altri tre byte vengono assegnati da esso. È anche noto che si può impostare un indirizzo . Molti hanno sentito parlare anche degli "indirizzi casuali" nel Wi-Fi.
Esploriamo 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". Dal nome è chiaro 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, sebbene alcuni produttori di hardware preferiscano la forma 00-AB-CD-EF-11-22 e persino 00ab.cdef.1122.
Storicamente, gli indirizzi erano incorporati nella ROM del chipset della scheda di rete senza possibilità di modifica senza un programmatore di flash, ma attualmente l'indirizzo può essere cambiato via software, dal sistema operativo. È possibile impostare manualmente l'indirizzo MAC sulla scheda di rete in Linux e MacOS (sempre), Windows (quasi sempre, se lo permette il driver), Android (solo se rootato); con iOS (senza root) un trucco del genere non è possibile.
Struttura dell'indirizzo
L'indirizzo è composto da una parte dell'identificatore del produttore, OUI, e da un identificatore assegnato dal produttore. L'assegnazione degli identificatori OUI (Organizationally Unique Identifier) è gestita dall'organizzazione IEEE. In realtà, la sua lunghezza può essere non solo di 3 byte (24 bit), ma anche di 28 o 36 bit, dai quali si formano blocchi (MAC Address Block, MA) di indirizzi di tipo Large (MA-L), Medium (MA-M) e Small (MA-S) rispettivamente. La dimensione del blocco emesso, in tal caso, sarà di 24, 20, 12 bit o 16 milioni, 1 milione, 4 mila indirizzi. Attualmente sono stati distribuiti circa 38 mila blocchi, che possono essere visualizzati attraverso vari strumenti online, ad esempio presso o .
A chi appartengono gli indirizzi
Un'elaborazione non difficile del database pubblico IEEE fornisce molte informazioni. Ad esempio, alcune organizzazioni si sono riservate 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
In Google ce ne sono solo 40, e non sorprende: loro stessi non producono così tanti dispositivi di rete.
I blocchi MA non vengono forniti gratuitamente, possono essere acquistati a un prezzo ragionevole (senza abbonamento) a $3000, $1800 o $755 rispettivamente. È interessante notare che per un prezzo aggiuntivo (annuo) è possibile acquistare la "cancellazione" delle informazioni pubbliche su un blocco dedicato. Attualmente, come si vede sopra, ce ne sono 232.
Quando finiranno gli indirizzi MAC
Siamo tutti piuttosto stanchi delle incessanti storie che durano già da 10 anni su come gli "indirizzi IPv4 stanno per finire". Sì, ottenere nuovi blocchi IPv4 è già complicato. Tuttavia, è noto che gli indirizzi IP ; esistono blocchi giganteschi e poco utilizzati, appartenenti a grandi corporazioni e istituzioni pubbliche degli Stati Uniti, senza particolare speranza di essere ridistribuiti a favore di chi ne ha bisogno. La diffusione di NAT, CG-NAT e IPv6 ha reso il problema della carenza di indirizzi pubblici meno urgente.
Un indirizzo MAC ha 48 bit, di cui 46 possono essere considerati "utili" (perché? leggi oltre), il che fornisce 246 o 1014 indirizzi, che sono 214 volte più del blocco indirizzi IPv4.
Attualmente sono distribuiti circa mezzo trilione di indirizzi, ovvero solo lo 0,73% dell'intero volume. È ancora molto, molto lontano dall'esaurimento degli indirizzi MAC.
Casualità dei bit
Si può supporre che gli OUI siano distribuiti casualmente, e il fornitore successivamente assegna anche casualmente gli indirizzi ai singoli dispositivi di rete. È così? Esaminiamo la distribuzione dei bit negli indirizzi MAC 802.11 in mio possesso, raccolti da sistemi di autorizzazione funzionanti in reti wireless . Gli indirizzi appartengono a dispositivi reali che si sono connessi al Wi-Fi nel corso degli anni in tre paesi. In aggiunta c'è una piccola base di dispositivi 802.3 su rete cablata.
Smontiamo ogni indirizzo MAC (sei byte) di ciascun campione in bit byte per byte, e osserviamo la frequenza di apparizione 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%.
Selezione Wi-Fi n. 1 (RF)
Selezione Wi-Fi n. 2 (Bielorussia)
Selezione Wi-Fi n. 3 (Uzbekistan)
Selezione LAN (RF)
Numero di registrazioni nel database
5929000
1274000
366000
1000
Numero di 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%
Da dove proviene questa ingiustizia nei bit 7 e 8? Ci sono quasi sempre zeri.
In effetti, lo standard definisce questi bit come speciali ():

L'ottavo (inizio) bit del primo byte dell'indirizzo MAC è chiamato bit Unicast/Multicast e determina il tipo di frame trasmesso con questo indirizzo, normale (0) o broadcast (1) (multicast o broadcast). Per un normale interazione unicast dell'adattatore di rete, questo bit è impostato su «0» in tutti i pacchetti che vengono inviati.
Il settimo (inizio) 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, quindi la stragrande maggioranza degli indirizzi MAC raccolti ha il settimo bit impostato su «0». Nella tabella degli identificatori OUI assegnati, solo circa 130 registrazioni hanno il bit U/L «1», e apparentemente si tratta di blocchi di indirizzi MAC per esigenze particolari.
Dal sesto al primo bit del primo byte, i bit del secondo e terzo byte negli identificatori OUI, e tanto più i bit nei 4-6 byte dell'indirizzo, assegnati dal produttore, sono distribuiti più o meno uniformemente.
Così, in un reale indirizzo MAC dell'adattatore di rete, i bit sono di fatto equivalenti e non portano significato tecnologico, ad eccezione dei due bit di servizio del byte più significativo.
Diffusione
È interessante sapere quali produttori di attrezzature wireless sono i più popolari? Uniamo la ricerca nel database OUI con i dati della selezione 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 dimostra che più ricca è la clientela degli abbonati alla rete wireless in quel luogo, maggiore è la quota di dispositivi Apple.
Unicità
Gli indirizzi MAC sono unici? In teoria, sì, poiché ogni produttore di dispositivi (proprietario del blocco MAC) è obbligato a fornire un indirizzo unico per ciascun 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)
fissano gli ultimi tre byte dell'indirizzo MAC a un numero casuale, apparentemente dopo ogni riavvio del dispositivo. Nella mia campionatura n. 1 ne ho trovati 82.000.
È possibile impostare un indirizzo non unico di qualcun altro, naturalmente, installandolo deliberatamente "come il vicino", determinandolo con uno sniffer, oppure scegliendolo a caso. È anche possibile accidentalmente impostare un indirizzo non unico, eseguendo, ad esempio, un ripristino del backup della 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 di rete wireless). È probabile che entrambi i dispositivi non funzionino o funzionino a intermittenza. Dal punto di vista degli standard IEEE, la protezione contro la falsificazione degli indirizzi MAC dovrebbe essere affrontata, ad esempio, tramite MACsec o 802.1X.
Cosa succede se imposto un MAC con il settimo o l'ottavo bit impostato a "1", cioè un indirizzo locale o multicast? Probabilmente, la tua rete non se ne accorgerà, ma formalmente tale indirizzo non sarà conforme agli standard, e meglio evitarlo.
Come funziona la randomizzazione
Sappiamo che, al fine di prevenire il tracciamento dei movimenti delle persone attraverso la scansione dello spettro e la raccolta degli indirizzi MAC, i sistemi operativi degli smartphone da diversi anni adottano la tecnologia di randomizzazione. Teoricamente, durante la scansione dello spettro alla ricerca di reti conosciute, 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 "hardcoded", ma un altro indirizzo sorgente del pacchetto, che cambia ad ogni ciclo di scansione, nel tempo o in altro modo. Funziona? Diamo un'occhiata alle statistiche sugli indirizzi MAC raccolti dallo spettro da un cosiddetto "Wi-Fi Radar":
L'intero campione
Campione solo con il 7° bit impostato a zero
Numero di registrazioni nel database
3920000
305000
Numero di 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%
Il quadro è completamente diverso.
L'8° bit del primo byte dell'indirizzo MAC corrisponde ancora alla natura Unicast dell'indirizzo SRC nel pacchetto probe request.
Il 7° bit è impostato in Local nel 92,2% dei casi, quindi con una certa sicurezza possiamo affermare che questo è il numero di indirizzi raccolti che appartiene a quelli randomizzati, mentre meno dell'8% sono reali. La distribuzione dei bit in OUI per questi indirizzi reali corrisponde approssimativamente ai dati della tabella precedente.
A quale produttore appartengono gli indirizzi randomizzati secondo l'OUI (cioè con il 7° 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 assegnati a Google appartengono a un unico 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");L'Android stock utilizza, nella ricerca di reti wireless, un OUI registrato speciale, uno dei pochi con il settimo bit impostato.
Calcola il MAC reale da un randomico
Diamo un'occhiata anche 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, è puro Random.nextLong(). Il «recupero brevettato del MAC reale» è una truffa. Con un buon grado di certezza ci si può aspettare che i produttori di telefoni Android utilizzino anche altri OUI non registrati. Non abbiamo i sorgenti di iOS, ma è probabile che lì si utilizzi un algoritmo simile.
Quanto detto sopra non esclude il lavoro di altri meccanismi di de-anonimizzazione degli abbonati Wi-Fi, basati sull'analisi di altri campi del frame della richiesta probe, o sulla correlazione della frequenza relativa delle richieste inviate dal dispositivo. Tuttavia, è estremamente difficile tracciare un abbonato tramite mezzi esterni. I dati raccolti sono più adatti per analizzare il carico medio/pico per posizione e tempo, basandosi su grandi numeri, senza legami a dispositivi e persone specifici. Dati precisi sono in possesso solo di chi è 'dentro', cioè dei produttori di sistemi operativi mobili e delle applicazioni installate.
Cosa c'è di pericoloso nel fatto che qualcun altro possa conoscere l'indirizzo MAC del tuo dispositivo? Per le reti cablate e wireless, è possibile organizzare un attacco di 'negazione del servizio'. Per un dispositivo wireless, inoltre, con una certa probabilità è possibile rilevare il momento in cui appare in un luogo dove è installato un sensore. Modificando l'indirizzo, si può cercare di 'fingersi' il tuo dispositivo, il che potrebbe funzionare solo se non vengono utilizzati ulteriori mezzi di protezione (autenticazione e/o crittografia). Il 99,9% delle persone qui non ha nulla di cui preoccuparsi.
L'indirizzo MAC è più complicato di quanto sembri, ma più semplice di quanto potrebbe essere.
Fonte: habr.com
