Все, що ви хотіли знати про адресу МАС

Все, що ви хотіли знати про адресу МАСВсім відомо, що це шість байт, які зазвичай відображаються в шістнадцятковому форматі, присвоєні мережній карті на заводі, і на перший погляд випадкові. Деякі знають, що перші три байти адреси – це ідентифікатор виробника, а інші три байти їм призначаються. Відомо також, що можна собі поставити довільний адресу. Багато хто чув і про «рандомні адреси» у Wi-Fi.

Розберемося, що таке.

МАС-адреса (media access control address) – унікальний ідентифікатор, призначений мережному адаптеру, застосовується в мережах стандартів IEEE 802, в основному Ethernet, Wi-Fi та Bluetooth. Офіційно він називається "ідентифікатором типу EUI-48". З назви очевидно, що адреса має довжину 48 біт, тобто. 6 байт. Зазвичай він записується як шість шістнадцяткових чисел, розділених двокрапкою: 4:AB:CD:EF:00:11, хоча деякі виробники обладнання віддають перевагу запису виду 22 -AB-CD-EF-00-11 і навіть 22ab.cdef.00.

Історично адреси прошивались в ПЗУ чіпсету мережевої карти без можливості їх модифікації без флеш-програматора, але в даний час адреса може бути змінена програмно з операційної системи. Вказати вручну МАС адресу мережевої карти можна в Linux і MacOS (завжди), Windows (майже завжди, якщо дозволить драйвер), Android (тільки рутований); з iOS (без рута) такий трюк неможливий.

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

Адреса складається з частини ідентифікатора виробника, OUI, та ідентифікатора, що присвоюється виробником. Призначення ідентифікаторів OUI (Organizationally Unique Identifier) займається організація IEEE. Насправді його довжина може бути не тільки 3 байти (24 біти), а 28 або 36 біт, з яких формуються блоки (MAC Address Block, МА) адрес типів 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
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, і це не дивно: вони самі виробляють не так багато мережних пристроїв.

Блоки МА не надаються безкоштовно, їх можна придбати за розумні гроші (без абонентської плати) за $3000, $1800 або $755 відповідно. Цікаво, що за додаткові гроші (на рік) можна придбати «приховування» публічної інформації про виділений блок. Таких зараз, як бачимо вище, 232.

Коли закінчаться МАС-адреси

Ми всі порядком втомилися від років 10 історій, що не припиняються, про те, що «IPv4 адреси ось-ось закінчаться». Так, нові блоки IPv4 отримати вже непросто. При цьому відомо, що IP-адреси розподілені вкрай нерівномірно; існують гігантські та мало використані блоки, що належать великим корпораціям та державним установам США, втім, без особливої ​​надії на їх перерозподіл на користь нужденних. Поширення NAT, CG-NAT та IPv6 зробило проблему нестачі публічних адрес не такою гострою.

У МАС адресі 48 біт, з яких «корисними» можна вважати 46 (чому? читай далі), що дає 246 або 1014 адрес, що у 214 разів більше за IPv4 адресного простору.
На даний момент розподілено приблизно півтрильйона адрес, або лише 0.73% від усього обсягу. До вичерпання MAC адрес ще дуже, дуже далеко.

Випадковість біт

Можна припустити, що OUI розподілені випадково, а вендор потім випадково призначає адреси індивідуальним мережевим пристроям. Чи так це? Подивимося на розподіл біт у наявних у моєму розпорядженні базах МАС адрес 802.11-пристроїв, зібраних працюючими системами авторизації в бездротових мережах WNAM. Адреси належать реальним пристроям, які підключалися до Wi-Fi протягом кількох років у трьох країнах. На додаток йде невелика база 802.3-пристроїв дротової ЛОМ.

Розіб'ємо кожну МАС-адресу (шість байт) кожної з вибірок на біти побайтово, і подивимося на частоту появи біта «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 corporation
2,00

не знайдено в базі IEEE
1,92

Lenovo Mobile Communication Technology Ltd.
1,71

Корпорація HTC
1,68

Murata Manufactuaring
1,31

InPro Comm
1,26

Корпорація Microsoft
1,11

Шеньчжень TINNO Mobile Technology Corp.
1,02

Motorola (Wuhan) Mobility Technologies Communication Co. Ltd.
0,93

Nokia Corporation
0,88

Шанхай 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 з префіксом DA:A1:19. Що це за префікс? Давайте подивимося в вихідні коди Android.

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

Додати коментар або відгук