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


34

この質問にはすでに答えがあります:

私がこれを求めている理由は、私がそれが存在することを知ることができずに、コンピュータにウイルスが存在する可能性があるのか​​どうか興味があるからです。より具体的には、いかなる種類の兆候も出さないウイルス。

回答:


48

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

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

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

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


1
私は興味があります、彼らはどのようにその偉業を達成しますか?そもそもWindowsが許可すべきでないもののように思えます。私は意味、でも「すべてのユーザーからのshowプロセス」少ない「隠れ」とより「分類」であり
Raestloz

2
@Raestloz:彼らはルートアクセスを取得し、Windowsを書き換えてそれを許可しない部分を削除することで偉業を達成しています。OSとしてルートキットを「ブート」し、Windowsを変更することでこれを行うと聞いたことがあります。そのため、Windowsを実行するため、ユーザーもWindowsも何か異常なことを知りません。
Mooingダック

3
たぶん、誰かがBIOSで実行されるアンチウイルスを発明する必要がありますlol
Raestloz 14年

1
@zyboxenterprises実際のWindows更新は署名されて偽造することはできませんが、再起動要求ダイアログだけを偽造するか、ユーザーをだまして他の方法で再起動させるか、再起動を強制する(shutdown -r -t 0、特権は必要ありません)か、ユーザーが再起動するまで待つことができます。
グロノスタジ14年

4
@zyboxenterprisesたぶん、そうではないかもしれません;)Flameは、証明書を偽造することにより、Windows Updateを独自の目的で悪用しましたが、その脆弱性は既に修正されています。既知のWUエクスプロイトはありませんが、だれも存在しないという意味ではありません。Flameで使用されるものも以前は知られていませんでした。(参照0日の攻撃を
gronostaj

16

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

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

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

それでも、一度感染すると、ウイルスはその存在を非常に隠すことができるため、検出することはほとんど不可能です。これらは通常、APT(高度な持続的脅威)と呼ばれます。


2
これらのポイントの一部は、Sysinternals Process Explorerによって多少無効にされます-制限されたユーザーは、別のユーザーが実行したプロセスのファイル名を見ることができ、svchostsのツールチップはホストしているものをリストします。
kirb 14年

「脅威」と書くつもりですか、それとも「スレッド」と言うつもりですか?それは実際にそこで動作します;)
コネラック14年

ルートキット検出器はどのようにスレッドまたはプロセスを列挙しますか?それが典型的な方法/ WinAPIの場合、ルートキットは列挙を操作できず、ルートキット検出器はこれに気付かないでしょうか?
レイ14年

1
@DebugErr、彼らは高レベルと低レベルを見てから、違いを報告します(ファイルが途中で変更されたときなど、誤検知を起こすことがあります)。することで、実行のためにプログラムされたスレッドの一覧をチェック私はOSのスケジューラすなわちによって使用される二重リンクリストに参照のうえましたが。完全に低レベル:存在しない場合、タイムスライスは取得されません(ISRなど、チェックする場所が他にもあります)。
アンヘル14年

5

バックグラウンド

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

これを行う一環として、カーネルは利用可能なメモリをユーザーモードとカーネルモードとして知られる2つの異なる領域に分割します。カーネルとドライバーはカーネルモードメモリを共有し、ユーザープログラムと重要性の低いシステムコンポーネントはユーザーモードメモリ領域に存在します。

ユーザーモードのプロセスは、特別に指定され制御されたチャネルを経由する場合を除き、一般的にカーネルモードのプロセスと通信できません。

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

プロセス

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

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

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

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

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

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

概要

要約すると、プロセスの存在の証拠を隠すことができます。プロセスが存在することを示す何らかの兆候が常に存在する可能性があります。その検出は特定のマルウェアに依存します。


3

ウイルスは最近非常に洗練されています。コンピュータにウイルスが存在する可能性がありますが、タスクマネージャには表示されません。タスクマネージャ(およびオペレーティングシステムの他の部分)自体が侵害され、ウイルスが隠される可能性があります。たとえば、ルートキット。

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


0

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

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

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

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


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

ここでWindowsのことを話すという質問からですが、この手法は他のOSにも適用される可能性があります。


0

TL; DR: Windowsのタスクマネージャはかなりそれが何ができるかに制限され、それが*ありません、これまでお使いのシステム上で実行中のすべてのプロセスを示しています。証明したいですか?タスクマネージャーに表示されているプロセスが使用しているRAMの量を(大まかに)カウントし、システムのRAM使用量と比較します。少なくとも100MBのRAMを使用する必要がありますが、システムの使用目的によっては1GB程度になることもあります。また、グラフィックカードは、RAMからメモリとGDDR RAMを使用できます。*

Pavel Petmanの答えを拡張するために、ゲーム用の多くの洗練されたチートエンジンは、チートを有効にするコードをゲームDLLに注入することに依存していると付け加えます。

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.