Hari ini saya ingin berbicara tentang fitur-fitur iOS yang kurang dikenal terkait dengan melindungi cadangan, melewati perlindungan ini (rekursi) dan melindungi terhadap melewati perlindungan (rekursi ganda). Ceri pada kue akan menjadi instruksi singkat yang memungkinkan Anda untuk memotong perlindungan terhadap bypass perlindungan cadangan (misalnya, rekursi tingkat ketiga), serta rekomendasi yang akan membantu melindungi terhadap memintas perlindungan terhadap bypass perlindungan cadangan (rekursi urutan keempat yang sangat baik - saya pikir saya mendapat medali!).
Perlindungan cadangan: sementara semuanya sederhana
Sistem cadangan IOS - benar-benar keluar dari persaingan. Kami melihat sesuatu yang serupa dalam hal cadangan lokal di BlackBerry 10, tetapi sistem ini sudah mati, dan BlackBerry tidak pernah sampai ke cloud. (Omong-omong, di BlackBerry 10 cadangan OS selalu dienkripsi, dan kuncinya selalu disimpan di cloud - baik di ID pengguna BlackBerry, atau di jaringan perusahaan). Cukup layak untuk mencadangkan ke "cloud" dan di Windows Phone 8.1, serta di Windows 10 Mobile - tetapi sistem ini sekarang mati, dan tidak pernah ada cadangan lokal di dalamnya.
Satu-satunya pesaing iOS adalah sistem Android, yang cadangannya dibuat secara eksklusif di cloud (kami akan mengabaikan perintah cadangan adb: bahkan ada lebih sedikit data yang sebenarnya disimpan oleh perintah ini daripada masuk ke cloud). Ya, trik tertentu akan membantu mendapatkan lebih banyak data, tetapi cadangan di Android jauh dari ideal.
Sebagai bagian dari artikel ini, kami terutama tertarik pada cadangan lokal; Saya
menulis tentang konten mereka
di blog kami sebelumnya. Mereka dapat dibuat, misalnya, dalam aplikasi iTunes, tetapi tidak hanya di dalamnya: ada banyak aplikasi pihak ketiga (termasuk iOS Forensic Toolkit kita sendiri) yang, ketika terhubung ke iPhone, akan membuat salinan cadangannya. Ngomong-ngomong, menggunakan Toolkit, cadangan kadang-kadang dapat ditarik keluar dari ponsel bahkan ketika layar terkunci dan kode kunci tidak diketahui (file kuncian digunakan untuk ini).
Salinan cadangan adalah cara yang mudah, universal, dan sangat sederhana untuk mengekstrak salinan data baru dari perangkat penyimpanan yang dilindungi (dan, omong-omong, terenkripsi). Hampir semua hal yang paling menarik termasuk dalam cadangan: baik data sebagian besar aplikasi, dan login dengan kata sandi yang disimpan pengguna di browser Safari dan aplikasi pihak ketiga, dan kata sandi untuk Wi-Fi, dan backup jam, dan data aktivitas pengguna (langkah, detak jantung) pada titik waktu tertentu). Jatuh ke dalam cadangan dan banyak hal lain yang vital untuk investigasi kejahatan.
Mengapa saya perlu cadangan jika kode kunci diketahui?Kita sering ditanya pertanyaan (tepatnya dalam kata-kata, mereka โmengklaimโ): jika kode kunci sudah diketahui, lalu mengapa kita membutuhkan salinan cadangan? Bisakah saya melihat semuanya di iPhone itu sendiri?
Tidak semuanya. Bahkan jika kode kunci diketahui, tidak semua data menarik dapat dilihat di iPhone itu sendiri. IPhone membuat cadangan banyak data dalam cadangan, bahkan di luar kehendak pengguna. Pengguna bahkan mungkin tidak tahu bahwa data ini ada! Ini berlaku, misalnya, untuk riwayat peramban Safari - di ponsel itu sendiri atau di iCloud, Anda dapat melihat riwayat selama 30 hari terakhir, dan seluruh riwayat selama Anda menggunakan telepon akan dicadangkan (jika pengguna tidak menghapus riwayat secara manual). Ngomong-ngomong, persis sama berlaku untuk riwayat panggilan: dalam aplikasi Telepon hanya dapat dilihat selama 30 hari terakhir, dan informasi tentang semua panggilan disimpan dalam salinan cadangan. Ini saja sudah cukup bagi lembaga penegak hukum untuk mencari cadangan, tapi itu belum semuanya. Pengguna dapat menghapus beberapa pesan dalam program pengiriman pesan instan - dan Anda tidak akan melihatnya di layar perangkat; pada saat yang sama, database dalam format SQLite dapat berisi catatan yang dihapus untuk waktu yang lama - sampai prosedur pengumpulan sampah periodik dimulai. Hal-hal penting adalah analisis, pencarian, ekspor data, termasuk data yang dihapus (permintaan polisi pertama adalah "di mana pengguna pada tanggal ini dan itu", cobalah untuk menjawab pertanyaan ini dengan minat, memiliki telepon Anda sendiri di tangan Anda dan mendeteksi berapa banyak waktu yang diperlukan, dan menganalisis data dari cadangan akan memberikan jawaban dalam sedetik.) Ada juga hal-hal kecil - misalnya, tanggal kontak ditambahkan atau tanggal acara dibuat pada kalender, yang tidak terlihat di antarmuka pengguna.
Pada saat yang sama, di tangan penyerang, cadangan berubah menjadi senjata melawan pengguna. Login dan kata sandi dari Keychain memungkinkan Anda untuk "membajak" akun, mendapatkan akses ke korespondensi dan uang pengguna. Untuk mencegah hal ini, Apple memungkinkan pengguna untuk mengatur kata sandi untuk cadangan.
Jika kata sandi disetel, seluruh cadangan akan dienkripsi dengan kunci yang kuat, yang dihasilkan berdasarkan kata sandi. Enkripsi terjadi di dalam perangkat; jika kata sandi diatur, maka data yang tidak dienkripsi tidak akan meninggalkan telepon. Karenanya, apa pun program cadangan yang Anda gunakan, hasilnya akan sama: cadangan terenkripsi.
Enkripsi cadangan lokal dalam versi iOS yang relatif baru (10.2 dan yang lebih baru) begitu kuat sehingga bahkan menggunakan akselerasi perangkat keras dengan GPU Nvidia GTX 1080, kami tidak dapat memperoleh kecepatan pencarian lebih dari seratus kata sandi per detik. Oleh karena itu, serangan frontal tidak berguna bahkan jika kata sandi sederhana hanya 7 karakter digunakan (rata-rata rumah sakit). Namun, bahkan jika Anda memiliki kata sandi enkripsi yang kuat dari ponsel Anda, Anda dapat mengekstrak foto dan file media jika Anda mengetahui kode sandi atau memiliki kuncian.
Di iOS 10.2 dan hingga rilis iOS 11, kata sandi cadangan yang panjang dan rumit adalah perlindungan mutlak; tidak ada cara untuk menghapus atau mengubah kata sandi tanpa terlebih dahulu memasukkan yang lama, dalam versi yang lebih lama dari sistem tidak ada. Di iOS 11, situasinya telah berubah.
Rekursi pertama: setel ulang kata sandi ke cadangan
Saya sudah menulis tentang apa yang dapat dilakukan di iOS 11, 12 dan 13 menggunakan kode kunci. Di antara banyak hal lain, dalam versi iOS ini, kode kunci layar dapat digunakan untuk mengatur ulang kata sandi cadangan. Sekarang, jika seorang penyerang telah mempelajari kode kunci layar, ia dapat mengatur ulang kata sandi ke cadangan lokal, menghubungkan ponsel ke komputer dan mengekstrak semua data, dan juga mendekripsi semua kata sandi dari gantungan kunci.
Situs web Apple menyediakan
instruksi terperinci tentang cara melanjutkan untuk mengatur ulang kata sandi untuk cadangan:
Di iOS 11 atau lebih baru, Anda dapat membuat cadangan terenkripsi perangkat Anda dengan mengatur ulang kata sandi Anda. Untuk melakukan ini, ikuti langkah-langkah ini:
- Pada perangkat iOS Anda, pilih Pengaturan> Umum> Reset.
- Klik "Reset Semua Pengaturan" dan masukkan kata sandi iOS.
- Ikuti instruksi untuk mengatur ulang. Ini tidak akan memengaruhi data atau kata sandi pengguna, tetapi akan mengatur ulang pengaturan seperti kecerahan tampilan, posisi program pada layar Beranda, dan wallpaper. Kata sandi untuk mengenkripsi cadangan juga akan dihapus. (Dalam tanda kurung: pada titik ini, perangkat akan meminta Anda untuk memasukkan kode kunci layar).
- Sambungkan kembali perangkat ke iTunes dan buat cadangan terenkripsi baru.
- Anda tidak dapat menggunakan cadangan terenkripsi yang dibuat sebelumnya, tetapi Anda dapat menggunakan iTunes untuk mencadangkan data saat ini dan mengatur kata sandi cadangan baru.
Pada perangkat dengan iOS 10 atau lebih lama, pengaturan ulang kata sandi tidak dimungkinkan.
Rekursi kedua: kami melindungi diri dari upaya mengatur ulang kata sandi untuk cadangan
Mudahnya penyerang dapat mem-bypass kata sandi Anda yang paling rumit dan panjang dengan hanya memasukkan kode kunci layar sangat tidak menyenangkan. Namun, Anda bisa mencoba melindungi diri dari momok ini. Mekanisme perlindungan di sini adalah Pembatasan Kontrol Orang Tua (iOS 11) atau Sandi Waktu Layar (iOS 12 dan 13). Untuk kesederhanaan, saya akan menjelaskan persis iOS 12.
Katakanlah iPhone Anda jatuh ke tangan penyerang. Misalkan seorang penyerang berhasil memata-matai kode kunci Anda; Sekarang dia mencoba membuka ikatan telepon dari cloud, dan pada saat yang sama menggabungkan salinan data, mendapatkan akses ke kata sandi dari Keychain. Anda dapat melindungi diri dari perkembangan acara dengan bantuan kata sandi Waktu Layar. Anda dapat membaca lebih lanjut tentang kemungkinan mengontrol waktu Layar di artikel Apple
Menggunakan kontrol orangtua pada perangkat iPhone, iPad dan iPod touch . Kami sekarang tertarik pada kemungkinan lain dari sistem ini: untuk melindungi ponsel dari mengatur ulang kata sandi untuk cadangan.
Anehnya, membatasi kemampuan untuk mereset kata sandi untuk cadangan iOS lokal cukup sederhana: yang perlu Anda lakukan hanyalah mengatur kata sandi Waktu Layar. Kompleksitas kata sandi ini rendah: satu-satunya pilihan yang tersedia adalah kode PIN 4 digit. Namun demikian, perlindungan seperti itu pada umumnya cukup dapat diandalkan. Karena kata sandi ini sangat jarang digunakan dan berbeda dari kode kunci perangkat, kata sandi ini tidak dapat secara tidak sengaja dimata-matai. Kode ini diperlukan dalam kasus yang sangat jarang terjadi ketika Anda ingin mengubah pengaturan atau menonaktifkan pembatasan. Anda dapat mengatur kode acak dengan menuliskannya di selembar kertas yang tersisa di rumah - dan itu akan sepenuhnya aman.
Apa yang terjadi jika saya mencoba mengatur ulang kata sandi untuk cadangan sekarang? Pada langkah pertama, tidak ada perbedaan: sistem akan meminta kata sandi kunci perangkat. Tetapi segera setelah itu, kata sandi Screen Time 4 digit tambahan akan diminta. Langkah keamanan ini cukup mampu tidak hanya mengusir mereka yang penasaran, tetapi juga melindungi iPhone dari upaya peretasan yang cukup serius.
Rekursi Tiga: Cara mengetahui kata sandi Waktu Layar
Kata sandi waktu layar disimpan pada perangkat itu sendiri. Tidak mungkin untuk mengambilnya dalam jumlah waktu yang wajar: ruang kecil dengan 10.000 kombinasi dilindungi oleh penundaan progresif di antara upaya input. Setelah beberapa upaya yang gagal, sistem akan membatasi kecepatan penghitungan kata sandi waktu Layar dengan memperkenalkan penundaan progresif 1, 5, 15, dan 60 menit. Setelah 10 upaya gagal, setiap upaya berikutnya dapat dilakukan tidak lebih awal dari satu jam setelah yang sebelumnya; me-reboot perangkat tidak akan membantu mempercepat proses. Dengan demikian, semua 10.000 kombinasi dapat disortir dalam 416 hari.
Namun, ada cara yang lebih menarik. Saya akan segera melakukan reservasi: yang pertama hanya berfungsi ketika kata sandi untuk cadangan tidak diatur atau diketahui, dan yang kedua - jika Anda dapat melakukan jailbreak pada iPhone (yaitu, versi iOS di dalamnya tidak lebih baru dari iOS 12.2).
Untuk iPhone dengan kata sandi yang tidak dikenal untuk pencadangan yang berjalan pada versi terbaru iOS (hari ini 12.4) tidak ada cara yang berhasil untuk mengetahui kata sandi Waktu Layar (untuk saat ini).
Metode 1: Ekstrak dari CadanganDi iOS 7-11, kata sandi ini (disebut Pembatasan di sana) disimpan sebagai hash. Algoritma ini relatif kuat (pbkdf2-hmac-sha1, tetapi jumlah iterasi relatif kecil). Mengingat bahwa kata sandi ini selalu hanya terdiri dari 4 digit, pencarian lengkap hash pada komputer membutuhkan beberapa detik. Hash itu sendiri disimpan di file com.apple.restrictionspassword.plist, yang termasuk dalam cadangan. Dengan demikian, kata sandi Pembatasan dapat dibuka jika kami memiliki (salah satu):
- cadangan tanpa kata sandi
- cadangan dengan kata sandi, ditambah kata sandi darinya
Di iOS 12 (ini adalah kata sandi Waktu Layar, atau Waktu Layar) disimpan di tempat yang bersih. Tidak, keamanan tidak menjadi lebih buruk: kata sandi dipindahkan ke Keychain. Namun demikian, kelas perlindungan untuk kata sandi untuk Screen Time ditetapkan minimum: tidak terikat dengan perangkat. Kelas perlindungan minimum ditugaskan dengan sengaja. Hal ini dilakukan agar ketika memulihkan iPhone baru dari cadangan, kata sandi Waktu Layar diatur secara otomatis (sehingga Apple menutup potensi untuk menghapus kata sandi Waktu Layar dengan membuat cadangan, mengatur ulang perangkat dan kemudian memulihkan dari cadangan). Catatan gantungan kunci dengan kelas perlindungan yang lebih tinggi tidak berakhir dalam cadangan atau berakhir, tetapi dilindungi oleh kunci perangkat keras perangkat (yaitu, mereka hanya dapat dikembalikan ke perangkat yang sama).
Untuk mendapatkan kata sandi waktu layar, Anda perlu:
- cadangan dengan kata sandi ditambah kata sandi darinya
Metode 2: melalui jailbreakJelas, metode pertama hanya akan berfungsi bila kata sandi untuk cadangan tidak disetel atau diketahui. Jika kata sandi untuk cadangan diatur, tetapi tidak diketahui, maka satu-satunya cara yang tersisa untuk mengetahui kata sandi dari Waktu Layar adalah untuk mendapatkan akses ke Keychain. Untuk versi iOS yang lebih lama, Anda memerlukan salinan sistem file.
Untuk iOS 7-11 Anda perlu:
- gambar sistem file yang diambil oleh EIFT (perlu jailbreak) atau GrayKey (jailbreak tidak diperlukan, kode kunci perangkat sudah cukup, tetapi produk itu sendiri hanya tersedia untuk lembaga penegak hukum di beberapa negara)
Untuk iOS 12:
- Gantungan kunci ditambang oleh EIFT atau GrayKey
Apakah perlu melakukan ini? Saya tidak yakin: apakah mungkin menginstal jailbreak, maka, pertama, semua kata sandi dapat diekstraksi tanpa perantara dalam bentuk cadangan. Kedua, Anda dapat mengetahui kata sandi untuk cadangan dengan mendekripsi Keychain: kata sandi untuk cadangan (seperti kata sandi untuk Waktu Layar) disimpan di sana dengan jelas. Namun, jika tujuannya adalah untuk menghapus pembatasan waktu Layar, maka pendekatan ini sangat cocok.
Satu hal lagiMenariknya, kata sandi Waktu Layar juga disimpan di cloud iCloud, tetapi hanya jika Anda mengaktifkan otentikasi dua faktor dan mengaktifkan opsi Waktu Layar "Bagikan di perangkat". Kunci itu sendiri tidak jatuh ke Cloud Keychain, tetapi disimpan secara terpisah (kira-kira dalam bentuk yang sama dengan kunci untuk mengembalikan akses ke volume FileVault 2 terenkripsi). Saat ini tidak ada mekanisme untuk mengekstraknya dari iCloud dan melihatnya. Kami sedang mengusahakannya; Pada musim gugur, direncanakan untuk merilis versi terbaru Elcomsoft Phone Breaker, yang akan memiliki fitur ini (jika tidak ada perubahan dalam mekanisme penyimpanan dengan rilis iOS 13; ada kemungkinan seperti itu: iOS 13 telah mengubah lokasi penyimpanan untuk kata sandi ini).
Dalam hal apa pun, untuk mengeluarkan kata sandi Waktu Layar dari iCloud, Anda perlu semua hal berikut:
- nama pengguna dan kata sandi pengguna Apple ID (iCloud)
- kode kunci layar perangkat
- akses ke faktor otentikasi kedua (itu adalah perangkat itu sendiri, jika kode kunci diketahui; namun, kartu SIM dengan nomor telepon tepercaya sudah cukup)
Tetapi kami tidak memeriksa skenario dengan mengatur ulang perangkat dan kemudian mengembalikannya dari cadangan "cloud", jadi saya tidak dapat mengatakan dengan pasti apakah sandi Waktu Layar diaktifkan jika saya membuat cadangan di iCloud, mengatur ulang iPhone dan memulihkan dari cloud. Selain itu, sistem dapat berperilaku berbeda jika iPhone atau perangkat baru yang sama dipulihkan dari cadangan.
Rekursi keempat, terakhir: cara melindungi akses ke kata sandi Waktu Layar
Jadi kita sampai pada poin terakhir. Jika tujuan Anda adalah untuk mengamankan perangkat sebanyak mungkin, maka adalah kepentingan Anda untuk memastikan bahwa kata sandi Waktu Layar tidak diatur ulang atau dikenali. Seperti pada bagian sebelumnya, saya punya dua berita: baik dan buruk.
Berita baiknya adalah bahwa melindungi kata sandi Waktu Layar dari orang kebanyakan dan bahkan cracker profesional cukup sederhana: cukup atur kata sandi yang panjang dan kuat untuk salinan cadangan, dan kemudian perbarui perangkat dengan menginstal versi terbaru iOS segera setelah mereka keluar. Jailbreak untuk iOS versi baru tidak segera keluar. Kadang-kadang berbulan-bulan berlalu antara rilis pembaruan iOS dan penampilan jailbreak yang bisa diterapkan untuk itu.
Anda bisa takut pada skenario ketika perangkat yang dicuri (dengan kode pemblokiran diketahui penyerang) diletakkan di rak menunggu penampilan jailbreak. Namun, di sini, standar "Hapus [perangkat]" yang dibuat di portal Find my iPhone dapat membantu. Faktanya adalah bahwa untuk menginstal jailbreak, Anda harus terlebih dahulu menandatangani file IPA, dan kemudian mengkonfirmasi tanda tangan digital langsung pada iPhone itu sendiri. Tanda tangan digital diverifikasi di server Apple; artinya, penyerang harus mengizinkan iPhone yang dicuri untuk online. Pada saat ini, perintah untuk menghapus perangkat kemungkinan besar akan berfungsi.
Penyerang dapat mengatasi masalah ini menggunakan konfigurasi router khusus, di mana akses ke node yang bertanggung jawab atas fungsi Find My iPhone akan ditolak. Selain itu, alih-alih sertifikat yang biasa, mereka dapat menggunakan sertifikat pengembang untuk menandatangani jailbreak, yang tidak mengharuskan iPhone untuk online untuk mengkonfirmasi tanda tangan digital.
Berita buruknya adalah betapa pun kerasnya Anda berusaha, Anda tidak akan dapat melindungi iPhone Anda dari akses melalui sistem GrayKey atau UFED Premium: pengembang mereka dapat mem-bypass sebagian besar mekanisme keamanan iPhone. Jika kode kunci layar diketahui, maka pengguna dari kompleks ini akan dapat mengakses sistem file dan mendekripsi Keychain tanpa masalah khusus. Di sisi lain, kompleks ini hanya tersedia untuk lembaga penegak hukum, dan tidak berarti di negara mana pun (misalnya, mereka tidak dipasok ke Rusia). Mendapatkan mereka di tangan penyerang praktis dikecualikan. Dengan demikian, Anda tidak mungkin terpapar bahaya ini.