На данном этапе развития спамерской и вирусной всевозрастающей деятельности, для авторов такого рода программ огромное влияние играет постоянное присутствие их вредоносного кода в системе. Для того, чтобы эти программы постоянно присутствовали в системе им жизненно необходим реестр Windows. Используя реестр в качестве отправной точки для запуска, все вредоносные программы стартуют в системе именно оттуда. Пользователь остается практически незащищенным перед такой опасностью, потому как в реестре существует очень много мест для запуска на всех этапах загрузки операционной системы.
Однако, знание мест откуда может стартовать тот или иной код, работающий как в режиме пользователя, так и в режиме ядра может пригодиться не только для удаления вредоносных программ, но также и для исключения из загрузки сторонних драйверов и служб, загружаемых как на ранних, так и поздних этапах загрузки системы.
Итак, начнем.
В системном реестре автозагрузка представлена в разделах:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\
Run - программы, которые запускаются при входе пользователя в систему (для текущего пользователя). (Windows 98, 2000, XP)
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\
RunOnce - программы, которые запускаются только один раз при входе пользователя в систему. После этого ключи программ автоматически удаляются из данного раздела реестра. (Windows 98, 2000, XP)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\
CurrentVersion\Run - программы, которые запускаются при входе в систему. Данный раздел отвечает за запуск программ для всех пользователей системы. (Windows 98, 2000, XP)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\
CurrentVersion\
RunOnce - программы, которые запускаются только один раз при входе пользователя в систему. После этого параметры программ автоматически удаляются из данного раздела. Этот раздел отвечает за запуск программ для всех пользователей системы. (Windows 98, 2000, XP)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\
CurrentVersion\RunOnceEx - программы, которые запускаются только один раз, при загрузке системы. После этого ключи программ автоматически удаляются из данного раздела реестра. Данный раздел отвечает за запуск программ для всех пользователей системы. (Windows 98, 2000, XP)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\
CurrentVersion\RunServices-, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\
CurrentVersion\RunServices - службы, которые загружаются при входе пользователя в Windows. (Windows 98)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\
CurrentVersion\ RunServicesOnce - службы, которые загружаются один раз при загрузке системы. (Windows 98)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services – раздел содержит подразделы с названиями драйверов и служб, которые могут загружаться на любой стадии загрузки Windows 2000, XP. То, на каком этапе загрузки ОС будет загружен драйвер или служба отвечает параметр Start типа DWORD. Параметр Start может принимать значения:
0х0 – такое значение имеют низкоуровневые драйверы, например драйверы дисков, которые загружаются на самом раннем этапе загрузки – загрузки ядра. В случае, если какой – либо драйвер, имеющий данное значение, не был загружен система автоматически перезагружается. За загрузку драйверов, имеющих такое значение отвечает загрузчик ОС.
0х1 – данное значение имеют драйверы, которые загружаются и инициализируются после инициализации ядра ОС. В отличие от драйверов со значением параметра Start 0х0, драйверы устройств со значением 0х1 загружаются не за счет вызовов BIOS, а с помощью драйверов устройств, загруженных на стадии загрузки ядра и только что инициализированных на этой стадии.
0х2 – данное значение имеют драйверы или службы, которые должны быть загружены SCM (Диспетчером Управления Сервисами).
0х3 – данное значение имеют драйверы или службы, запускаемые Диспетчером Управления Сервисами, только в случае получения явной инструкции на загрузку.
0х4 - такое значение имеют драйверы или службы, которые не загружаются. Windows 2000, XP устанавливают в этот режим драйверы устройств в случае невозможности их загрузки SCM. Исключение составляют лишь драйверы файловых систем, которые загружаются, даже при установленном значении Start в 0х4.
Знание вышеописанных разделов необходимо при сбое системы и невозможности ее загрузки в обычном режиме, так как в таком случае ОС можно загрузить в безопасном режиме и отредактировать соответствующие разделы системного реестра или запустить утилиту конфигурирования системы MSConfig, входящую в поставку ОС. Однако, что делать если ОС не загружается и с минимальным, жизненно необходимым набором драйверов и служб, т. е. в безопасном режиме? Если это стало происходить после установки драйвера или программы, тогда стоит посмотреть список драйверов и служб, загружаемых в безопасном режиме, и проверить нет ли там драйверов от сторонних разработчиков. Эту информацию можно найти в разделе HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\
SafeBoot
Значит можно загрузиться с boot-дискеты MS-DOS, скопировать файлы отвечающие за реестр и отредактировать данный раздел на другом компьютере.
В системах Windows 9x еще одним местом запуска кода может служить раздел
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VxD. Как видно из названия, из данного раздела загружаются виртуальные драйверы. В Windows 2000/XP программы может запускать Диспетчера Сеансов на этапе своей загрузки. Соответствующий раздел:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\
Session Manager
параметр: BootExecute.
Но вышеописанные способы не единственные для управления автозагрузкой. В Windows 2000 для добавления программ в автозапуск можно воспользоваться Microsoft Management Console (MMC). В частности, через MMC можно отключать автозагрузку программ или подключать необходимые программы. Для этого: откройте оснастку «Групповая политика» в Windows 2000, перейдите на вкладку «Конфигурация компьютера - Административные шаблоны – Система». В правой части оснастки перейдите на пункт «Запускать указанные программы при входе в систему». По умолчанию эта политика не задана, но вы можете добавить туда программу следующим способом: включаем политику, нажимаем кнопку «Показать – Добавить», указываем путь к программе, при этом если запускаемая программа находится в папке ..WINDOWS\System32\ то можно указать только название программы, иначе придется указать полный путь к программе. При этом в системном реестре в разделе
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\
CurrentVersion\Policies создастся подраздел \Explorer\Run с ключами добавленных программ.
Для задания программ автозапуска только для текущего пользователя создайте разделы Explorer\Run в ветви
HKEY_CURRENT_USER\Software\Microsoft\Windows\
CurrentVersion\Policies
При этом программы из этого списка не отображаются в списке программ доступных для отключения в MSConfig.exe, а также определяются не всеми менеджерами автозагрузки. Еще один тип автозагрузки – автозагрузка из особого списка –
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows
параметры:
load=«программа» – программы, запускаемые до входа пользователя в систему:
run=«программа» – программы, запускаемые после входа пользователя в систему.
Эти параметры - аналог автозагрузки из Win.ini в Windows 98.
Для того, чтобы игнорировать списки автозагрузки программ выполняемых однажды проделайте: групповая политика: «Конфигурация компьютера - Административные шаблоны - Система - Не обрабатывать список автозапуска программ, выполняемых однажды», если эту политику включить, то не будут запускаться программы, запускаемые из списка
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\
CurrentVersion\RunOnce
Если эта политика включена, в реестре создается следующий параметр:
HKEY_LOCAL_MACHINE\ SOFTWARE\Microsoft\Windows\CurrentVersion\
policies\Explorer
DisableLocalMachineRunOnce значение 1, тип DWORD.
Для отключения автозагрузки следует открыть запись «Отключить автозапуск» и отключить автозагрузку.
Аналогично настраивается политика для текущих пользователей: «Конфигурация пользователя - Административные шаблоны - Система - Не обрабатывать список автозапуска программ, выполняемых однажды». Параметры реестра:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\
CurrentVersion\ policies\Explorer
DisableLocalUserRunOnce значение 1, тип DWORD.
Одним из самых стандартных способов управления автозагрузкой – папка «Автозагрузка», в которой хранятся ярлыки к программам, которые запускаются после успешной регистрации пользователя в системе. Ярлыки в эту папку могут добавляться программами при их установке или пользователем самостоятельно. Существует две папки: общая - для всех пользователей и индивидуальная - для текущего пользователя. По умолчанию эти папки находятся в следующих директориях:
ROOT\Documents and Settings\All Users\Главное меню\Программы\Автозагрузка - папка, программы из которой будут запускаться для всех пользователей ОС.
ROOT\Documents and Settings\Username\Главное меню\Программы\Автозагрузка - это папка, программы из которой будут запускаться для текущего пользователя (Username – текущий пользователь). Таким образом для автоматического запуска программы после успешной регистрации пользователя в системе нужно создать ярлык к программе и поместить его в одну из вышеперечисленных папок. Следует также отметить, что если при входе пользователя в систему он зажмет клавишу Shift, то программы из папок для автозагрузки загружаться не будут.
Системный реестр не является единственным местом конфигурирования и администрирования автозагрузки программ. Автозагрузка также представлена в конфигурационных файлах ОС – Win.ini, System.ini. Разберем блоки этих файлов, откуда могут загружаться программы.
В файле Win.ini в Windows 98 автозагрузка представлена в блоке windows. Для этого определены два параметра «load» и «run». Значения этих параметров – файлы, которые должны загружаться при загрузке ОС. Если нужно указать несколько программ, то они перечисляются через запятую. Пробелы в именах файлов не допускаются. По умолчанию эти параметры содержат значения пустых строк. Загрузка программы происходит после успешной регистрации пользователя в системе. Пусть, например, нужно, чтобы автоматически загружалась программа msconfig из системного раздела с ОС. Тогда значение параметра load с пустой строки изменится на с:\Windows\System\msconfig.exe, т. е.
load=с:\Windows\System\msconfig.exe.