7

ドイツの VB.NET フォーラムを調べたところ、頭が痛くなる興味深いものがありました。

ReflexIL またはその他の IL エディターを使用して .NET Framework アセンブリを編集することは実際には可能です。バイパスする必要があるのは、アセンブリの厳密な名前の署名だけです。sn.exe -Vr [assemblyname]アセンブリ IL を変更した後、厳密な名前の検証をスキップするために実行する必要があります。その後、キャッシュされたネイティブ イメージをクリアする必要があります。C:\Windows\assemblyディレクトリを調べて、アセンブリに関連するすべての画像を削除するだけです。その後、再起動します。ログインしたら、実行しますngen install [assemblyname]。これで、新しいネイティブ イメージが生成されます。

これは機能します。仮想環境 (Windows XP x86) でこの手順を確認しました。今、私が最も心配しているのは、.NETVerifyHashまたは.NETVerifyDataのメソッドを簡単にバイパスできることですRSACryptoServiceProvider。これも実際に機能します。私の友人とテストした私は、この問題を確認できました (スクリーンショットを参照してください)。それはかなり簡単でした。

たとえば、.NET Framework 暗号化クラスに基づいて構築されたライセンス システムを作成すると、フレームワークを使用するシステム上のすべての .NET アプリケーションでシステム全体がバイパスされる可能性がありますまた、メソッドにフックするだけで、私が呼び出した関数の入力を誰でもログに記録して変更できます。

ここで私の質問は次のとおりです。これは大きな問題になる可能性があるため、どうすればそれについて何かできるでしょうか? もちろん、悪意のあるユーザーが私のアプリケーションを編集することはできますが、システム全体でこれを行うことほど悪くはありません。フレームワークのチェックサムの検証を考えていましたが、.NET Framework にはさまざまな更新プログラムがあるため、これは不可能のようです。

解決策や提案はありますか?マイクロソフトはこの問題に何らかの方法で対応していますか?

4

1 に答える 1

8

攻撃者があなたのコンピュータへの管理者アクセス権を持っている場合(あなたが説明した攻撃に必要です)、あなたはほとんど負けています。あなたができることはすべて、攻撃者によって回避される可能性があります。

そのため、この種の攻撃から身を守ることはまったく無意味だと思います。信頼できない、潜在的に危険にさらされているコンピューターを処理する必要がある場合、機密性の高いことを実行することを信頼することはできず、自分のサーバーなどで実行する必要があります。

于 2013-01-24T19:49:58.627 に答える