Sandblaster adalah alat untuk membalikkan (mendekompilasi) profil kotak pasir apel biner. Profil kotak pasir apel ditulis dalam SBPL ( bahasa profil kotak pasir ), bahasa seperti skema, dan kemudian dikompilasi ke dalam format biner yang tidak berdokumen dan dikirim. Terutama digunakan di iOS, profil kotak pasir juga ada di macOS. Sandblaster, sepengetahuan kami, adalah alat pertama yang membalikkan profil kotak pasir biner ke format SBPL aslinya. Sandblaster bekerja di iOS dari versi 7 dan seterusnya termasuk iOS 11.
Laporan Teknis Sandblaster: Membalikkan Apple Sandbox menghadirkan informasi yang luas (meskipun agak usang) tentang internal Sandblaster.
Sandblaster mengandalkan karya sebelumnya oleh Dionysus Blazakis dan Stefan Esser's Code and Slide.
Reverser (di reverse-sandbox/ folder) dan alat helper (di helpers/ folder) dijalankan pada platform yang menjalankan Python.
Sandblaster dapat dipasang dan menjalankan mandiri, meskipun kami sarankan untuk memasang dan menjalankannya dari dalam iExtractor. Periksa dokumentasi iExtractor untuk informasi.
IExtractor adalah perangkat lunak open source yang dirilis di bawah lisensi BSD 3-Clause.
Sandblaster membutuhkan python2 untuk pembalik (dalam reverse-sandbox/ ), python3 dengan perpustakaan lief untuk skrip helper (dalam helpers/ ).
Setelah mengkloning repositori Sandblaster, Anda harus menginstal lief untuk python3:
pip3 install lief
Jika pemasangan lief gagal, Anda perlu dikompilasi. Informasi lebih lanjut tentang cara mengkompilasi itu dapat ditemukan di halaman wiki.
Untuk menggunakan Sandblaster, Anda memerlukan akses ke profil kotak pasir biner dan operasi kotak pasir, satu set string yang menentukan tindakan spesifik kotak pasir. Operasi kotak pasir dan profil kotak pasir diekstraksi menggunakan skrip helpers/extract_sandbox_data.py . Profil kotak pasir diekstraksi dari ekstensi kotak pasir kernel (sebagai bundel untuk iOS 4 dan 9-11) atau dari cache kernel (sebagai bundel untuk iOS 12) atau dari file sandboxd di sistem file iOS (untuk iOS 5-8). Operasi kotak pasir diekstraksi baik dari ekstensi kernel (untuk iOS 4-11) atau dari cache kernel (untuk iOS 12).
Jadi, sebagai data input, Sandblaster memerlukan kernelcache, ekstensi kotak pasir kernel dan file sandboxd . Informasi dan skrip tentang mengekstraksi mereka dari file IPSW ( perangkat lunak iPhone ) yang tersedia untuk umum disajikan oleh IExtractor.
Di bawah ini adalah langkah -langkah dan perintah untuk membalikkan profil kotak pasir untuk iOS 8.4.1, dengan asumsi ekstensi kernel kotak pasir ( com.apple.security.sandbox.kext ) dan file sandboxd tersedia: tersedia:
# Extract sandbox operations from kernelcache.
cd helpers/
./extract_sandbox_data.py -o iPad2,1_8.4.1_12H321.sb_ops iPad2,1_8.4.1_12H321.com.apple.security.sandox.kext 8.4.1
# Extract binary sandbox profile files from sandboxd.
mkdir iPad2,1_8.4.1_12H321.sandbox_profiles
./extract_sandbox_data.py -O iPad2,1_8.4.1_12H321.sandbox_profiles/ iPad2,1_8.4.1_12H321.sandboxd 8.4.1
# Reverse all binary sandbox profiles.
cd ../reverse-sandbox/
mkdir iPad2,1_8.4.1_12H321.reversed_profiles
for i in ../helpers/iPad2,1_8.4.1_12H321.sandbox_profiles/*; do python reverse_sandbox.py -r 8.4.1 -o ../helpers/iPad2,1_8.4.1_12H321.sb_ops -d iPad2,1_8.4.1_12H321.reversed_profiles/ "$i"; done
Di bawah ini adalah langkah -langkah dan perintah untuk membalikkan profil kotak pasir untuk iOS 9.3, dengan asumsi ekstensi kernel kotak pasir ( com.apple.security.sandbox.kext ) tersedia:
# Extract sandbox operations from kernelcache.
cd helpers/
./extract_sandbox_data.py -o iPhone5,1_9.3_13E237.sb_ops iPhone5,1_9.3_13E237.com.apple.security.sandox.kext 9.3
# Extract sandbox profile bundle from kernel sandbox extension.
./extract_sandbox_data.py -O . iPhone5,1_9.3_13E237.com.apple.security.sandox.kext 9.3
cd ../reverse-sandbox/
# Reverse all binary sandbox profiles in sandbox bundle.
mkdir iPhone5,1_9.3_13E237.reversed_profiles
# Print all sandbox profiles in bundle.
python reverse_sandbox.py -r 9.3 -o ../helpers/iPhone5,1_9.3_13E237.sb_ops -d iPhone5,1_9.3_13E237.reversed_profiles/ ../helpers/sandbox_bundle -psb
# Do actual reversing.
python reverse_sandbox.py -r 9.3 -o ../helpers/iPhone5,1_9.3_13E237.sb_ops -d iPhone5,1_9.3_13E237.reversed_profiles/ ../helpers/sandbox_bundle
Ekstraksi profil kotak pasir biner berbeda antara iOS <= 8 dan iOS> = 9. Karena iOS> = 9 Profil kotak pasir biner disimpan dalam bundel kotak pasir dalam ekstensi kotak pasir kernel. Script helpers/extract_sandbox_data.py mengekstraknya dengan tepat tergantung pada versi iOS.
Opsi -psb untuk reverse_sandbox.py mencetak bagian profil kotak pasir dari bundel kotak pasir tanpa melakukan pembalikan yang sebenarnya.
Skrip reverse_sandbox.py perlu dijalankan di direktori ( reverse-sandbox/ ) karena membutuhkan modul python lainnya dan file logger.config .
helpers/ subfolder berisi skrip helper yang menyediakan antarmuka yang lebih bagus untuk alat eksternal.
Pembalik yang sebenarnya adalah bagian dari reverse-sandbox/ folder. File di sini dapat dikategorikan sebagai berikut:
reverse_sandbox.py . Ini mem -parsing argumen baris perintah, melakukan penguraian dasar file biner input (mengekstrak bagian) dan memanggil fungsi yang sesuai dari modul lain.operation_node.py . Ini menyediakan fungsi untuk membangun grafik aturan yang sesuai dengan profil kotak pasir dan untuk mengonversi grafik ke SBPL. Itu disebut oleh reverse_sandbox.py .sandbox_filter.py dan konfigurasi di filters.json , filter_list.py dan filters.py . Filter fungsi spesifik dipanggil oleh operation_node.py .sandbox_regex.py dan regex_parse.py . regex_parse.py adalah parser ujung belakang yang mengubah representasi biner menjadi grafik dasar. sandbox_regex.py mengonversi representasi grafik (automaton) menjadi ekspresi reguler yang sebenarnya (yaitu string karakter dan metacharacters). Ini dipanggil oleh reverse_sandbox.py untuk parsing ekspresi reguler, dengan daftar ekspresi reguler yang dihasilkan diteruskan ke fungsi yang diekspos oleh operation_node.py ; operation_node.py meneruskannya ke file penanganan filter kotak pasir.reverse_string.py . Kelas SandboxString primer di reverse_string.py digunakan dalam sandbox_filter.py .logger.config . Secara default, INFO dan pesan tingkat yang lebih tinggi dicetak ke konsol, sedangkan DEBUG dan pesan tingkat yang lebih tinggi dicetak ke file reverse.log . Sandblaster bekerja untuk iOS versi 4 dan seterusnya termasuk iOS 12. Apple telah membuat pembaruan untuk format biner dari profil kotak pasir: karena profil kotak pasir iOS 9 disimpan dalam bundel, karena iOS 10 string dikumpulkan bersama dalam format biner khusus. iOS 11 tidak membawa perubahan pada format.
Bergabunglah dengan kami di Discord untuk diskusi langsung.