試験方法
それは基本的にだからパンダは、理解され、その「ワクチン」の正確なメカニズムを明らかにしていないようだ、あいまいさのセキュリティ。仕組みがわかっていれば、効果を元に戻すことができ、「ワクチン」は役に立たなくなります。
Panda USB Vaccineをダウンロードしてインストールし、フラッシュドライブに「予防接種」し、コマンドを使用してWindows用のddでフラッシュドライブのパーティションをダンプしました
dd --list
dd if=\\.\Volume{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} of=C:\vaccinated.img
ここで、16進エディターxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxで開かc:\vaccinated.imgれ、検索された最初のコマンドによって提供されるGUID ですAUTORUN。
USBワクチンの機能
のエントリはAUTORUN.INF、次の12バイトで始まります。
41 55 54 4F 52 55 4E 20 49 4E 46 42
最初の11バイトは、スペースが埋め込まれた8.3ファイル名です。AUTORUN INF
最後のバイトはファイルの属性を指定し、そのバイナリ表現は次のとおりです。
01000010
Microsoft EFI FAT32 File System Specificationによると、この最後のバイトは次の形式のビットフィールドです。
XYADVSHR
ここで、ビットA、D、V、S、H及びRである1場合、ファイルがアーカイブされている場合にのみ、ディレクトリ、ボリュームID 1、システムファイル、非表示または読み取り専用。AUTORUN.INFはにH設定されているため、非表示1です。
ビットXとYは予約されており、両方ともである必要があります0。ただし、USBワクチンはに設定さYれ1ます。
仕様の内容
属性バイトの上位2ビットは予約されており、ファイルが作成され、その後変更または参照されない場合は常に0に設定する必要があります。
さらに、ディレクトリの内容の検証を推奨します。
これらのガイドラインは、ディスクメンテナンスユーティリティがディレクトリ構造の将来の拡張機能との互換性を維持しながら、個々のディレクトリエントリの「正確性」を検証できるように提供されています。
予約済みとマークされたディレクトリエントリフィールドの内容を調べないでください。ゼロ以外の値である場合、それらは「不良」であると想定してください。
(「不良」であるという仮定の下で)ゼロ以外の値が含まれる場合、予約済みとマークされたディレクトリエントリフィールドの内容をリセットしないでください。ディレクトリ入力フィールドは、must-be-zeroではなく、reservedと指定されています。これらはアプリケーションで無視する必要があります。これらのフィールドは、ファイルシステムの将来の拡張用です。それらを無視することにより、ユーティリティはオペレーティングシステムの将来のバージョンで実行を継続できます。
実際に何が起こるか
CHKDSKは確かに仕様に従ってAUTORUN.INFおり、FAT32ドライバーが理解できないエントリを無視しますが、Windows自体は、予約ビットを再度確認しないという仕様の要件に準拠していないようです:任意の種類のアクセス(ファイルの一覧表示以外)およびその属性)は拒否されます。
たとえば、コマンド
DIR /A /Q
の所有者はAUTORUN.INFです...。FAT32はファイルの所有権をサポートしていないため、と記載する必要があります\All。
この予期しない動作の理由は、FAT32-Wikipedia#Directory entryによると、WindowsはビットをY内部的に使用して文字デバイス名(CON、PRN、AUX、CLOCK $、NUL、LPT1、COM1など)を通知するためです。ストレージデバイスに存在するべきではありません。2
言い方をすれば、USBワクチンはWindowsをtrickしてAUTORUN.INF、それを実際のファイルではなく、読み取りまたは書き込みができないデバイスであると仮定させます。
ファイルを削除する方法
あなたは、ファイルシステムに直接アクセスを持っている場合は、それがセットに足りるYへ0(バイトを変更する42には02再度ファイルの削除可能を作るために)。また、ディレクトリエントリの最初のバイトをに設定E5して、ファイルを直接削除済みとしてマークすることもできます。3
別のオプションは、異なるドライバーを使用することです。たとえば、Ubuntu 12.04は問題なくファイルを削除できます。実際には、読み取り時にディレクトリエントリを自動的に「修正」します。4
1この属性は、たとえばボリュームラベルやフォルダーSystem Volume Informationに使用されます。
2は確かに十分な、設定Xには1何の影響も与えていないようです。
3C:\vaccinated.img 16進エディターでの対応するバイトを変更し、次のコマンドを使用して、変更したイメージをフラッシュドライブに書き込むことにより、これを確認しました。
dd if=C:\vaccinated.img of=\\.\Volume{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
4仕様からの明らかな逸脱は、考え抜かれたもののようです。Ubuntuは、害が発生しないXため1、に設定されている場合はそのまま残ります。Yビットを設定すると1、悪意のあるアプリケーションによって簡単に悪用される可能性があります。たとえば、ドライブの空き領域全体を占有する削除不可能なファイルを作成することができます。