Where do the majority of anti-virus programs start from at OS boot time?
after installing Avast and checking in both my "Run" registry key and my "Startup" folder that a startup entry wasn't present in either location.
There are many other start up locations you need to check (see later).
Many antivirus programs (including Avast) are started as a Windows service, which enables them to be up and running very early in the start up process so providing maximum protection:
![enter image description here](../../I/static/images/2bf76744cd819275a3cddcdaaf385e3daeeeea9c41a2860dd9156313eb03990a.png)
The Avast GUI (which includes the system tray icon) is started from HKLM\Software\Microsoft\Windows\CurrentVersion\Run
:
![enter image description here](../../I/static/images/3127f892daf081e41cc62522d7b3cd551226ae6612f3f79b666aeb670484294d.png)
There are many locations that can be used to run programs on startup. You need to check them all until you find the program you are looking for.
There are a few programs that allow easy checking of the startup locations.
msconfig (Startup tab):
![enter image description here](../../I/static/images/2150bae315c74e686baebfea374b4f9d536ceff487eeff80eecfaf3445c39236.png)
Autoruns from SysInternals:
![enter image description here](../../I/static/images/1686b199715bd8bb743690baf2dc80c7dc1cafca144bda40518af9100c0062c3.png)
WhatInStartup from NirSoft:
![enter image description here](../../I/static/images/de8b7db46a047b24877c18dae175a87cafe294c43db95272fe0b789c8dcb8243.png)
WinPatrol:
![enter image description here](../../I/static/images/1d0e9f1c740b43f9110f5ccbfbbb1158514ff063cdf5d854571b9341f2becc96.png)
Note:
- WinPatrol allows you to move programs from "Startup Programs" to "Delayed Start"
- You can specify the delay time if you do this.
]12
How many ways are there for a program to be run at Startup in Windows?
There are at least 17 locations from where programs can be started. See below.
Windows Program Automatic Startup Locations
Upon turning on the computer the following autostart locations are
processed in the following order:
Windows Boot Device Drivers
- These drivers are loaded first as they are required for the proper operation of hardware such as storage devices.
- Boot device drivers will be located under the following key and have a Start value equal to 0.
Registry Keys:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services
Windows will now perform various tasks and then start the Winlogon
process. Winlogon eventually starts the service control manager that
loads services and drivers that are set for auto-start.
Windows Auto-start Services & Drivers
- The Service Control Manager (SCM) process (\Windows\System32\services.exe), will now launch any services or
drivers that are marked with a Start value of 2.
Registry Keys:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services
RunServicesOnce
- This key is designed to start services when a computer boots up.
- These entries can also continue running even after you log on, but must be completed before the HKEY_LOCAL_MACHINE...\RunOnce registry
can start loading its programs.
Registry Keys:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
RunServices
- This key is designed to start services as well.
- These entries can also continue running even after you log on, but must be completed before the HKEY_LOCAL_MACHINE...\RunOnce registry
can start loading its programs.
Registry Keys:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices
The Windows logon prompt is shown on the Screen. After a user logs in
the rest of the keys continue.
Notify
- This key is used to add a program that will run when a particular event occurs.
- Events include logon, logoff, startup, shutdown, startscreensaver, and stopscreensaver.
- When Winlogon.exe generates an event such as the ones listed, Windows will look in the Notify registry key for a DLL that will
handle this event.
- Malware has been known to use this method to load itself when a user logs on to their computer. Loading in such a way allows the
malware program to load in such a way that it is not easy to stop.
Registry Key:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify
UserInit Key
- This key specifies what program should be launched right after a user logs into Windows.
- The default program for this key is C:\windows\system32\userinit.exe. Userinit.exe is a program that
restores your profile, fonts, colors, etc for your user name.
It is possible to add further programs that will launch from this key by separating the programs with a comma. For example:
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit
=C:\windows\system32\userinit.exe,c:\windows\badprogram.exe.
This will make both programs launch when you log in and is a common
place for trojans, hijackers, and spyware to launch from.
Registry Key:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit
Shell Value
- This value contains a list of comma separated values that Userinit.exe will launch.
- The default shell for Windows is explorer.exe, though there are legitimate replacements that have been made. When userinit.exe starts
the shell, it will first launch the Shell value found in
HKEY_CURRENT_USER. If this value is not present, it will then launch
the value found in HKEY_LOCAL_MACHINE.
Registry Key:
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\\Shell
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\\Shell
The rest of the Autostart locations will now be processed.
RunOnce Local Machine Key
- These keys are designed to be used primarily by Setup programs.
- Entries in these keys are started once and then are deleted from the key.
- If there is an- exclamation point preceding the value of the key, the entry will not be deleted until after the program completes,
otherwise it will be deleted before the program runs. This is
important, because if the exclamation point is not used, and the
program referenced in this key fails to complete, it will not run
again as it will have already been deleted.
- All entries in this key are started synchronously in an undefined order.
- Due to this, all programs in this key must be finished before any entries in HKEY_LOCAL_MACHINE...\Run, HKEY_CURRENT_USER...\Run,
HKEY_CURRENT_USER...\RunOnce, and Startup Folders can be loaded.
- The RunOnce keys are ignored under Windows 2000 and Windows XP in Safe Mode. The RunOnce keys are not supported by Windows NT 3.51.
Registry Keys:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnceEx
Run
- These are the most common startup locations for programs to install auto start from.
- By default these keys are not executed in Safe mode. If you prefix the value of these keys with an asterisk, *, it will run in Safe Mode.
Registry Keys:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
All Users Startup Folder
- For Windows XP, 2000, and NT, this folder is used for programs that should be auto started for all users who will login to this computer.
It is generally found at:
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
User Profile Startup Folder
- This folder will be executed for the particular user who logs in.
This folder is usually found in:
- Win 9X, ME
c:\windows\start menu\programs\startup
- Windows XP
C:\Documents and Settings\LoginName\Start Menu\Programs\Startup
RunOnce Current User Key
- These keys are designed to be used primarily by Setup programs.
- Entries in these keys are started once and then are deleted from the key.
- If there is an exclamation point preceding the value of the key, the entry will not be deleted until after the program completes,
otherwise it will be deleted before the program runs. This is
important, because if the exclamation point is not used, and the
program referenced in this key fails to complete, it will not run
again as it will have already been deleted.
- The RunOnce keys are ignored under Windows 2000 and Windows XP in Safe Mode.
- The RunOnce keys are not supported by Windows NT 3.51.
Registry Key:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
Explorer Run
- These keys are generally used to load programs as part of a policy set in place on the computer or user.
Registry Keys:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
Load Key
- This key is not commonly used anymore, but can be used to auto start programs.
Registry Key:
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows\load
AppInit_DLLs
- This value corresponds to files being loaded through the AppInit_DLLs Registry value.
- The AppInit_DLLs registry value contains a list of dlls that will be loaded when user32.dll is loaded.
- As most Windows executables use the user32.dll, that means that any DLL that is listed in the AppInit_DLLs registry key will be loaded
also. This makes it very difficult to remove the DLL as it will be
loaded within multiple processes, some of which can not be stopped
without causing system instability.
- The user32.dll file is also used by processes that are automatically started by the system when you log on. This means that
the files loaded in the AppInit_DLLs value will be loaded very early
in the Windows startup routine allowing the DLL to hide itself or
protect itself before we have access to the system.
Registry Key:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows
HelpingHand pointed out that on 64-bit computers, there are 2 locations:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows
which references 64-bit DLLs and
HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion\Windows
which references 32-bit DLLs.
64-bit processes load the 64-bit DLLs and 32-bit processes load the 32-bit DLLs.
ShellServiceObjectDelayLoad
- This Registry value contains values in a similar way as the Run key does.
- The difference is that instead of pointing to the file itself, it points to the CLSID's InProcServer, which contains the information
about the particular DLL file that is being used.
- The files under this key are loaded automatically by Explorer.exe when your computer starts. Because Explorer.exe is the shell for your
computer, it will always start, thus always loading the files under
this key. These files are therefore loaded early in the startup
process before any human intervention occurs.
Registry Key:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ShellServiceObjectDelayLoad
SharedTaskScheduler
- This section corresponds to files being loaded through the SharedTaskScheduler registry value for XP, NT, 2000 machines.
- The entries in this registry value run automatically when you start windows.
Registry Key:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\SharedTaskScheduler
Miscellaneous
The following are files that programs can autostart from on bootup:
- c:\autoexec.bat
- c:\config.sys
- windir\wininit.ini - Usually used by setup programs to have a file run once and then get deleted.
- windir\winstart.bat
- windir\win.ini - [windows] "load"
- windir\win.ini - [windows] "run"
- windir\system.ini - [boot] "shell"
- windir\system.ini - [boot] "scrnsave.exe"
- windir\dosstart.bat - Used in Win95 or 98 when you select the "Restart in MS-DOS mode" in the shutdown menu.
- windir\system\autoexec.nt
- windir\system\config.nt
Source Windows Program Automatic Startup Locations
Disclaimer
I am not affiliated with SysInternals, Nirsoft or WinPatrol in any way, I am just an end user of the software.
4What boot "time" are you actually referring to, directly after the boot loader or when you see the black screen (or not) just before the login screen appears? This is a very important distinction. The "directly after boot loader" approach is done with drivers and happens before windows even loads (e.g. rebooting your pc to remove viruses that can't be removed while windows is running). – Gizmo – 2019-03-13T10:37:09.557
1
Typically the on-access drivers are filter drivers (devices). There is also a new function for early launch malware detection called ELAM https://docs.microsoft.com/en-us/windows-hardware/drivers/install/elam-prerequisites. Besides that normal Autorun, services and explorer extensions are used mostly for UI and supporting stuff like refreshing signatures and drivers. Behavior detection often works by injecting dlls.
– eckes – 2019-03-13T23:15:06.937