Pull to refresh

Всё, что вы хотели знать о МАС адресе

Reading time9 min
Views210K

Всем известно, что это шесть байт, обычно отображаемых в шестнадцатеричном формате, присвоены сетевой карте на заводе, и на первый взгляд случайны. Некоторые знают, что первые три байта адреса – это идентификатор производителя, а остальные три байта им назначаются. Известно также, что можно поставить себе произвольный адрес. Многие слышали и про "рандомные адреса" в 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) занимается организация 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 Corporation 375 5776
ARRIS Group Inc. 319 5104
Nokia Corporation 241 3856
Private 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 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.


Уникальность


Уникальны ли МАС адреса? В теории да, поскольку каждый из производителей устройств (владельцев блока МА) обязан обеспечивать уникальный адрес для каждого из выпускаемых им сетевых адаптеров. Однако некоторые производители чипов, а именно:


  • 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 Inc. 37.54%
остальные 0.01%

При этом все рандомизированные адреса, отнесенные к Google, принадлежат одному OUI c префиксом 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% людей здесь не о чем волноваться.


МАС-адрес сложнее, чем кажется, но проще, чем мог бы быть.

Tags:
Hubs:
+109
Comments74

Articles