2

決心した攻撃者が自分のプロセスコード/データを変更するのを防ぐことは不可能のようです。少なくともそのような改ざんを検出できることを願っています。

Windowsでは、現在のプロセスへのDLLインジェクションWriteProcessMemory、およびCreateRemoteThreadをリッスンすることは可能ですか?

Linuxでは、LD_PRELOADとDRルートキットをリッスンすることは可能ですか?

4

2 に答える 2

1

いくつかの本当に複雑なコードを使用すると、それらを検出できる可能性があります...それはすべて攻撃者がどの程度決定されているかに依存します...彼らが本当に決定されている場合、ルートキットアプローチを使用します-その場合、アプリはそれについて何もできません(攻撃者が何をしているのかを知っている限り、検出も停止もありません)...

別のアプローチは、実行中にメモリ内のセグメントのハッシュを試みることですが、ハッシュコード自体がこのメソッドを回避するためのエントリポイントを提示するため、スネークオイルの原因になります。

自己構築されたVM内でコードを実行すると、ハイパーバイザーを介してシステムの残りの部分と通信します...もちろん、OSが単なる「子」になるように、ハイパーバイザーをシステムのブートローダーにする必要があります。ハイパーバイザーは...トリックを実行する必要があります...すべてを自分で記述し、悪用可能な弱点がないことを確認する必要があります(このような複雑なソフトウェアでは、誰もそれを実行できないことは間違いありません)...

何に反対しているのかはわかりませんが、コードが実行されているHW + SWが完全に制御されていない限り、言及したことを実行する方法は常にあり、少し計画を立てて検出を回避することもできます...

または、これはソフトウェアの著作権侵害/逆転からの保護についての「唯一の」ですか?もしそうなら、いくつかの対策がありますが、それはすべてセキュリティと使いやすさのバランスに関するものですが、100%安全なものですら...

于 2011-08-21T16:57:02.530 に答える
0

ええと、LD_PRELOADが悪意があるかどうかをどうやって見分けるのですか?ptraceはどうですか?/ dev / [k] mem?あるプロセスが別のプロセスの構成ディレクトリのフォルダに悪意のあるプラグインなどを植え付けた場合はどうでしょうか。共有メモリ/IPCの改ざんはどうですか?

まず第一に、これは時間の無駄であり、実際に合法的な製品として販売するのはまったくナンセンスです。何をしようとしているのかわからない。ウイルス対策、ゲームのアンチヒート、またはDRMの場合、これは無駄です。実行できる唯一のことは、プロセスを別のユーザーとして実行し、他のプロセスが最初にプロセスを変更できないようにすることです。それが十分ではなく、ひどい場合、Linuxは安全なオペレーティングシステムではなく、決してそうなることはありません。

理論的には、改ざんされているプロセスのメモリを検出することは不可能です。実際には、検出をどのように定義するか、およびどのような種類の誤検知と誤検知を気にするかによって異なります。

プログラムの通常の動作がそれ自体を変更しないことを知っている場合、メモリのどのセグメントが静的であることが意図されているかを正確に知っており、プログラムを改ざんする正当なサードパーティプログラムがPC上にないことを知っています。そうすれば、メモリの改ざんをかなり簡単に検出できる可能性があります。

最も一般的な解決策は、あなたが言ったように、OSのプロセス間メモリ変更メカニズムをフックすることです。これは、敵のプロセスにフックを削除したり、フックをバイパスする特定のOS呼び出しを行ったりするのに十分な権限がない限り機能します。

安全なハッシュアルゴリズムを使用してメモリをチェックサムし、プロセス全体を何度もスキャンすることもできます。次に、敵のプロセスがスキャナーを変更する特権を持っている場合、あなたは負けます。

そうですね、プロセスにスキャナーを破壊する特権がない場合、なぜそれはあなたが気にかけているプロセスを変更する特権を持っているのでしょうか?私にはアンチウイルス/アンチヒート/DRMのように聞こえます。

于 2011-08-21T22:35:29.570 に答える