Wszystko, co chciałeś wiedzieć o adresie MAC

Wszystko, co chciałeś wiedzieć o adresie MACKażdy wie, że te sześć bajtów, zwykle wyświetlanych w formacie szesnastkowym, jest fabrycznie przypisanych do karty sieciowej i pozornie jest losowych. Niektórzy wiedzą, że pierwsze trzy bajty adresu to identyfikator producenta, a pozostałe trzy bajty są do nich przypisane. Wiadomo też, że można ustawić samemu arbitralny adres. Wiele osób słyszało o „losowych adresach” w Wi-Fi.

Zastanówmy się, co to jest.

Adres MAC (adres kontroli dostępu do nośnika) to unikalny identyfikator przypisany do karty sieciowej, stosowany w sieciach standardów IEEE 802, głównie Ethernet, Wi-Fi i Bluetooth. Oficjalnie nazywa się to „identyfikatorem typu EUI-48”. Z nazwy wynika, że ​​adres ma długość 48 bitów, tj. 6 bajtów. Nie ma ogólnie przyjętego standardu zapisywania adresu (w przeciwieństwie do adresu IPv4, gdzie oktety są zawsze oddzielone kropkami). Zwykle zapisuje się go jako sześć liczb szesnastkowych oddzielonych dwukropkiem: 00:AB:CD:EF:11: 22, chociaż niektórzy producenci sprzętu preferują zapis 00 -AB-CD-EF-11-22, a nawet 00ab.cdef.1122.

Historycznie rzecz biorąc, adresy były flashowane w pamięci ROM chipsetu karty sieciowej bez możliwości ich modyfikacji bez programatora flash, ale obecnie adres można zmienić programowo z poziomu systemu operacyjnego. Możesz ręcznie ustawić adres MAC karty sieciowej w systemie Linux i MacOS (zawsze), Windows (prawie zawsze, jeśli sterownik na to pozwala), Android (tylko zrootowany); W systemie iOS (bez roota) taka sztuczka jest niemożliwa.

Struktura adresu

Adres składa się z części identyfikatora producenta, OUI oraz identyfikatora nadanego przez producenta. Przypisanie identyfikatorów OUI (Organizationally Unique Identifier). zaangażowany Organizacja IEEE. W rzeczywistości jego długość może wynosić nie tylko 3 bajty (24 bity), ale 28 lub 36 bitów, z których bloki (MAC Address Block, MA) adresów typu Large (MA-L), Medium (MA-M) i Tworzą się odpowiednio małe (MA-S). Rozmiar wydawanego bloku w tym przypadku będzie wynosić 24, 20, 12 bitów lub 16 milionów, 1 milion, 4 tysiące adresów. Obecnie dystrybuowanych jest około 38 tysięcy bloków, można je przeglądać m.in. za pomocą licznych narzędzi internetowych IEEE lub Wireshark.

Kto jest właścicielem adresów?

Łatwe przetwarzanie publicznie dostępnych rozładowywanie baz danych IEEE dostarcza całkiem sporo informacji. Na przykład niektóre organizacje przyjęły dla siebie wiele bloków OUI. Oto nasi bohaterowie:

Sprzedawca
Liczba bloków/rekordów
Liczba adresów, miliony

Cisco Systems Inc
888
14208

Apple
772
12352

Samsung
636
10144

Huawei Technologies Co.Ltd
606
9696

Intel Corporation
375
5776

Grupa ARRIS Inc.
319
5104

Korporacja Nokii
241
3856

Sprawy Prywatne
232
2704

Texas Instruments
212
3392

zte korporacja
198
3168

Urząd Rejestracji IEEE
194
3072

Hewlett Packard
149
2384

Precyzja Hon Hai
136
2176

TP-LINK
134
2144

Dell Inc.
123
1968

Juniper Networks
110
1760

Sagemcom Broadband SAS
97
1552

Firma Fiberhome Telekomunikacja Technologies Co. SP. Z O.O
97
1552

Xiaomi Communications Co Ltd
88
1408

Guangdong Oppo Mobile Telecommunications Corp.Ltd
82
1312

Google ma ich tylko 40 i nie jest to zaskakujące: sami nie produkują wielu urządzeń sieciowych.

Bloki MA nie są dostarczane za darmo, można je kupić za rozsądną cenę (bez abonamentu) odpowiednio za 3000 USD, 1800 USD lub 755 USD. Co ciekawe, za dodatkowe pieniądze (w skali roku) można wykupić „ukrywanie” publicznej informacji o przydzielonym bloku. Jak widać powyżej, jest ich obecnie 232.

Kiedy skończą mi się adresy MAC?

Wszyscy mamy dość historii toczących się od 10 lat o tym, że „adresy IPv4 wkrótce się skończą”. Tak, nowe bloki IPv4 nie są już łatwe do zdobycia. Wiadomo, że adresy IP wyjątkowo nierównomiernie rozłożone; Istnieją jednak gigantyczne i niewykorzystane bloki będące własnością dużych korporacji i agencji rządowych USA, z niewielką nadzieją na ich redystrybucję wśród potrzebujących. Rozprzestrzenianie się NAT, CG-NAT i IPv6 sprawiło, że problem niedoboru adresów publicznych stał się mniej dotkliwy.

Adres MAC ma 48 bitów, z czego 46 można uznać za „przydatne” (po co? czytaj dalej), co daje 246 lub 1014 adresów, czyli 214 razy więcej niż przestrzeń adresowa IPv4.
Obecnie rozdystrybuowano około pół biliona adresów, co stanowi zaledwie 0.73% całkowitego wolumenu. Wciąż jesteśmy bardzo, bardzo dalecy od wyczerpania adresów MAC.

Bity losowości

Można założyć, że OUI są dystrybuowane losowo i wówczas także sprzedawca losowo przydziela adresy poszczególnym urządzeniom sieciowym. Czy tak jest? Przyjrzyjmy się rozkładowi bitów w bazach danych adresów MAC urządzeń 802.11, którymi dysponuję, zebranych przez działające systemy autoryzacyjne w sieciach bezprzewodowych WNAM. Adresy należą do rzeczywistych urządzeń, które przez kilka lat łączyły się z Wi-Fi w trzech krajach. Ponadto dostępna jest niewielka baza danych urządzeń przewodowej sieci LAN 802.3.

Podzielmy każdy adres MAC (sześć bajtów) każdej próbki na bity, bajt po bajcie i przyjrzyjmy się częstotliwości występowania bitu „1” w każdej z 48 pozycji. Jeśli bit jest ustawiony w sposób całkowicie dowolny, prawdopodobieństwo otrzymania „1” powinno wynosić 50%.

Wybór Wi-Fi nr 1 (RF)
Próbka Wi-Fi nr 2 (Białoruś)
Wybór Wi-Fi nr 3 (Uzbekistan)
Próbkowanie sieci LAN (RF)

Liczba rekordów w bazie danych
5929000
1274000
366000
1000

Numer bitu:
% bitu „1”
% bitu „1”
% bitu „1”
% bitu „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%

Skąd taka niesprawiedliwość w 7 i 8 bitach? Prawie zawsze są zera.

Rzeczywiście, standard definiuje te bity jako specjalne (Wikipedia):
Wszystko, co chciałeś wiedzieć o adresie MAC

Ósmy (od początku) bit pierwszego bajtu adresu MAC nazywany jest bitem Unicast/Multicast i określa, jaki typ ramki (ramki) jest przesyłany pod tym adresem, zwykła (0) czy rozgłoszeniowa (1) (multicast lub audycja). W przypadku normalnej komunikacji z adapterem sieciowym w trybie emisji pojedynczej bit ten jest ustawiony na „0” we wszystkich wysyłanych do niego pakietach.

Siódmy (od początku) bit pierwszego bajtu adresu MAC nazywany jest bitem U/L (Universal/Local) i określa, czy adres jest unikalny globalnie (0), czy unikalny lokalnie (1). Domyślnie wszystkie adresy „połączone przez producenta” są globalnie unikalne, dlatego zdecydowana większość zebranych adresów MAC zawiera siódmy bit ustawiony na „0”. W tabeli przypisanych identyfikatorów OUI tylko około 130 wpisów ma bit U/L równy „1” i najwyraźniej są to bloki adresów MAC do specjalnych potrzeb.

Od szóstego do pierwszego bitu pierwszego bajtu, bity drugiego i trzeciego bajtu w identyfikatorach OUI, a tym bardziej bity w 4-6 bajtach adresu nadanego przez producenta są rozłożone mniej więcej równomiernie .

Zatem w rzeczywistym adresie MAC karty sieciowej bity są w rzeczywistości równoważne i nie mają żadnego znaczenia technologicznego, z wyjątkiem dwóch bitów usługowych starszego bajtu.

Rozpowszechnienie

Zastanawiasz się, którzy producenci sprzętu bezprzewodowego cieszą się największą popularnością? Połączmy poszukiwania w bazie OUI z danymi z próbki nr 1.

Sprzedawca
Udział urządzeń,%

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 (komunikacja mobilna)
2,76

ASUSTek COMPUTER INC.
2,58

TCT mobile spółka z ograniczoną odpowiedzialnością
2,13

zte korporacja
2,00

nie znaleziono w bazie danych IEEE
1,92

Lenovo Mobile Communication Technology Ltd.
1,71

HTC Corporation
1,68

Produkcja Muraty
1,31

Komunikator InPro
1,26

Microsoft Corporation
1,11

Shenzhen TINNO Mobile Technology Corp.
1,02

Motorola (Wuhan) Mobility Technologies Communication Co. Sp. z o.o.
0,93

Korporacja Nokii
0,88

Shanghai Wind Technologies Co. Sp. z o.o
0,74

Lenovo Mobile Communication (Wuhan) Company Limited
0,71

Praktyka pokazuje, że im zamożniejsza kontyngent abonentów sieci bezprzewodowych w danej lokalizacji, tym większy jest udział urządzeń Apple.

Wyjątkowość

Czy adresy MAC są unikalne? Teoretycznie tak, ponieważ każdy producent urządzenia (właściciel bloku MA) ma obowiązek podać unikalny adres dla każdej produkowanej przez siebie karty sieciowej. Jednak niektórzy producenci chipów, a mianowicie:

  • 00:0A:F5 Airgo Networks, Inc. (obecnie Qualcomm)
  • 00:08:22 InPro Comm (obecnie MediaTek)

ustaw ostatnie trzy bajty adresu MAC na liczbę losową, najwyraźniej po każdym ponownym uruchomieniu urządzenia. W mojej próbie nr 1 takich adresów było 82 tys.

Możesz oczywiście ustawić sobie obcy, nieunikalny adres, ustawiając go celowo „jak u sąsiada”, identyfikując go snifferem lub wybierając go losowo. Możliwe jest również przypadkowe ustawienie sobie nieunikalnego adresu, na przykład poprzez przywrócenie kopii zapasowej konfiguracji routera takiego jak Mikrotik lub OpenWrt.

Co się stanie, jeśli w sieci będą dwa urządzenia z tym samym adresem MAC? Wszystko zależy od logiki sprzętu sieciowego (router przewodowy, kontroler sieci bezprzewodowej). Najprawdopodobniej oba urządzenia albo nie będą działać, albo będą działać z przerwami. Z punktu widzenia standardów IEEE proponuje się rozwiązanie ochrony przed fałszowaniem adresów MAC za pomocą np. MACsec lub 802.1X.

Co się stanie, jeśli zainstalujesz MAC z siódmym lub ósmym bitem ustawionym na „1”, tj. adres lokalny czy multicast? Najprawdopodobniej Twoja sieć nie zwróci na to uwagi, ale formalnie taki adres nie będzie zgodny ze standardem i lepiej tego nie robić.

Jak działa randomizacja

Wiemy, że aby zapobiec śledzeniu ruchów ludzi poprzez skanowanie i zbieranie fal radiowych, systemy operacyjne MAC w smartfonach od kilku lat korzystają z technologii randomizacji. Teoretycznie podczas skanowania fal radiowych w poszukiwaniu znanych sieci smartfon wysyła pakiet (grupę pakietów) typu żądanie sondy 802.11 z adresem MAC jako źródłem:

Wszystko, co chciałeś wiedzieć o adresie MAC

Włączona randomizacja pozwala określić nie ten „połączony”, ale inny adres źródła pakietu, zmieniający się z każdym cyklem skanowania, w czasie lub w inny sposób. Czy to działa? Przyjrzyjmy się statystykom adresów MAC zebranych z powietrza przez tzw. „radar Wi-Fi”:

Cała próbka
Próbka tylko z siódmym bitem zerowym

Liczba rekordów w bazie danych
3920000
305000

Numer bitu:
% bitu „1”
% bitu „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%

Obraz jest zupełnie inny.

Ósmy bit pierwszego bajtu adresu MAC nadal odpowiada charakterowi emisji pojedynczej adresu SRC w pakiecie żądania sondy.

Siódmy bit jest ustawiony na lokalny w 7% przypadków, tj. Z dużą dozą pewności możemy założyć, że dokładnie tyle zebranych adresów jest losowych, a mniej niż 92.2% jest prawdziwych. W tym przypadku rozkład bitów w OUI dla takich adresów rzeczywistych w przybliżeniu pokrywa się z danymi w poprzedniej tabeli.

Który producent, według OUI, jest właścicielem losowych adresów (tj. z 7. bitem w „1”)?

Producent OUI
Udostępnij wśród wszystkich adresów

nie znaleziono w bazie danych IEEE
62.45%

Google Inc
37.54%

reszta
0.01%

Co więcej, wszystkie losowe adresy przypisane Google należą do tego samego OUI z prefiksem DA:A1:19. Co to za przedrostek? Zajrzyjmy do środka Źródła Androida.

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

Stockowy Android używa specjalnego, zarejestrowanego OUI podczas wyszukiwania sieci bezprzewodowych, jako jednej z niewielu z ustawionym siódmym bitem.

Oblicz prawdziwy MAC na podstawie losowego

Zobaczmy tam:

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

Cały adres lub jego trzy dolne bajty są czyste Losowe.następneLong(). „Zastrzeżone odzyskiwanie prawdziwego MAC” to oszustwo. Z dużą dozą pewności możemy spodziewać się, że producenci telefonów z Androidem będą korzystać z innych, niezarejestrowanych OUI. Nie mamy kodu źródłowego iOS, ale najprawdopodobniej zastosowano tam podobny algorytm.

Powyższe nie anuluje działania innych mechanizmów deanonimizacji abonentów Wi-Fi, bazujących na analizie innych pól ramki żądania sondy lub korelacji względnej częstotliwości żądań wysyłanych przez urządzenie. Jednak niezawodne śledzenie abonenta za pomocą środków zewnętrznych jest niezwykle problematyczne. Zebrane dane będą bardziej odpowiednie do analizy średniego/szczytowego obciążenia według lokalizacji i czasu, w oparciu o duże liczby, bez odniesienia do konkretnych urządzeń i osób. Tylko ci „wewnątrz”, sami producenci mobilnych systemów operacyjnych i zainstalowane aplikacje, mają dokładne dane.

Co może być niebezpiecznego, gdy ktoś inny zna adres MAC Twojego urządzenia? Ataki typu „odmowa usługi” można przeprowadzać w sieciach przewodowych i bezprzewodowych. Co więcej, w przypadku urządzenia bezprzewodowego z pewnym prawdopodobieństwem istnieje możliwość zarejestrowania momentu jego pojawienia się w miejscu zamontowania czujnika. Podszywając się pod adres, możesz spróbować „udawać”, że jest to Twoje urządzenie, co może działać tylko wtedy, gdy nie zostaną zastosowane żadne dodatkowe zabezpieczenia (autoryzacja i/lub szyfrowanie). 99.9% ludzi tutaj nie ma się czym martwić.

Adres MAC jest bardziej skomplikowany, niż się wydaje, ale prostszy, niż mogłoby być.

Źródło: www.habr.com

Dodaj komentarz