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 Rsą 1wtedy 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.
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.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.