web-dev-qa-db-ja.com

Deep Freezeのようなものは、ブートセクターの感染に対してどの程度効果的ですか?

私は組み込みシステムのメーカーで働いており、Windows Embeddedを搭載した旧世代のシステムで、多くの顧客がウイルス感染を経験しています。これらのシステムのリアルタイム性により、ウイルス対策ソリューションは特に実用的ではありません。

これらの主な原因は、従業員がインターネットに接続していて、不適切なコンテンツをシステムにダウンロードしていることです。カスタマーサービスの理由からブラウザが必要なため、単純にロックアウトすることはできません。

この問題を緩和する方法としてDeep Freezeを調査してきました。このツールはファイルシステムの状態を復元するように設計されています。

これがブートセクターウイルスに対して効果があるかどうかは不明ですが、これに関する経験はありますか?このような目的でDeep Freezeを使用した人はいますか?

テスト用に妥当なブートセクタウイルスはどこで入手できますか? (質問のこの部分の正当性が気になる人は、確認のために仕事のメールで連絡することができます。これは、このアカウントに関連付けられているメールです)。

7
Stephen

許してください。しかし、リアルタイム依存システムの#1ソリューションは、指定されていないジャンクを実行しないことです。ユーザーはRTOS設定でインターネットを閲覧するべきではありません。昨日停止する必要があります。

少なくとも良い理論では、Deep Freezeタイプのシステムはコンピュータを永続的な変更から保護します。すべての書き込みアクティビティをインターセプトし、再マッピングします。つまり、ブートセクターを含むすべての変更は、ブート時に逆参照されます。凍結されたデータは決して上書きされず、システムがリセットされるまで離れたところを指し示すだけです。

10
Jeff Ferland

まず、私はジェフに同意します。リアルタイムシステムをインターネットに接続することは、特に重要な場合は、良い考えではありません。

次に、Deep Freezeについて- wikipediaの記事 によると:

Deep Freezeはカーネルレベルのドライバーで、ハードドライブまたはパーティションに書き込まれている情報をリダイレクトすることによってハードドライブの整合性を保護し、元のデータはそのまま残します。

システムへの影響に関しては、これは書き込みが次のようになることを意味します。

 ----------------------                ---------------------
 | Userland program   |<-----Read--------|  Kernel         |          |-------------------|
 | e.g. Explorer.exe  |                | |-|-------------|<---Read----|  File system      |
 | or something else  |<-----Write--|  |   | Deep Freeze | |          |  i.e. directly to |
 ---------------------- or read of  |------| Driver      | |          |  block device     |
                  modified contents    |   |-------------- |          |-------------------|
                                       |         /|\       |
                                       -----------|---------
                                                  | Write/read changed content
                                                 \|/
                                           ----------------
                                           | Some form of |
                                           | temporary    |
                                           | storage      |
                                           ----------------

したがって、標準のIOルーチンを使用して行った変更は、一時ストレージにリダイレクトされます。コンテンツが変更されている場合、私が理解しているように、読み取りもこれに従います。それ以外の場合は、ファイルシステムから直接ロードします。システムがリロードされると、そのセクションは忘れられます。

これがどれほど効果的であるかは、浸透のレベルに依存します。カーネル内部で、フックされたルーチンを使用してファイルを書き込む場合、書き込みもリダイレクトされます。ただし、カーネルはディスクに直接書き込むことができ、そのためのコードが含まれているため、カーネルにパッチを適用して削除しない限り、ディスクに書き込むことができます。切片はそれよりも高くなる可能性が高くなります。これは主に、すべての呼び出しの99%をキャッチし、信頼できるためです。

テスト用に妥当なブートセクタウイルスはどこで入手できますか?

今、問題の核心です。ディープフリーズの書き込み保護は、一度読み込まれると機能します。したがって、完全にフリーズする前にコードをロードすると、標準ルーチンがうまく機能するという想定は正しいです。より高い優先度でフィルターをロードし、特定の書き込みをインターセプトし、完全にフリーズする前にそれらを永続化することもできます。

始めるためのコードを見つけることに関して、vbootkit 2.0は概念の証明でした(それ自体を挿入することを除いて、それはあまり効果がありませんでした)Windows Vista x64のプリブートを危険にさらすように設計された「ブートキット」。今夜それを探してインターネットから姿を消しましたが、もしあなたがコピーを見つけることができれば、それはあなたに出発点を与えるでしょう。しかし、それは複雑です。私は今フィルタードライバー(AviDのせい)を書いていて、それを正しくするのは難しいです。しかし、意図的にディープフリーズを意図的に意図するコードは知りません。

9
user2213

組み込みデバイスのブートコードを保護する「正しい方法」は、ROMからロードすることです。ブートセクターを変更するには、ROMをhardにする必要があります。真のROMがなくても、私が目にしたほとんどのフラッシュデバイスには、フラッシュドライバー内から書き込み可能なロックシーケンスがあります。これにより、デバイスを上書きすることが困難になります(たとえば、標的型攻撃では不可能ではありません)。庭のさまざまなウイルスがブートに感染するのを防ぎます。テストするウイルスを見つけることに関しては、システムの特定の知識を持つ何かを記述して、保護がどれほど強力かをテストすることを検討します。

5
bstpierre