Windowsの起動時にアンチウィルスプログラムはどのように起動するのですか?

anti-virus boot windows

いくつかのテストを行ったとき、Avastをインストールした後、”Run “レジストリキーと “Startup “フォルダの両方を確認したところ、どちらの場所にもスタートアップエントリが存在しないことに気付きました。このことを考慮して、大多数のアンチウイルスプログラムは、OSの起動時に自動的に起動するように、どの場所に配置されているのでしょうか?

  64  elliott94  2019-03-12


ベストアンサー

大多数のアンチウイルスプログラムは、OSの起動時にどこから始まるのでしょうか?

Avast をインストールし、「実行」レジストリ キーと「スタートアップ」フォルダの両方をチェックした後、どちらの場所にもスタートアップ エントリが存在しないことを確認しました

他にもチェックしておきたいスタートアップの場所はたくさんあります(後述)

多くのウイルス対策プログラム(Avastを含む)は、Windowsサービスとして起動されているため、起動プロセスの非常に早い段階で起動し、最大限の保護を提供することができます

Avast GUI(システムトレイのアイコンを含む)はHKLM\Software\Microsoft\Windows\CurrentVersion\Runから起動します


起動時にプログラムを実行できる場所はたくさんあります。お目当てのプログラムが見つかるまで、それらを全てチェックする必要があります

起動場所を簡単にチェックできるプログラムがいくつかあります

  1. msconfig(スタートアップタブ)

  2. Autoruns から SysInternals

  3. WhatInStartup から NirSoft

  4. WinPatrol

    Note:

    • WinPatrolでは、「スタートアッププログラム」から「遅延開始」にプログラムを移動させることができます
    • この場合、遅延時間を指定することができます

    ]12


Windows のスタートアップでプログラムを実行する方法はいくつありますか?

プログラムを開始できる場所は、少なくとも17箇所あります。以下を参照してください


Windowsプログラムの自動起動場所

コンピュータの電源を入れると、以下のオートスタートの場所が以下の順番で処理されます

  1. Windowsブートデバイスドライバ

    • これらのドライバは、記憶装置などのハードウェアを正常に動作させるために必要なため、最初にロードされます
    • ブートデバイスドライバは、以下のキーの下に配置され、開始値が0に等しくなっています

    レジストリキー

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services
    

    Windowsはこれで様々なタスクを実行し、Winlogonプロセスを開始します。Winlogonは最終的に、自動起動に設定されているサービスとドライバをロードするサービスコントロールマネージャを起動します

  2. Windowsの自動起動サービス & ドライバ

    • サービス・コントロール・マネージャー(SCM)プロセス(\Windows\System32\services.exe)は、開始値が2でマークされているサービスまたはドライバを起動します

    レジストリキー

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services
    
  3. RunServicesOnce

    • このキーは、コンピュータが起動したときにサービスを開始するように設計されています
    • これらのエントリは、ログオン後も実行を続けることができますが、HKEY_LOCAL_MACHINE…RunOnce レジストリがプログラムのロードを開始する前に完了する必要があります

    レジストリキー

    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
    
  4. RunServices

    • この鍵は、サービスを開始するためにも設計されています
    • これらのエントリは、ログオン後も実行を続けることができますが、HKEY_LOCAL_MACHINE…RunOnce レジストリがプログラムのロードを開始する前に完了する必要があります

    レジストリキー

    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices
    

    Windowsログオンプロンプトが画面に表示されます。ユーザーがログインした後、残りのキーは続きます

  5. Notify

    • このキーは、特定のイベントが発生したときに実行するプログラムを追加するために使用されます
    • イベントには、ログオン、ログオフ、起動、シャットダウン、startscreensaver、stopscreensaverが含まれます
    • Winlogon.exeがこのようなイベントを発生させると、Windowsはこのイベントを処理するDLLをNotifyレジストリキーで探します
    • マルウェアは、ユーザーが自分のコンピュータにログオンしたときに、この方法で自分自身をロードすることが知られています。このような方法でロードすることで、マルウェアプログラムを簡単に停止させることができます

    レジストリキー

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify
    
  6. UserInit Key

    • このキーは、ユーザーがWindowsにログインした直後に起動するプログラムを指定します
    • このキーのデフォルトのプログラムは、C:\windowssystem32userinit.exeです。Userinit.exeは、ユーザー名のプロフィール、フォント、色などを復元するプログラムです
    • プログラムをカンマで区切ることで、このキーから起動するプログラムをさらに追加することができます。例えば、以下のようになります

      HKLM\Software\CurrentVersion\Winlogon\Userinit =C:C:\windowssystem32\userinit.exe,c:C:\windowsbadprogram.exe

    これにより、ログイン時に両方のプログラムが起動するようになり、トロイの木馬やハイジャッカー、スパイウェアなどがよく起動する場所になります。レジストリキー

    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit
    
  7. Shell Value

    • この値には、Userinit.exeが起動するカンマ区切りの値のリストが含まれています
    • Windowsのデフォルトのシェルはexplorer.exeですが、正当な代替品が作られています。userinit.exeがシェルを起動すると、最初にHKEY_CURRENT_USERにあるシェル値が起動します。この値が存在しない場合は、HKEY_LOCAL_MACHINEにある値が起動されます

    レジストリキー

    HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\\Shell
    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\\Shell
    

    これでオートスタートの残りの場所が処理されます

  8. RunOnceローカルマシンキー

    • これらのキーは、主にセットアッププログラムで使用するように設計されています
    • これらのキーのエントリは一度起動され、その後、キーから削除されます
    • このキーの値の前に感嘆符がある場合、そのエントリはプログラムが完了するまで削除されず、そうでない場合はプログラムが実行される前に削除されます。感嘆符が使用されておらず、このキーで参照されているプログラムが完了しなかった場合、すでに削除されているため、再度実行されることはないため、これは重要です
    • このキーのすべてのエントリは、未定義の順序で同期的に開始されます
    • このため、HKEY_LOCAL_MACHINE…\Run、HKEY_CURRENT_USER…\Run、HKEY_CURRENT_USER…RunOnce、およびStartup Foldersのいずれかのエントリをロードする前に、このキー内のすべてのプログラムを終了する必要があります
    • セーフモードのWindows 2000およびWindows XPでは、RunOnceキーは無視されます。RunOnceキーはWindows NT 3.51ではサポートされていません

    レジストリキー

    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce
    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnceEx
    
  9. Run

    • これらは、自動起動をインストールするプログラムの最も一般的な起動場所です
    • デフォルトでは、これらのキーはセーフモードでは実行されません。これらのキーの値の前にアスタリスク*を付けると、セーフモードで実行されます

    レジストリキー

    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
    
  10. すべてのユーザーのスタートアップフォルダ

    • Windows XP、2000、およびNTの場合、このフォルダは、このコンピュータにログインするすべてのユーザーのために自動起動する必要があるプログラムのために使用されます

    で一般的に見られます

    • Windows XP C:\Documents and Settings\All Users\Start Menu\Programs\Startup の場合

    • Windows NT C:\wont\Profiles\All Users\Start Menu\Programs\Startup の場合

    • Windows 2000 C:\Documents and Settings\All Users\Start Menu\Programs\Startup の場合

  11. ユーザープロファイルのスタートアップフォルダ

    • このフォルダは、ログインした特定のユーザーに対して実行されます

    このフォルダは通常、以下の場所にあります

    • Win 9X, ME <++1
    • Windows XP C:\Documents and Settings\LoginName\Start Menu\Programs\Startup の場合
  12. RunOnce 現在のユーザーキー

    • これらのキーは、主にセットアッププログラムで使用するように設計されています
    • これらのキーのエントリは一度起動され、その後、キーから削除されます
    • キーの値の前に感嘆符がある場合、プログラムが完了するまでそのエントリは削除されず、そうでなければプログラムが実行される前に削除されます。感嘆符が使用されておらず、このキーで参照されているプログラムが完了しなかった場合、すでに削除されているため、再度実行されることはありません
    • セーフモードのWindows 2000およびWindows XPでは、RunOnceキーは無視されます
    • Windows NT 3.51ではRunOnceキーはサポートされていません

    レジストリキー

    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
    
  13. Explorer Run

    • これらのキーは一般的に、コンピュータまたはユーザーに設定されたポリシーの一部としてプログラムをロードするために使用されます

    レジストリキー

    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
    
  14. Load Key

    • このキーはもう一般的には使われていませんが、プログラムの自動起動に使うことができます

    レジストリキー

    HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows\load
    
  15. AppInit_DLLs

    • この値は、AppInit_DLLs レジストリ値を介して読み込まれるファイルに対応しています
    • AppInit_DLLsレジストリ値には、user32.dllが読み込まれたときに読み込まれるdllのリストが含まれています
    • ほとんどのWindows実行可能ファイルはuser32.dllを使用しているため、AppInit_DLLsレジストリキーに記載されているDLLもロードされます。このため、DLLは複数のプロセス内でロードされ、そのうちのいくつかはシステムを不安定にすることなく停止することができないため、DLLを削除することが非常に困難になります
    • user32.dll ファイルは、ログオン時にシステムによって自動的に起動されるプロセスによっても使用されます。これは、AppInit_DLLsの値でロードされたファイルは、Windowsのスタートアップ ルーチンの非常に早い段階でロードされ、システムにアクセスする前にDLLが自分自身を隠したり、保護したりすることを可能にすることを意味します

    レジストリキー

    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows
    

HelpingHandは、64ビットのコンピュータでは2箇所あると指摘している

  • 64ビットDLLを参照するHKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows
  • 32ビットDLLを参照するHKLM\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion\Windows

64ビットプロセスは64ビットDLLをロードし、32ビットプロセスは32ビットDLLをロードします

  1. ShellServiceObjectDelayLoad

    • このレジストリ値には、Runキーと同様の方法で値が含まれています
    • 違いは、ファイル自体を指すのではなく、使用されている特定のDLLファイルに関する情報を含むCLSIDのInProcServerを指していることです
    • このキーの下にあるファイルは、コンピュータの起動時にExplorer.exeによって自動的に読み込まれます。Explorer.exeはコンピュータのシェルであるため、常に起動し、このキーの下にあるファイルが常にロードされます。したがって、これらのファイルは、人為的な介入が発生する前に、起動プロセスの早い段階で読み込まれます

    レジストリキー

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ShellServiceObjectDelayLoad
    
  2. SharedTaskScheduler

    • このセクションでは、XP、NT、2000のマシンで共有タスクスケジューラーのレジストリ値を通して読み込まれるファイルに対応しています
    • このレジストリ値のエントリは、windowsの起動時に自動的に実行されます

    レジストリキー

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\SharedTaskScheduler
    
  3. Miscellaneous

    以下は、起動時にプログラムが自動起動できるファイルです

    1. c:\autoexec.bat
    2. c:\config.sys
    3. windirwinwininit.ini – 通常、ファイルを一度実行してから削除するためのセットアッププログラムで使用されます
    4. windir\winstart.bat
    5. windirwin.ini – [windows] “load”
    6. windirwin.ini – [windows] “run”
    7. windirsystem.ini – [boot] “shell”
    8. windirsystem.ini – [boot] “scrnsave.exe”
    9. windirdosstart.bat – あなたがシャットダウンメニューで “Restart in MS-DOS mode “を選択したときにWin95または98で使用されます
    10. windir\system\autoexec.nt
    11. windir\system\config.nt

ソース Windows プログラムの自動起動の場所


Disclaimer

私はSysInternals、Nirsoft、WinPatrolと提携しているわけではありません

115  DavidPostill  2019-03-12


セキュリティ製品は、一般的に、例えば、いくつかのコンポーネントを有している

  • カーネル内にある 1 つ以上のファイルシステムフィルタドライバ。通常、これらはミニフィルタで、コマンドラインツール fltmc.exe を使って一覧表示することができます。また、プロセスエクスプローラのようなツールを使って、「システム」プロセスにロードされたドライバを見ることもできます。これらのドライバは、ファイルの開閉をフィルタリングしたり、ファイルにアクセスさせる前にファイルのスキャンをユーザモードサービスに要求したりする役割を担っている可能性が高いです
  • ネットワークトラフィックをフィルタリングするための他のドライバがあるかもしれません。古いプラットフォーム上のNDISフィルタドライブ、例えばWin 7と新しいプラットフォーム用のWFPドライバ、例えばWin 8.1以降。たぶん、レガシーな理由で組み合わせがインストールされているのでしょう
  • services.msc を実行することで確認できる 1 つ以上のユーザーモードのサービス。そのうちの1つは、通常、ウイルスデータをロードし、実際のスキャンを実行します。典型的には、管理のための他のサービス、ウェブ制御、デバイス制御、データ制御、更新などの追加機能があります
  • レジストリの「実行」キー(またはスタートメニュー)から起動し、ログオンしているユーザーのコンテキストで実行される可能性のある追加のプロセス。これらのプロセスは通常、ユーザーインターフェイスを提供し、ユーザーのメッセージングを処理します。例:マルウェア検出メッセージ

要するに、完全に本格的なセキュリティ製品は、通常、ユーザーモードのサービス、ドライバ、およびログオンしたユーザーとして実行されているプロセスの組み合わせです。あなたの質問からすると、あなたは後者を見ているように聞こえます。services.msc を実行するとユーザモードのサービスを見ることができ、driverquery.exe や msinfo32 のようなツールを実行するとドライバを見ることができます。ユーザモードサービスとカーネルドライバはすべて、Service Control Manager (SCM) のデータベースで以下のように参照されます: hklm\systemcurrentcontrolsetservices

15  HelpingHand  2019-03-12