Semua orang tahu bahwa ini adalah enam byte, biasanya ditampilkan dalam format heksadesimal, ditugaskan ke kartu jaringan di pabrik, dan pada pandangan pertama mereka acak. Beberapa orang tahu bahwa tiga byte pertama dari alamat tersebut adalah pengidentifikasi pabrikan, dan tiga byte lainnya ditugaskan untuk mereka. Diketahui juga bahwa Anda dapat mengatur sendiri alamat yang berubah-ubah . Banyak yang telah mendengar tentang "alamat acak" di Wi-Fi.
Mari kita cari tahu apa itu.
Alamat MAC (alamat kontrol akses media) - pengidentifikasi unik yang ditetapkan untuk adaptor jaringan, digunakan dalam jaringan standar IEEE 802, terutama Ethernet, Wi-Fi dan Bluetooth. Secara resmi, ini disebut "pengidentifikasi tipe EUI-48". Jelas dari nama bahwa alamat itu panjangnya 48 bit, yaitu 6 byte. Tidak ada standar yang diterima secara umum untuk menulis alamat (dibandingkan dengan alamat IPv4, di mana oktet selalu dipisahkan oleh titik-titik). Biasanya ditulis sebagai enam angka heksadesimal, dipisahkan oleh tanda titik dua: 00: AB: CD: EF: 11: 22, meskipun beberapa produsen peralatan lebih suka menulis seperti 00 -AB-CD-EF-11-22 dan bahkan 00ab.cdef.1122.
Secara historis, alamat dijahit dalam ROM dari chipset kartu jaringan tanpa kemungkinan modifikasi mereka tanpa pemrogram flash, tetapi saat ini alamat dapat diubah secara pemrograman, dari sistem operasi. Anda dapat secara manual mengatur alamat MAC kartu jaringan di Linux dan MacOS (selalu), Windows (hampir selalu, jika driver memungkinkan), Android (hanya root); dengan iOS (tanpa root) trik yang serupa tidak mungkin.
Struktur Alamat
Alamat terdiri dari bagian pengenal pabrikan, OUI, dan pengenal yang ditetapkan oleh pabrikan. OUI (Pengidentifikasi Unik Organisasi) ditugaskan oleh IEEE. Bahkan, panjangnya bisa tidak hanya 3 byte (24 bit), tetapi 28 atau 36 bit, dari mana MAC Address Block (MA) blok Large (MA-L), Medium (MA-M) dan Small type terbentuk (MA-S) masing-masing. Ukuran blok yang dikeluarkan, dalam hal ini, akan menjadi 24, 20, 12 bit atau 16 juta, 1 juta, 4 ribu lembar alamat. Saat ini, sekitar 38 ribu blok didistribusikan, mereka dapat dilihat dengan berbagai alat online, misalnya, IEEE atau Wireshark .
Siapa yang memiliki alamatnya
Pemrosesan sederhana dari basis data unggahan IEEE yang tersedia untuk umum menyediakan banyak informasi. Misalnya, beberapa organisasi telah mengambil banyak blok OUI. Inilah pahlawan kita:
Google hanya memiliki 40 di antaranya, dan ini tidak mengherankan: mereka sendiri memproduksi tidak begitu banyak perangkat jaringan.
Blok MA tidak disediakan secara gratis, mereka dapat dibeli dengan uang yang masuk akal (tanpa biaya bulanan) masing-masing sebesar $ 3000, $ 1800 atau $ 755. Sangat menarik bahwa untuk uang tambahan (per tahun) Anda dapat membeli "penyembunyian" informasi publik tentang blok yang dialokasikan. Ada 232 dari mereka sekarang, seperti dapat dilihat di atas.
Kapan alamat MAC habis?
Kita semua bosan dengan cerita sepuluh tahun yang "alamat IPv4 hampir habis." Ya, blok IPv4 baru tidak lagi mudah diperoleh. Diketahui juga bahwa alamat IP didistribusikan dengan sangat tidak merata ; ada blok raksasa dan sedikit digunakan yang dimiliki oleh perusahaan besar dan pemerintah AS, namun, tanpa banyak harapan untuk redistribusi mereka dalam mendukung mereka yang membutuhkan. Proliferasi NAT, CG-NAT, dan IPv6 telah membuat masalah kurangnya alamat publik menjadi kurang akut.
Alamat MAC memiliki 48 bit, 46 di antaranya berguna (mengapa? Baca terus), yang memberikan 2 46 atau 10 14 alamat, yang merupakan 2 14 kali ruang alamat IPv4.
Saat ini, sekitar setengah triliun alamat didistribusikan, atau hanya 0,73% dari total volume. Kelelahan alamat MAC masih sangat, sangat jauh.
Bit acak
Dapat diasumsikan bahwa OUI didistribusikan secara acak, dan vendor kemudian juga secara acak memberikan alamat ke masing-masing perangkat jaringan. Benarkah begitu? Mari kita lihat distribusi bit di basis MAC dari alamat yang saya miliki untuk 802.11 perangkat yang dikumpulkan oleh sistem otorisasi yang bekerja di jaringan nirkabel WNAM . Alamat tersebut milik perangkat nyata yang telah terhubung ke Wi-Fi selama beberapa tahun di tiga negara. Selain itu, ada basis kecil perangkat LAN berkabel 802,3.
Kami memecah setiap alamat MAC (enam byte) dari masing-masing sampel menjadi bit demi byte, dan melihat frekuensi kemunculan bit “1” di masing-masing dari 48 posisi. Jika bit diatur dengan cara yang sepenuhnya arbitrer, maka probabilitas mendapatkan "1" harus 50%.
Dari mana datangnya ketidakadilan ini dalam bit 7 dan 8? Hampir selalu ada nol.
Memang, standar mendefinisikan bit ini sebagai spesial ( Wikipedia ):

Bit kedelapan (dari awal) byte pertama dari alamat MAC disebut bit Unicast / Multicast dan menentukan jenis bingkai (frame) yang ditransmisikan dengan alamat ini, normal (0) atau broadcast (1) (multicast atau broadcast). Untuk interaksi adaptor jaringan normal dan unicast, bit ini diatur ke “0” di semua paket yang dikirim.
Bit ketujuh (dari awal) byte pertama dari alamat MAC disebut bit U / L (Universal / Lokal) dan menentukan apakah alamat tersebut unik secara global (0) atau unik secara lokal (1). Secara default, semua alamat "dijahit oleh pabrikan" adalah unik secara global, oleh karena itu jumlah alamat MAC yang dikumpulkan berisi bit ketujuh yang diatur ke "0". Dalam tabel pengidentifikasi OUI yang ditetapkan, hanya sekitar 130 entri memiliki bit U / L "1", dan kemungkinan besar ini adalah blok alamat MAC untuk kebutuhan khusus.
Dari bit keenam hingga bit pertama dari byte pertama, bit dari byte kedua dan ketiga dalam pengidentifikasi OUI, dan terlebih lagi bit dalam 4-6 byte alamat yang ditugaskan oleh pabrikan, didistribusikan kurang lebih secara merata.
Dengan demikian, dalam alamat MAC nyata dari adapter jaringan, bit praktis setara dan tidak membawa makna teknologi, dengan pengecualian dua bit layanan dari byte tinggi.
Prevalensi
Saya ingin tahu produsen peralatan nirkabel mana yang paling populer? Gabungkan pencarian OUI dengan data sampel No. 1.
Praktek menunjukkan bahwa semakin makmur kontingen pelanggan nirkabel di tempat ini, semakin besar proporsi perangkat Apple.
Keunikan
Apakah alamat MAC unik? Secara teori, ya, karena masing-masing produsen perangkat (pemilik unit MA) diharuskan untuk memberikan alamat unik untuk masing-masing adapter jaringannya. Namun, beberapa produsen chip, yaitu:
- 00: 0A: F5 Airgo Networks, Inc. (sekarang Qualcomm)
- 00:08:22 InPro Comm (sekarang MediaTek)
atur tiga byte terakhir dari alamat MAC ke nomor acak, tampaknya setelah setiap reboot perangkat. Ada 82 ribu alamat seperti itu dalam sampel saya No. 1.
Anda dapat menetapkan diri Anda sebagai orang asing, bukan alamat unik, tentu saja, dengan sengaja mengaturnya "seperti tetangga", mendefinisikannya sebagai sniffer, atau memilih secara acak. Dimungkinkan juga untuk secara tidak sengaja mengatur sendiri alamat yang tidak unik dengan melakukan, misalnya, mengembalikan konfigurasi cadangan router seperti Mikrotik atau OpenWrt.
Apa yang terjadi jika dua perangkat dengan alamat MAC yang sama ada di jaringan? Itu semua tergantung pada logika peralatan jaringan (router kabel, pengontrol jaringan nirkabel). Kemungkinan besar, kedua perangkat tidak akan berfungsi, atau akan bekerja sebentar-sebentar. Dari sudut pandang standar IEEE, diusulkan untuk menyelesaikan perlindungan terhadap pemalsuan alamat MAC menggunakan, misalnya, MACsec atau 802.1X.
Bagaimana jika Anda menempatkan diri Anda MAC dengan bit ketujuh atau kedelapan diatur ke "1", mis. alamat lokal atau multicast? Kemungkinan besar, jaringan Anda tidak akan memperhatikan hal ini, tetapi secara formal, alamat seperti itu tidak akan sesuai dengan standar, dan lebih baik tidak melakukannya.
Cara kerja pengacakan
Kita tahu bahwa untuk mencegah pelacakan pergerakan orang dengan memindai udara dan mengumpulkan sistem operasi MAC dari smartphone telah menggunakan teknologi pengacakan selama beberapa tahun. Secara teoritis, saat memindai udara untuk mencari jaringan yang dikenal, smartphone mengirim paket (kelompok paket) dari tipe penyelidikan permintaan 802.11 dengan alamat MAC sebagai sumber:

Pengacakan yang disertakan memungkinkan Anda untuk menentukan bukan "flash", tetapi beberapa alamat sumber lain dari paket, berubah setiap siklus pemindaian, dalam waktu atau entah bagaimana. Apakah ini berhasil? Mari kita lihat statistik dari alamat MAC yang dikumpulkan dari udara dengan apa yang disebut "Radar Wi-Fi":
Gambarnya sangat berbeda.
Bit ke 8 byte pertama dari alamat MAC masih cocok dengan sifat Unicast dari alamat SRC dalam paket permintaan probe.
Bit ke-7 di 92,2% dari kasus diatur ke Lokal, mis. dengan cukup banyak kepastian, kita dapat mengasumsikan bahwa begitu banyak alamat yang dikumpulkan secara acak, dan kurang dari 8% yang asli. Selain itu, distribusi bit dalam OUI untuk alamat nyata tersebut kira-kira bertepatan dengan data pada tabel sebelumnya.
Menurut OUI, ke pabrikan mana alamat acak tersebut berada (yaitu, dengan bit ke-7 di “1”)?
Selain itu, semua alamat acak yang ditugaskan ke Google milik satu OUI dengan awalan DA: A1: 19 . Apa awalan ini? Mari kita lihat kode sumber untuk Android .
private static final MacAddress BASE_GOOGLE_MAC = MacAddress.fromString("da:a1:19:0:0:0");
Android stock menggunakan OUI khusus terdaftar, salah satu dari sedikit dengan ketujuh yang ditetapkan, dalam pencarian jaringan nirkabel.
Hitung MAC nyata dari acak
Mari kita lihat di sana:
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; }
Seluruh alamat, atau setidaknya tiga byte, adalah Random.nextLong () . "Pemulihan MAS asli yang dipatenkan" - sebuah penipuan. Dengan tingkat kepastian yang tinggi, dapat diharapkan bahwa produsen ponsel Android menggunakan OUI tidak terdaftar lainnya. Kami tidak memiliki sumber iOS apa pun, tetapi kemungkinan besar algoritma serupa digunakan di sana.
Hal di atas tidak membatalkan pengoperasian mekanisme deanonimisasi pelanggan Wi-Fi lainnya, berdasarkan analisis bidang lain dari kerangka permintaan penyelidikan, atau korelasi dari frekuensi relatif permintaan yang dikirim oleh perangkat. Namun, melacak pelanggan dengan andal dengan cara eksternal sangat bermasalah. Data yang dikumpulkan lebih cocok untuk menganalisis beban rata-rata / puncak berdasarkan lokasi dan waktu, berdasarkan jumlah yang besar, tanpa merujuk ke perangkat dan orang tertentu. Data yang akurat hanya untuk mereka yang "di dalam", produsen OS seluler itu sendiri, memasang aplikasi.
Apa yang bisa berbahaya jika orang lain mengetahui alamat MAC perangkat Anda? Untuk jaringan kabel dan nirkabel, serangan penolakan layanan dapat diatur. Untuk perangkat nirkabel, di samping itu, dengan beberapa kemungkinan dimungkinkan untuk memperbaiki momen penampilan di tempat sensor dipasang. Dengan memalsukan alamat, Anda dapat mencoba "berpura-pura" menjadi perangkat Anda, yang hanya dapat berfungsi jika Anda tidak menggunakan fitur keamanan tambahan (otorisasi dan / atau enkripsi). 99,9% orang di sini tidak perlu khawatir.
Alamat MAC lebih kompleks daripada kedengarannya, tetapi lebih sederhana dari yang seharusnya.