Wszystkim wiadomo, że to sześć bajtów, zazwyczaj prezentowanych w formacie szesnastkowym, przypisanych karcie sieciowej w fabryce, i na pierwszy rzut oka są one losowe. Niektórzy wiedzą, że pierwsze trzy bajty adresu to identyfikator producenta, a pozostałe trzy bajty są im przypisywane. Wiadomo również, że można ustawić sobie dowolny adres. Wiele osób słyszało również o „losowych adresach” w Wi-Fi.
Zrozummy, czym to jest.
Adres MAC (media access control address) – unikalny identyfikator przypisany do adaptera sieciowego, stosowany w sieciach standardów IEEE 802, głównie Ethernet, Wi-Fi i Bluetooth. Oficjalnie nazywa się „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 zapisu adresu (w przeciwieństwie do adresu IPv4, gdzie oktety zawsze oddziela się kropkami). Zazwyczaj zapisuje się go jako sześć szesnastkowych cyfr oddzielonych dwukropkiem: 00:AB:CD:EF:11:22, chociaż niektórzy producenci sprzętu wolą zapis typu 00-AB-CD-EF-11-22, a nawet 00ab.cdef.1122.
Historycznie adresy były wgrywane do pamięci ROM układów kart sieciowych bez możliwości modyfikacji bez programatora flash, ale obecnie adres może być zmieniony programowo, z systemu operacyjnego. Można ręcznie ustawić adres MAC w kartach sieciowych w Linuxie i MacOS (zawsze), Windows (prawie zawsze, jeśli pozwala na to sterownik), Androidzie (tylko z rootem); w przypadku iOS (bez roota) podobny trik jest niemożliwy.
Struktura adresu
Adres składa się z części identyfikatora producenta, OUI, oraz identyfikatora przypisanego przez producenta. Przydzielaniem identyfikatorów OUI (Organizationally Unique Identifier) organizacja IEEE. Długość może być nie tylko 3 bajty (24 bity), ale także 28 lub 36 bitów, z których tworzone są bloki (MAC Address Block, MA) adresów typu Large (MA-L), Medium (MA-M) i Small (MA-S). W takim przypadku rozmiar przypisanego bloku wyniesie 24, 20, 12 bitów lub 16 milionów, 1 milion, 4 tysiące adresów. Obecnie rozdzielono około 38 tysięcy bloków, które można zobaczyć za pomocą licznych narzędzi online, na przykład u lub .
Kto posiada adresy
Niezłożona obróbka publicznie dostępnej IEEE dostarcza dość dużo informacji. Na przykład niektóre organizacje zdobyły wiele bloków OUI. Oto nasi bohaterowie:
Dostawca
Liczba bloków/zapisów
Liczba adresów, mln.
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
Prywatny
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 ma ich tylko 40, co nie jest zaskoczeniem: sami nie produkują zbyt wielu urządzeń sieciowych.
Bloki MAC nie są udostępniane za darmo, można je nabyć za rozsądne pieniądze (bez opłaty abonamentowej) w cenach 3000 $, 1800 $ lub 755 $ odpowiednio. Interesujące, że za dodatkowe pieniądze (rocznie) można nabyć „ukrycie” publicznych informacji o przydzielonym bloku. Takich jest obecnie, jak widać powyżej, 232.
Kiedy skończą się adresy MAC
Wszyscy jesteśmy już zmęczeni niekończącymi się od 10 lat historiami o tym, że „adresy IPv4 wkrótce się skończą”. Tak, uzyskanie nowych bloków IPv4 jest już trudne. Znane jest jednak, że adresy IP ; istnieją gigantyczne i mało używane bloki należące do dużych korporacji i instytucji rządowych USA, chociaż bez szczegodnej nadziei na ich redystrybucję na rzecz potrzebujących. Rozprzestrzenienie NAT, CG-NAT i IPv6 uczyniło problem braku publicznych adresów mniej pilnym.
Adres MAC ma 48 bitów, z których „użytecznymi” można uznać 46 (dlaczego? czytaj dalej), co daje 246 lub 1014 adresów, co jest 214 razy większe niż przestrzeń adresowa IPv4.
W tej chwili rozdzielono około pół biliona adresów, czyli zaledwie 0.73% całkowitej objętości. Do wyczerpania adresów MAC jest jeszcze bardzo, bardzo daleko.
Przypadkowość bitów
Można założyć, że OUI są rozdzielane losowo, a dostawca następnie również losowo przypisuje adresy indywidualnym urządzeniom sieciowym. Czy tak jest? Przyjrzymy się rozkładowi bitów w posiadanych przeze mnie bazach adresów MAC urządzeń 802.11, zebranych przez działające systemy autoryzacji w sieciach bezprzewodowych . Adresy należą do rzeczywistych urządzeń, które łączyły się z Wi-Fi przez kilka lat w trzech krajach. Dodatkowo istnieje niewielka baza urządzeń 802.3 przewodowej sieci LAN.
Rozdzielimy każdy adres MAC (sześć bajtów) każdej z próbek na bity i sprawdzimy częstotliwość występowania bitu „1” na każdej z 48 pozycji. Jeśli bit jest ustawiony całkowicie losowo, prawdopodobieństwo uzyskania „1” powinno wynosić 50%.
Próbka Wi-Fi nr 1 (Rosja)
Próbka Wi-Fi nr 2 (Białoruś)
Próbka Wi-Fi nr 3 (Uzbekistan)
Próbka LAN (Rosja)
Liczba rekordów w bazie
5929000
1274000
366000
1000
Numer bitu:
% bitów „1”
% bitów „1”
% bitów „1”
% bitów „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? Tam prawie zawsze są zera.
Rzeczywiście, standard definiuje te bity jako specjalne ():

Ósmy (od początku) bit pierwszego bajtu adresu MAC nazywany jest bitem Unicast/Multicast i określa, jakiego typu ramka (frame) jest przesyłana z tym adresem, czy jest to normalna (0) czy rozgłoszeniowa (1) (multicast lub broadcast). Dla normalnej, unicast interakcji adaptera sieciowego, bit ten jest ustawiony na „0” we wszystkich przesyłanych pakietach.
Siódmy (od początku) bit pierwszego bajtu adresu MAC nazywany jest bitem U/L (Universal/Local) i określa, czy adres jest globalnie unikalny (0), czy lokalnie unikalny (1). Domyślnie, wszystkie „wbudowane przez producenta” adresy są globalnie unikalne, dlatego przytłaczająca większość zebranych adresów MAC posiada siódmy bit ustawiony na „0”. W tabeli przyporządkowanych identyfikatorów OUI znajdziemy tylko około 130 rekordów z bitem U/L „1”, i najwyraźniej są to bloki adresów MAC dla specjalnych potrzeb.
Bity od szóstego do pierwszego w pierwszym bajcie, bity drugiego i trzeciego bajtu w identyfikatorach OUI, a tym bardziej bity w 4-6 bajtach adresu, przypisane przez producenta, są rozłożone bardziej lub mniej równomiernie.
Tak więc, w rzeczywistym adresie MAC adaptera sieciowego bity są właściwie równoważne i nie niosą znaczenia technologicznego, z wyjątkiem dwóch serwisowych bitów w najwyższym bajcie.
Częstość występowania
Ciekawe, którzy producenci sprzętu bezprzewodowego są najbardziej popularni? Połączmy wyszukiwanie w bazie OUI z danymi próbki nr 1.
Dostawca
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 (Mobile Communications)
2,76
ASUSTek COMPUTER INC.
2,58
TCT mobile ltd
2,13
zte corporation
2,00
nie znaleziono w bazie 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
Praktyka pokazuje, że im bardziej zamożna grupa użytkowników bezprzewodowej sieci w danym miejscu, tym większy udział urządzeń Apple.
Unikalność
Czy adresy MAC są unikalne? Teoretycznie tak, ponieważ każdy z producentów urządzeń (właścicieli modułu MAC) jest zobowiązany zapewnić unikalny adres dla każdego ze swoich produkowanych adapterów sieciowych. Jednak niektórzy producenci chipów, a mianowicie:
- 00:0A:F5 Airgo Networks, Inc. (obecnie Qualcomm)
- 00:08:22 InPro Comm (obecnie MediaTek)
ustawiają ostatnie trzy bajty adresu MAC na losową liczbę, prawdopodobnie po każdorazowym restarcie urządzenia. W mojej próbce nr 1 znalazłem 82 tysiące takich adresów.
Oczywiście, można ustawić sobie cudzy, nieunikalny adres, zamierzając to zrobić „jak u sąsiada”, określając go sniffem lub wybierając losowo. Możliwe jest również przypadkowe ustawienie sobie nieunikalnego adresu, na przykład przywracając kopię zapasową konfiguracji jakiegoś routera, na przykład 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 (przewodowego routera, kontrolera sieci bezprzewodowej). Prawdopodobnie oba urządzenia albo nie będą działać, albo będą działać z przerwami. Z punktu widzenia standardów IEEE, ochronę przed fałszywymi adresami MAC proponuje się rozwiązywać przy pomocy, na przykład, MACsec lub 802.1X.
Co jeśli ustawię sobie MAC z ustawionym na „1” siódmym lub ósmym bitem, tj. adresem lokalnym lub multicastowym? Prawdopodobnie 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 losowość
Wiemy, że w celu zapobiegania śledzeniu ruchów ludzi poprzez skanowanie powietrza i zbieranie adresów MAC, od kilku lat systemy operacyjne smartfonów stosują technologię losowości. Teoretycznie, podczas skanowania powietrza w poszukiwaniu znanych sieci, smartfon wysyła pakiet (grupę pakietów) typu 802.11 probe request z adresem MAC jako źródłem:

Włączona losowość pozwala na wskazanie nie „wbudowanego”, a jakiegoś innego adresu źródła pakietu, zmieniającego się przy każdym cyklu skanowania, w czasie lub w inny sposób. Czy to działa? Przyjrzyjmy się statystykom zebranych adresów MAC z powietrza przy użyciu tzw. „Wi-Fi Radaru”:
Cała próbka
Próbka tylko z zerowym bitem 7.
Liczba rekordów w bazie
3920000
305000
Numer bitu:
% bitów „1”
% bitów „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 unicastowej naturze adresu SRC w pakiecie zapytania probe.
Siódmy bit w 92,2% przypadków jest ustawiony na Local, co oznacza, że z dużym prawdopodobieństwem można stwierdzić, że tyle adresów dotyczy randomizacji, a mniej niż 8% to adresy rzeczywiste. Przy tym rozkład bitów w OUI dla takich rzeczywistych adresów w przybliżeniu pokrywa się z danymi z poprzedniej tabeli.
Któremu producentowi, według OUI, należą się randomizowane adresy (tj. z 7. bitem ustawionym na „1”)?
Producent według OUI
Udział wśród wszystkich adresów
nie znaleziono w bazie IEEE
62.45%
Google Inc.
37.54%
pozostali
0.01%
Przy tym wszystkie randomizowane adresy przypisane do Google należą do jednego OUI z prefiksem DA:A1:19. Co to za prefiks? Spójrzmy w .
private static final MacAddress BASE_GOOGLE_MAC = MacAddress.fromString("da:a1:19:0:0:0");Stockowy Android w wyszukiwaniu sieci bezprzewodowych używa specjalnego, zarejestrowanego OUI, jeden z niewielu z ustawionym siódmym bitem.
Obliczenie rzeczywistego MAC z randomowego
Spójrzmy tam same:
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;
}
Adres w całości, lub jego trzy najmłodsze bajty, to czysty Random.nextLong(). „Patenty na przywracanie rzeczywistego MAC” — to oszustwo. Z dużą pewnością można oczekiwać, że producenci telefonów z Androidem stosują także inne, niezarejestrowane OUI. Nie mamy źródeł iOS, ale prawdopodobnie stosują tam podobny algorytm.
To powyższe nie wyklucza pracy innych mechanizmów deanonimizacji abonentów Wi-Fi, opartych na analizie innych pól ramki zapytań probe request, ani korelacji względnej częstotliwości wysyłanych przez urządzenie zapytań. Niemniej jednak, wiarygodne śledzenie abonenta przy użyciu zewnętrznych środków jest skrajnie problematyczne. Zbierane dane bardziej nadają się do analizy średniego/pikowego obciążenia według lokalizacji i czasu, na podstawie dużych liczb, bez przypisania do konkretnych urządzeń i osób. Dokładne dane mają tylko ci, którzy są „w środku”, sami producenci mobilnych systemów operacyjnych oraz instalowane aplikacje.
Co może być niebezpiecznego w tym, że ktoś inny dowie się o MAC adresie twojego urządzenia? W przypadku sieci przewodowych i bezprzewodowych można zorganizować atak typu „denial of service”. Dla urządzenia bezprzewodowego, ponadto, z pewnym prawdopodobieństwem można zarejestrować moment pojawienia się w miejscu, gdzie zainstalowany jest czujnik. Zmiana adresu może pozwolić na „podawanie się” za twoje urządzenie, co może zadziałać tylko wtedy, gdy nie stosuje się dodatkowych zabezpieczeń (autoryzacji i/lub szyfrowania). 99,9% ludzi tutaj nie ma się o co martwić.
MAC adres jest bardziej skomplikowany, niż się wydaje, ale prostszy, niż mógłby być.
Źródło: habr.com
