- Nama host lokal bawaan macOS dapat memuat nama pengguna, sehingga situs web bisa mempersempit kandidat nama tanpa izin melalui perbedaan waktu resolusi nama mDNS
- Penyerang mengombinasikan 50 nama populer menurut negara dan gender dengan kandidat nama perangkat; dalam eksperimen, nama pengguna macOS berhasil ditebak rata-rata pada 65% kasus
- JavaScript di browser tidak bisa membuka soket UDP sembarang, tetapi dapat membandingkan latensi respons alamat
.localmelalui permintaanfetch,iframe,Image, danWebRTC - Informasi seperti zona waktu, bahasa, lokasi IP,
navigator.languagedi Safari, resolusi layar, danscreen.isExtendeddigunakan untuk mempersempit kandidat lokal dan model perangkat - Praktikalitasnya rendah dan mudah terlihat di tab Network pada developer tools, tetapi metode eksplorasi mDNS yang sama juga dapat digunakan untuk mendeteksi printer, smart TV, smart speaker, dan perangkat IoT
Struktur kebocoran nama dari nama host lokal macOS
- Nama asli pengguna macOS dapat diperkirakan dari browser tanpa permintaan izin; kuncinya adalah protokol mDNS dan format nama host lokal bawaan
- Bahkan hanya dengan daftar 50 nama populer menurut gender dari negara tertentu, nama pengguna macOS dapat dideteksi dengan benar rata-rata pada 65% kasus
- Fingerprint tidak menggunakan teknik ini dalam produknya dan juga tidak menyediakan layanan pelacakan lintas situs
- Tujuan diskusi publik ini adalah membantu penyedia browser memperbaiki teknik semacam ini dengan cepat
Cara kerja mDNS dan Apple Bonjour
- multicast DNS adalah protokol untuk mendaftarkan, menemukan, dan menyiarkan nama perangkat di jaringan lokal
- Perangkat seperti printer mengirim paket pendaftaran UDP ke IP internal khusus
224.0.0.251, dan dapat menyertakan nama host sepertiHP_LaserJet_Printer.local - Domain tingkat atas
.localmenunjukkan bahwa nama host tersebut harus diresolusikan melalui mDNS - Router secara otomatis menyiarkan paket seperti ini ke perangkat lain di jaringan lokal agar nama host dapat di-cache
- Perangkat mengirim paket kueri ke IP khusus yang sama untuk mencari perangkat dengan nama tertentu yang mungkin ada di jaringan
- Contoh nama host adalah sebagai berikut
johns-mac-mini.localdavid-ZenBook-UX431DA-UM431DA.localjames-iphone.localcanon-mf644c.localbedroom-appletv.localdlinkrouter.local
- Di perangkat Apple, mDNS banyak digunakan sebagai bagian dari fitur Apple Bonjour
- Nama pengguna dapat terekspos dalam nama host lokal bawaan, dan di macOS nama host lokal dapat dilihat atau diubah melalui System Settings > Sharing
Cara tidak langsung memeriksa nama host mDNS dari browser
- Karena mDNS berbasis paket UDP, lingkungan JavaScript browser tidak dapat menggunakannya secara langsung lewat soket UDP sembarang
- Sebagai gantinya, serangan timing attack dilakukan dengan memanfaatkan sifat browser yang mencoba meresolusikan nama host dalam URL
- Proof of concept-nya mengirim permintaan GET
fetchbiasa kedevice-1.localyang ada dandevice-2.localyang tidak ada - Jika alamat berhasil diresolusikan, browser mengirim paket TCP ke port 80, yang biasanya kemungkinan besar tertutup
- Pada level jaringan, muncul error yang berbeda
device-1.localyang ada:ERR_CONNECTION_REFUSEDdevice-2.localyang tidak ada:ERR_NAME_NOT_RESOLVED
- Di JavaScript, kedua error dipetakan menjadi error
Failed to fetchyang sama, sehingga jenis error itu sendiri tidak bisa dijadikan acuan - Karena jaringan lokal cepat, nama host mDNS yang valid diresolusikan jauh lebih cepat daripada timeout koneksi bawaan
- Dalam contoh, alamat valid selesai dalam 4ms, sedangkan alamat tidak valid membutuhkan 5 detik
- Pendekatan ini cukup konsisten untuk proof of concept dan berperilaku serupa di browser utama
- Dalam praktiknya, selain
fetch, timing attack resolusi DNS juga dapat dilakukan dengan API JavaScript jaringan sepertiiframe,Image, danWebRTC
Cara melakukan brute force nama pengguna macOS
- Nama host lokal macOS bawaan memuat nama pengguna dan nama perangkat, dengan format yang berbeda menurut lokal bahasa sistem
- English:
<name>s-macbook-pro.local - French:
macbook-air-de-<name>.local - Russian:
mac-mini-<name>.local
- English:
- Dengan pendekatan sederhana yang mengombinasikan 1.000 nama teratas, 10 lokal teratas, dan 5 nama perangkat macOS umum, harus diperiksa 50.000 nama host
- Dalam kasus ini, pemeriksaan penuh bisa memakan waktu lebih dari 1 jam
- Strategi yang lebih efisien adalah membatasi ruang pencarian ke satu lokal, satu perangkat, dan 50 nama umum untuk lokal tersebut
- Memperkecil ruang pencarian menurunkan akurasi, tetapi mengurangi waktu serangan sehingga menjadi skenario yang lebih realistis
- Zona waktu browser, bahasa, dan lokasi alamat IP dapat digunakan untuk memilih lokal
- Safari mengekspos lokal sistem melalui properti
navigator.language, dan nilai ini biasanya cocok dengan lokal nama host target - Cara tidak langsung lain untuk menemukan negara asal pengguna adalah metode Apple ID region detection yang pernah dibahas sebelumnya
- Kandidat perangkat dapat dipersempit dengan resolusi layar
- Misalnya, resolusi
1728x1117kemungkinan besar adalah MacBook Pro 16 inci - Layar tambahan dapat dideteksi dengan properti
screen.isExtended - Jika layar tambahan terdeteksi, kandidat perangkat dapat dikembalikan ke 3–5 perangkat Apple macOS yang paling umum
- Misalnya, resolusi
Keterbatasan dan kemungkinan penerapan lain
- Serangan ini tidak praktis karena kelemahan inheren dan berbagai keterbatasan
- Kecuali operator situs web sengaja ingin menghilangkan anonimitas pengunjung, serangan ini mudah dideteksi dari tab Network di developer tools browser
- Jika metode ini digabungkan dengan installed applications detection, ada kemungkinan membuat situs web berbahaya yang menampilkan nama asli pengguna dan jabatan berdasarkan daftar aplikasi profesional yang digunakan, tanpa izin
- Perangkat Apple yang menjalankan macOS adalah contoh utama, tetapi teknik eksplorasi mDNS dapat diperluas dalam berbagai cara
- Pemindaian jaringan lokal juga dapat digunakan untuk mendeteksi printer, smart TV, smart speaker, dan perangkat IoT rumah tangga lainnya
- Teknik ini juga dapat diterapkan ke iPhone dan iPad, dengan syarat sinkronisasi Wi-Fi atau fitur remote debug Safari diaktifkan
1 komentar
Komentar Hacker News
Saya memakai Little Snitch di macOS, dan UI-nya cukup bagus karena bisa diatur agar secara eksplisit meminta izin ke pengguna lokal sebelum mengizinkan permintaan jaringan
https://www.obdev.at/products/littlesnitch/index.html
Kadang ini mengganggu saat login jarak jauh, biasanya ketika sesi SSH mencoba mengunduh sesuatu yang baru, misalnya komponen NodeJS dari NPM. Unduhan SSH di terminal teks akan berhenti, lalu setelah menyadari penyebabnya adalah Little Snitch, saya harus turun ke meja di lantai bawah, menggerakkan mouse untuk menyalakan monitor, membuka screen saver, lalu menekan “Allow” pada dialog Little Snitch
Bisa dibilang ini bekerja sesuai tujuan. Hanya saja, alat seperti ini sering kali secara default diatur untuk diam-diam mengizinkan permintaan jaringan lokal, jadi saya tidak yakin lelucon di tulisan utama akan berhasil di lingkungan saya
Cukup mengejutkan melihat koneksi soket apa saja yang diam-diam dibuka aplikasi, termasuk aplikasi perbankan
https://havoc.app/package/netfence
https://news.ycombinator.com/item?id=35363343
ConfirmMenambahkan Pi-hole ke jaringan Anda kemungkinan tidak akan membuat Anda menyesali waktu/uang/investasi yang dikeluarkan
Adakah cara mencegah situs web di internet yang lebih luas agar tidak bisa membuat permintaan jaringan ke jaringan lokal saya? Sulit membayangkan kenapa ini harus diizinkan secara default
Saya tidak bermaksud menghidupkan lagi model izin Local Intranet Zone milik IE
Namun meskipun ada sesuatu yang berjalan di https://192.168.2.1, aplikasi web yang berjalan dari https://my-own-domain.com tidak akan bisa mengaksesnya kecuali layanan di 192.168.2.1 mengizinkan my-own-domain.com sebagai
Originhttps://brave.com/privacy-updates/27-localhost-permission/
Postingan HN: https://news.ycombinator.com/item?id=36574775
Saat browser membuka halaman undangan channel Discord, ia mengirim permintaan ke localhost lewat port ini dan meneruskan ID channel ke klien. Lalu aplikasi bisa menampilkan pengalaman native “Join Channel”
Saya tahu ini karena perilaku itu tetap terjadi bahkan dalam mode incognito dan saat browser dalam keadaan logout dari Discord. Tidak bagus. Sandboxing semua aplikasi di dunia desktop perlu banyak ditingkatkan
||local^$allIni akan memblokir semua permintaan ke .local, termasuk permintaan yang berasal dari .local itu sendiri. Jika Anda ingin mengizinkan foo.local berkomunikasi dengan dirinya sendiri, misalnya karena menjalankan web server, Anda perlu menambahkan pengecualian per domain:
@@||foo.local^$domain=foo.local,allAtau jika Anda mempercayai seluruh .local dan ingin mengizinkan foo.local mana pun berkomunikasi dengan bar.local mana pun, Anda bisa menambahkan satu pengecualian untuk seluruh .local:
@@||local^$domain=local,allSeiring waktu, rasanya jauh lebih tenang menggunakan internet terutama dari kotak Qubes, lewat VM Whonix/Tor sekali pakai, dengan JavaScript dimatikan
Ini benar-benar menjijikkan. Tidak mengejutkan, tetapi kenyataan bahwa ini mungkin dilakukan tetap mengerikan dalam banyak hal
Jika Anda belum tahu fingerprint.com, mereka melakukan “profiling pengguna yang mendalam”. Anggap saja mereka bisa mempertahankan ID pengguna yang sama meskipun komputer, browser, dan sistem operasinya berbeda. Ada demo di halaman utama mereka, dan hasilnya agak bikin merinding
Filter uBlock Origin untuk merusak demo mereka:
||fpjscdn.netJenis serangan timing yang mirip juga bisa dipakai untuk memindai port pada mesin lokal dan perangkat lain di jaringan lokal dari browser
https://github.com/Flu1dTeam/PortScanner
Dulu eBay pernah ketahuan melakukan ini
https://blog.nem.ec/2020/05/24/ebay-port-scanning/
Syukurlah nama perangkatku selalu diganti
Penamaan bawaan Apple adalah kesalahan privasi. Dulu aku pernah kencan pertama dengan seseorang yang bekerja di penegak hukum; dia datang sendirian, perempuan, dan jelas sangat peduli melindungi dirinya, jadi dia bilang dia sudah mengecek latar belakangku dan memberi tahu beberapa orang di komunitas sekitarnya soal lokasi kami
Sementara itu aku bahkan tidak tahu nama belakangnya, dan menjadikannya bahan bercanda. Setelah makan malam, saat kami masuk ke mobil, layar dashboard menampilkan bahwa iPhone-nya ter-pairing otomatis, dan nama iPhone itu memakai nama depan dan nama belakangnya, jadi aku langsung tertarik. Aku tidak menyinggung hal itu, lalu sampai perjalanan selesai aku menyuruhnya menebak bagaimana aku bisa tahu namanya
Masalah terbesarnya justru mengingatkan diri sendiri untuk menghapus profilku sebelum mengembalikan mobil
Pada contoh di atas, alamat yang valid butuh 4 milidetik, sedangkan alamat yang tidak valid butuh 5 detik
Ini tidak terduga. Aku mengira kegagalan pencarian DNS akan jauh lebih cepat daripada timeout koneksi bawaan yang datang setelah pencarian DNS berhasil
Tetap saja, menurutku s-mac-xxxx selalu pilihan yang agak aneh. Terutama kalau mengingat ini perusahaan yang sangat menjual privasi sebagai poin utama. Mungkin diasumsikan tidak akan memakai nama asli di sini, atau mungkin dalam kasus ini “kemudahan bagi pengguna” yang diprioritaskan. Dari sudut pandang privasi, hostname acak yang dibuat Windows lebih baik
† Secara ketat ini tidak sepenuhnya benar. Jika ada perangkat yang tahu bahwa nama itu dimiliki olehnya, perangkat itu bisa menjawab tidak
Tulisannya bagus dan menarik. Aku terutama suka nada yang tidak berlebihan seperti “dengan mempertimbangkan kelemahan yang melekat dan banyak keterbatasannya, serangan ini tidak praktis”
Cara ini memungkinkan pengujian apakah hostname tertentu ada di jaringan
Kalau cuma satu hostname unik mungkin bukan masalah besar, tapi bagaimana dengan hostname tetap atau hostname bawaan yang umum di dunia IoT
Situs web jadi bisa diam-diam menebak apakah pengguna memiliki perangkat tertentu. Kalau dipakai untuk serangan tertarget malah lebih buruk. Jika beberapa perangkat di jaringan sudah diketahui, kita bisa menebak apakah pengguna yang terhubung sedang berada di jaringan target
Andai saja mematikan JavaScript tidak ikut mematikan pengalaman pengguna akhir
Meski begitu, ke depannya sepertinya aku tetap harus membiarkannya nonaktif secara default karena kekhawatiran privasi
Untungnya nama perangkatku biasanya seperti “xxxs's MacBook Pro (34)”. Bukan bug, tapi fitur
user, dan hostname menjadihostname. Semakin banyak orang yang melakukan ini, semakin baikMenarik, tulisannya bagus, dan ada proof of concept yang layak juga. Bagus sekali
Sebagai langkah balasan yang lucu, hostname perangkat bisa diubah menjadi sesuatu seperti atemptingurl.local agar penyerang tergoda mengunjungi situs itu. Halaman tersebut lalu dirancang dengan cermat untuk menjalankan teknik yang sama terhadap penyerang, sambil menampilkan pesan seperti ini:
“Halo [nama perangkat si peretas]! Informasi mesin Anda, alamat IP, lokasi geografis, dan data sidik jari lainnya telah dikumpulkan dan dilaporkan ke [masukkan nama lembaga siber yang terdengar menyeramkan].” Bahkan kalau mereka veteran berpengalaman dan bukan script kiddie, setidaknya itu bisa bikin mereka tertawa
Orang-orang butuh lebih banyak alasan untuk tertawa :-)