Artikel ini menjelaskan workflow dasar untuk membuat salinan mentah (raw image) dari disk atau partisi di macOS, lalu memeriksa isinya menggunakan The Sleuth Kit (TSK). Prosedur ini ditujukan untuk lab, pemulihan data, dan analisis yang memiliki otorisasi.
Penting: jangan membaca atau menyalin media yang bukan milik Anda tanpa izin. Untuk akuisisi forensik formal, gunakan hardware write blocker dan prosedur chain of custody yang sesuai. Perintah unmount pada macOS tidak menggantikan hardware write blocker.
Daftar Isi#
- 1. Prasyarat
- 2. Instalasi tools
- 3. Identifikasi disk
- 4. Unmount disk
- 5. Akuisisi full disk
- 5.1 Akuisisi dengan dc3dd
- 6. Akuisisi partisi
- 7. Verifikasi hash
- 8. Analisis full-disk image
- 9. Analisis partition image
- 10. Troubleshooting dan cleanup
1. Prasyarat#
Siapkan hal-hal berikut sebelum memulai:
- macOS dengan akses administrator melalui
sudo; - media sumber dan lokasi penyimpanan image yang berbeda;
- ruang kosong yang cukup untuk ukuran data yang akan diakuisisi;
- Homebrew untuk instalasi The Sleuth Kit;
- nama device dan partisi yang sudah diverifikasi melalui
diskutil list.
Contoh di artikel ini menggunakan nama berikut:
DISK_DEVICE=/dev/diskN
RAW_DISK_DEVICE=/dev/rdiskN
RAW_PARTITION_DEVICE=/dev/rdiskNsM
IMAGE_DIR=~/Desktop/disk-imagesdiskN, rdiskN, dan rdiskNsM adalah placeholder. Nomor aktual dapat berubah setiap kali media dilepas dan dipasang kembali.
2. Instalasi tools#
Jika Homebrew belum tersedia, instalasi dapat dilakukan melalui installer resmi Homebrew. Setelah Homebrew tersedia, instal The Sleuth Kit:
brew install sleuthkitVerifikasi bahwa tools utama dapat dipanggil:
mmls -V
fsstat -V
fls -V
icat -VmacOS memiliki implementasi BSD dd bawaan. Implementasi tersebut tidak selalu mendukung opsi GNU seperti status=progress. Untuk progress output, instal GNU coreutils:
brew install coreutils
gdd --versionGunakan dd jika progress output tidak diperlukan, atau gdd jika ingin menggunakan opsi GNU. Jangan mencampur nama executable dan opsi antarimplementasi tanpa memeriksa dokumentasinya.
Untuk workflow forensik, dc3dd dapat digunakan sebagai alternatif. dc3dd adalah patched version dari GNU dd yang menyediakan hashing saat proses akuisisi, laporan progress, pencatatan log, dan verifikasi output. Nama executable yang benar adalah dc3dd, bukan d3dd.
Instal dan verifikasi dc3dd melalui Homebrew:
brew install dc3dd
dc3dd --version3. Identifikasi disk#
Tampilkan seluruh disk dan partisinya:
diskutil listIdentifikasi media berdasarkan kombinasi nama model, ukuran, tipe koneksi, dan struktur partisinya. Jangan menentukan sumber hanya berdasarkan nomor diskN, karena nomor tersebut bersifat dinamis.
Simpan informasi disk yang dipilih untuk catatan akuisisi:
diskutil info /dev/diskNPastikan lokasi output berada pada disk lain. Membuat file image pada media sumber dapat mengubah bukti dan menyebabkan ruang penyimpanan tidak cukup.
4. Unmount disk#
Unmount seluruh volume pada disk sumber tanpa menghapus data:
diskutil unmountDisk /dev/diskNPerintah ini berbeda dari diskutil eject. Unmount membuat volume tidak aktif digunakan oleh sistem, sedangkan eject melepaskan media dari sistem. Eject dilakukan setelah proses akuisisi selesai.
Konfirmasi bahwa volume sudah tidak ter-mount sebelum melanjutkan. Jika unmount gagal, tutup aplikasi yang mungkin sedang mengakses media dan periksa kembali identifier disk.
5. Akuisisi full disk#
Full-disk image menyalin seluruh device, termasuk tabel partisi dan area di luar partisi. Gunakan raw device /dev/rdiskN setelah disk berhasil di-unmount karena akses ini biasanya lebih efisien di macOS.
Buat direktori output jika belum tersedia:
mkdir -p ~/Desktop/disk-imagesJalankan akuisisi dengan BSD dd bawaan macOS:
sudo dd if=/dev/rdiskN of=~/Desktop/disk-images/source-full.dd bs=1048576 count=2048Nilai bs=1048576 sama dengan 1 MiB. Dengan count=2048, contoh tersebut menyalin tepat 2.147.483.648 byte, yaitu 2 GiB atau sekitar 2,15 GB desimal. Ubah atau hapus count jika seluruh disk harus disalin. Tanpa count, dd membaca sampai akhir input atau sampai terjadi error.
Jika GNU coreutils sudah diinstal dan progress output diperlukan, gunakan:
sudo gdd if=/dev/rdiskN of=~/Desktop/disk-images/source-full.dd bs=1M count=2048 status=progressNama file output dan device pada contoh harus diganti dengan nilai yang sudah diverifikasi. Periksa ukuran image setelah proses selesai:
ls -lh ~/Desktop/disk-images/source-full.dd5.1 Akuisisi dengan dc3dd#
dc3dd menggunakan parameter if untuk sumber dan hof untuk output yang sekaligus di-hash dan diverifikasi. Parameter hash=sha256 menghitung SHA-256, log menyimpan laporan proses, ssz=1M menetapkan ukuran sektor virtual sebesar 1 MiB, dan cnt=2048 membatasi akuisisi menjadi 2 GiB.
Contoh akuisisi full disk dengan dc3dd:
sudo dc3dd if=/dev/rdiskN hof=~/Desktop/disk-images/source-full.dd hash=sha256 log=~/Desktop/disk-images/source-full.dc3dd.log ssz=1M cnt=2048Untuk menyalin seluruh device, hapus ssz=1M cnt=2048. Jangan menghapus hof dan hash=sha256 jika hash output dan verifikasi proses tetap diperlukan.
6. Akuisisi partisi#
Partition image hanya menyalin isi satu partisi dan tidak menyertakan tabel partisi pada awal disk. Gunakan raw partition device, misalnya /dev/rdiskNsM:
sudo dd if=/dev/rdiskNsM of=~/Desktop/disk-images/source-partition.dd bs=1048576 count=2048Dengan GNU gdd, opsi progress dapat ditambahkan:
sudo gdd if=/dev/rdiskNsM of=~/Desktop/disk-images/source-partition.dd bs=1M count=2048 status=progressAlternatif dengan dc3dd:
sudo dc3dd if=/dev/rdiskNsM hof=~/Desktop/disk-images/source-partition.dd hash=sha256 log=~/Desktop/disk-images/source-partition.dc3dd.log ssz=1M cnt=2048Periksa log dc3dd dan nilai hash yang dilaporkan sebelum melanjutkan ke tahap analisis. Hash tambahan dengan shasum -a 256 pada bagian berikut tetap dapat digunakan sebagai pemeriksaan independen.
Pastikan partisi yang dipilih benar-benar sesuai kebutuhan. Kesalahan pada nilai M dapat menyebabkan data dari partisi lain dibaca atau image yang dihasilkan tidak dapat dianalisis.
7. Verifikasi hash#
Hitung SHA-256 setelah image selesai dibuat:
shasum -a 256 ~/Desktop/disk-images/source-full.ddUntuk partition image, gunakan nama file yang sesuai:
shasum -a 256 ~/Desktop/disk-images/source-partition.ddCatat setidaknya waktu akuisisi, identifier device, ukuran image, perintah yang digunakan, dan nilai hash. Hash membantu mendeteksi perubahan pada file image, tetapi tidak membuktikan sendiri bahwa proses akuisisi awal bebas dari kesalahan.
8. Analisis full-disk image#
Full-disk image memiliki tabel partisi. Gunakan mmls untuk menemukan sektor awal partisi:
mmls ~/Desktop/disk-images/source-full.ddCatat nilai pada kolom Start untuk partisi yang akan dianalisis. Nilai tersebut adalah sektor, bukan byte. Pada contoh berikut, gunakan placeholder PARTITION_START_SECTOR dan ganti dengan nilai yang muncul dari output mmls:
fsstat -o PARTITION_START_SECTOR ~/Desktop/disk-images/source-full.ddTampilkan file dan direktori, termasuk entri yang ditandai sebagai terhapus:
fls -o PARTITION_START_SECTOR -r -p ~/Desktop/disk-images/source-full.ddCatat inode dari file yang ingin diekstrak. Entri yang diawali tanda * biasanya menunjukkan file yang ditandai terhapus, tetapi kemampuan pemulihan bergantung pada filesystem dan apakah blok datanya masih tersedia.
Ekstrak file menggunakan inode yang ditemukan:
icat -o PARTITION_START_SECTOR ~/Desktop/disk-images/source-full.dd INODE_NUMBER > ~/Desktop/disk-images/recovered-file.binGunakan ekstensi output yang sesuai dengan tipe data yang dipahami. Jangan menimpa image sumber dengan hasil ekstraksi.
9. Analisis partition image#
Partition image tidak memiliki tabel partisi karena hanya berisi isi filesystem. Oleh karena itu, mmls dan opsi -o biasanya tidak diperlukan:
fsstat ~/Desktop/disk-images/source-partition.ddTampilkan isi filesystem:
fls -r -p ~/Desktop/disk-images/source-partition.ddEkstrak file berdasarkan inode:
icat ~/Desktop/disk-images/source-partition.dd INODE_NUMBER > ~/Desktop/disk-images/recovered-file.binJika fsstat gagal mengenali filesystem, periksa kembali apakah sumber yang dipilih adalah partition image, apakah image selesai dibuat tanpa read error, dan apakah filesystem tersebut didukung oleh versi TSK yang terpasang.
10. Troubleshooting dan cleanup#
Identifier disk berubah#
Jalankan kembali diskutil list setelah media dipasang ulang. Jangan menggunakan nilai diskN lama tanpa verifikasi ukuran, model, dan partisinya.
Permission denied#
Gunakan sudo hanya untuk membaca device dan menulis image ke lokasi yang memang memiliki izin. Pastikan direktori output dimiliki atau dapat ditulis oleh akun yang menjalankan perintah.
Ruang penyimpanan tidak cukup#
Periksa ukuran sumber dan ruang kosong tujuan sebelum akuisisi. Image penuh membutuhkan ruang setidaknya sebesar device yang disalin, sedangkan perintah dengan count=2048 membutuhkan sekitar 2 GiB ditambah overhead filesystem.
Read error#
Simpan pesan error dan jangan menganggap image valid tanpa pemeriksaan lebih lanjut. Untuk kebutuhan forensik formal, gunakan prosedur akuisisi dan perangkat yang mendukung pencatatan bad sector.
Eject setelah selesai#
Setelah proses akuisisi dan hashing selesai, lepaskan media sumber dengan aman:
diskutil eject /dev/diskNSimpan image, nilai hash, dan catatan akuisisi secara terpisah dari media sumber. Jangan mengubah file image sebelum salinan kerja dan nilai hash baru dicatat.

