↓ Skip to main content
Akuisisi dan Analisis Disk Image di macOS
  1. cysec/

Akuisisi dan Analisis Disk Image di macOS

·6 mins·

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
#

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-images

diskN, 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 sleuthkit

Verifikasi bahwa tools utama dapat dipanggil:

mmls -V
fsstat -V
fls -V
icat -V

macOS 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 --version

Gunakan 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 --version

3. Identifikasi disk
#

Tampilkan seluruh disk dan partisinya:

diskutil list

Identifikasi 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/diskN

Pastikan 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/diskN

Perintah 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-images

Jalankan akuisisi dengan BSD dd bawaan macOS:

sudo dd if=/dev/rdiskN of=~/Desktop/disk-images/source-full.dd bs=1048576 count=2048

Nilai 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=progress

Nama 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.dd

5.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=2048

Untuk 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=2048

Dengan GNU gdd, opsi progress dapat ditambahkan:

sudo gdd if=/dev/rdiskNsM of=~/Desktop/disk-images/source-partition.dd bs=1M count=2048 status=progress

Alternatif 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=2048

Periksa 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.dd

Untuk partition image, gunakan nama file yang sesuai:

shasum -a 256 ~/Desktop/disk-images/source-partition.dd

Catat 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.dd

Catat 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.dd

Tampilkan file dan direktori, termasuk entri yang ditandai sebagai terhapus:

fls -o PARTITION_START_SECTOR -r -p ~/Desktop/disk-images/source-full.dd

Catat 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.bin

Gunakan 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.dd

Tampilkan isi filesystem:

fls -r -p ~/Desktop/disk-images/source-partition.dd

Ekstrak file berdasarkan inode:

icat ~/Desktop/disk-images/source-partition.dd INODE_NUMBER > ~/Desktop/disk-images/recovered-file.bin

Jika 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/diskN

Simpan image, nilai hash, dan catatan akuisisi secara terpisah dari media sumber. Jangan mengubah file image sebelum salinan kerja dan nilai hash baru dicatat.

Askarhabibulloh
Author
Askarhabibulloh