Усім вядома, што гэта шэсць байт, якія звычайна адлюстроўваюцца ў шаснаццатковым фармаце, прысвоены сеткавай карце на заводзе, і на першы погляд выпадковыя. Некаторыя ведаюць, што першыя тры байта адрасу - гэта ідэнтыфікатар вытворцы, а астатнія тры байта ім прызначаюцца. Вядома таксама, што можна паставіць сабе адвольны адрас. Шмат хто чуў і пра «рандомныя адрасы» у Wi-Fi.
Разбяромся, што гэта такое.
МАС адрас (media access control address) - унікальны ідэнтыфікатар, прызначаны сеткаваму адаптару, ужываецца ў сетках стандартаў IEEE 802, у асноўным Ethernet, Wi-Fi і Bluetooth. Афіцыйна ён называецца "ідэнтыфікатарам тыпу EUI-48". З назову відавочна, што адрас мае даўжыню ў 48 біт, г.зн. 6 байт. Агульнапрынятага стандарту на напісанне адраса няма (у супрацьлегласць IPv4 адрасу, дзе актэты заўсёды падзяляюць кропкамі). Звычайна ён запісваецца як шэсць шаснаццатковых лікаў, падзеленых двукроп'ем: 00:AB:CD:EF:11:22, хоць некаторыя вытворцы абсталявання аддаюць перавагу запіс выгляду 00 -AB-CD-EF-11-22 і нават 00ab.cdef.1122.
Гістарычна адрасы прашываліся ў ПЗУ чыпсэта сеткавай карты без магчымасці іх мадыфікацыі без флэш-праграматара, але ў наш час адрас можа быць зменены праграмна, з аперацыйнай сістэмы. Задаць уручную МАС адрас сеткавай карце можна ў Linux і MacOS (заўсёды), Windows (амаль заўсёды, калі дазволіць драйвер), Android (толькі рутаваны); з iOS (без рута) падобны трук немагчымы.
Структура адраса
Адрас складаецца з часткі ідэнтыфікатара вытворцы, OUI, і ідэнтыфікатара, які прысвойваецца вытворцам. Прызначэннем ідэнтыфікатараў OUI (Organizationally Unique Identifier)
Каму належаць адрасы
Нескладаная апрацоўка публічна даступнай
Вендар
Лік блокаў/запісаў
Колькасць адрасоў, млн.
Cisco Systems Inc
888
14208
Apple
772
12352
Samsung
636
10144
Huawei Technologies Co.Ltd
606
9696
карпарацыя Intel
375
5776
Кампанія ARRIS Group Inc.
319
5104
Карпарацыя Nokia
241
3856
прыватны
232
2704
Texas Instruments
212
3392
карпарацыя zte
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 іх усяго 40, і гэта не дзіўна: яны самі вырабляюць не так шмат сеткавых прылад.
Блокі МА не прадастаўляюцца бясплатна, іх можна набыць за разумныя грошы (без абаненцкай платы) за $3000, $1800 ці $755 адпаведна. Цікава, што за дадатковыя грошы (у год) можна набыць "утойванне" публічнай інфармацыі аб выдзеленым блоку. Такіх зараз, як бачна вышэй, 232.
Калі скончацца МАС-адрасы
Мы ўсе парадкам стаміліся ад не спыняюцца ўжо гадоў 10 гісторый аб тым, што "IPv4 адрасы вось-вось скончацца". Так, новыя блокі IPv4 атрымаць ужо няпроста. Пры гэтым вядома, што IP адрасы
У МАС адрасе 48 біт, з якіх "карыснымі" можна лічыць 46 (чаму? чытай далей), што дае 246 або 1014 адрасоў, што ў 214 разоў больш IPv4 адраснай прасторы.
У сапраўдны момант размеркавана прыкладна паўтрыльёна адрасоў, ці толькі 0.73% ад усяго аб'ёму. Да вычарпання MAC адрасоў яшчэ вельмі, вельмі далёка.
Выпадковасць біт
Можна выказаць здагадку, што OUI размеркаваны выпадкова, а вендар затым таксама выпадкова прызначае адрасы індывідуальным сеткавым прыладам. Ці так гэта? Паглядзім на размеркаванне біт у наяўных у маім распараджэнні базах МАС адрасоў 802.11-прылад, сабраных якія працуюць сістэмамі аўтарызацыі ў бесправадных сетках.
Разаб'ем кожны МАС-адрас (шэсць байт) кожнай з выбарак на біты пабайтава, і паглядзім на частату з'яўлення біта "1" у кожнай з 48 пазіцый. Калі біт выстаўлены зусім адвольнай выявай, то верагоднасць атрымаць «1» павінна быць 50%.
Выбарка Wi-Fi №1 (РФ)
Выбарка Wi-Fi №2 (Беларусь)
Выбарка Wi-Fi №3 (Узбекістан)
Выбарка LAN (РФ)
Лік запісаў у базе
5929000
1274000
366000
1000
Нумар біта:
% біт "1"
% біт "1"
% біт "1"
% біт "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%
Адкуль такая несправядлівасць у 7 і 8 бітах? Там амаль заўсёды нулі.
Сапраўды, стандарт вызначае гэтыя біты як спецыяльныя (
Восьмы (з пачатку) біт першага байта МАС адрасу завецца Unicast/Multicast бітам і вызначае, якога тыпу кадр (фрэйм) перадаецца з гэтым адрасам, звычайны (0) ці шырокавяшчальны (1) (мультыкаст або броадкаст). Для звычайнага, unicast узаемадзеяння сеткавага адаптара, гэты біт выстаўлены ў "0" ва ўсіх пакетах, ім якія адпраўляюцца.
Сёмы (з пачатку) біт першага байта МАС адрасу завецца U/L (Universal/Local) бітам і вызначае, ці з'яўляецца адрас глабальна ўнікальным (0), ці лакальна ўнікальным (1). Па змаўчанні, усе "прашытыя вытворцам" адрасы глабальна ўнікальныя, таму пераважная колькасць сабраных МАС адрасоў утрымоўваюць сёмы біт выстаўленым у "0". У табліцы прысвоеных ідэнтыфікатараў OUI толькі каля 130 запісаў мае U/L біт "1", і па ўсёй бачнасці гэта блокі МАС адрасоў для адмысловых патрэб.
З шостага па першым біты першага байта, біты другога і трэцяга байта ў OUI ідэнтыфікатарах, і тым больш біты ў 4-6 байтах адраса, прызначаныя вытворцам, размеркаваны больш-менш раўнамерна.
Такім чынам, у рэальным МАС-адрасе сеткавага адаптара біты фактычна раўнацэнныя і не нясуць тэхналагічнага сэнсу, за выключэннем двух службовых біт старэйшага байта.
распаўсюджанасць
Цікава, якія вытворцы бесправаднога абсталявання найболей папулярныя? Аб'яднаем пошук па базе OUI са звесткамі выбаркі №1.
Вендар
Доля прылад, %
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
2,00
не знойдзены ў базе IEEE
1,92
Lenovo Mobile Communication Technology Ltd.
1,71
Карпарацыя HTC
1,68
Murata Manufactuaring
1,31
InPro Comm
1,26
Microsoft Corporation
1,11
Шэньчжэнь TINNO Mobile Technology Corp.
1,02
Motorola (Wuhan) Mobility Technologies Communication Co. Ltd.
0,93
Карпарацыя Nokia
0,88
Shanghai Wind Technologies Co. Ltd
0,74
Lenovo Mobile Communication (Wuhan) Company Limited
0,71
Практыка паказвае, што чым заможней кантынгент абанентаў бесправадной сеткі ў дадзеным месцы, тым большая доля прылад Apple.
Унікальнасць
Ці ўнікальныя МАС адрасы? У тэорыі так, паколькі кожны з вытворцаў прылад (уладальнікаў блока МА) абавязаны забяспечваць унікальны адрас для кожнага з якія выпускаюцца ім сеткавых адаптараў. Аднак некаторыя вытворцы чыпаў, а менавіта:
- 00:0A:F5 Airgo Networks, Inc. (цяпер Qualcomm)
- 00:08:22 InPro Comm (цяпер MediaTek)
выстаўляюць апошнія тры байта МАС адрасу ў выпадковы лік, па ўсёй бачнасці, пасля кожнай перазагрузкі прылады. Такіх адрасоў у маёй выбарцы №1 знайшлося 82 тысячы.
Паставіць сабе чужы, не ўнікальны адрас можна, вядома, шляхам мэтанакіраванай яго ўсталёўкі «як у суседа», вызначыўшы яго сніферам, ці абраўшы наўздагад. Таксама магчыма выпадкова паставіць сабе не ўнікальны адрас, выканаўшы, напрыклад, аднаўленне бэкапу канфігурацыі якога-небудзь маршрутызатара накшталт Mikrotik або OpenWrt.
Што будзе, калі ў сетцы будзе прысутнічаць дзве прылады з адным МАС адрасам? Усё залежыць ад логікі сеткавага абсталявання (праваднога роўтара, кантролера бесправадной сеткі). Хутчэй за ўсё, абодва прылады ці не будуць працаваць, ці будуць працаваць з перабоямі. З пункту гледжання стандартаў IEEE, абарону ад падробкі МАС адрасоў прапануецца вырашаць пры дапамозе, напрыклад, MACsec ці 802.1Х.
Што, калі паставіць сабе МАС з выстаўленым у "1" сёмым ці восьмым бітам, г.зн. local ці multicast-адрас? Хутчэй за ўсё, ваша сетка на гэта не зверне ўвагі, але фармальна такі адрас не будзе адпавядае стандарту і лепш так не рабіць.
Як працуе рандамізацыя
Мы ведаем, што з мэтай прадухіліць адсочванне перамяшчэння людзей шляхам сканіравання эфіру і збору МАС-аперацыйныя сістэмы смартфонаў ужо некалькі гадоў прымяняюць тэхналогію рандамізацыі. Тэарэтычна, пры сканаванні эфіру ў пошуку вядомых сетак смартфон адпраўляе пакет (групу пакетаў) тыпу 802.11 probe request з МАС-адрасам у якасці крыніцы:
Уключаная рандомизация дазваляе паказваць не "прашыты", а нейкі іншы адрас крыніцы пакета, які змяняецца пры кожным цыкле сканавання, у часе ці яшчэ неяк. Ці працуе гэта? Паглядзім на статыстыку сабраных МАС-адрасоў з эфіру так званым «Wi-Fi Радарам»:
Уся выбарка
Выбарка толькі з нулявым 7м бітам
Лік запісаў у базе
3920000
305000
Нумар біта:
% біт "1"
% біт "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%
Карціна зусім іншая.
8й біт першага байта МАС адрасы па-ранейшаму адпавядае Unicast-прыродзе SRC-адрасы ў probe request пакеце.
7й біт у 92.2% выпадкаў усталяваны ў Local, г.зн. з дастатковай доляй упэўненасці можна лічыць, што менавіта столькі сабраных адрасоў адносіцца да рандомізаваных, а менш за 8% - да рэальных. Пры гэтым размеркаванне біт у OUI для такіх рэальных адрасоў прыкладна супадае з дадзенымі папярэдняй табліцы.
Якому вытворцу, па OUI, прыналежаць рандомизированные адрасы (г.зн. з 7м бітам у "1")?
Вытворца па OUI
Доля сярод усіх адрасоў
не знойдзены ў базе IEEE
62.45%
Карпарацыя Google
37.54%
астатнія
0.01%
Пры гэтым усе рандомизированные адрасы, аднесеныя да Google, прыналежаць аднаму OUI c прэфіксам DA:A1:19. Што гэта за прэфікс? Давайце паглядзім у
private static final MacAddress BASE_GOOGLE_MAC = MacAddress.fromString("da:a1:19:0:0:0");
Стакавы андроіда ў пошуку бесправадных сетак выкарыстоўвае спецыяльны, зарэгістраваны OUI, адзін з нямногіх з усталяваным сёмым бітам.
Вылічыць рэальны МАС з рандомнага
Паглядзім там жа:
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;
}
Адрас цалкам, альбо яго малодшыя тры байта, гэта чысты Random.nextLong(). «Патэнтаванае аднаўленне рэальнага МАС» – ашуканства. З вялікай дзеллю ўпэўненасці можна чакаць, што вытворцы Android-тэлефонаў ужываюць і іншыя, не зарэгістраваныя OUI. Зыходнікаў iOS у нас няма, але хутчэй за ўсё там ужыты падобны алгарытм.
Вышэйсказанае не адмяняе працу іншых механізмаў дэананімізацыі Wi-Fi абанентаў, заснаваных на аналізе іншых палёў probe request фрэйма, або карэляцыі адноснай частаты дасыланых прыладай запытаў. Аднак дакладна адсачыць абанента знешнімі сродкамі вельмі праблематычна. Збіраныя дадзеныя больш падыдуць для аналізу сярэдняй/пікавай нагрузкі па месцазнаходжанні і часу, на аснове вялікіх лікаў, без прывязкі да пэўных прылад і людзям. Дакладныя дадзеныя ёсць толькі ў тых, хто "ўнутры", у саміх вытворцаў мабільных АС, ва ўсталяваных прыкладанняў.
Што можа быць небяспечнага ў тым, што нехта іншы даведаецца МАС-адрас вашага прылады? Для правадных і бесправадных сетак можна арганізаваць напад "адмова ў абслугоўванні". Для бесправадной прылады, да таго ж, з некаторай верагоднасцю можна зафіксаваць момант з'яўлення ў месцы, дзе ўсталяваны сэнсар. Падменай адраса можна паспрабаваць «прадставіцца» вашай прыладай, што можа спрацаваць, толькі калі не ўжываецца дадатковых сродкаў абароны (аўтарызацыя і/ці шыфраванне). 99.9% людзей тут няма пра што хвалявацца.
МАС-адрас больш складаны, чым здаецца, але прасцей, чым мог бы быць.
Крыніца: habr.com