Всичко, което искате да знаете за MAC адреса

Всичко, което искате да знаете за MAC адресаВсем е известно, че това са шест байта, обикновено изразени в шестнадесетичен формат, присвоени на мрежовия адаптер по фабрика и на пръв поглед изглеждат случайни. Някои знаят, че първите три байта от адреса са идентификатор на производителя, а останалите три байта се назначават. Също така е известно, че можете да зададете произволен адрес. Много хора са чували и за „рандомни адреси“ в Wi-Fi.

Нека разгледаме какво представлява.

MAC адрес (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.

Исторически, адресите бяха написани в ПЗУ чипсета на мрежовия адаптер без възможност за модификация без флаш-програматор, но в момента адресът може да бъде променен софтуерно, от операционната система. Ръчно задаване на MAC адрес на мрежовия адаптер е възможно в Linux и MacOS (всички случаи), Windows (почти всеки път, ако драйверът позволява), Android (само рутван); с iOS (без рут) подобен трик е невъзможен.

Структура на адреса

Адресът се състои от част от идентификатора на производителя, OUI, и идентификатор, предоставен от производителя. Назначаването на идентификатори OUI (Organizationally Unique Identifier) е ангажимент на организацията IEEE. Всъщност, неговата дължина може да не бъде само 3 байта (24 бита), а 28 или 36 бита, от които се формират блоковете (MAC Address Block, MA) на адреси от тип Large (MA-L), Medium (MA-M) и Small (MA-S) съответно. Размерът на представения блок в този случай ще е 24, 20, 12 бита или 16 млн., 1 млн., 4 хил. адреса. В момента са разпределени около 38 хиляди блока, които може да се видят с много онлайн инструменти, например у IEEE или Wireshark.

На кого принадлежат адресите

Несложната обработка на публично достъпната база данни от данни IEEE предоставя доста информация. Например, някои организации са взели у себе си много OUI блокове. Ето ги нашите герои:

Вендор
Брой блокове/записи
Брой адреси, млн.

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

Частен
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 има общо 40, и не е изненадващо: те сами не произвеждат много мрежови устройства.

Блоковете MA не се предоставят безплатно, а могат да бъдат закупени за разумна цена (без абонаментна такса) за $3000, $1800 или $755 съответно. Интересно е, че за допълнителни средства (на година) може да се закупи „скритие“ на публичната информация за даден блок. В момента, както се вижда горе, има 232.

Кога ще свършат MAC адресите

Всички сме уморени от непрестанните истории през последните 10 години, че „IPv4 адресите скоро ще свършат“. Да, не е лесно да се получат нови блокове IPv4. Но е известно, че IP адресите са разпределени изключително неравномерно; съществуват огромни и слабо използвани блокове, принадлежащи на големи корпорации и държавни институции в САЩ, без големи надежди за тяхното преразпределение в полза на нуждаещите се. Разпространението на NAT, CG-NAT и IPv6 направи проблема с недостига на публични адреси по-малко остър.

В MAC адреса има 48 бита, от които 46 могат да се считат за „полезни“ (защо? чете по-нататък), което дава 246 или 1014 адреса, което е 214 пъти повече от адресното пространство на IPv4.
В момента са разпределени около половин трилон адреса, или само 0.73% от общия обем. До изчерпването на MAC адресите има още много, много време.

Случайност на бит

Може да се предположи, че OUI са разпределени случайно, а вендорът след това също случайно назначава адреси на индивидуалните мрежови устройства. Верно ли е? Нека погледнем разпределението на битовете в наличните в моята база данни MAC адреси на устройства 802.11, събрани от системите за авторизация в безжични мрежи WNAM. Адресите принадлежат на реални устройства, свързвали се с Wi-Fi през последните няколко години в три държави. В допълнение, има малка база от 802.3 устройства за проводна локална мрежа.

Разделяме всеки MAC адрес (шест байта) от всяка от извадките на битове по байтово и ще видим честотата на появата на бит „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-ми бит? Там почти винаги са нули.

Наистина, стандартът определя тези битове като специални (Уикипедия):
Всичко, което искате да знаете за MAC адреса

Осмият (от начало) бит на първия байт на MAC адреса се нарича Unicast/Multicast бит и определя какъв тип кадър (фрейм) се предава с този адрес, обикновен (0) или широковещателен (1) (мултикаст или броадкаст). За обикновено unicast взаимодействие на мрежовия адаптер, този бит е зададен на „0“ във всички пакети, които се изпращат от него.

Седмият (от начало) бит на първия байт на MAC адреса се нарича U/L (Universal/Local) бит и определя дали адресът е глобално уникален (0), или локално уникален (1). По подразбиране, всички „заводски“ адреси са глобално уникални, затова преобладаващата част от събраните MAC адреси имат седмия бит зададен на „0“. В таблицата с присвоени идентификатори OUI само около 130 записа имат U/L бит „1“, и по всичко личи, че това са блокове MAC адреси за специални нужди.

От шестия до първия бит на първия байт, битовете на втория и третия байт в OUI идентификаторите, а още повече битовете в 4-6 байта на адреса, назначавани от производителя, са разпределени повече или по-малко равномерно.

Така в реалния MAC адрес на мрежовия адаптер, битовете всъщност са равнопоставени и не носят технологичен смисъл, с изключение на двата служебни бита на старшия байт.

Разпространеност

Интересно е, кои производители на безжично оборудване са най-популярни? Нека обединим търсенето в базата 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 corporation
2,00

не е намерен в базата 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

Практиката показва, че колкото по-богат е контингентът на абонатите в безжичната мрежа на това място, толкова по-голям е делът на устройствата на Apple.

Уникалност

Уникални ли са MAC адресите? В теорията - да, тъй като всеки производител на устройства (собственик на MAC блока) е длъжен да осигури уникален адрес за всеки от произвежданите от него мрежови адаптери. Въпреки това, някои производители на чипове, а именно:

  • 00:0A:F5 Airgo Networks, Inc. (в момента Qualcomm)
  • 00:08:22 InPro Comm (в момента MediaTek)

поставят последните три байта на MAC адреса в произволно число, очевидно след всяко рестартиране на устройството. В моята извадка №1 бяха намерени 82 хиляди такива адреса.

Можете, разбира се, да настроите на себе си чужд, не уникален адрес, като целенасочено го зададете "като на съсед", определяйки го с помощта на сниффер, или избирайки наслучай. Също така е възможно случайно да получите не уникален адрес, например, при възстановяване на резервно копие на конфигурацията на рутер, като Mikrotik или OpenWrt.

Какво ще се случи, ако в мрежата присъстват две устройства с един и същи MAC адрес? Всичко зависи от логиката на мрежовото оборудване (проводим рутер, контролер на безжичната мрежа). С най-голяма вероятност и двете устройства или няма да работят, или ще работят със смущения. От гледна точка на стандартите IEEE защитава от фалшифициране на MAC адреси предлага да се решават с помощта на, например, MACsec или 802.1Х.

Какво, ако настроите MAC с поставен "1" на седмия или осмия бит, т.е. локален или multicast адрес? Най-вероятно вашата мрежа няма да обърне внимание на това, но формално този адрес няма да отговаря на стандарта и е по-добре да не го правите.

Как работи рандомизацията

Знаем, че с цел предотвратяване на проследяване на движенията на хора чрез сканиране на ефира и събиране на MAC, операционните системи на смартфоните вече няколко години прилагат технологията за рандомизация. Теоретично, при сканиране на ефира в търсене на известни мрежи, смартфонът изпраща пакет (група пакети) тип 802.11 probe request с MAC адреса като източник:

Всичко, което искате да знаете за MAC адреса

Включената рандомизация позволява да се указва не "вградения", а някакъв друг адрес на източника на пакета, който се променя при всеки цикъл на сканиране, във времето или по друг начин. Работи ли това? Да видим статистиката на събраните MAC адреси от ефира, известна като "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-ят бит на първия байт от MAC адреса все още отговаря на Unicast природата на SRC адреса в пакета probe request.

7-ят бит в 92.2% от случаите е зададен на Local, т.е. с достатъчно голяма степен на увереност можем да сме сигурни, че толкова слети адреси принадлежат на рандомизирани, а по-малко от 8% — на реални. Същевременно разпределението на битовете в OUI за такива реални адреси почти съвпада с данните от предишната таблица.

На кой производител по OUI принадлежат рандомизираните адреси (т.е. с 7-ми бит на "1")?

Производител по OUI
Дял сред всички адреси

не е намерен в базата IEEE
62.45%

Google Inc.
37.54%

други
0.01%

Същевременно всички рандомизирани адреси, отнесени към Google, принадлежат на един OUI с префикс DA:A1:19. Какво е този префикс? Нека да погледнем в изходните кодове на Android.

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

Стоковият Android в търсенето на безжични мрежи използва специален, регистриран OUI, един от малкото с установен седми бит.

Да изчислим реалния MAC от рандомния

Да погледнем там:

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(). „Патентовано възстановяване на реалния MAC“ — измама. С голяма степен на увереност можем да очакваме, че производителите на Android телефони използват и други, нерегистрирани OUI. Нямаме изходния код на iOS, но вероятно там е приложен подобен алгоритъм.

Въпросното не отменя работата на другите механизми за деанонимизация на Wi-Fi абонати, основани на анализа на други полета на probe request фрейма или корелацията на относителната честота на изпратените от устройството запитвания. Но е изключително трудно да се проследи абонатът с външни средства. Събраните данни са по-подходящи за анализ на средната/пиковата натовареност на местоположението и времето, на базата на големи числа, без свързване с конкретни устройства и хора. Точни данни имат само тези, които са "вътре", самите производители на мобилни операционни системи, за инсталираните приложения.

Какво може да е опасно в това, че някой друг знае MAC адреса на вашето устройство? За проводни и безжични мрежи може да се организира атака "отказ в обслужването". За безжично устройство, в допълнение, с определена вероятност може да се фиксира моментът на появяване в мястото, където е инсталиран сензор. С подмяната на адреса може да се опита "да се представи" за вашето устройство, но това може да сработи, само ако не се прилагат допълнителни средства за защита (авторизация и/или криптиране). 99.9% от хората тук нямат за какво да се тревожат.

MAC адресът е по-сложен, отколкото изглежда, но по-прост, отколкото би могъл да бъде.

Източник: habr.com

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster