Bagaimana DevTeam Menaklukkan iPhone
(fabiensanglard.net)- iPhone pertama pada 2007 tidak bisa diaktifkan tanpa berlangganan AT&T di AS, dan iPhone Dev Team secara terbuka mencari cara agar perangkat bisa dipakai di operator lain hanya lewat perangkat lunak
- Pekerjaan itu dirangkum ke dalam 6 tonggak: mendekripsi firmware, melewati aktivasi, mendapatkan hak tulis, membangun toolchain ARM/Mach-O, menjalankan aplikasi pihak ketiga, dan membuka kunci operator
- Terobosan awal datang dari analisis ramdisk dan DMG terenkripsi di dalam
.ipsw, serta memanfaatkan celah replay pada verifikasi aktivasilockdownduntuk masuk ke layar utama - Hak tulis diperoleh dengan memuat ramdisk dan kernelcache dalam Recovery Mode lalu mengubah
fstabdanServices.plist, sehingga alih-alihafcdterkunci di/root/Media, ia bisa menangani root filesystem - Unlock final diotomatisasi lewat anySIM, yang membuang, menambal, dan mengunggah ulang firmware baseband lalu menjalankan
AT+CLCK="PN",0,"00000000"; Apple merespons pada 27 September 2007 dengan firmware v1.1.1
iPhone 2007 dan tujuan DevTeam
- Apple merilis iPhone pada 29 Juni 2007, dengan harga saat itu $499 untuk model 4GB dan $599 untuk model 8GB
- iPhone yang baru dikeluarkan dari boks berada dalam keadaan tidak aktif dan hanya menampilkan layar
Connect to iTunes, dan pengguna harus mendaftar keanggotaan AT&T di iTunes - Bahkan setelah pendaftaran, perangkat tetap terkunci ke AT&T
- Kanada tidak memiliki jadwal peluncuran iPhone awal, dan Apple baru mencapai kesepakatan dengan Rogers pada 11 Juli 2008 bersama iPhone 3G
- iPhone Dev Team berkumpul dengan tujuan agar perangkat bisa dipakai di operator mana pun hanya lewat perangkat lunak, dan mereka sering mempublikasikan perkembangan di blog iphone.fiveforty.net
- Pada 3 Juli 2007, ada 8 pembaruan yang diunggah dari pukul 00.00 hingga 21.00
6 tonggak DevTeam
- Untuk memakai perangkat terkunci seperti smartphone biasa, langkah-langkah berikut diperlukan
- Akses baca untuk memahami sistem: Break DMG Password
- Keluar dari keadaan tidak aktif: Bypass Activation
- Akses tulis untuk memodifikasi sistem: Get Write Access
- Working Toolchain untuk membuat executable kustom
- Unlock agar baseband dapat terhubung ke operator mana pun
- Aplikasi untuk mengotomatisasi seluruh proses: Enable Third-Party Applications
- Berdasarkan Wayback Machine, pada 6 Juli 2007, 2 dari 6 tonggak sudah selesai, dan perjalanan ini berakhir pada 12 September 2007
- Pada halaman status yang di-crawl 25 September 2007,
Decrypt Firmware,Bypass Activation,Get Write Access,Get Working Toolchain,Enable Third-party Applications,Unlock Phonesemuanya ditandai selesai
Analisis .ipsw dan pembacaan filesystem
- iTunes mengunduh arsip iPhone Software berekstensi
.ipswuntuk pemulihan perangkat, dan file ini berformat zip - Di dalam
iPhone1,1_1.0_1A543a_Restore.ipswterdapat image pemulihanimg2, folderFirmwareterkait baseband,kernelcacheyang merupakan kernel iOS, dan dua file DMG besar- Ukuran keseluruhan arsip pemulihan iOS sekitar 105MiB
- DMG pertama,
694-5259-38.dmg, adalah ramdisk yang dipakai saat pemulihan dan tidak terenkripsi sehingga bisa di-mount dengandd - Ramdisk itu bukan seluruh filesystem iOS, tetapi dari
/private/etc/master.passwdbisa diketahui kata sandi untuk penggunamobileyang menjalankan aplikasi danrootyang menjalankan proses lainnya - DMG kedua,
694-5262-39.dmg, adalah filesystem iOS yang dipakai saat berjalan normal dan terenkripsi- Kuncinya ditemukan di dalam
/usr/sbin/asrpada ramdisk - Karena yang ditemukan adalah key, bukan passphrase,
hdiutiltidak bisa dipakai, dan DevTeam menulis alat dekripsi sendiri bernamavfdecrypt.c - Setelah didekripsi, mereka memperoleh akses baca ke seluruh filesystem runtime
- Kuncinya ditemukan di dalam
Melewati aktivasi
- Aktivasi normal melibatkan iTunes, server Apple
albert.apple.com, danlockdownddi iPhone- iTunes mengumpulkan
DeviceID,IMEI, danICCIDdari perangkat - Ketiga nilai itu dibundel menjadi token dan dikirim ke server Apple
- Server Apple menandatangani token dengan private key lalu mengirimkannya kembali
lockdowndyang menunggu lewat USB memverifikasi token dengan public key Apple- Jika token benar-benar berasal dari Apple dan cocok dengan info perangkat, status berubah menjadi Activated
- iTunes mengumpulkan
PhoneActivationServerbuatan dvdjon menambal iTunes agar mengakses server aktivasi lewat HTTP alih-alih HTTPS, lalu mengarahkan permintaan ke server miliknya sendiri- Kuncinya bukan membuat token bertanda tangan baru, melainkan memakai metode replay yang selalu mengembalikan signed token yang sama, hasil tangkapan dari aktivasi yang berhasil, tanpa memedulikan input
- Menurut presentasi George Hotz,
lockdowndtidak memeriksa apakahDeviceID,IMEI, danICCIDdi dalam respons cocok dengan nilai sebenarnya - DevTeam membuat CLI
toolsyang membaca signed token hardcoded dari plist dan mengirimkannya ke iPhone, lalu kemudian menyempurnakannya menjadiiPhoneInterfaceyang bisa bekerja tanpa iTunes
Hak tulis dan jailbreak
- iPhone yang sudah diaktifkan bisa menerima file seperti musik dan foto lewat iTunes, tetapi proses pengunggah
afcdterkunci dalam chroot jail di/root/Media - Hanya partisi pengguna yang di-mount sebagai baca/tulis (
rw), sedangkan partisi sistem hanya-baca (r) - Tujuannya adalah keluar dari chroot jail dan membuat partisi sistem ikut bisa ditulis; dari sinilah istilah jailbreaking muncul
- Boot iPhone terbagi menjadi mode normal dan Recovery Mode
- Mode normal berjalan dari BootROM → LLB → iBoot → Kernel → Normal Mode, dan setiap tahap memverifikasi tanda tangan tahap berikutnya
- Recovery Mode berhenti di tahap iBoot, lalu iTunes memuat ramdisk, kernelcache, dan lainnya ke RAM untuk masuk ke mode pemulihan
- DevTeam menyelidiki cara iTunes menulis ke filesystem saat proses restore di dalam
iTunesMobile.dlldan menemukan perintah sepertimount,umount, danditto iPHUCadalah alat CLI yang berkomunikasi dengan perangkat dalam Recovery Mode lewat metode privat diiTunesMobile.dll- Pengguna memasukkan perangkat ke Recovery Mode
- Ramdisk dikirim ke perangkat dan dimuat ke RAM
kernelcachedikirim lalu kernel diboot agar menunjuk ke ramdisk- Perangkat masuk ke Restore Mode
- Prosedur jailbreak yang sebenarnya dilakukan dengan memodifikasi
fstabdanServices.plist- Di
fstab, partisi sistem diubah agar di-mount sebagai rw, bukan hanya-baca - Di
Services.plist, dibuat layananafcdkedua yang berbasis di/, bukan/root/Media - Setelah reboot, iTunes bisa melihat seluruh filesystem melalui
afcd2, dan partisi sistem maupun pengguna sama-sama bisa dibaca/ditulis
- Di
- Setelah itu, aktivasi dan akses tulis diotomatisasi lewat aplikasi desktop Mac OS X INdependence
Toolchain dan aplikasi pihak ketiga
- Tidak banyak informasi yang dipublikasikan tentang proses toolchain dan eksekusi aplikasi pihak ketiga, tetapi setidaknya 12 orang terlibat dalam pekerjaan ini
- Pada 19 Juli 2007, binutils toolchain yang menargetkan ARM telah selesai sehingga DevTeam bisa menjalankan program buatan mereka sendiri di iPhone
- Dengan
ARM/Mach-O Toolchainbuatan Nightwatch, aplikasiHello Worldindependen pertama berhasil dikompilasi dan dijalankan di iPhone - GeoHotz menjelaskan bahwa kombinasi Mach-O dan ARM sebelumnya tidak ada di luar Apple, sehingga harus ditulis sendiri
- Tujuan lain dari toolchain ini adalah merekonstruksi
MobileTerminal.h, yang mengekspos fungsi privatiTunesMobile.so, agar bisa berkomunikasi denganafctanpa menjalankan iTunes - Beberapa presentasi mengatakan kernel memeriksa tanda tangan executable sebelum
execl, tetapi iPhone pertama tidak melakukannya, dan rangkumannya menyebut fitur itu tampaknya diperkenalkan pada v1.1.1
Unlock baseband dan anySIM
- iPhone terbagi menjadi bagian smartphone yang menjalankan iOS dan bagian baseband yang berfungsi sebagai telepon dan modem
- Kedua sistem memiliki RAM, CPU, penyimpanan, firmware, dan osilator masing-masing
- Keduanya saling bertukar perintah AT melalui jalur UART yang di-mount di
/dev/tty.baseband
- Perintah AT yang diperlukan untuk unlock sudah diketahui sejak awal
AT+CLCK="PN",0,"xxxxxxxx"xxxxxxxxadalah NCK atau Network Control Key, yang diyakini unik untuk setiap perangkat- Jumlah percobaan dibatasi 3 hingga 10 kali, setelah itu firmware bisa hard-lock ke AT&T
- Baseband juga memiliki BootROM dan rantai kepercayaan sendiri, dan verifikasi tanda tangan diterapkan
- MuscleNerd menjelaskan bahwa baseband tidak memiliki jaring pengaman seperti DFU/Recovery Mode, sehingga kesalahan pada NOR atau image dapat merusak perangkat secara permanen
- Pada Juli 2007, DevTeam melakukan reverse engineering pada baseband di dalam
.ipswdan juga menganalisis/usr/local/bin/bbupdaterdi ramdisk untuk mengetahui perintah pengunggahan baseband baru - CLI pertama,
iUnlock, memerlukan beberapa file seperti firmware hasil dumpnordanICE03.12.06_G.fls - Setelah itu muncul aplikasi
anySIMyang lebih sederhana, sehingga cukup diunggah ke ponsel lalu dijalankan dengan satu tombol anySIMbekerja dengan urutan berikut- Membuka
/dev/tty.basebanddan mengatur parameter modem - Membuang baseband berukuran 4MiB, yaitu NOR, ke
/tmp - Memuat baseband ke RAM
- Memuat secpack
ICE03.12.06_G.flsdari ramdisk - Menambal perintah baseband di RAM agar NCK apa pun dapat mengizinkan unlock
- Mengunggah ulang baseband yang sudah ditambal
- Menjalankan
AT+CLCK="PN",0,"00000000"danAT+CLCK="PN",2
- Membuka
Trik -0x400
- Firmware baseband yang sudah ditambal seharusnya gagal diunggah karena tidak akan lolos pemeriksaan tanda tangan
- Bypass dilakukan dengan memanfaatkan offset minus 0x400
- GeoHotz menjelaskan bahwa
0x400byte pertama tidak dipakai sebelum tanda tangan diverifikasi, jadi penulisan bisa dimulai0x400byte lebih awal - Menurut penjelasan pembaca Hacker News sesudahnya, baseband menerima firmware baru dalam chunk hingga
0x800byte- Bukan dengan menyimpan seluruh 4MiB di RAM lalu memeriksa checksum sebelum menulis ke flash
- Byte yang diterima langsung ditulis ke flash, tetapi
0x400byte pertama saja yang dibuffer di RAM - Setelah unggahan selesai, baseband memeriksa checksum
- Jika gagal,
0x400byte pertama yang dibuffer tidak ditulis ke flash dan dibuang
- Metode
-0x400bekerja dengan terlebih dahulu menulis data sampah0x400byte sebelum lokasi firmware asli, lalu mengirim firmware 4MiB sesudahnya- Checksum gagal sehingga
0x400byte sampah dibuang - Namun sisa firmware baru sudah telanjur tertulis ke flash pada posisi yang benar
- Checksum gagal sehingga
Penyelesaian dan permainan kucing-dan-tikus setelahnya
- Panduan unlock perangkat lunak penuh dipublikasikan pada 12 September 2007
- Bersamaan dengan itu dipublikasikan pula contoh keberhasilan dari berbagai benua, termasuk kasus di Kanada
- Apple dengan cepat merilis iPhone firmware v1.1.1 pada 27 September 2007
- Bilah status kemajuan DevTeam di-reset menjadi
Decrypt 1.1.1,Get Write Access 1.1.1,Activate 1.1.1,Unlock 1.1.1,Enable Third-party Applications 1.1.1 - Sejak titik itu, dimulailah permainan kucing-dan-tikus antara Apple dan komunitas peretas iPhone, dan itu terus berlanjut setelahnya
1 komentar
Komentar Hacker News
Karena tidak ada header, ini aman karena tidak berlanjut ke eksekusi kode, dan di akhir seluruh tanda tangan diverifikasi; jika lolos maka header ditulis sehingga seluruh image menjadi valid
Triknya di sini adalah menulis lebih dulu 0x400 byte sampah pada posisi 0x400 byte sebelum lokasi tulis yang diinginkan. Bagian ini diperlakukan sebagai header sehingga hanya dibuffer dan tidak benar-benar ditulis, sementara sisa data yang dikirim benar-benar ditulis ke lokasi yang diinginkan. Setelah itu verifikasi tanda tangan gagal, dan 0x400 byte pertama yang tadinya tidak diinginkan memang tidak ditulis, jadi berhasil
Saya juga akan benar-benar paham kalau ada yang bisa menjelaskan lebih lanjut soal pergeseran -0x400 yang diterapkan sebelum penulisan data
Seek(fd, 0xA0020000 - 0x400);mencari 0x400 byte sebelum posisi tempat data seharusnya ditulis, laluSendWrite(fd, foo, 0x400, false);mengisi 0x400 byte pertama yang ingin ditulis dengan nolSetelah itu
SendWrite(fd, fw, fwsize, true);mengisi sisa byte dengan data yang sebenarnya dan memanggilSendEndSecpack(fd);. iPhone lalu menyalin data setelah 0x400 byte pertama, yaitu seluruh data yang memang ingin ditulis, kemudian mencoba memverifikasi tanda tangan dan gagal. Jika verifikasi tanda tangan berhasil, maka 0x400 byte pertama yang dibiarkan nol itu juga akan disalin saat ituKalau tidak salah dia juga yang menangani PDF atau eksploit TIFF untuk membuka PSP. Seingat saya dia tinggal dan bekerja di suatu tempat di Amerika Selatan, mungkin di sebuah universitas, tetapi hanya itu yang saya tahu
Itu masa yang sangat menyenangkan dan saya banyak belajar. Namun George Hotz membahayakan keselamatan beberapa orang yang membantunya mengakses dokumen berbahasa Jepang, meskipun sudah berulang kali diminta untuk tidak melakukannya, dan itu sangat membuat frustrasi serta pada akhirnya menjadi alasan dev team meninggalkan proyek tersebut
lockdownddi perangkat memverifikasinya dengan kunci publik Apple dan mengubah status menjadi “Activated”, terdengar seperti pendahulu OAuth modern/root/Mediayang dapat diakses dari iTunes menjadi symbolic link ke/Tautan ini tetap bertahan saat proses upgrade, dan setelah itu ketika melakukan pembaruan firmware kita bisa mengakses
rootfs. Waktu itu namanya masih iPhone OS, belum iOSMirip juga dengan produsen mobil. Sebaiknya jangan membeli tahun model awal dari produk baru atau platform baru
Biasanya “S” adalah penanda untuk upgrade kecil dibanding model dasarnya