web-dev-qa-db-ja.com

コンピューターで実行されているすべてのプログラムがタスクマネージャーの[プロセス]タブに表示されますか?

私がこれを尋ねる理由は、ウイルスが存在することを知ることができないままコンピュータにウイルスが存在する可能性があるかどうか知りたいからです。具体的には、なんの兆候もないウイルス。

34
itzjustricky

rootkit と呼ばれる、オペレーティングシステムから完全に身を隠すことができるマルウェアのクラスがあります。

ルートキットは、作業中の他のマルウェアの証拠を隠すために使用され、オペレーティングシステムに非常に深く埋め込まれています。深く埋め込まれているため、プロセスリスト、ファイルシステムテーブル、その他の重要な構造をオンザフライで操作できます。

メモリ内のファイルシステム構造を操作することにより、ディレクトリに関する誤ったまたは誤解を招く結果を返す可能性があります。特に、メインのマルウェア自体に関連するファイルは表示されません。ファイルはそこにあり、Linux LiveCDなどの感染していないオペレーティングシステムを起動すると、どこかに保存する必要があるため、ファイルが表示されます。

同様に、ルートキットは、特定のプロセスをタスクマネージャーなどのプログラムに報告されないようにするだけです。オペレーティングシステムコアはそれらを知っています。それらをスケジュールするために必要なため、外部の世界にそれらを知らせることはブロックされています。

48
Mokubai

すべてのnormalプログラムがそこに表示されますが...

  • 管理者アカウントがないと、自分のプロセスのみを表示できます(管理者アカウントは、全員のプロセスを表示するように選択できます)
  • ルートキットは、プロセスをリストから隠し、タスクマネージャーを危険にさらして(表示されないように)、別のプロセスのアドレス空間内に隠して、その存在を隠そうとします...
  • サービスは(ほとんどの場合)svchostプロセスの下でスレッドとして実行されるため、特定のsvchostインスタンスの下でサービスが実行されている簡単なポイントはありません。

ルートキットを検出するために設計されたプログラムがいくつかあります。たとえば、実行用にプログラムされたスレッドのリストとシステム内のプロセスのリスト(どのプロセスにも属していないスレッドは非表示のプロセスの兆候です)、または高レベルで表示されるファイルのリストをチェックすることにより、それを手動でディスクパーティションから読み取るファイルと比較します。

それにもかかわらず、一度感染すると、ウイルスがその存在を隠し、検出がほとんど不可能になる可能性があります。それらは通常 APTs (高度な持続的脅威)と呼ばれます。

16
Ángel

バックグラウンド

オペレーティングシステムには、カーネルと呼ばれるコンポーネントがあります。カーネルの(多くの)責任の1つは、システムメモリ(物理と仮想の両方)を管理することです。

これを実行する一環として、カーネルは使用可能なメモリをユーザーモードとカーネルモードと呼ばれる2つの異なる領域に分割します。カーネルとドライバーはカーネルモードメモリを共有し、ユーザープログラムとそれほど重要でないシステムコンポーネントはユーザーモードメモリ領域に常駐します。

ユーザーモードのプロセスは、特別に指定および制御されたチャネルを経由しない限り、通常カーネルモードのプロセスと通信できません。

完全を期すために、ユーザーモードで実行されているプロセスも互いに分離されていますが、プログラムがそうするように設計されていれば、オペレーティングシステムが提供する機能を使用して互いに自由に通信できます。

プロセス

カーネルは、ユーザーモードでプロセスを起動する機能を提供します。プロセスが作成されると、現在存在するプロセスの内部リストに追加されます。タスクマネージャーなどのプログラムがプロセスのリストを要求すると、ユーザーごとの権限でフィルターされた、このリスト内の情報のサブセットを受け取ります。

ルートキットなどのマルウェアがその存在を隠す1つの方法は、このテーブルから自分自身を直接削除することです。これを実行しても実行できますが、通常の方法で取得したプロセスリストには表示されなくなります。

これらのプロセスはまだ実際に存在して実行されるため、プロセスが開いているリソース(ファイルなど)に関する情報を保持するハンドルテーブルなどの他のカーネルデータ構造を調べるか、プロセスのメモリ割り当てを調べることで見つけることができます。ソフトウェアの機能を妨げずに隠すのは難しい。

カーネルモードドライバー

カーネルモードドライバーは、物理ハードウェアデバイスとの対話を含む多くのことに使用されます。これらは必要に応じてカーネルの制御下で実行されますが、ユーザーモードプロセスではないため、プロセスのテーブルには表示されません。したがって、タスクマネージャーや、プロセスにのみ関連するその他のツールには表示されません。

カーネルモードでコードを実行できることは、実行中のコードの存在を効果的に隠すことができるための重要なステップです。通常の状況では、Windowsは実行するためにカーネルモードのコードに署名する必要があるため、マルウェアはオペレーティングシステム、他のソフトウェア、またはソーシャルエンジニアリングのエクスプロイトを使用してアクセスする必要がありますが、コードがカーネルモードで実行されると、非表示になります。簡単になります。

概要

要約すると、プロセスの存在の証拠を隠すことは可能です。プロセスが存在することを常に示す可能性があります。それは、一般に、設計されたものを行うために常に何らかの形のリソースを使用する必要があるためです。その検出は特定のマルウェアに依存します。

5
Crippledsmurf

ウイルスは今日かなり洗練されています。あります---コンピュータ上のウイルスですが、タスクマネージャには表示されません 。タスクマネージャ(およびオペレーティングシステムの他の部分)自体が侵害され、ウイルスを隠すことができます。たとえば、ルートキット。

タスクマネージャーを使用してウイルスをチェックすることを計画している場合は、ここで停止する必要があります。アンチウイルスをインストールすると、アンチウイルスでさえPC上のウイルスの検出に失敗することがあります。

3
Rsya Studios

他の回答ですでにうまく説明されている他のものとは別に、「ウイルスを隠す」ためのもう1つの簡単な方法があります。

侵害されたDLL(動的にリンクされたライブラリ)

多くのプログラム(ほとんどすべての重要でないプログラム)を実行するには、1つ以上のDLLが必要です。一部はOS自体に属します(たとえば、Windowsのハードウェアアクセスを抽象化するhal.dll)。一部は1つのプログラムでのみ使用され、より小さな断片(1つの.exeファイルとコア機能を持つ.dllファイル)に分割されます。プラグインなど)通常のプロセスやサービスのように常にウイルスを実行させるわけではありませんが、完全に無害なプログラムやプログラムコンポーネントのように見えるため、実際にウイルスを見つけるのは非常に困難です。

さらに読む: http://msitpros.com/?p=2012


そして、この種のウイルス作成について非常に魅力的なことが1つあります。このため、またはそのためにコンピューター上で失われる可能性のあるdllの無料(支払い不要)のダウンロードを提供するWebサイトがたくさんあります。オリジナルとnew.dllファイルのチェックサムを比較する可能性は非常に制限されており、ほとんど誰も気にしないので、dllウイルスがシステムに侵入して長い間とどまることがあります時間に気付かれません(もちろん、ウイルス対策プログラムが検出し、ユーザーが削除に同意する場合を除きます-既にパターンが表示されています)。

質問から、ここではWindowsについて語っていると思いますが、この手法は他のOSにも同様に適用できる可能性があります。

0
Pavel

TL; DR: Windowsのタスクマネージャーは、実行できる機能がかなり制限されており、*everすべて表示しないシステムで実行中のプロセス。証拠が必要ですか?タスクマネージャーに表示されるRAMプロセスの量を(おおまかに)カウントし、システムのRAM使用状況と比較します。少なくとも100MB RAMは考慮に入れられておらず、システムの使用目的によっては、約1GBに達することもあります。グラフィックカードは、RAM独自のGDDR RAMとともに。*

Pavel Petmanの答えを拡張するために、ゲームの多くの高度なチートエンジンが、チートを有効にするゲームDLLにコードを挿入することに依存していることを付け加えます。

この種の侵害は検出するのがかなり難しく、同じ問題をこの質問に適用できます。たとえば、ウイルスが検出されないようにしたい場合、ウイルスがシステムディレクトリに自身を抽出する種類のWindows更新プログラムを装うことがあり、ウイルスは重要なシステムファイルを上書きする可能性があります。ほとんどのウイルス対策プログラムは、このタイプのウイルスを検出しません。つまり、ウイルスは重要なWindows DLL(および.exe)にウイルスコードを挿入します。

私のクライアントが異常な動作を報告するとき、私は常にProcess Explorer(Microsoftからダウンロード)を実行して、実行中のウイルスを検出します。プロセスエクスプローラーは、実行中のプロセス(タスクマネージャーにないものも含む)と、プロセスが使用しているDLLモジュール)を正確に通知します。

0
AStopher