プログラムAがRAM、実行中のプロセスなどをスキャンする場合、プログラムBをAによって検出されないようにすることができますか?
基本的に、私はプログラムAがプログラムBを検出したくない、または少なくとも、プログラムBがプログラムBを識別できないようにします。これは可能ですか、それともファイル名を十分に変更するようなものですか?
プログラムAのファイルを変更することはできませんが、プログラムBを使用するとおそらく変更できます。プログラムAはプログラムBと同様に、名前を知っており、おそらく動作も検索しています。
はい、可能です。
この種の動作は rootkit と呼ばれるプログラムのクラスで見られます。ルートキットは、検出を回避するためにいくつかの手法を採用しています。
それらのテクニックのいくつか:
スレッドインジェクション
この場合、別の実行中のプロセスでProgram B
スレッドを挿入 します。 Program A
がprogram_b.exe
を検索している場合、それは見つかりません。
カーネルプロセステーブルの操作
この場合、Program B
カーネルプロセステーブルを操作します 、実行中のプロセスのリストから自分自身を削除します。 Program B
を非表示にします。
多型
この場合、Program B
はそれ自体のコピーを多数作成し、それぞれのコピーは異なります。これは polymorphysm と呼ばれます。同じアクションを実行するさまざまな方法がたくさんあるので、それ自体の事実上無限のコピーを作成できます。 Program A
がProgram B
の署名を検索している場合は、バリエーションの検出に失敗します。
行動の変化
Program B
には、安全と非安全の2つの操作モードがあります。セーフモードは、Program A
の実行を検出したときの動作です。 Program A
が実行されていないことを検出するとすぐに、必要なものをロードして非セーフモードに入り、Program A
が検出することをすべて実行します。
他の多くの手法 があります。これらはほんの数サンプルです。 検出回避をすばやく検索すると、多くの研究ポイントが得られます。