いくつかのテストを行ったとき、Avastをインストールした後、”Run “レジストリキーと “Startup “フォルダの両方を確認したところ、どちらの場所にもスタートアップエントリが存在しないことに気付きました。このことを考慮して、大多数のアンチウイルスプログラムは、OSの起動時に自動的に起動するように、どの場所に配置されているのでしょうか?
64 elliott94 2019-03-12
大多数のアンチウイルスプログラムは、OSの起動時にどこから始まるのでしょうか?
Avast をインストールし、「実行」レジストリ キーと「スタートアップ」フォルダの両方をチェックした後、どちらの場所にもスタートアップ エントリが存在しないことを確認しました
他にもチェックしておきたいスタートアップの場所はたくさんあります(後述)
多くのウイルス対策プログラム(Avastを含む)は、Windowsサービスとして起動されているため、起動プロセスの非常に早い段階で起動し、最大限の保護を提供することができます
Avast GUI(システムトレイのアイコンを含む)はHKLM\Software\Microsoft\Windows\CurrentVersion\Run
から起動します
起動時にプログラムを実行できる場所はたくさんあります。お目当てのプログラムが見つかるまで、それらを全てチェックする必要があります
起動場所を簡単にチェックできるプログラムがいくつかあります
msconfig(スタートアップタブ)
Autoruns から SysInternals へ
WhatInStartup から NirSoft へ
Note:
- WinPatrolでは、「スタートアッププログラム」から「遅延開始」にプログラムを移動させることができます
- この場合、遅延時間を指定することができます
]12
Windows のスタートアップでプログラムを実行する方法はいくつありますか?
プログラムを開始できる場所は、少なくとも17箇所あります。以下を参照してください
Windowsプログラムの自動起動場所
コンピュータの電源を入れると、以下のオートスタートの場所が以下の順番で処理されます
Windowsブートデバイスドライバ
- これらのドライバは、記憶装置などのハードウェアを正常に動作させるために必要なため、最初にロードされます
- ブートデバイスドライバは、以下のキーの下に配置され、開始値が0に等しくなっています
レジストリキー
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services
Windowsはこれで様々なタスクを実行し、Winlogonプロセスを開始します。Winlogonは最終的に、自動起動に設定されているサービスとドライバをロードするサービスコントロールマネージャを起動します
Windowsの自動起動サービス & ドライバ
- サービス・コントロール・マネージャー(SCM)プロセス(\Windows\System32\services.exe)は、開始値が2でマークされているサービスまたはドライバを起動します
レジストリキー
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services
RunServicesOnce
- このキーは、コンピュータが起動したときにサービスを開始するように設計されています
- これらのエントリは、ログオン後も実行を続けることができますが、HKEY_LOCAL_MACHINE…RunOnce レジストリがプログラムのロードを開始する前に完了する必要があります
レジストリキー
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
RunServices
- この鍵は、サービスを開始するためにも設計されています
- これらのエントリは、ログオン後も実行を続けることができますが、HKEY_LOCAL_MACHINE…RunOnce レジストリがプログラムのロードを開始する前に完了する必要があります
レジストリキー
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices
Windowsログオンプロンプトが画面に表示されます。ユーザーがログインした後、残りのキーは続きます
Notify
- このキーは、特定のイベントが発生したときに実行するプログラムを追加するために使用されます
- イベントには、ログオン、ログオフ、起動、シャットダウン、startscreensaver、stopscreensaverが含まれます
- Winlogon.exeがこのようなイベントを発生させると、Windowsはこのイベントを処理するDLLをNotifyレジストリキーで探します
- マルウェアは、ユーザーが自分のコンピュータにログオンしたときに、この方法で自分自身をロードすることが知られています。このような方法でロードすることで、マルウェアプログラムを簡単に停止させることができます
レジストリキー
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify
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
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
これでオートスタートの残りの場所が処理されます
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
Run
- これらは、自動起動をインストールするプログラムの最も一般的な起動場所です
- デフォルトでは、これらのキーはセーフモードでは実行されません。これらのキーの値の前にアスタリスク*を付けると、セーフモードで実行されます
レジストリキー
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
すべてのユーザーのスタートアップフォルダ
- 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
の場合ユーザープロファイルのスタートアップフォルダ
- このフォルダは、ログインした特定のユーザーに対して実行されます
このフォルダは通常、以下の場所にあります
- Win 9X, ME <++1
- Windows XP
C:\Documents and Settings\LoginName\Start Menu\Programs\Startup
の場合RunOnce 現在のユーザーキー
- これらのキーは、主にセットアッププログラムで使用するように設計されています
- これらのキーのエントリは一度起動され、その後、キーから削除されます
- キーの値の前に感嘆符がある場合、プログラムが完了するまでそのエントリは削除されず、そうでなければプログラムが実行される前に削除されます。感嘆符が使用されておらず、このキーで参照されているプログラムが完了しなかった場合、すでに削除されているため、再度実行されることはありません
- セーフモードのWindows 2000およびWindows XPでは、RunOnceキーは無視されます
- Windows NT 3.51ではRunOnceキーはサポートされていません
レジストリキー
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
Explorer Run
- これらのキーは一般的に、コンピュータまたはユーザーに設定されたポリシーの一部としてプログラムをロードするために使用されます
レジストリキー
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
Load Key
- このキーはもう一般的には使われていませんが、プログラムの自動起動に使うことができます
レジストリキー
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows\load
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をロードします
ShellServiceObjectDelayLoad
- このレジストリ値には、Runキーと同様の方法で値が含まれています
- 違いは、ファイル自体を指すのではなく、使用されている特定のDLLファイルに関する情報を含むCLSIDのInProcServerを指していることです
- このキーの下にあるファイルは、コンピュータの起動時にExplorer.exeによって自動的に読み込まれます。Explorer.exeはコンピュータのシェルであるため、常に起動し、このキーの下にあるファイルが常にロードされます。したがって、これらのファイルは、人為的な介入が発生する前に、起動プロセスの早い段階で読み込まれます
レジストリキー
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ShellServiceObjectDelayLoad
SharedTaskScheduler
- このセクションでは、XP、NT、2000のマシンで共有タスクスケジューラーのレジストリ値を通して読み込まれるファイルに対応しています
- このレジストリ値のエントリは、windowsの起動時に自動的に実行されます
レジストリキー
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\SharedTaskScheduler
Miscellaneous
以下は、起動時にプログラムが自動起動できるファイルです
- c:\autoexec.bat
- c:\config.sys
- windirwinwininit.ini – 通常、ファイルを一度実行してから削除するためのセットアッププログラムで使用されます
- windir\winstart.bat
- windirwin.ini – [windows] “load”
- windirwin.ini – [windows] “run”
- windirsystem.ini – [boot] “shell”
- windirsystem.ini – [boot] “scrnsave.exe”
- windirdosstart.bat – あなたがシャットダウンメニューで “Restart in MS-DOS mode “を選択したときにWin95または98で使用されます
- windir\system\autoexec.nt
- 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