Jak uniemożliwić usunięcie pliku z napędu USB?

15

Ktoś użył mojego dysku USB i po zwróceniu go znalazłem dysk, którego nie autorun.infmożna usunąć. Próbowałem zmienić jego atrybut pliku, który jest tylko H (nawet nie ustawiony jako plik systemowy), ale wciąż mówi „Odmowa dostępu”.

USB jest ustawiony na FAT32, po zapytaniu mojego przyjaciela powiedział mi, że używa szczepionki Panda USB

Jak oni to robią? Próbuję użyć jakiegoś edytora sektora dysku, ale nie mam pojęcia, który plik szesnastkowy zmieniają, aby utworzyć tego rodzaju plik i ponownie go usunąć. Formatowanie dysku usuwa go, ale jestem ciekawy, jak mogę ustawić tego rodzaju atrybut pliku.

MegaNairda
źródło
Znalazłem inne narzędzie, które robi to samo łącze BitDefender USB
Immunizer
Czy sprawdziłeś uprawnienia do pliku?
Moab
@Moab System plików na USB to FAT32.
MegaNairda
W systemie Windows 7 lub nowszym autorun.inf utworzony przez Panda USB Vaccine zostanie wyświetlony z atrybutami pliku „HX”, podczas gdy „H” oznacza ukryty, a „X” oznacza zarezerwowany FILE_ATTRIBUTE_DEVICE.
Explorer09

Odpowiedzi:

16

Metoda badania

Wydaje się, że Panda nie ujawnia dokładnego mechanizmu swojej „szczepionki”, co jest zrozumiałe, ponieważ jest to w zasadzie bezpieczeństwo poprzez niejasność . Jeśli wiesz, jak to działa, możesz odwrócić działanie, a „szczepionka” stanie się bezużyteczna.

Pobrałem i zainstalowałem Panda USB Vaccine i „zaszczepiłem” mój dysk flash, zrzuciłem partycję dysku flash z dd dla Windows za pomocą poleceń

dd --list

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

gdzie xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxjest identyfikator GUID dostarczony przez pierwsze polecenie, otwarty c:\vaccinated.imgw edytorze szesnastkowym i szukany AUTORUN.

Co robi szczepionka USB

Wpis dla AUTORUN.INFzaczyna się od następujących dwunastu bajtów:

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

Pierwsze jedenaście bajtów to po prostu wypełniona spacją nazwa pliku 8.3 :AUTORUN INF

Ostatni bajt określa atrybuty pliku, a jego reprezentacja binarna to:

01000010

Zgodnie ze specyfikacją systemu plików Microsoft EFI FAT32 ten ostatni bajt to pole bitowe, które przyjmuje następującą postać:

XYADVSHR

gdzie bity A, D, V, S, Hi R1wtedy i tylko wtedy, gdy plik jest archiwizowany, katalog, identyfikator tom 1 , plik systemowy, ukryty lub tylko do odczytu. AUTORUN.INFjest ukryty, ponieważ Hjest ustawiony na 1.

Bity Xi Ysą zastrzeżone i powinny być oba 0. Jednak Szczepionka USB jest ustawiona Yna 1.

Co mówi specyfikacja

Górne dwa bity bajtu atrybutu są zarezerwowane i zawsze powinny być ustawione na 0, gdy plik jest tworzony i nigdy nie był modyfikowany ani przeglądany.

Ponadto zaleca sprawdzanie poprawności zawartości katalogu:

Wytyczne te zostały udostępnione, aby narzędzia do konserwacji dysku mogły weryfikować poprawność poszczególnych pozycji katalogu przy jednoczesnym zachowaniu zgodności z przyszłymi ulepszeniami struktury katalogów.

  1. NIE patrz na zawartość pól wpisu katalogu oznaczonych jako zarezerwowane i zakładaj, że jeśli są one inne niż zero, że są „złe”.

  2. NIE resetuj zawartości pól pozycji katalogu oznaczonych jako zarezerwowane na zero, gdy zawierają niezerowe wartości (przy założeniu, że są „złe”). Pola wpisu do katalogu są oznaczone jako zastrzeżone , a nie muszą być zerowe . Powinny zostać zignorowane przez twoją aplikację. Te pola są przeznaczone dla przyszłych rozszerzeń systemu plików. Ignorując je, narzędzie może nadal działać w przyszłych wersjach systemu operacyjnego.

Co się właściwie dzieje

CHKDSK z pewnością postępuje zgodnie ze specyfikacją i ignoruje AUTORUN.INFwpis, którego sterownik FAT32 nie rozumie, ale sam system Windows wydaje się nie spełniać wymagania specyfikacji, aby nigdy więcej nie patrzeć na zarezerwowane bity : jakikolwiek dostęp (oprócz wyświetlania pliku i jego atrybuty) jest odrzucany.

Na przykład polecenie

DIR /A /Q

stwierdza, że ​​właścicielem AUTORUN.INFjest .... Ponieważ FAT32 nie obsługuje praw własności do plików, powinien to określać \All.

Powodem tego nieoczekiwanego zachowania jest to, że zgodnie z FAT32 - wpis w katalogu Wikipedia # , Windows używa tego bitu Ywewnętrznie do sygnalizowania nazwy urządzenia znakowego (CON, PRN, AUX, CLOCK $, NUL, LPT1, COM1 itd.), Oraz nie powinno być obecne na urządzeniach pamięci. 2)

Mówiąc w pewnym sensie, Szczepionka USB oszukuje system Windows, aby założyć, że AUTORUN.INFnie jest to rzeczywisty plik, ale urządzenie, z którego nie może czytać ani pisać.

Jak usunąć plik

Jeśli masz bezpośredni dostęp do systemu plików, wystarczy zestaw Ydo 0(zmień bajt 42do 02), aby ponownie dokonać usuwalnego pliku. Możesz także ustawić pierwszy bajt pozycji katalogu na E5, bezpośrednio zaznaczając plik jako usunięty. 3)

Inną opcją byłoby użycie innego sterownika. Ubuntu 12.04, na przykład, może usunąć plik bez problemów. W rzeczywistości automatycznie „naprawia” pozycję katalogu podczas jej czytania. 4


1 Ten atrybut służy np. Do etykiety woluminu lub folderu Informacje o woluminie systemowym .

2 Z pewnością ustawienie Xna 1nie wydaje się mieć żadnego efektu.

3 Sprawdziłem to, zmieniając odpowiednie bajty C:\vaccinated.imgedytora szesnastkowego i zapisując zmodyfikowany obraz na dysku flash za pomocą następującego polecenia:

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

4 Chociaż rażące odstępstwo od specyfikacji wydaje się być przemyślane. Ubuntu pozostawia Xnienaruszony, jeśli jest ustawiony 1, ponieważ nie wyrządza szkody. Ustawienie tego Ybitu na 1łatwe może zostać wykorzystane przez złośliwą aplikację, np. Poprzez utworzenie nieusuwalnego pliku, który zajmuje całe wolne miejsce na dysku.

Dennis
źródło
6

Jest to sprytna sztuczka dotycząca systemu plików, która wykorzystuje zastrzeżoną nazwę w przestrzeni nazw Win32. Szczegółowe informacje na temat tego, jak robi to szczepionka USB Panda, zostały przedstawione tutaj .

Zasadniczo oprogramowanie tworzy folder o nazwie autorun.inf(co uniemożliwia utworzenie pliku o tej samej nazwie), a następnie w tym folderze LTP1tworzony jest plik o nazwie . W systemie DOS LPT1odnosi się do portu drukarki, a system Windows obsługuje to w celu zapewnienia zgodności z poprzednimi wersjami. Kiedy więc poprosisz o plik o nazwie LPT1, system Windows próbuje otworzyć port drukarki, co w jakiś sposób uniemożliwia normalne usunięcie folderu.

Jeśli chodzi o sposób usuwania folderu / pliku bez formatowania dysku, ten artykuł bazy wiedzy Microsoft Knowledge Base zawiera kilka wskazówek:

Przyczyna 5: Nazwa pliku zawiera zastrzeżoną nazwę w przestrzeni nazw Win32

Jeśli nazwa pliku zawiera zastrzeżoną nazwę (na przykład „lpt1”) w przestrzeni nazw Win32, usunięcie pliku może być niemożliwe. Aby rozwiązać ten problem, użyj programu innego niż Win32, aby zmienić nazwę pliku. Do korzystania z pliku można użyć narzędzia POSIX lub dowolnego innego narzędzia, które korzysta z odpowiedniej wewnętrznej składni.

Ponadto możesz użyć wbudowanych poleceń, aby ominąć typowe zarezerwowane sprawdzanie nazw w Win32, jeśli użyjesz określonej składni do określenia ścieżki do pliku. Na przykład, jeśli użyjesz Del polecenia w systemie Windows XP, możesz usunąć plik o nazwie „lpt1”, jeśli podasz pełną ścieżkę do pliku, stosując następującą specjalną składnię:

del \\?\c:\path_to_file\lpt1

Aby uzyskać więcej informacji na temat usuwania plików z zastrzeżonymi nazwami w systemie Windows NT i Windows 2000, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

120716 Jak usunąć pliki z zastrzeżonymi nazwami w systemie Windows

Aby uzyskać więcej informacji o usuwaniu plików z zastrzeżonymi nazwami w systemie Windows XP, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

315226 Jak usunąć pliki z zastrzeżonymi nazwami w systemie Windows XP

Jeśli otworzysz uchwyt pliku za pomocą typowego CreateFile mechanizmu Win32 , niektóre nazwy plików są zarezerwowane dla urządzeń DOS w starym stylu. Ze względu na zgodność z poprzednimi wersjami te nazwy plików są niedozwolone i nie można ich tworzyć przy użyciu typowych wywołań plików Win32. Jednak ten problem nie jest ograniczeniem NTFS.

Możliwe jest użycie programu Win32 do ominięcia typowych kontroli nazw, które są wykonywane podczas tworzenia (lub usuwania) pliku przy użyciu tej samej techniki, której używa się do przechodzenia do folderów głębszych niż MAX_PATH. Ponadto niektóre narzędzia POSIX nie podlegają tym sprawdzeniom nazw.

Lèse majesté
źródło
2
Jest to stary sposób szczepionki Panda USB na ochronę dysku USB przed złośliwym oprogramowaniem autorun.inf. Spróbuj pobrać i użyć podanego linku, a zobaczysz, że nie tworzy on żadnych folderów. Tylko jeden plik o nazwie autorun.inf
MegaNairda
@MegaNairda: Dziwne ... Zainstalowałem Szczepionkę USB, ale za każdym razem, gdy próbuję zaszczepić mój napęd FAT32, program tworzy AUTORUN.INFna dysku (z tym samym ciągiem „caacaa ...” wymienionym w artykule), a następnie natychmiast zawiesza się. W ogóle nie mam problemu z usunięciem pliku autorun ...
Lèse majesté
Spróbuj BitDefender USB Immunizer Link Panda USB Vaccine czasami zamarznąć w moim systemie Po włożeniu pamięci USB.
MegaNairda
@MegaNairda: Wydawało się, że jest problem z napędem thumbdrive. Żaden program nie był w stanie go zaszczepić. Jednak ten zbieg okoliczności był pomocny, ponieważ wykazał, że immunizator BitDefendera przynajmniej stosuje podobną technikę. Dziennik błędów pokazał, że próbował utworzyć serię zagnieżdżonych folderów / plików, w I:\autorun.inf\bdsanitize#\bdsanitize#...których #„1” lub „2”. Do pliku dziennika dołączono również plik / nazwę katalogu każdego poziomu z .dirlub, .fileale może to być tylko pokazane do celów rejestrowania / debugowania.
Lèse majesté
1
Wygląda na to, że rzeczywiście istnieje problem z twoim USB. Immunizer BitDefendera tworzy folder, autorun.infale potem zostanie zastąpiony autorun.inf plikiem . Różnica w porównaniu ze autorun.infszczepionką USB Panda polega na tym, że plik jest pusty i nie zawiera cacacatego, który stworzył Panda.
MegaNairda