Tot ce ați vrut să știți despre adresa MAC

Tot ce ați vrut să știți despre adresa MACEste bine cunoscut că aceste șase biți, de obicei afișați în format hexazecimal, sunt alocați plăcii de rețea la fabricare și, la prima vedere, par aleatorii. Unii știu că primii trei biți ai adresei sunt identificatorul producătorului, iar ceilalți trei sunt alocați de acesta. De asemenea, se știe că îți poți atribui o adresă . Mulți au auzit și despre „adresele aleatorii” în Wi-Fi.

Să înțelegem ce înseamnă.

Adresa MAC (media access control address) este un identificator unic, alocat adaptorului de rețea, folosit în rețelele standardelor IEEE 802, în principal Ethernet, Wi-Fi și Bluetooth. Acesta se numește oficial „identificator de tip EUI-48”. Din nume este evident că adresa are o lungime de 48 de biți, adică 6 octeți. Nu există un standard universal pentru scrierea adresei (spre deosebire de adresa IPv4, unde octeții sunt întotdeauna separați prin puncte). De obicei este scrisă ca șase numere hexazecimale, separate prin două puncte: 00:AB:CD:EF:11:22, deși unii producători de echipamente preferă formatul 00-AB-CD-EF-11-22 și chiar 00ab.cdef.1122.

Istoric, adresele erau scrise în ROM-ul chipsetului plăcii de rețea fără posibilitatea de a fi modificate fără un programator de flash, dar în prezent, adresa poate fi modificată programatic, din sistemul de operare. Poți seta manual adresa MAC pe placa de rețea în Linux și MacOS (întotdeauna), Windows (aproape întotdeauna, dacă driverul permite), Android (numai rootat); cu iOS (fără root) o astfel de metodă nu este posibilă.

Structura adresei

Adresa constă dintr-o parte a identificatorului producătorului, OUI, și un identificator atribuit de producător. Scopul identificatorilor OUI (Organizationally Unique Identifier) implicată este organizația IEEE. De fapt, lungimea sa poate fi nu doar 3 octeți (24 de biți), ci 28 sau 36 de biți, din care se formează blocurile (MAC Address Block, MA) de tipuri Large (MA-L), Medium (MA-M) și Small (MA-S). Dimensiunea blocului alocat, în acest caz, va fi de 24, 20, 12 biți sau 16 milioane, 1 milion, 4 mii de adrese. În prezent, sunt distribuite aproximativ 38 de mii de blocuri, care pot fi vizualizate cu numeroase instrumente online, de exemplu la IEEE sau Wireshark.

Cui aparțin adresele

O analiză simplă a bazei de date publice de extragere a IEEE oferă destul de multe informații. De exemplu, unele organizații au revendicat mult blocuri OUI. Iată eroii noștri:

vendor
Numărul de blocuri/înregistrări
Numărul de adrese, milioane.

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

Privat
232
2704

Texas Instruments
212
3392

zte corporation
198
3168

Autoritatea de Înregistrare IEEE
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

La Google sunt doar 40, și nu este de mirare: ei nu produc atât de multe dispozitive de rețea.

Blocurile MAC nu sunt oferite gratuit, ci pot fi achiziționate pentru sume rezonabile (fără taxă de abonament) de $3000, $1800 sau $755, respectiv. Interesant este că, pentru o taxă suplimentară (pe an), poate fi achiziționat un 'scut' pentru informațiile publice despre blocul dedicat. În prezent, așa cum se vede, sunt 232 de astfel de blocuri.

Când se vor termina adresele MAC

Toți suntem destul de sătui de poveștile neîntrerupte timp de 10 ani despre faptul că 'adresele IPv4 se vor termina curând'. Da, obținerea unor noi blocuri IPv4 nu este ușoară. Este deja cunoscut că adresele IP sunt distribuite extrem de inegal; există blocuri gigantice și slab folosite, aparținând corporațiilor mari și instituțiilor guvernamentale din Statele Unite, fără prea multe speranțe de redistribuire în favoarea celor care au nevoie. Răspândirea NAT, CG-NAT și IPv6 a făcut ca problema lipsei adreselor publice să nu mai fie atât de acută.

Adresa MAC are 48 de biți, din care se pot considera 'utili' 46 (de ce? citește mai departe), ceea ce oferă 246 sau 1014 adrese, adică de 214 ori mai mult decât spațiul de adrese IPv4.
În prezent, sunt distribuite aproximativ jumătate de trilion de adrese, sau doar 0,73% din întregul volum. Până la epuizarea adreselor MAC mai este foarte, foarte mult.

Randomizarea biților

Se poate presupune că OUI sunt distribuite aleatoriu, iar furnizorul apoi atribuie de asemenea aleatoriu adrese dispozitivelor de rețea individuale. Este adevărat? Să ne uităm la distribuția biților în bazele de date de adrese MAC 802.11, adunate de sistemele de autorizare care funcționează în rețelele fără fir. WNAM. Adresele aparțin dispozitivelor reale care s-au conectat la Wi-Fi de-a lungul câțiva ani în trei țări. În plus, există o mică bază de date pentru dispozitive 802.3 din rețelele locale cu fir.

Vom împărți fiecare adresă MAC (șase octeți) din fiecare eșantion pe biți, pe octeți, și vom observa frecvența apariției biților '1' în fiecare din cele 48 de poziții. Dacă bitul este setat complet aleatoriu, probabilitatea de a obține '1' ar trebui să fie de 50%.

Eșantion Wi-Fi nr. 1 (Rusia)
Eșantion Wi-Fi nr. 2 (Belarus)
Extragerea Wi-Fi nr. 3 (Uzbekistan)
Extragerea LAN (Rusia)

Număr de înregistrări în bază
5929000
1274000
366000
1000

Numărul bitului:
% 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 unde provine această nedreptate în bitii 7 și 8? Acolo sunt aproape întotdeauna zerouri.

Într-adevăr, standardul definește acești biți ca fiind speciali (Wikipedia):
Tot ce ați vrut să știți despre adresa MAC

Bitul opt (de la început) al primului octet al adresei MAC se numește bit Unicast/Multicast și determină tipul de cadru (frame) transmis cu această adresă, normal (0) sau difuzare (1) (multicast sau broadcast). Pentru o interacțiune unicast normală a adaptorului de rețea, acest bit este setat la „0” în toate pachetele trimise.

Bitul șapte (de la început) al primului octet al adresei MAC se numește bit U/L (Universal/Local) și determină dacă adresa este global unică (0) sau local unică (1). În mod implicit, toate adresele „programate de fabricant” sunt global unice, de aceea, marea majoritate a adreselor MAC colectate conțin bitul șapte setat la „0”. În tabelul identificatorilor atribuiți OUI, doar aproximativ 130 de înregistrări au bitul U/L „1”, iar aparent acestea sunt blocuri de adrese MAC pentru nevoi speciale.

Din bitul șase până la primul bit al primului octet, biții din al doilea și al treilea octet din identificatorii OUI, și cu atât mai mult biții din octeții 4-6 ai adresei, atribuiți de fabricant, sunt distribuiți mai mult sau mai puțin uniform.

Astfel, în adresa MAC reală a adaptorului de rețea, biții sunt de fapt echivalenți și nu au sens tehnologic, cu excepția celor două biți de servicii din octetul de moștenire.

Răspândire

Este interesant de știut care producători de echipamente wireless sunt cei mai populari? Să unificăm căutarea în baza OUI cu datele extragerii nr. 1.

vendor
Cota de piață a dispozitivelor, %

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

neidentificat în baza 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

Practică arată că cu cât mai înstărit este contagenta abonaților rețelei wireless din acest loc, cu atât mai mare este cota de piață a dispozitivelor Apple.

Unicitate

Sunt adreselor MAC unice? Teoretic, da, deoarece fiecare dintre producătorii de dispozitive (proprietarii blocurilor MA) trebuie să asigure o adresă unică pentru fiecare dintre adaptoarele de rețea pe care le produc. Cu toate acestea, unii producători de cipuri, și anume:

  • 00:0A:F5 Airgo Networks, Inc. (acum Qualcomm)
  • 00:08:22 InPro Comm (acum MediaTek)

afişează ultimele trei octeți ai adresei MAC ca un număr aleator, aparent după fiecare repornire a dispozitivului. În eșantionul meu nr. 1, au fost găsite 82 de mii de astfel de adrese.

Este, desigur, posibil să-ți configurezi o adresă care nu este unică, prin setarea intenționată a acesteia „ca la vecin”, identificând-o printr-un sniffer, sau alegând-o la întâmplare. De asemenea, este posibil să obții accidental o adresă care nu este unică, de exemplu, prin restaurarea unui backup al configurației unui router de tip Mikrotik sau OpenWrt.

Ce se întâmplă dacă în rețea există două dispozitive cu aceeași adresă MAC? Totul depinde de logica echipamentului de rețea (routerul cablat, controllerul rețelei wireless). Cel mai probabil, ambele dispozitive nu vor funcționa, sau vor funcționa cu întreruperi. Din perspectiva standardelor IEEE, protecția împotriva falsificării adreselor MAC ar trebui abordată, de exemplu, prin MACsec sau 802.1X.

Ce se întâmplă dacă îți setezi o adresă MAC cu bitul 7 sau 8 setat pe „1”, adică o adresă locală sau multicast? Cel mai probabil, rețeaua ta nu va reacționa, dar formal, o astfel de adresă nu va respecta standardul, așa că mai bine să nu faci asta.

Cum funcționează randomizarea

Știm că, pentru a preveni urmărirea mișcărilor oamenilor prin scanarea frecvenței și colectarea adreselor MAC, multiple sisteme de operare pentru smartphone-uri aplică deja de câțiva ani tehnologia de randomizare. Teoretic, în timpul scanării frecvenței în căutarea rețelelor cunoscute, smartphone-ul trimite un pachet (grup de pachete) de tip 802.11 probe request cu adresa MAC ca sursă:

Tot ce ați vrut să știți despre adresa MAC

Randomizarea activată permite specificarea unei adrese de sursă a pachetului care nu este „hardcodată”, ci o altă adresă, care se schimbă la fiecare ciclu de scanare, în timp sau în alt mod. Funcționează asta? Să ne uităm la statistica adreselor MAC colectate din eter de așa-numitul „Wi-Fi Radar”:

Întregul eșantion
Eșantion doar cu bitul 7 nul

Număr de înregistrări în bază
3920000
305000

Numărul bitului:
% 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%

Imaginea este complet diferită.

Bitul 8 al primului octet al adresei MAC corespunde în continuare naturii Unicast a adresei SRC în pachetul probe request.

Bitul 7 este setat în 92.2% din cazuri pe Local, deci cu un grad suficient de încredere putem considera că exact această proporție de adrese colectate este asociată cu adresele randomizate, iar mai puțin de 8% — cu cele reale. În același timp, distribuția bitului în OUI pentru aceste adrese reale aproximativ coincide cu datele din tabelul anterior.

Careui producător, conform OUI, îi aparțin adresele randomizate (adică cu bitul 7 setat pe „1”)?

Producător conform OUI
Procentul din toate adresele

neidentificat în baza IEEE
62.45%

Google Inc.
37.54%

alte
0.01%

În același timp, toate adresele randomizate atribuite lui Google aparțin unui OUI cu prefixul DA:A1:19. Ce este acest prefix? Să ne uităm în sursele Android.

private static final MacAddress BASE_GOOGLE_MAC = MacAddress.fromString("da:a1:19:0:0:0");

Android-ul standard folosește un OUI special, înregistrat, care este unul dintre puținele cu bitul 7 setat.

Calculați adresa MAC reală dintr-o adresă randomizată

Să ne uităm acolo:

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;
    }

Adresa întreagă, sau ultimele trei byte-uri, este pur și simplu Random.nextLong(). „Recuperarea brevetată a adresei MAC reale” — este o înșelătorie. Cu un grad mare de încredere putem anticipa că producătorii de telefoane Android folosesc și alte OUI, neînregistrate. Nu avem sursele iOS, dar probabil că acolo a fost aplicat un algoritm similar.

Ceea ce s-a spus mai sus nu anulează funcționarea altor mecanisme de de-anonimizare a abonaților Wi-Fi, bazate pe analiza altor câmpuri din cadrul probei request, sau corelarea frecvenței relative a solicitărilor trimise de dispozitiv. Totuși, urmărirea de către surse externe a abonaților este extrem de problematica. Datele colectate sunt mai degrabă utile pentru analiza sarcinii medii/vârfurilor în funcție de locație și timp, pe baza unor numere mari, fără legătura cu dispozitive sau persoane specifice. Informațiile corecte sunt disponibile doar celor care sunt „în interior”, adică producătorilor de sisteme de operare mobile și aplicațiilor instalate.

Ce poate fi periculos în faptul că altcineva cunoaște adresa MAC a dispozitivului tău? Pentru rețelele cablate și wireless se poate organiza un atac de tip „denial of service”. De asemenea, pentru un dispozitiv wireless, există cu o anumită probabilitate posibilitatea de a fixa momentul în care acesta apare într-o zonă unde este instalat un senzor. Prin modificarea adresei, se poate încerca să „te reprezinte” ca fiind dispozitivul tău, ceea ce poate funcționa doar dacă nu se utilizează măsuri suplimentare de protecție (autentificare și/sau criptare). 99,9% dintre oameni nu au de ce să se îngrijoreze aici.

Adresa MAC este mai complexă decât pare, dar mai simplă decât ar putea fi.

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster