Tot ce ai vrut să știi despre adresa MAC

Tot ce ai vrut să știi despre adresa MACToată lumea știe că acești șase octeți, afișați de obicei în format hexazecimal, sunt alocați plăcii de rețea din fabrică și sunt aparent aleatorii. Unii oameni știu că primii trei octeți ai adresei sunt ID-ul producătorului, iar restul de trei octeți le sunt alocați. De asemenea, se știe că te poți stabili singur arbitrar abordare. Mulți oameni au auzit despre „adrese aleatoare” în Wi-Fi.

Să ne dăm seama ce este.

Adresa MAC (adresa de control al accesului media) este un identificator unic atribuit unui adaptor de rețea, utilizat în rețelele standardelor IEEE 802, în principal Ethernet, Wi-Fi și Bluetooth. Oficial se numește „identificatorul 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 general acceptat pentru scrierea unei adrese (spre deosebire de o adresă IPv4, unde octeții sunt întotdeauna separați prin puncte, de obicei sunt scrise ca șase numere hexazecimale separate prin două puncte: 00:AB:CD:EF:11:). 22, deși unii producători de echipamente preferă notația 00 -AB-CD-EF-11-22 și chiar 00ab.cdef.1122.

Din punct de vedere istoric, adresele erau programate în memoria ROM a chipset-ului plăcii de rețea și nu puteau fi modificate fără un programator flash, dar în zilele noastre adresa poate fi modificată programatic din sistemul de operare. Puteți seta manual adresa MAC a plăcii de rețea în Linux și MacOS (întotdeauna), Windows (aproape întotdeauna, dacă șoferul permite), Android (doar cu root); cu iOS (fără root) un astfel de truc nu este posibil.

Structura adresei

Adresa constă dintr-o parte din identificatorul producătorului, OUI și un identificator atribuit de producător. Atribuirea identificatorilor OUI (Organizationally Unique Identifier). angajat în organizație IEEE. De fapt, lungimea sa poate fi nu numai de 3 octeți (24 de biți), ci de 28 sau 36 de biți, din care blocuri (MAC Address Block, MA) de adrese de tipurile Large (MA-L), Medium (MA-M) și Se formează mici (MA-S). Dimensiunea blocului emis, î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, acestea putând fi vizualizate folosind numeroase instrumente online, de exemplu IEEE sau Wireshark.

Cine deține adresele?

Procesare ușoară a disponibilului public descărcarea bazelor de date IEEE oferă o mulțime de informații. De exemplu, unele organizații și-au luat o mulțime de blocuri OUI pentru sine. Iată eroii noștri:

Furnizor
Numărul de blocuri/înregistrări
Număr 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

Precizia Hon Hai
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 are doar 40 dintre ele, iar acest lucru nu este surprinzător: ei înșiși nu produc multe dispozitive de rețea.

Blocurile MA nu sunt oferite gratuit, ele pot fi achiziționate la un preț rezonabil (fără o taxă de abonament) pentru 3000 USD, 1800 USD sau, respectiv, 755 USD. Interesant este că pentru bani suplimentari (pe an) puteți achiziționa „ascunderea” informațiilor publice despre blocul alocat. Acum sunt 232 dintre ele, după cum se vede mai sus.

Când vom rămâne fără adrese MAC?

Ne-am săturat cu toții de poveștile care au loc de 10 ani, că „adresele IPv4 sunt pe cale să se epuizeze”. Da, noile blocuri IPv4 nu mai sunt ușor de obținut. Se știe că adresele IP distribuite extrem de neuniform; Există blocuri gigantice și subutilizate deținute de mari corporații și agenții guvernamentale din SUA, cu puține speranțe de a le redistribui celor care au nevoie. Proliferarea NAT, CG-NAT și IPv6 a făcut ca problema deficitului de adrese publice să fie mai puțin acută.

O adresă MAC are 48 de biți, dintre care 46 pot fi considerați „utili” (de ce? citiți mai departe), ceea ce oferă 246 sau 1014 adrese, adică de 214 ori mai mult decât spațiul de adrese IPv4.
În prezent, aproximativ jumătate de trilion de adrese au fost distribuite, sau doar 0.73% din volumul total. Suntem încă foarte, foarte departe de a rămâne fără adrese MAC.

Biți aleatorii

Se poate presupune că OUI-urile sunt distribuite aleatoriu, iar vânzătorul atribuie, de asemenea, aleator adrese dispozitivelor individuale de rețea. E chiar asa? Să ne uităm la distribuția biților în bazele de date de adrese MAC ale dispozitivelor 802.11 pe care le am la dispoziție, colectate de sistemele de autorizare în funcționare în rețelele wireless WNAM. Adresele aparțin unor dispozitive reale care s-au conectat la Wi-Fi de-a lungul mai multor ani în trei țări. În plus, există o mică bază de date cu dispozitive LAN cu fir 802.3.

Să descompunem fiecare adresă MAC (șase octeți) a fiecăreia dintre eșantioane în biți, octet cu octet și să ne uităm la frecvența de apariție a bitului „1” în fiecare dintre cele 48 de poziții. Dacă bitul este setat într-o manieră complet arbitrară, atunci probabilitatea de a obține un „1” ar trebui să fie de 50%.

Selecția Wi-Fi nr. 1 (RF)
Eșantionul Wi-Fi nr. 2 (Belarus)
Selecția Wi-Fi nr. 3 (Uzbekistan)
Eșantionare LAN (RF)

Numărul de înregistrări din baza de date
5929000
1274000
366000
1000

Număr de biți:
% 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 ce așa nedreptate în 7 și 8 biți? Aproape întotdeauna există zerouri.

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

Al optulea (de la început) bit al primului octet al adresei MAC se numește bit Unicast/Multicast și determină ce tip de cadru (cadru) este transmis cu această adresă, regulat (0) sau broadcast (1) (multicast sau difuzat). Pentru comunicația normală, unicast adaptor de rețea, acest bit este setat la „0” în toate pachetele trimise către acesta.

Al șaptelea (de la început) bit al primului octet al adresei MAC se numește bit U/L (Universal/Local) și determină dacă adresa este unică la nivel global (0) sau unică local (1). În mod implicit, toate adresele „coase de producător” sunt unice la nivel global, astfel încât marea majoritate a adreselor MAC colectate conțin al șaptelea bit setat la „0”. În tabelul cu identificatorii OUI alocați, doar aproximativ 130 de intrări au un bit U/L de „1”, și se pare că acestea sunt blocuri de adrese MAC pentru nevoi speciale.

De la al șaselea până la primii biți ai primului octet, biții celui de-al doilea și al treilea octet din identificatorii OUI și cu atât mai mult biții din cei 4-6 octeți ai adresei atribuite de producător 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 echivalenti și nu au semnificație tehnologică, cu excepția a doi biți de serviciu ai octetului înalt.

Prevalența

Vă întrebați care producători de echipamente wireless sunt cei mai populari? Să combinăm căutarea în baza de date OUI cu datele din eșantionul nr. 1.

Furnizor
Ponderea 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 (comunicații mobile)
2,76

ASUSTek COMPUTER INC.
2,58

TCT mobil ltd
2,13

zte corporation
2,00

nu a fost găsit în baza de date 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

Practica arată că, cu cât contingentul de abonați la rețeaua wireless este mai prosper într-o anumită locație, cu atât este mai mare ponderea dispozitivelor Apple.

unicitatea

Adresele MAC sunt unice? În teorie, da, deoarece fiecare producător de dispozitiv (proprietar de bloc MA) trebuie să furnizeze o adresă unică pentru fiecare dintre adaptoarele de rețea pe care le produce. 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)

setați ultimii trei octeți ai adresei MAC la un număr aleatoriu, aparent după fiecare repornire a dispozitivului. Au fost 1 de mii de astfel de adrese în eșantionul meu nr. 82.

Puteți, desigur, să vă setați o adresă străină, neunică, setând-o intenționat „ca a vecinului tău”, identificând-o cu un sniffer sau alegând-o la întâmplare. De asemenea, este posibil să vă setați accidental o adresă non-unica, de exemplu, restabilind o configurație de rezervă a unui router precum Mikrotik sau OpenWrt.

Ce se va întâmpla dacă există două dispozitive în rețea cu aceeași adresă MAC? Totul depinde de logica echipamentului de rețea (router cu fir, controler de rețea fără fir). Cel mai probabil, ambele dispozitive fie nu vor funcționa, fie vor funcționa intermitent. Din punctul de vedere al standardelor IEEE, protecția împotriva falsificării adreselor MAC se propune să fie rezolvată folosind, de exemplu, MACsec sau 802.1X.

Ce se întâmplă dacă instalați un MAC cu al șaptelea sau al optulea bit setat la „1”, adică. adresa locala sau multicast? Cel mai probabil, rețeaua dvs. nu va acorda atenție acestui lucru, dar în mod oficial o astfel de adresă nu va respecta standardul și este mai bine să nu faceți acest lucru.

Cum funcționează randomizarea

Știm că, pentru a preveni urmărirea mișcărilor oamenilor prin scanarea și colectarea undelor de aer, sistemele de operare MAC pentru smartphone-uri folosesc tehnologia de randomizare de câțiva ani. Teoretic, atunci când scanează undele de emisie în căutarea rețelelor cunoscute, smartphone-ul trimite un pachet (grup de pachete) de tipul cererii de sondă 802.11 cu adresa MAC ca sursă:

Tot ce ai vrut să știi despre adresa MAC

Randomizarea activată vă permite să specificați nu cea „cusută”, ci o altă adresă sursă de pachet, schimbându-se cu fiecare ciclu de scanare, în timp sau într-un alt mod. Funcționează? Să ne uităm la statisticile adreselor MAC colectate din aer de așa-numitul „radar Wi-Fi”:

Întreaga probă
Eșantion numai cu zero al 7-lea bit

Numărul de înregistrări din baza de date
3920000
305000

Număr de biți:
% 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ă.

Al 8-lea bit al primului octet al adresei MAC corespunde în continuare naturii Unicast a adresei SRC din pachetul de solicitare a sondei.

Al 7-lea bit este setat la Local în 92.2% din cazuri, adică Cu un grad de încredere, putem presupune că exact atât de multe dintre adresele colectate sunt randomizate și mai puțin de 8% sunt reale. În acest caz, distribuția biților în OUI pentru astfel de adrese reale coincide aproximativ cu datele din tabelul anterior.

Care producător, conform OUI, deține adresele randomizate (adică cu al 7-lea bit în „1”)?

Producător de către OUI
Distribuie între toate adresele

nu a fost găsit în baza de date IEEE
62.45%

Google Inc.
37.54%

restul
0.01%

Mai mult, toate adresele randomizate atribuite Google aparțin aceluiași OUI cu prefixul DA:A1:19. Ce este acest prefix? Să ne uităm înăuntru surse Android.

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

Stock Android folosește un OUI special, înregistrat atunci când caută rețele wireless, una dintre puținele cu al șaptelea bit setat.

Calculați MAC real din unul aleatoriu

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

Întreaga adresă, sau cei trei octeți inferiori, este pură Random.nextLong()„Restaurarea brevetată a unui MAC real” este o înșelătorie. Se poate aștepta cu un grad ridicat de certitudine ca producătorii AndroidAlte OUI-uri neînregistrate sunt folosite și în telefoane. Nu avem codul sursă iOS, dar este probabil să se folosească un algoritm similar acolo.

Cele de mai sus nu anulează activitatea altor mecanisme de de-anonimizare a abonaților Wi-Fi, pe baza analizei altor câmpuri ale cadrului de solicitare a sondei sau a corelării frecvenței relative a solicitărilor trimise de dispozitiv. Cu toate acestea, urmărirea fiabilă a unui abonat folosind mijloace externe este extrem de problematică. Datele colectate vor fi mai potrivite pentru analiza încărcăturii medii/de vârf în funcție de locație și timp, pe baza unor numere mari, fără referire la anumite dispozitive și persoane. Doar cei „din interior”, producătorii de sisteme de operare mobile și aplicațiile instalate au date exacte.

Ce este periculos în cazul în care cineva află adresa MAC a dispozitivului tău? Un atac de tip denial-of-service poate fi lansat atât în ​​rețelele cu fir, cât și în cele fără fir. Pentru un dispozitiv fără fir, există și posibilitatea ca prezența sa în locația senzorului să poată fi detectată. Falsificarea adresei poate fi utilizată pentru a vă da drept dispozitiv, dar acest lucru va funcționa numai dacă nu sunt implementate măsuri suplimentare de securitate (autorizare și/sau criptare). 99.9% Oamenii de aici nu au de ce să-și facă griji.

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

Sursa: www.habr.com

Cumpărați găzduire de încredere pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără găzduire web fiabilă cu protecție DDoS, servere VPS VDS | ProHoster