Bagaimana cara membuat file tidak dapat dihapus pada drive USB?

15

Seseorang menggunakan drive USB saya dan setelah mengembalikannya kepada saya, saya menemukan autorun.infyang tidak bisa dihapus. Saya mencoba mengubah atribut file yang hanya H (bahkan tidak ditetapkan sebagai file sistem) tetapi terus mengatakan Access Ditolak.

USB diatur pada FAT32, setelah bertanya kepada teman saya, dia mengatakan kepada saya bahwa dia menggunakan Vaksin Panda USB

bagaimana mereka melakukan ini? Saya mencoba menggunakan beberapa editor Sektor Disk tetapi tidak tahu file hex mana yang mereka ubah untuk membuat file jenis ini dan membuatnya dihapus lagi. Memformat drive menghapusnya, tapi saya ingin tahu bagaimana cara mengatur atribut file semacam itu.

MegaNairda
sumber
Saya menemukan alat lain yang melakukan tautan yang sama dengan BitDefender USB Immunizer
MegaNairda
Apakah Anda memeriksa izin pada file?
Moab
@ Moab Sistem file pada USB adalah FAT32.
MegaNairda
Di Windows 7 atau lebih baru, autorun.inf yang dibuat oleh Panda USB Vaccine akan ditampilkan dengan atribut file "HX", sedangkan "H" berarti disembunyikan dan "X" berarti FILE_ATTRIBUTE_DEVICE yang dicadangkan.
Explorer09

Jawaban:

16

Metode pengujian

Panda tampaknya tidak mengungkapkan mekanisme pasti dari "vaksin" -nya, yang dapat dimengerti, karena pada dasarnya keamanan melalui ketidakjelasan . Jika Anda tahu cara kerjanya, Anda dapat membalikkan efeknya dan "vaksin" menjadi tidak berguna.

Saya mengunduh dan menginstal Panda USB Vaccine dan "memvaksinasi" flash drive saya, membuang partisi flash drive dengan dd untuk windows menggunakan perintah

dd --list

dd if=\\.\Volume{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} of=C:\vaccinated.img

di mana xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxGUID disediakan oleh perintah pertama, dibuka c:\vaccinated.imgdi hex editor dan dicari AUTORUN.

Apa yang dilakukan Vaksin USB

Entri untuk AUTORUN.INFdimulai dengan dua belas byte berikut:

41 55 54 4F 52 55 4E 20 49 4E 46 42

Sebelas byte pertama hanyalah nama file 8,3 ruang-empuk :AUTORUN INF

Byte terakhir menentukan atribut file, dan representasi binernya adalah:

01000010

Menurut Spesifikasi Sistem File Microsoft EFI FAT32 , byte terakhir ini adalah bidang bit yang mengambil bentuk berikut:

XYADVSHR

di mana bit A, D, V, S, Hdan Radalah 1jika dan hanya jika file tersebut diarsipkan, direktori, volume ID 1 , file sistem, tersembunyi atau read-only. AUTORUN.INFdisembunyikan, karena Hdiatur ke 1.

Bit Xdan Ydicadangkan dan keduanya harus 0. Namun, Vaksin USB diatur Yke 1.

Apa spesifikasi mengatakan

Dua bit teratas dari byte atribut dicadangkan dan harus selalu disetel ke 0 ketika file dibuat dan tidak pernah dimodifikasi atau dilihat setelah itu.

Lebih lanjut, ini merekomendasikan untuk validasi konten direktori:

Panduan ini disediakan sehingga utilitas perawatan disk dapat memverifikasi entri direktori individual untuk 'kebenaran' sambil mempertahankan kompatibilitas dengan peningkatan di masa mendatang untuk struktur direktori.

  1. JANGAN melihat isi kolom entri direktori yang ditandai dilindungi undang - undang dan menganggap bahwa, jika nilainya bukan nol, berarti "buruk".

  2. JANGAN mengatur ulang konten bidang entri direktori yang ditandai dicadangkan ke nol ketika mengandung nilai-nilai yang tidak nol (dengan asumsi bahwa mereka "buruk"). Bidang entri direktori ditetapkan sebagai cadangan , bukan harus nol . Mereka harus diabaikan oleh aplikasi Anda. Bidang-bidang ini dimaksudkan untuk ekstensi sistem file di masa mendatang. Dengan mengabaikannya, sebuah utilitas dapat terus berjalan pada versi sistem operasi yang akan datang.

Apa yang sebenarnya terjadi

CHKDSK tentu saja mengikuti spesifikasi dan mengabaikan AUTORUN.INFentri yang tidak dimengerti oleh driver FAT32, tetapi Windows itu sendiri tampaknya tidak memenuhi persyaratan spesifikasi untuk tidak pernah melihat bit yang dicadangkan lagi : Segala jenis akses (selain daftar file) dan atributnya) ditolak.

Misalnya, perintahnya

DIR /A /Q

menyatakan bahwa pemilik AUTORUN.INFis .... Karena FAT32 tidak mendukung kepemilikan file, itu harus menyatakan \All.

Alasan untuk perilaku tak terduga ini adalah bahwa, menurut entri Direktori FAT32 - Wikipedia # , Windows menggunakan bit secara Yinternal untuk memberi sinyal nama perangkat karakter (CON, PRN, AUX, CLOCK $, NUL, LPT1, COM1, dll.), Dan seharusnya tidak ada di perangkat penyimpanan. 2

Dalam cara berbicara, Vaksin USB menipu Windows untuk berasumsi bahwa AUTORUN.INFitu bukan file yang sebenarnya, tetapi perangkat, yang tidak dapat dibaca atau dituliskan.

Cara menghapus file

Jika Anda memiliki akses langsung ke sistem file, itu sudah cukup untuk mengatur Yke 0(mengubah byte 42ke 02) untuk membuat file dihapus lagi. Anda juga dapat mengatur byte pertama dari entri direktori E5, langsung menandai file sebagai dihapus. 3

Opsi lain adalah menggunakan driver yang berbeda. Ubuntu 12,04, misalnya, dapat menghapus file tanpa masalah. Sebenarnya, secara otomatis "memperbaiki" entri direktori ketika membacanya. 4


1 Atribut ini digunakan untuk, misalnya, label volume atau folder Informasi Volume Sistem .

2 Tentu saja, pengaturan Xke 1tampaknya tidak berpengaruh.

3 Saya memverifikasi ini dengan mengubah byte yang sesuai C:\vaccinated.imgdengan hex editor dan menulis gambar yang dimodifikasi ke flash drive menggunakan perintah berikut:

dd if=C:\vaccinated.img of=\\.\Volume{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}

4 Sementara penyimpangan terang-terangan dari spesifikasi, tampaknya menjadi pertimbangan. Ubuntu membiarkannya Xtetap utuh jika diatur 1, karena tidak ada salahnya. Mengatur Ybit agar 1dapat dengan mudah disalahgunakan oleh aplikasi jahat, dengan, misalnya, membuat file yang tidak terhapus yang memakan seluruh ruang kosong drive.

Dennis
sumber
6

Ini adalah sedikit tipu muslihat filesystem yang mengeksploitasi nama yang dipesan di Win32 namespace. Rincian bagaimana Vaksin Panda USB melakukan ini diuraikan di sini .

Pada dasarnya perangkat lunak membuat folder bernama autorun.inf(yang mencegah file dengan nama yang sama dibuat di sana), dan kemudian di folder itu, file bernama LTP1dibuat. Dalam DOS, LPT1merujuk ke port printer, dan Windows mendukung ini untuk kompatibilitas mundur. Jadi ketika Anda meminta file bernama LPT1, Windows mencoba untuk membuka port printer, dan entah bagaimana ini mencegah folder dari dihapus secara normal.

Adapun cara menghapus folder / file tanpa memformat drive, artikel Microsoft Knowledgebase ini memberikan beberapa tips:

Penyebab 5: Nama file termasuk nama yang dipesan di ruang nama Win32

Jika nama file menyertakan nama yang dipesan (misalnya, "lpt1") di ruang nama Win32, Anda mungkin tidak dapat menghapus file. Untuk mengatasi masalah ini, gunakan program non-Win32 untuk mengganti nama file. Anda dapat menggunakan alat POSIX atau alat lain yang menggunakan sintaksis internal yang sesuai untuk menggunakan file.

Selain itu, Anda mungkin dapat menggunakan beberapa perintah bawaan untuk mem-bypass pemeriksaan nama khusus Win32 jika Anda menggunakan sintaks tertentu untuk menentukan lintasan file. Misalnya, jika Anda menggunakan Del perintah di Windows XP, Anda dapat menghapus file bernama "lpt1" jika Anda menentukan path lengkap file dengan menggunakan sintaks khusus berikut:

del \\?\c:\path_to_file\lpt1

Untuk informasi lebih lanjut tentang menghapus file dengan nama yang dilindungi undang-undang di Windows NT dan Windows 2000, klik nomor artikel berikut ini untuk melihat artikel di Pangkalan Pengetahuan Microsoft:

120716 Cara menghapus file dengan nama yang dilindungi undang-undang di Windows

Untuk informasi lebih lanjut tentang menghapus file dengan nama yang dilindungi undang-undang di Windows XP, klik nomor artikel berikut ini untuk melihat artikel di Pangkalan Pengetahuan Microsoft:

315226 Cara menghapus file dengan nama yang dilindungi undang-undang di Windows XP

Jika Anda membuka pegangan untuk file dengan menggunakan CreateFile mekanisme Win32 khas , nama file tertentu dicadangkan untuk perangkat DOS gaya lama. Untuk kompatibilitas mundur, nama-nama file ini tidak diizinkan dan mereka tidak dapat dibuat dengan menggunakan panggilan file Win32 khas. Namun, masalah ini bukan batasan NTFS.

Anda mungkin dapat menggunakan program Win32 untuk mem-bypass pemeriksaan nama tipikal yang dilakukan ketika file dibuat (atau dihapus) dengan menggunakan teknik yang sama yang Anda gunakan untuk melintasi folder yang lebih dalam dari MAX_PATH. Selain itu, beberapa alat POSIX tidak dikenakan pemeriksaan nama ini.

Lèse majesté
sumber
2
Itulah cara lama vaksin Panda USB untuk melindungi drive USB dari autorun.inf berbahaya. Coba unduh dan gunakan tautan yang saya berikan dan Anda akan melihat bahwa itu tidak membuat folder apa pun. Hanya satu file bernama autorun.inf
MegaNairda
@MegaNairda: Aneh ... Saya menginstal Vaksin USB, tetapi setiap kali saya mencoba memvaksin thumbdrive FAT32 saya, program ini menciptakan AUTORUN.INF(dengan "caacaa ..." string yang sama yang disebutkan dalam artikel) pada drive dan kemudian segera membeku. Saya tidak punya masalah menghapus file autorun sama sekali ...
Lèse majesté
Coba tautan BitDefender USB Immunizer Panda USB Vaksin juga terkadang membeku di sistem saya ketika saya memasukkan drive USB.
MegaNairda
@MegaNairda: Sepertinya ada masalah dengan thumbdrive itu. Tidak ada program yang dapat memvaksinasi itu. Namun, kebetulan ini sangat membantu karena menunjukkan bahwa imunisasi BitDefender setidaknya menggunakan teknik yang sama. Log kesalahan menunjukkan bahwa ia mencoba membuat serangkaian folder / file bersarang di bawah di I:\autorun.inf\bdsanitize#\bdsanitize#...mana #"1" atau "2". File log juga ditambahkan file / dirname setiap tingkat dengan .diratau .filetapi itu hanya dapat ditampilkan untuk tujuan logging / debugging.
Lèse majesté
1
Tampaknya memang ada masalah dengan USB Anda. Immunizer BitDefender memang membuat folder autorun.inftetapi setelah itu, itu akan digantikan oleh autorun.inf file . Perbedaannya dengan autorun.infPanda USB Vaccine adalah bahwa file tersebut kosong dan tidak mengandung yang cacacaseperti yang dibuat oleh Panda.
MegaNairda