Jeder weiß, dass diese sechs Bytes, die normalerweise im Hexadezimalformat angezeigt werden, der Netzwerkkarte werkseitig zugewiesen werden und auf den ersten Blick zufällig sind. Manche Leute wissen, dass die ersten drei Bytes der Adresse die Hersteller-ID sind und die restlichen drei Bytes ihnen zugewiesen sind. Es ist auch bekannt, dass Sie sich selbst einstellen können beliebig Adresse. Viele haben von „zufälligen Adressen“ im WLAN gehört.
Lassen Sie uns herausfinden, was es ist.
Die MAC-Adresse (Media Access Control Address) ist eine eindeutige Kennung, die einem Netzwerkadapter zugewiesen wird und in Netzwerken nach IEEE 802-Standard, hauptsächlich Ethernet, Wi-Fi und Bluetooth, verwendet wird. Offiziell heißt es „EUI-48-Typkennung“. Aus dem Namen ist ersichtlich, dass die Adresse 48 Bit lang ist, also 6 Bytes. Es gibt keinen allgemein akzeptierten Standard zum Schreiben der Adresse (im Gegensatz zu einer IPv4-Adresse, bei der Oktette immer durch Punkte getrennt sind). Es wird normalerweise als sechs durch Doppelpunkte getrennte Hexadezimalzahlen geschrieben: 00:AB:CD:EF:11:22, obwohl einige Gerätehersteller Notationen wie 00-AB-CD-EF-11-22 oder sogar 00ab.cdef.1122 bevorzugen.
Исторически адреса прошивались в ПЗУ чипсета сетевой карты без возможности их модификации без флеш-программатора, но в настоящее время адрес может быть изменен программно, из операционной системы. Задать вручную МАС адрес сетевой карте можно в Linux и MacOS (всегда), Windows (почти всегда, если позволит драйвер), Android (только рутованный); с iOS (без рута) подобный трюк невозможен.
Adressstruktur
Die Adresse besteht aus einem Herstellerkennungsteil (OUI) und einer vom Hersteller zugewiesenen Kennung. Vergabe von OUI (Organizationally Unique Identifier)-Kennungen IEEE-Organisation. Tatsächlich kann seine Länge nicht nur 3 Bytes (24 Bits) betragen, sondern 28 oder 36 Bits, aus denen jeweils Blöcke (MAC Address Block, MA) von Adressen des Typs Large (MA-L), Medium (MA-M) und Small (MA-S) gebildet werden. Die Größe des ausgegebenen Blocks beträgt in diesem Fall 24, 20, 12 Bit oder 16 Millionen, 1 Million, 4 Tausend Adressen. Derzeit sind etwa 38 Blöcke verteilt, diese können über zahlreiche Online-Tools eingesehen werden, zum Beispiel unter oder .
Wem gehören die Adressen?
Einfache Verarbeitung öffentlich verfügbarer IEEE stellt eine ganze Menge Informationen zur Verfügung. Beispielsweise haben einige Organisationen viele OUI-Blöcke für sich beansprucht. Hier sind unsere Helden:
Verkäufer
Anzahl der Blöcke/Datensätze
Anzahl der Adressen, Millionen
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
Privatperson
232
2704
Texas Instruments
212
3392
ZTE Corporation
198
3168
IEEE-Registrierungsstelle
194
3072
Hewlett Packard
149
2384
Hon Hai Präzision
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 verfügt nur über 40 davon, was nicht überraschend ist: Das Unternehmen stellt selbst nicht viele Netzwerkgeräte her.
MA-Blöcke werden nicht kostenlos zur Verfügung gestellt, sie können zu angemessenen Preisen (ohne Abonnementgebühren) für 3000 $, 1800 $ bzw. 755 $ erworben werden. Interessanterweise können Sie gegen zusätzliches Geld (pro Jahr) das „Verbergen“ öffentlicher Informationen über den zugewiesenen Block erwerben. Davon gibt es derzeit 232, wie oben zu sehen ist.
Wenn die MAC-Adressen ausgehen
Wir haben alle die seit zehn Jahren kursierenden Geschichten satt, dass „die IPv10-Adressen bald ausgehen“. Ja, neue IPv4-Blöcke sind nicht mehr so leicht zu bekommen. Es ist bekannt, dass IP-Adressen ; Es gibt riesige und nicht ausreichend genutzte Blöcke im Besitz großer Unternehmen und US-Regierungsbehörden, und es besteht kaum Hoffnung, sie an Bedürftige umzuverteilen. Durch die Verbreitung von NAT, CG-NAT und IPv6 ist das Problem des Mangels an öffentlichen Adressen weniger akut geworden.
Die MAC-Adresse hat 48 Bit, von denen 46 als „nützlich“ angesehen werden können (warum? Lesen Sie weiter), was 246 oder 1014 Adressen ergibt, also 214-mal mehr als der IPv4-Adressraum.
Aktuell sind rund eine halbe Billion Adressen verteilt, also lediglich 0.73 % des Gesamtvolumens. Bis die MAC-Adressen erschöpft sind, ist es noch ein langer, langer Weg.
Zufälligkeit der Bits
Es ist davon auszugehen, dass die OUIs zufällig verteilt werden und der Anbieter den einzelnen Netzwerkgeräten dann auch zufällig Adressen zuweist. Ist das wahr? Schauen wir uns die Bitverteilung in den MAC-Adressdatenbanken der mir zur Verfügung stehenden 802.11-Geräte an, die von funktionierenden Autorisierungssystemen in drahtlosen Netzwerken gesammelt wurden . Die Adressen gehören zu echten Geräten, die über mehrere Jahre in drei Ländern mit WLAN verbunden waren. Darüber hinaus gibt es eine kleine Datenbank mit kabelgebundenen 802.3-LAN-Geräten.
Lassen Sie uns jede MAC-Adresse (sechs Bytes) jeder Probe Byte für Byte in Bits zerlegen und die Häufigkeit des Auftretens des Bits „1“ an jeder der 48 Positionen betrachten. Wenn das Bit völlig zufällig gesetzt wird, sollte die Wahrscheinlichkeit, eine „1“ zu erhalten, 50 % betragen.
Wi-Fi-Beispiel Nr. 1 (RF)
Wi-Fi-Beispiel Nr. 2 (Weißrussland)
Wi-Fi-Beispiel Nr. 3 (Usbekistan)
LAN-Sampling (RF)
Anzahl der Datensätze in der Datenbank
5929000
1274000
366000
1000
Bitnummer:
% Bit "1"
% Bit "1"
% Bit "1"
% Bit "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%
Woher kommt diese Ungerechtigkeit bei 7 und 8 Bit? Da stehen fast immer Nullen drin.
Tatsächlich definiert der Standard diese Bits als spezielle ():

Das achte (vom Anfang) Bit des ersten Bytes der MAC-Adresse wird als Unicast/Multicast-Bit bezeichnet und bestimmt, welche Art von Frame mit dieser Adresse übertragen wird, normal (0) oder Broadcast (1) (Multicast oder Broadcast). Bei der normalen Unicast-Kommunikation des Netzwerkadapters ist dieses Bit in allen von ihm gesendeten Paketen auf „0“ gesetzt.
Das siebte (vom Anfang) Bit des ersten Bytes der MAC-Adresse wird als U/L-Bit (Universal/Local) bezeichnet und bestimmt, ob die Adresse global eindeutig (0) oder lokal eindeutig (1) ist. Standardmäßig sind alle „vom Hersteller programmierten“ Adressen global eindeutig, sodass bei der überwiegenden Mehrheit der erfassten MAC-Adressen das siebte Bit auf „0“ gesetzt ist. In der OUI-Tabelle mit zugewiesenen Kennungen ist das U/L-Bit bei nur etwa 130 Einträgen auf „1“ gesetzt, und dabei handelt es sich offenbar um spezielle MAC-Adressblöcke.
Das sechste bis erste Bit des ersten Bytes, das zweite und dritte Byte der OUI-Kennung und insbesondere die Bits im vierten bis sechsten Byte der vom Hersteller vergebenen Adresse sind mehr oder weniger gleichmäßig verteilt.
Somit sind die Bits in der realen MAC-Adresse des Netzwerkadapters tatsächlich gleichwertig und haben, mit Ausnahme von zwei Servicebits des höchstwertigen Bytes, keine technologische Bedeutung.
Prävalenz
Ich frage mich, welche Hersteller von drahtlosen Geräten am beliebtesten sind? Kombinieren wir die Suche in der OUI-Datenbank mit den Daten aus Beispiel Nr. 1.
Verkäufer
Anteil der Geräte, %
Apple
26,09
Samsung
19,79
Huawei Technologies Co. GmbH
7,80
Xiaomi Communications Co Ltd
6,83
sony mobilkommunikation inc
3,29
LG Electronics (Mobilfunk)
2,76
ASUSTek COMPUTER INC.
2,58
TCT mobile Ltd.
2,13
ZTE Corporation
2,00
nicht in der IEEE-Datenbank gefunden
1,92
Lenovo Mobile Communication Technology Ltd.
1,71
HTC Corporation
1,68
Murata Manufacturing
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
Die Erfahrung zeigt: Je wohlhabender die Zahl der Mobilfunkteilnehmer an einem bestimmten Ort ist, desto größer ist der Anteil von Apple-Geräten.
Уникальность
Sind MAC-Adressen eindeutig? Theoretisch ja, da jeder Gerätehersteller (Besitzer des MA-Blocks) verpflichtet ist, für jeden von ihm produzierten Netzwerkadapter eine eindeutige Adresse anzugeben. Einige Chiphersteller, nämlich:
- 00:0A:F5 Airgo Networks, Inc. (jetzt Qualcomm)
- 00:08:22 InPro Comm (jetzt MediaTek)
Setzen Sie die letzten drei Bytes der MAC-Adresse auf eine Zufallszahl, anscheinend nach jedem Neustart des Geräts. In meiner Stichprobe Nr. 1 gab es 82 solcher Adressen.
Sie können sich natürlich eine fremde, nicht eindeutige Adresse zuweisen, indem Sie sie bewusst „wie die Ihres Nachbarn“ festlegen, sie mit einem Sniffer identifizieren oder sie nach dem Zufallsprinzip auswählen. Es ist auch möglich, dass Sie versehentlich eine nicht eindeutige Adresse für sich selbst festlegen, beispielsweise durch die Wiederherstellung einer Sicherungskopie der Konfiguration eines Routers wie Mikrotik oder OpenWrt.
Was passiert, wenn sich im Netzwerk zwei Geräte mit derselben MAC-Adresse befinden? Es hängt alles von der Logik der Netzwerkausrüstung ab (kabelgebundener Router, drahtloser Netzwerkcontroller). Höchstwahrscheinlich funktionieren beide Geräte entweder nicht oder nur zeitweise. Aus Sicht der IEEE-Standards wird vorgeschlagen, den Schutz vor MAC-Adressfälschung beispielsweise mit MACsec oder 802.1X zu lösen.
Was wäre, wenn Sie sich eine MAC-Adresse einrichten würden, bei der das siebte oder achte Bit auf „1“ gesetzt ist, also eine lokale oder Multicast-Adresse? Höchstwahrscheinlich wird Ihr Netzwerk dies nicht bemerken, aber formal entspricht eine solche Adresse nicht dem Standard und es ist besser, dies nicht zu tun.
So funktioniert die Randomisierung
Wir wissen, dass Smartphone-Betriebssysteme seit mehreren Jahren Zufallstechnologie verwenden, um die Verfolgung von Personenbewegungen durch das Scannen der Funkwellen und das Sammeln von MAC-Adressen zu verhindern. Theoretisch sendet ein Smartphone beim Scannen der Funkwellen nach bekannten Netzwerken ein Paket (oder eine Gruppe von Paketen) des 802.11-Probeanforderungstyps mit einer MAC-Adresse als Quelle:

Durch die aktivierte Randomisierung können Sie keine „fest codierte“ Adresse angeben, sondern eine andere Adresse der Paketquelle, die sich mit jedem Scanzyklus, im Laufe der Zeit oder auf andere Weise ändert. Funktioniert es? Schauen wir uns die Statistiken der MAC-Adressen an, die vom sogenannten „Wi-Fi-Radar“ aus der Luft erfasst wurden:
Die gesamte Probe
Auswahl mit nur Null 7. Bit
Anzahl der Datensätze in der Datenbank
3920000
305000
Bitnummer:
% Bit "1"
% Bit "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%
Das Bild ist völlig anders.
Das 8. Bit des ersten Bytes der MAC-Adresse entspricht weiterhin der Unicast-Natur der SRC-Adresse im Probe-Request-Paket.
Das 7. Bit steht in 92.2 % der Fälle auf „Lokal“, d. h. es kann mit ziemlicher Sicherheit davon ausgegangen werden, dass genau so viele der gesammelten Adressen randomisiert sind und weniger als 8 % echt sind. Darüber hinaus stimmt die Bitverteilung in der OUI für solche realen Adressen ungefähr mit den Daten in der vorherigen Tabelle überein.
Welcher Hersteller besitzt laut OUI randomisierte Adressen (d. h. mit dem 7. Bit auf „1“ gesetzt)?
Hersteller von OUI
Teilen unter allen Adressen
nicht in der IEEE-Datenbank gefunden
62.45%
Google Inc.
37.54%
andere
0.01%
In diesem Fall gehören alle zufällig ausgewählten Adressen, die Google zugewiesen wurden, zu einer OUI mit dem Präfix DA:A1:19. Was ist dieses Präfix? Werfen wir einen Blick auf .
private static final MacAddress BASE_GOOGLE_MAC = MacAddress.fromString("da:a1:19:0:0:0");Stock Android verwendet eine spezielle, registrierte OUI zur Suche nach drahtlosen Netzwerken, eines der wenigen mit installiertem siebten Bit.
Berechnen Sie den tatsächlichen MAC aus dem zufälligen
Schauen wir mal dort nach:
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;
}
Die gesamte Adresse oder ihre unteren drei Bytes sind sauber Random.nextLong(). «Патентованное восстановление реального МАС» — надувательство. С большой долей уверенности можно ожидать, что производители Android-телефонов применяют и другие, не зарегистрированные OUI. Исходников iOS у нас нет, но скорее всего там применен схожий алгоритм.
Das oben Genannte schließt die Funktionsweise anderer Mechanismen zur Deanonymisierung von Wi-Fi-Teilnehmern nicht aus, die auf der Analyse anderer Felder des Probe-Anforderungsrahmens oder der Korrelation der relativen Häufigkeit der vom Gerät gesendeten Anforderungen basieren. Allerdings ist es äußerst schwierig, einen Abonnenten mit externen Mitteln zuverlässig zu verfolgen. Die gesammelten Daten eignen sich besser für die Analyse der Durchschnitts-/Spitzenlast nach Standort und Zeit, basierend auf großen Zahlen, ohne an bestimmte Geräte und Personen gebunden zu sein. Nur diejenigen „im Inneren“ verfügen über genaue Daten: die Hersteller mobiler Betriebssysteme selbst und die installierten Anwendungen.
Что может быть опасного в том, что кто-то другой узнает МАС-адрес вашего устройства? Для проводных и беспроводных сетей можно организовать атаку «отказ в обслуживании». Для беспроводного устройства, к тому же, с некоторой вероятностью можно зафиксировать момент появления в месте, где установлен сенсор. Подменой адреса можно попробовать «представиться» вашим устройством, что может сработать, только если не применяется дополнительных средств защиты (авторизация и/или шифрование). 99.9% людей здесь не о чем волноваться.
Die MAC-Adresse ist komplizierter als sie aussieht, aber einfacher als sie sein könnte.
Source: habr.com
