Isi File Yang Tak Terlihat Di NTFS Alternative Data Stream


Secara fisik, sebuah media penyimpanan seperti hard disk drive (HDD) menyimpan data dalam bentuk byte per byte. Satuan terkecil yang dapat dialokasikan adalah sebuah sector. Pada kebanyakan HDD, 1 sector terdiri atas 512 byte. HDD dengan fitur Advanced Format (AF) memungkinkan 1 sector terdiri atas 4K byte guna meningkatkan efisiensi pada ukuran yang besar. Tapi pengguna tidak menulis dan membaca sector secara langsung. Sistem operasi menawarkan sebuah lapisan abstraksi yang disebut sebagai file. Sebuah file dapat menempati satu atau lebih sector di harddisk. Kenapa tidak langsung menyimpan data ke sector? Karena pengguna awam tidak ingin menghafal nomor sector🙂 File lebih mudah dipakai karena ia memiliki konsep direktori dan metadata seperti nama dan ukuran.

Tata cara pengelolaan file oleh sistem operasi disebut sebagai file system. Contoh file system yang menjadi legenda di Windows adalah File Allocation Table (FAT). FAT sudah ada sejak Microsoft lahir dimana ia dirancang oleh seorang karyawan pertama di Microsoft. Tidak ada perubahan signifikan pada file system ini selain mengubah pengenal cluster menjadi 32-bit pada FAT32. Walaupun demikian, FAT32 masih populer hingga sekarang, padahal di Windows 7, Microsoft telah menciptakan penerus FAT yang disebut sebagai exFAT (Extended File Allocation Table). exFAT lebih efisien untuk flash drive dan memory card. Tapi penggunaan FAT32 masih bisa dijumpai dengan mudah di media penyimpanan kamera digital, MP3 player murah, dan sebagainya. Lisensi menjadi masalah besar karena perangkat yang memakai exFAT tanpa perjanjian kerja sama dengan Microsoft dapat dituntut😉 Ini adalah pukulan keras bagi dunia open-source karena exFAT adalah file system ‘rahasia’ dimana orang-orang tidak bisa tahu apa yang sesungguhnya disimpan.

Bila exFAT ditujuan untuk flash drive, maka NTFS (New Technology File System) adalah penerus FAT untuk media penyimpanan permanen seperti HDD. Beruntungnya, NTFS tidak dilindungi oleh paten. Selain itu, hampir semua informasi NTFS sudah di-reverse engineer dan hasilnya telah dipublikasikan secara umum. Ini sebabnya Linux bisa mendukung NTFS secara resmi dalam bentuk driver NTFS-3g. Linux sendiri memiliki file system andalannya yang disebut sebagai ext4.

Jadi, sebuah file adalah kumpulan byte yang mewakili sebuah data yang tersimpan, bukan? Ini adalah pandangan yang normal di UNIX dan turunannya dimana segala sesuatunya adalah file. Tapi pada beberapa sistem operasi lain seperti Windows dan Mac OS, sebuah file dapat terdiri atas satu atau lebih data stream (disebut juga fork). Pada artikel ini, saya akan melihat contoh file yang memiliki lebih dari satu stream di NTFS.

Saya mulai dengan membuat sebuah file bernama latihan.txt secara biasa seperti pada gambar berikut ini:

Membuat file biasa

Membuat file biasa

Sekarang, saya akan menulis ke file yang sama tetapi pada stream yang berbeda seperti yang terlihat pada gambar berikut ini:

Menambahkan isi  file pada alternate data stream

Menambahkan isi file pada alternate data stream

Terlihat bahwa sekarang file latihan.txt memiliki dua isi yang berbeda.

Isi pertama adalah isi di main data stream yang terlihat di perintah dir dan Explorer. Bila saya melihat di Explorer, tetap hanya ada sebuah file dengan ukuran 25 bytes. Bila saya men-double click file tersebut, maka notepad akan muncul dengan isi sesuai pada main data stream. Hal ini menunjukkan bahwa pengguna selalu bekerja pada main data stream pada aktifitas hariannya.

Isi yang kedua adalah isi yang tersimpan di alternate data stream bernama rahasia. Banyak pengguna yang tidak menyadari adanya ‘isi sampingan’ dari sebuah file. Hal ini karena perintah dir, Explorer, dan aplikasi seperti Notepad dan Word selalu bekerja pada main data stream.

Untuk melihat apakah sebuah file memiliki alternate data stream atau tidak, saya dapat menggunakan perintah dir/r seperti yang terlihat pada gambar berikut ini:

Melihat file dengan alternate data stream

Melihat file dengan alternate data stream

Lalu apa gunanya alternate data stream? Salah satu fitur Windows yang aktif menggunakannya adalah Attachment Execution Service. Fitur ini akan menampilkan peringatan keamanan pada saat pengguna menjalankan sebuah program yang di-download dari Internet. Untuk mengenali apakah sebuah file berasal dari Internet, Windows menambahkan sebuah stream bernama Zone.Identifier pada executable file yang di-download.

Saya akan mencoba mensimulasikan perilaku tersebut pada sebuah file exe biasa dengan menambahkan stream Zone.Identifier seperti yang terlihat pada gambar berikut ini:

Menambahkan alternate data stream Zone.Identifier pada file exe

Menambahkan alternate data stream Zone.Identifier pada file exe

Sekarang, bila saya menjalankan file latihan.exe, saya akan memperoleh pesan peringatan keamanan seperti berikut ini:

Windows memakai alternate data stream untuk mengenali file yang di-download dari internet

Windows memakai alternate data stream untuk mengenali file yang di-download dari internet

Sebuah contoh lainnya adalah penggunaan ‘iseng’ adalah dengan menyertakan informasi pengenal pada file exe yang saya sebarkan. Anggap saja saya memiliki file latihan.exe yang hanya saya berikan kepada Perusahaan A, Perusahaan B, dan PerusahaanC. Saya dapat menambahkan informasi lisensi dengan membuat stream lisensi.txt yang berisi nama perusahaan setiap kali mendistribusikan sebuah file latihan.exe seperti yang terlihat pada gambar berikut ini:

Menambah data teks pada file exe dengan alternate data stream

Menambah data teks pada file exe dengan alternate data stream

Bila seseorang men-copy file tersebut ke pihak lain, maka isi dari stream lisensi.txt akan turut di-copy (selama masih memakai NTFS). Dengan demikian, bila terdapat kebocoran, saya dapat memeriksa isi stream lisensi.txt untuk mencari tahu siapa yang membocorkan seperti yang terlihat pada gambar berikut ini:

Membaca data teks pada file exe

Membaca data teks pada file exe

Tentu saja cara ini hanya cara ‘iseng’ yang tidak untuk keperluan serius. Isi dari alternate data stream hanya akan dipertahankan bila file di-copy ke sesama file system NTFS. Bila di-copy ke file system FAT32, maka isi alternate data stream akan hilang. Selain itu, pengguna mahir bisa dengan mudah melihat isi file secara fisik per sector tanpa abstraksi file system.

Perihal Solid Snake
I'm nothing...

Apa komentar Anda?

Please log in using one of these methods to post your comment:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: