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-xxxxxxxxxxxx
jest identyfikator GUID dostarczony przez pierwsze polecenie, otwarty c:\vaccinated.img
w edytorze szesnastkowym i szukany AUTORUN
.
Co robi szczepionka USB
Wpis dla AUTORUN.INF
zaczyna 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
, H
i R
są 1
wtedy i tylko wtedy, gdy plik jest archiwizowany, katalog, identyfikator tom 1 , plik systemowy, ukryty lub tylko do odczytu. AUTORUN.INF
jest ukryty, ponieważ H
jest ustawiony na 1
.
Bity X
i Y
są zastrzeżone i powinny być oba 0
. Jednak Szczepionka USB jest ustawiona Y
na 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.
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”.
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.INF
wpis, 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.INF
jest ...
. 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 Y
wewnę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.INF
nie 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 Y
do 0
(zmień bajt 42
do 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 X
na 1
nie wydaje się mieć żadnego efektu.
3 Sprawdziłem to, zmieniając odpowiednie bajty C:\vaccinated.img
edytora 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 X
nienaruszony, jeśli jest ustawiony 1
, ponieważ nie wyrządza szkody. Ustawienie tego Y
bitu 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.