試験方法
それは基本的にだからパンダは、理解され、その「ワクチン」の正確なメカニズムを明らかにしていないようだ、あいまいさのセキュリティ。仕組みがわかっていれば、効果を元に戻すことができ、「ワクチン」は役に立たなくなります。
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
、悪意のあるアプリケーションによって簡単に悪用される可能性があります。たとえば、ドライブの空き領域全体を占有する削除不可能なファイルを作成することができます。