Обнаружение вируса

Метки:  , , , , , , , , ,

Идея написания сводного руководства по самостоятельному обнаружению вирусов на станциях под управлением Windows вынашивалась на протяжении достаточно длительного времени и обуславливалась, прежде всего необходимостью составить и время от времени дополнять справочник возможных расположений запуска вирусного кода в системе Windows. Лейтмотивом этой идеи является необходимость непосредственного, самостоятельного (ручного) анализа системы в случаях, когда имеется подозрение, что автоматические методы (утилиты/антивирусы), не в состоянии обнаружить работающий в системе вредоносный код. Обнаружение вируса собственными силами - вот тот уровень, который не будет лишним для любого технического специалиста по операционным систем Windows. Хотелось бы сделать небольшое отступление и пару слов сказать на счет антивирусов. Надо заметить, что эти, самые надежные по мнению большинства, помощники в борьбе с вредоносным кодом, вообще-то не всегда являются панацеей от заражения операционной системы. Повидавшая виды практика помнит случаи, когда грамотно написанный вредоносный код, учитывающий аналитические особенности определенных региональных антивирусов, долгое время оставался незамеченным на критически важных корпоративных системах. В этом то и заключается парадокс с зараженной системой, в которой установлен авторитетный антивирус с актуальными антивирусными базами. Подобный курьез говорит о том, что если вирус использует хотя бы мало-мальски оригинальный код, методы маскировки, различные виды упаковок, алгоритмы противодействия, то антивирусу бывает сложно обнаружить его, либо он не может деактивировать и удалить уже работающий вредоносный код, и это не смотря на продвинутые методы эвристического анализа, контроль системы с перехватом различных системных вызовов и прочие глубокие системные методы. Подобных доводов можно привести множество, но все они сводятся к одному единственному выводу.

Невозможно обеспечить 100% антивирусную защиту автоматизированными средствами.

И именно в свете сего немаловажного обстоятельства, в критические моменты встает необходимость уметь собственноручно обнаруживать и удалять вредоносный код, и именно поэтому данная статья будет посвящена изложению методов обнаружения без использования каких-либо антивирусных средств, исключением у нас будут, разве что, небольшие сопутствующие утилиты.
"Все течет, все меняется" (© Гераклит), и операционные системы из этого постулата не исключение. На протяжении всей истории развития операционных систем Windows, идет их постоянное видоизменение, одни системные механизмы перестают эксплуатироваться, долгое время присутствуя в системе в виде рудиментов совместимости и в последствии исчезая, другие же появляются. Происходит бесконечное движение, вирусописатели подстраиваются под эволюционирующую среду, переписывая код, использующий устаревающие механизмы, начинают искать и эксплуатировать другие, обретающие актуальность. Учитывая меняющиеся от версии к версии особенности операционных систем и достаточно большое количество потенциальных точек активации вредоносного кода, статья эта никогда не будет завершена полностью и конечно же не будет претендовать на полное руководство по выбранной тематике. Однако, по мере получения новых знаний, будет время от времени мною дорабатываться в бесконечной попытке соответствовать современным реалиям.
Перед тем как мы начнем раскрывать довольно сложную тему под названием обнаружение вируса, хотелось бы отдельно сказать вот еще о чем.

Во избежание разночтения и неправильного трактования некоторых моих выражений, под понятием вирус в данной статье будет подразумеваться любой вид вредоносного кода.

Дело в том, что с момента зарождения эры компьютерных вирусов, специалистами по безопасности было введено в оборот такое великое многообразие терминов и определений, что классификация в рамках небольшой статьи выглядела бы, откровенно говоря, излишней, учитывая и тот факт, что в свете характера статьи для нам фактически не важно, как зовется та или иная разновидность вредоносного кода. В разнообразных материалах, посвященных теме компьютерных вирусов, встречаются оригинальные определения, специалисты по безопасности называют программное обеспечение, которое выполняет деструктивные действия различными именами. На заре операционной системы MS-DOS вирусами называли программы, которые реплицировали собственный код в обнаруживаемые исполняемые модули и загрузочный сектор. С появлением линейки операционных систем Windows, вредоносный код обрел истинное многообразие, на свет появилось большое количество всевозможных алгоритмических отклонений, таких как руткиты, трояны, спайвар, адвар, рансомвар, сетевые черви и прочее, прочее, прочее. И все эти вариации на вирусную тему имеют различное предназначение. Часто термины ассоциируются неправильно, и вещи называются не своими именами, в дополнение, ко всему этому многообразию применяются второстепенные термины, такие как вредоносный код, зловред, вредонос. Поэтому, дабы не вводить читателя в заблуждение, я буду использовать определение "вирус" применительно к любому вредоносному коду, поэтому встречая в тексте термин вирус, подразумеваем любой вид вредоносного кода.
По каким косвенным признакам пользователь может обнаружить вирус в операционной системе? Дело в том, что какого-то единого, вполне определенного и однозначного симптома заражения системы вирусом не существует, однако общими следствиями вирусной активности могут быть:

  • Низкая производительность операционной системы;
  • Низкая производительность отдельных приложений;
  • Часто возникающие ошибки в приложениях;
  • Отображение посторонних информационных окон;
  • Блокировка рабочего стола пользователя различными информационными окнами;
  • Блокировка страницы (вкладки) браузера различными информационными окнами;
  • Блокировка доступа к различным сайта в сети Интернет (например, к сайтам антивирусных лабораторий);
  • Автоматический запуск различных программ;
  • Отказ в изменении некоторых настроек операционной системы (даже под учетной записью локального администратора);
  • Загруженная сеть, наличие интенсивного трафика на интерфейсах в моменты бездействия;
  • Иная подозрительная активность операционной системы;

Внимательно изучив описанные выше первичные признаки, можно сделать однозначный вывод что зачастую довольно сложно отличить вирусную активность от типовых сбоев, вызванных аппаратными и программными проблемами. Обычно в случае подозрения на аномальную активность, пользователь прибегает к помощи антивирусов, но что же делать ему в ситуации, когда работающий антивирус при сканировании не может детектировать в системе никакой вирусной активности, а глюки сохраняются и подозрение на вирус остается?! В этом случае можно попробовать переустановить операционную систему, выбор безусловно за Вами, но в этом случае Вы теряете уникальную возможность саморазвития, не получаете дополнительных знаний по компьютерным вирусам, исключаете возможность обнаружить новые виды вирусной активности. Может все же стоит попробовать "пройти по системе" самостоятельно с целью обнаружения вируса, изучив возможные местоположения запуска и модификации?
Для начала, требуется усвоить одно простое правильно.

Компьютерный вирус - это блок кода, выполняющий несанкционированные действия, чаще всего сохраняющий свое тело в качестве отдельного файла в файловую систему и/или модифицирующий определенным образом системный реестр, загрузочный сектор диска/раздела либо различные конфигурационные файлы.

Большинство вирусов рассчитаны на многократное применение, поэтому должны оставлять свою копию в файловой системе в виде отдельного файла (группы файлов), чтобы иметь возможность автоматически запускаться многократно. Применительно к операционной системе Windows, вирус представляется обычно в виде отдельного файла с расширением, идентифицирующим исполняемый различными подсистемами ядра и приложениями пользовательского режима код, вот некоторые из этих расширений: .exe, .dll, .sys, .ocx, .js, .ps1, .wht, .com, .bat, .vbs и прч. Некоторые вирусы, активизирующиеся в системе, не оставляют свои запускаемые копии, а просто проводят модификации определенных ключей реестра или ключевых конфигурационных файлов с целью решения собственных задач. Следуя этой логике, в целях обнаружения вируса, мы будем искать наличие подозрительных данных в физических секторах диска, файловой системе, реестре и оперативной памяти. Но ведь не придется же нам парсить полностью все эти компоненты в поисках вирусного кода? Хотя идея и неплоха :) но конечно же нет, мы будем пытаться обнаружить вирус в строго предопределенных местах: в тех расположениях в операционной системе, откуда, по задумке разработчиков, средствами самой системы могут запускаться различные исполняемые модули и где могут находиться важные для системы данные в виде файлов конфигурации различного назначения. Не лишним будет и умение отличать вирусный код от легального, знание о том, какие именно данные являются вполне безобидными, а какие из них подозрительны, то есть с большой вероятностью могут представлять вредоносный код.
Еще одним немаловажным аспектом является наличие сторонней среды, то есть операционной системы, заведомо чистой от различного рода вирусов. Делается это с тем расчетом, что некоторые особо продвинутые вирусы могут маскировать свою активность в системе, перехватывая вызовы различных функций Windows API. Поэтому, с целью получения чистой тестовой среды, мы можем:

  • Запуститься в обычном режиме загрузки под учетной записью с правами локального администратора.
  • Загрузиться в защищенный режим; Большинство вирусов в защищенном режиме не запускаются.
  • Загрузиться с внешнего диска LiveCD, содержащего операционную систему Windows PE (Portable Executable), в состав которой входят средства работы с физическими секторами диска, файловой системой и системным реестром.

Сокращения, используемые далее в данной статье:

Сокращение Полное наименование
HKCR HKEY_CLASSES_ROOT
HKCU HKEY_CURRENT_USER
HKLM HKEY_LOCAL_MACHINE
HCU HKEY_USERS

В статье я постарался свести максимальное количество известных мне методов загрузки вирусов в операционной системе Windows.

Автозагрузка

Конечно же, первое по популярности расположение в операционной системе это автозагрузка. Автозагрузка - специализированное расположение в операционной системе, описываемое соответствующими ключами реестра а так же определенными каталогами в файловой системе, которое предназначается для автоматической загрузки исполняемых модулей на этапе загрузки операционной системы. Большой процент вирусов пытается прописать себя именно в автозагрузку методом модификации соответствующих ключей и расположений. Поэтому, для того, чтобы обнаружить вирус, достаточно пристально изучить списки программ, загружающихся с помощью данного системного механизма.

Автозагрузка в реестре

  • HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
    Определяет общесистемную ветку реестра, содержащую записи о программам, запускаемых при входе в систему любого пользователя.
  • HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
    Определяет пользовательскую ветку реестра, содержащую записи о программах, запускаемых при входе в систему конкретного пользователя.
  • HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run
    Определяет общесистемную ветку реестра, содержащую записи о 32-битных программах, загружаемых при входе в 64-битную систему любого пользователя.
  • HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
    Определяет общесистемную ветку реестра, содержащие записи о программам, запускаемых при входе в систему разово, то есть единожды. После единственного запуска ключи программ автоматически удаляются операционной системой из данного раздела.
  • HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
    Определяет ветку реестра конкретного пользователя, содержащую записи о программах, запускаемых при входе в систему конкретного пользователя разово, то есть единожды. После единственного запуска ключи программ автоматически удаляются операционной системой из данного раздела.
  • HKEY_USERS\SID_пользователя\Software\Microsoft\Windows\CurrentVersion\Run
    Содержит копию основной ветви автозагрузки для пользователя системы, определяемого конкретным SID-идентификатором. Например HKEY_USERS\S-1-5-21-792320725-696519568-570327587-7793\Software\Microsoft\Windows\CurrentVersion\Run. Если Вы проверяете систему из защищенного режима, либо с LiveCD, то не поленитесь проверить данный раздел для SID пользователя, который, предположительно, подхватил заразу.

Windows 98/98SE/ME:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServicesOnce
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServicesOnce
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx

Автозагрузка в файловой системе

Однако, автозагрузка вовсе не ограничивается ключами реестра. Как мы все прекрасно знаем, в Windows существует еще один (пожалуй основной) способ автоматически загрузить программу при старте операционной системы. В интерфейсе пользователя присутствует раздел Автозагрузка, который аккумулирует списки программ из специализированных расположений в файловой системе: каталогов с именем Startup в профиле конкретного пользователя и профиле пользователя по-умолчанию. Помещая в это расположение ярлык программы либо непосредственно саму программу, можно легко добиться автозагрузки программы на стадии запуска. Меня всегда вот удивляло, почему нельзя универсализировать механизмы реестровой автозагрузки и пользовательской и объединить их? Почему в Windows присутствует именно несколько различных методов загрузки, мало того, что представлены специальные ветви реестра, так еще и создали каталоги? Потом, немного поразмыслив, понял, что механизм с реестром позиционируется как системный, а механизм с автозагрузкой как пользовательский, чтобы пользователю можно было тривиально легко, в два клика обеспечить своему приложению автозапуск. Представляете, чтобы было, если бы эти механизмы были объединены? Пользователь видел бы все специализированные утилиты, которые загружаются при старте и мог бы [не]преднамеренно "вывести их из строя". К тому же, не каждая программа способна загрузиться через ключи реестра. Резонно, но и существующий на данный момент механизм далек от идеала, надеюсь, что в будущих версиях мы увидим более изящный способ единой точки автозагрузки без необходимости городить огород.
Конечно же, и этот механизм не смог обойтись без внимания вирусов, и некоторые вирусы используют механизм автозагрузки из каталога для добавления своих исполняемых модулей при первичном получении управления собственным кодом. Поэтому специалисту не лишним будет проверить следующие местоположения:

Версия Размещение
Windows Vista/7 Для текущего пользователя: %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup
Для всех пользователей системы: %ProgramData%\Microsoft\Windows\Start Menu\Programs\Startup
Windows 2000/XP Для текущего пользователя: %UserProfile%\Start Menu\Programs
Для всех пользователей системы: %AllUsersProfile%\Start Menu\Programs

Однако описанные местоположения могут быть изменены через ключи реестра.
Для всех пользователей системы:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
параметр Common Startup = %ProgramData%\Microsoft\Windows\Start Menu\Programs\Startup
Для текущего пользователя системы:
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
параметр Startup = %USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
Поэтому стоит иногда заглядывать в упомянутые ключи с целью проверки корректных значений установленных путей как составляющей общей стратегии по обнаружению вируса.

Автозагрузка с использование групповой политики

В системе присутствуют ключи реестра, которые используются для загрузки программ как части групповой политики компьютера или групповой политики пользователя. Если политики не заданы, что обычно имеет место быть в случае штатной домашней станции, то подраздел обычно пуст. Записи в нем создаются только по определенным условиям, например при использовании локальной или доменной групповой политики для загрузки программ. Программы из списка автозагрузки с использованием групповой политики не отображаются во вкладке Автозагрузка в утилите msconfig.exe, могу предположить что и другие менеджеры автозагрузки могут не отображать эти записи, по этой то причине с целью обнаружения вируса, стоит взглянуть самостоятельно на следующие ключи реестра:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run

Загрузка на ранних стадиях

По задумке разработчиков некоторые сервисные утилиты, к примеру дефрагментаторы, программы проверки дисков, антивирусные сканеры, должны запускаться на раннем этапе процесса загрузки Windows, когда стартовали драйвера этапа загрузки (BOOT_START) и этапа системы (SYSTEM_START), но еще не инициализирован файл подкачки и переменные среды. В данной точке Диспетчер сеансов (Session Manager, smss.exe) только начинает разбирать переменные окружения пользовательского режима, поэтому никаких других программ, понятное дело, не запущено. Однако, на данном этапе возможен запуск только специально написанных образов, поддерживающих нативный (native) режим.
Загрузка через Диспетчер сеансов настраивается в ключе реестра:
HKLM\System\CurrentControlSet\Control\Session Manager
параметр BootExecute = autocheck autochk *
Если в данном параметре Вы обнаружили дополнительные образы загрузки, присмотритесь к ним внимательнее, а что если это вирус? Только не удаляйте значение по умолчанию (autocheck autochk *), оно указывает на запуск утилиты проверки диска autochk с модификатором autocheck, которая проверяет значение грязного бита (dirty bit), сообщающего о необходимости проверки раздела диска на наличие ошибок.

Hosts

Файл hosts - это системный текстовый файл, содержащий локальную базу доменных имен, используемую системой в процессе сопоставления имени хоста с IP-адресом и предназначающуюся для обеспечения возможности пользовательской настройки адресов отдельных узлов сети. Его еще можно назвать своеобразным локальным DNS-сервером. Если вдруг у пользователя или какой-нибудь программы появится необходимость привязать имя example.com к IP-адресу A.B.C.D, то он сможет это сделать именно благодаря исправлению файла hosts. Запрос к записям из файла hosts имеет приоритет перед обращением к прописанным в системе DNS-серверам, что является немаловажным фактором. Надо ли объяснять, что для вирусов это достаточно интересная точка редиректа трафика и модификация файла вирусом может привести к подмене адреса определенного доверенного узла. Существует категория вирусов, которая модифицирует файл hosts для перенаправления запросов на фишинговые (поддельные) сайты, в точности эмитирующие страницы оригинальных сайтов [социальных сетей] с целью кражи паролей учетных записей, показа рекламных страниц, либо просто с целью блокировки доступа к определенным ресурсам. Поэтому, обнаружение в файле hosts сторонних записей может свидетельствовать о наличии в системе вредоносного кода, либо о разовой модификации записей вредоносным кодом, что может указывать на существование в системе серьезной уязвимости безопасности. Файл hosts по-умолчанию размещается в папке %SystemRoot%\System32\Drivers\etc\
Оригинальный файл hosts выглядит следующим образом:

Видите, все закоментировано! В Windows 7 в файле hosts нет и одной реальной записи, одни примеры использования. В предыдущих версиях Windows правильный файл может содержать лишь записи об интерфейсе локальной петли (localhost), но не более.
А вот как выглядит модифицированный вирусом тот же файл hosts:

Можно увидеть, что доменные имена крупных российских социальных сетей перенаправлены на некий неизвестный хост 1.2.3.4. Поэтому, если Вы обнаружили в файле hosts подозрительные записи, которых Вы уж точно не добавляли, то можете их удалять. Однако, в случае, если они через некоторое время появляются вновь, можно говорить о наличии в системе активного вируса, одним из функциональных особенностей которого является периодическое обновление файла. Поскольку это не место загрузки вируса, а место модификации, то надо сперва обнаружить в системе сам активный код вируса и устранить причину, а затем уже следствие.
В дополнение ко всему, само местоположение файла hosts в рамках системы может быть подвергнуто атаке и изменено. Задается оно соответствующим параметром в ветви реестра:
HKLM\System\CurrentControlSet\Services\Tcpip\Parameters
параметр DatabasePath имеет значение по умолчанию %SystemRoot%\System32\drivers\etc, но вредоносный код, получивший привилегии локального администратора, может изменить значение параметра на свое собственное, ссылающееся совершенно в другое местоположение файловой системы. Обязательно проверьте данный параметр, и если Вы обнаружите в параметре DatabasePath что-либо отличное от вышеуказанного значения, то стоит заменить значение на базовое.

DNS

DNS (Domain Name System) - распределенная система доменных имен, которая используется для получения IP-адреса по имени хоста. В цепи разрешения имен это очередной, но уже менее приоритетный способ сопоставления по сравнению с вышеописанным файлом hosts. С помощью сервера DNS разрешаются все символические имена доменов (например datadump.ru), к которым Вы обращаетесь в локальной сети либо сети Интернет, и которые не были разрешены другими методами. Происходит это потому, что все символические имена должны быть преобразованы в IP-адреса перед установкой соединения с удаленным узлом. Существует категория вирусов, которые преднамеренно модифицируют параметры реестра, относящиеся к настройкам DNS-серверов с целью перенаправления сетевого трафика скомпрометированной машины на собственные сервера. В операционной системе Windows настройки DNS-серверов, к которым обращается модуль разрешения имен, хранятся в специальном ключе реестра: HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
параметры DhcpNameServer и NameServer должны содержать исключительно DNS-сервера, предоставляемые вашим локальным сетевым роутером/маршрутизатором/контроллером домена либо провайдером, поставщиком услуг доступа к сети Интернет.
Дополнительно, я бы проверил одноименные параметры для адаптеров и интерфейсов в следующих ключах реестра:
HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Adapters\{GUID}
HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{GUID}
Для того, чтобы проверить корректность адресов DNS-серверов, Вы должны просто-напросто знать адреса "своих" серверов, обычно это адреса из частных диапазонов подсетей: 192.168.0.0/16, 172.16.0.0/12 и 10.0.0.0/8, но не во всех случаях.
Для того, чтобы можно было посмотреть адреса DNS-серверов, можно выполнить из консоли (cmd) следующую команду:

ipconfig /all

которая сгенерирует вывод информации обо всех сетевых интерфейсах, сконфигурированных в вашей операционной системе:

Для того, чтобы найти в этом огромном потоке информации интересующие нас DNS-сервера, Вы можете найти в выводе тот интерфейс, который "смотрит" у вас в сеть Интернет, и изучить сопоставленные с ним параметры конфигурации. Стоит обратить внимание на значение параметра "DNS-серверы". Если Вы вдруг обнаружили "левые" адреса серверов, принадлежность которых сложно установить, то можете смело их удалять, либо менять на корректные.

Оболочка (Проводник)

С тех давних пор, как мир обленился и основная масса пользователей отказалась от текстового интерфейса в пользу графического, классическое понимание оболочки (shell) определенным образом трансформировалось и в дополнение к своим типичным консольным характеристикам текстового режима приобрело дополнительные особенности в виде графической среды взаимодействия с операционной системой. Графическая оболочка пользовательского интерфейса операционной системы Windows, иначе называемая Проводником и представленная в системе файлом explorer.exe, включает в себя функционал различных элементов интерфейса пользователя, как то: рабочий стол, меню пуск, проводник (файловый менеджер), панель инструментов и некоторые другие элементы взаимодействия. Однако в Windows с целью расширения целевого применения операционной системы в качестве различных однооконных киосков, не стали жестко закреплять "родную" пользовательскую оболочку explorer.exe и дали пользователю свободу конфигурировать альтернативную оболочку посредством ключей реестра, чем и не примянули воспользоваться вирусописатели.
В реестре за настройку пользовательской оболочки отвечает ключ:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
параметр Shell = explorer.exe
Помимо оболочки есть еще параметр userinit, который описывает программы, загружаемые процессом Winlogon на этапе входа пользователя в систему. По умолчанию, Winlogon запускает модуль под названием Userinit.exe, который запускает скрипты стадии загрузки, а уже только затем вызывает оболочку пользовательского интерфейса explorer.exe. Настройка хранится в том же ключе в параметре Userinit:
параметр Userinit = C:\Windows\system32\userinit.exe,
Обнаружение вируса в данном случае сводится к проверке наличия сторонних записей в данных ключах реестра.

Конфигурационные ini-файлы

Вплоть до современных версий в системе Windows все еще присутствует такой рудимент из прошлого, как конфигурационные ini-файлы. Речь у нас идет о следующих файлах:

  • %SystemRoot%\system.ini
  • %SystemRoot%\win.ini

В старых версиях Windows ini-файлы активно использовались в качестве основного механизма конфигурации системы, в том числе и для автозагрузки. В современных же версиях Windows система загружает некоторые параметры из указанных .ini-файлов в реестр, используя сопоставление, задаваемое в следующем ключе реестра:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\IniFileMapping
Маппинг осуществляется следующим образом:

  • Переменные Run и Load из секций [boot], [windows] файла win.ini, проецируются в ключ реестра HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows. Таким образом, данные параметры операционная система обрабатывает как элементы автозагрузки, то есть как если бы они находились в секции [windows] файла win.ini.
  • Переменная Shell из файла system.ini проецируется в HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon.

Маппинг используется в целях совместимости с устаревшим программным обеспечением, которое знает про существование ini-файлов, однако не имеет представления о реестре. В случае подобного кода, который работает через совместимые функции Win16/Win32 API, функции эти получают информацию не из описанных файлов напрямую, а уже из соответствующих сопоставленных ключей реестра. Как мы можем догадаться, механизм этот оставлен разработчиками исключительно в целях совместимости с устаревшим интерфейсом Win16, который не рекомендуется к использованию в современных реалиях Win32. Но, как говорится, что работает, то может быть использовано, поэтому вирусы иногда задействуют данный механизм.

Фильтры выполнения оболочки

Так называемые фильтры выполнения оболочки (Shell Execute Hooks) предоставляют программный метод, который расширяет функционал системных функций ShellExecute и ShellExecuteEx. Конфигурацию фильтров в реестре можно найти в разделах:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellExecuteHooks
HKLM\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\ShellExecuteHooks
Записи зачастую содержат CLSID, ссылающиеся на ключи HKLM\SOFTWARE\Classes\CLSID\{CLSID}, в которых в параметрах InprocServer32 содержится информация о конкретном исполняемом модуле фильтра.

Фильтры выполнения оболочки не рекомендованы к использованию начиная с Windows Vista.

Объекты загрузки оболочки

Объекты загрузки оболочки (SSO/Shell Service Object) - это библиотеки, которые в процессе загрузки пользовательского окружения загружаются системной программой оболочки explorer.exe в качестве так называемых собственных расширений проводника. Функционируют в контексте родительского процесса проводника (explorer.exe) и загружаются до авторизации пользователя в системе.
В реестре представлены ключами:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellServiceObjects
HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\ShellServiceObjects

В дополнение к вышеописанным, имеются еще так называемые объекты отложенной загрузки оболочки (SSODL/Shell Service Object Delay Load), обычно представляющие из себя типичные библиотеки DLL. Описываются ключом реестра:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\ShellServiceObjectDelayLoad
параметры данного раздела - это имена объектов оболочки, которые записываются в форме:
Имя_объекта = CLSID
например:
WebCheck = {E6FB5E20-DE35-11CF-9C87-00AA005127ED}
Как мы видим, имена ссылаются на идентификаторы CLSID, которые можно найти в разделе HKLM\SOFTWARE\Classes\CLSID\{CLSID}, где информация о местоположении исполняемого файла оболочки содержится в параметре InprocServer32.

Уведомления оболочки

В Windows имеется механизм под названием Winlogon Notification Packages или Уведомления оболочки. Механизм уведомлений используются для запуска программ при возникновении предопределенных системных событий. События подразделяются на: вход (logon), выход (logoff), запуск (startup), завершение (shutdown), запуск хранителя экрана (startscreensaver) и останов хранителя экрана (stopscreensaver). Когда модуль Winlogon стартует, он проверяет реестр и загружает зарегистрированные пакеты уведомления оболочки (которые представлены в виде .dll). Приведенные события генерируются самим процессом Winlogon.exe на разных стадиях своего функционирования. Когда событие возникает, Winlogon в параметрах ключа Notify ищет функцию обработчика того или иного события. Вирусы обычно загружают себя по событию входа пользователя (logon) в операционную систему.
Ответственный ключ реестра:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify

Модули (библиотеки) инициализации приложений

App Init DLLs - это системный механизм, который позволяет загружать произвольный пользовательский список библиотек в адресное пространство каждого пользовательского процесса, использующего библиотеку user32.dll (а её используют практически всех программы). Все начинается с загрузки user32.dll. Поскольку это типовая библиотека, входящая в состав базового набора поддержки подсистемы Win32 API, она загружается стандартным механизмом LoadLibrary. Загрузчик образа вызывает функцию DllEntryPoint библиотеки user32.dll, которая в недрах своего алгоритма содержит процедуру сканирования ключа реестра AppInit_Dll, которая загружает все перечисленные в ключе библиотеки в виртуальное адресное пространство процесса, а затем и вызывает для каждой из них процедуру инициализации. Именно таким образом данные библиотеки получают управление. Этот механизм еще носит название DLL injection, или внедрение динамической библиотеки. Естественно, что если какое-либо приложение не использует стандартную библиотеку user32.dll, то никакие библиотеки, описанные в ключе AppInit_Dll в его адресное пространство загружены не будут. Согласитесь, что подобный функционал очень интересно использовать различному злонамеренному коду. Поэтому, после всех проблем, которые доставил данный механизм в плане безопасности операционной системы, начиная с Windows 7 разработчики решили добавить в него требование о необходимости подписания кода загружаемых библиотек. А в последствии грозятся и вовсе перейти на загрузку только лишь подписанных библиотек.

Later versions of Windows will load only code-signed AppInit DLLs and will not include a registry key to disable this requirement.

Информация об активном механизме, а так же списках загружаемых библиотек хранится в следующих ключах.

  • для 32-битных DLL, функционирующих в 32-битной системе:
    HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows
    ключ AppInit_DLLs
  • Для 64-битных DLL, функционирующих в 64-битной системе:
    HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows
    ключ AppInit_DLLs
  • Для 32-битных DLL, функционирующих в 64-битной системе:
    HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Windows
    ключ AppInit_DLLs

Параметр содержит множество значений, разделенных пробелом либо запятой.
Работать с данным ключам надо предельно внимательно, и хорошо себе представлять происходящее. Дело в том, что параметр может содержать модули вполне легальных приложений (антивирусы, citrix receiver и прочее). Поэтому, не стоит спешить с массовым удалением всех присутствующих программ, и следует быть предельно аккуратным с очисткой данного параметра. Я думаю, в общем случае, алгоритм обнаружения вируса и очистки должен быть следующим: находим первую запись, определяем [гуглим] принадлежность модуля, если вирус - удаляем, если легальный - оставляем, и так по всем записям списка.

Известные библиотеки

В операционных системах Windows (начиная с Windows NT/95) присутствует механизм под названием KnownDLL (Известные библиотеки), в основном предназначающийся для кеширования часто используемых системных DLL с целью уменьшения времени загрузки приложений, то есть увеличения производительности. Помимо основного применения, механизм обеспечивает довольно интересный дополнительный функционал, который позиционируется как своеобразное средство обеспечения безопасности. Оно позволяет предотвращать такой хитрый трюк, как загрузка дубликатов известных системных DLL непосредственно из директории самого приложения. Поместил злоумышленник, к примеру, свою копию библиотеки wininet.dll в директорию приложения, которое данную библиотеку использует, и по идее библиотека должна загрузиться приоритетно, поскольку находится в директории загружаемого приложения, ан нет, механизм KnownDLL загрузит её из %SystemRoot%\System32\wininet.dll. Ясно, что безопасность тут обеспечивается чисто формально, поскольку если уж злоумышленник имеет права администратора или просто доступ на запись в директорию приложения, то он может придумать что-нибудь и по-интереснее.
Однако, вернемся к самому механизму. Когда загрузчик образов загружает исполняемый образ, он смотрит в таблицу импорта и перечисляет библиотеки, которые используются загружаемым приложением. Для каждой библиотеки, которую загрузчик находит в таблице импорта, он пытается спроецировать библиотеку в адресное пространство процесса, для того, чтобы сделать функции библиотеки доступными для основного приложения. Однако до этого загрузчик просматривает специализированную секцию \KnownDlls\<имя_файла_dll>, если секция существует, то вместо подгрузки DLL непосредственно из файла загрузчик просто использует секцию.
Описание секций присутствует в ключе реестра:
HKLM\System\CurrentControlSet\Control\Session Manager\KnownDLLs
Если Вы внимательно изучите содержимое ключа, то заметите, что все перечисленные в нем DLL не имеют полного пути, и по задумке разработчиков располагаются в директории %SystemRoot\System32%, что увиливает безопасность, поскольку чтобы вирусу прикинуться известной библиотекой и использовать механизм KnownDLL, то ему потребуются еще и права записи на системную папку. Создание секций \KnownDlls\<имя_файла_dll> для каждой DLL происходит на этапе загрузки операционной системы специализированным кодом, который просматривает описанный выше ключ и создает соответствующие секции. Поэтому, обнаружение вируса, использующего механизм KnownDLL сводится к просмотру записей о библиотеках в описанном выше ключе и поиске подозрительных модулей.

Параметры загрузки образов

В системе реализован такой механизм, который позволяет задавать различные параметры запуска для исполняемых образов, которыми являются обычные программы. Одной из особенностей данного механизма является возможность, при помощи специальных параметров, перехватывать загрузку любого исполняемого образа (программ) и заменять её на загрузку стороннего пользовательского приложения.
Настройки хранятся в ключах реестра:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
Данные разделы реестра содержат подключи, указывающие на имена загружаемых образов, которые, в свою очередь, содержат параметры, описывающие разнообразные опции для запуска той или иной программы. В контексте текущей статьи все параметры описывать нет никакого резона, скажу только, что со стороны вредоносного кода интересным будет использование параметра Debugger, который должен указывать, по версии разработчиков, на отладчик, запускаемый каждый раз, когда описанное приложение будет стартовать. Иными словами, например, если в ключе iexplore.exe создать параметр Debugger (типа REG_SZ) и присвоить ему значение myapp.exe, то каждый раз при запуске обозревателя будет запускаться Ваше приложение с параметрами командной строки, указывающими на исходную программы и переданные ей параметры. Таким вот незатейливым способом вирусы могут подменять различные системные модули своими. В этом случае, обнаружение вируса в системе будет характеризовать тот файл, если среди параметров какого-либо модуля в указанном ключе реестра будет прописан параметр Debugger, указывающий на неизвестное Вам приложение.

Планировщик заданий Windows

Планировщик заданий (Shared Task Scheduler) - системный компонент, предоставляющий возможность планирования выполнения заданий (программ или скриптов) в системе на основе большого количества всевозможных критериев. Другими словами, планировщик заданий отвечает за автоматический запуск пользовательских и системных задач, запланированных по определенным условиям. Подобные задания зачастую связаны с запуском внешних приложений, поэтому не сложно догадаться, что это достаточно интересный механизм для некоторых категорий вирусов. К примеру, код вируса может создать собственную задачу, которая будет с определенной периодичностью подменять системные DNS-сервера, время от времени я подобное наблюдал.
Для контроля заданий нам потребуется запустить планировщик. Запускается планировщик заданий разными способами, но один из самых универсальных это запуск через цепочку Панель управления - Администрирование - Планировщик заданий. При запуске планировщика в Windows 7 открывается стандартный интерфейс апплета:

планировщик задание вируса

Для просмотра сторонних запланированных задач, выделяем пункт Библиотека планировщика заданий 1, затем ставим курсор (выделяем) на пункт задания в области списка заданий 2, смотрим вкладку действия 3 для каждого заинтересовавшего нас задания, с целью выяснить, какие же действия оно выполняет. Откровенно подозрительными обычно являются задания, которые производят запуск исполняемых модулей неизвестного назначения (с невнятными именами) из таких местоположений, как %LOCALAPPDATA% и вложенных подкаталогов (например: C:\Users\<имя_пользователя>\Appdata\Local\wupdate\wupdate.exe). При обнаружении подобного подозрительного или откровенно вредоносного задания, просто удаляем его из списка задач.

Windows Vista+:
Начиная с Windows Vista задачи создаются в виде отдельных бинарных файлов с расширением .job, имеющих формат .xml и размещаемых в специализированном каталоге C:\Windows\Tasks.

Windows 2000/XP:
В данных версиях операционных систем задачи можно было найти в реестре, в следующей ветви:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\SharedTaskScheduler

Службы [Сервисы] и драйверы

Службы (Сервисы) - это приложения, автоматически или по возникновению определенных событий, запускаемые в фоновом режиме на различных стадиях загрузки операционной системы, обеспечивающие основные функциональные возможности ОС. Как правило, службы (сервисы) не взаимодействуют с графическим интерфейсом пользователя, поэтому говорится, что они не имеют графического интерфейса, и работа их в большинстве случаев не заметна для пользователя. Служба, в зависимости от настроек, может быть запущена автоматически при загрузке операционной системы, поэтому начать функционирование она может до того момента, как пользователем будет произведен вход в Windows. Основная задача по обнаружению вируса, который установил в систему собственную службу, состоит в том, чтобы просмотреть весь список запускаемых служб и детально изучить его на предмет наличия подозрительных сервисов. С этой целью можно использовать знакомую уже многим оснастку Службы, вызвав её следующим образом:
Нажать комбинацию Win + R и вписать в строку services.msc, затем нажать ОК. После этого мы видим примерно следующее:

обнаружение вредоносного сервиса

Для полноты восприятия переключаемся в стандартный вид (1), далее сортируем службы по столбцу "Состояние", просто щелкнув на нём (2), тем самым выстроив сначала службы, которые в данный момент работают. И среди работающих служб начинаем искать те, которые могут показаться нам подозрительными. В случае нахождения подозрительной службы можно попробовать её выделить (3), нажать правую кнопку и попытаться остановить (4), выбрав одноименный пункт меню. После остановки службы можно зайти в "Свойства" и изменить Типа запуска (StartUp Type) на Отключено (Disabled), перезагрузив затем операционную систему.
На самом деле, можно смело утверждать, что практически с нулевой вероятностью "родные" системные сервисы от Microsoft вызовут у нас подозрение, поэтому хорошая практика, в данном случае, состоит в том, чтобы отфильтровать как-либо образом сторонние службы, написанные третьими лицами и вот уже среди них провести проверку. Визуально отличить стороннюю службу (коей обычно и является вирус) от системной можно при наличии определенных знаний, но не у всех они имеются, поэтому существует более надежный и простой способ с участием утилиты msconfig (Конфигурация системы). Из командной строки с правами локального администратора запускаем команду:

msconfig

открывается окно утилиты конфигурирования системы. Переходим во вкладку "Службы" - выделяем чекбокс Не отображать службы Microsoft, затем щелкаем по столбцу "Состояние", дабы отсортировать работающие службы в начало списка. В итоге у нас получится список из служб сторонних разработчиков такого вот примерно вида:

обнаружение сервиса вируса

А вот уже среди отфильтрованных (оставшихся) служб можно проводить детальный анализ.

Скрытые службы

На самом деле иногда все бывает гораздо сложнее, поскольку при определенных настройках безопасности службы и применении некоторых других методов, сервисы могут быть "скрыты". Подобные скрытые службы Вы не обнаружите при помощи традиционного инструментария (например: оснастка "Службы"). Исходя из этого более надежным, на мой взгляд, решением видится самостоятельный анализ ветви реестра текущей конфигурации:
HKLM\SYSTEM\CurrentControlSet\Services

В данном разделе реестра определены и службы и драйвера, инсталлированные в данный момент в операционной системе

Каждый ключ реестра в данной ветви - это запись о драйвере либо сервисе, который определен в операционной системе. В каждом ключе может содержать вложенные ключи, которые описывают дополнительные параметры конфигурации драйвера/службы.
На что стоит обращать внимание:

  • параметр Description - содержит либо осмысленное имя службы/драйвера, либо указание на библиотеку вида @%SystemRoot%\system32\AxInstSV.dll,-104.
  • параметр DisplayName - содержит либо осмысленное отображаемое имя службы/драйвера, либо указание на библиотеку.
  • параметр DriverPackageId - содержит указание на .inf-файл драйвера.
  • параметр ImagePath - содержит полный путь и имя файла образа загрузки для службы/драйвера. Многие службы группируются в рамках единого процесса svchost.exe, в этом случае содержат что-то вроде: %SystemRoot%\system32\svchost.exe -k AxInstSVGroup. Зачастую у драйверов имя файла образа имеет расширение .sys, у служб обычно .exe, но это не обязательное правило.

Алгоритм нахождения сторонних записей состоит в прохождении каждого ключа и беглого анализа содержимого. В случае, если Вам показалась странной какой-либо ключ, не спешите удалять его, поскольку он может оказаться важным системным драйвером/службой. В случае неясности, перво-наперво, было бы логичным проконсультироваться у поисковиков на предмет знаний :)
Не лишним будет просмотреть и сопутствующие ветви реестра различных вариантов конфигурации:
HKLM\SYSTEM\ControlSet001\Services
HKLM\SYSTEM\ControlSet002\Services
HKLM\SYSTEM\ControlSet003\Services

С определенных 64-битных версий Windows, процедура запуска не подписанного драйвера крайне осложнилась, а затем и вовсе исчезла. Теперь, чтобы запустить драйвера в 64-битной системе, необходимо, чтобы драйвер имел цифровую подпись. В связи со всеми этими нововведениями, протащить в систему сторонний драйвер стало достаточно проблематично. Конечно же, возможно имеются доступные открытые ключи, которыми можно подписывать собственные драйвера, однако непонятна их дальнейшая судьба в случае их активной эксплуатации. Основываясь на данных фактах, можно предположить, что в будущем использование драйверов с вредоносным кодом и вовсе сойдет на нет.

В случае обнаружения службы/драйвера вируса полностью удалить её из системы можно либо удалением соответствующего ключа реестра, либо командой:
sc delete имя_службы

Internet Explorer

Безо всякого сарказма это самый легендарный браузер :). На этой емкой фразе можно было бы и остановиться, однако даже столь емкий термин не может в полной мере отразить весь тот огромный узел разнородных проблем, который породили разработчики браузера самим фактом его создания. Пожалуй, можно смело утверждать, что браузер корпорации Microsoft является самой большой дырой в безопасности системы (на 2016 год почти восемь сотен обнаруженных уязвимостей). Восхождение звездного продукта началось с вытеснения в 1997 году конкурента под названием Netscape Navigator. Стратегическое решение было принято в связи со всё возрастающей ролью сети Интернет, и необходимостью более глубокой внутренней интеграцией обозревателя в систему. Вероятно, идея была действительно хорошая, поскольку продукт получился весьма функциональным, но как в последствии стало ясно, с очень непродуманной архитектурой. Практически постоянно можно наблюдать обход настроек безопасности, неправильную обработку внешних файлов, спуфинг, неавторизованную установку расширений. Зачастую уязвимости связаны с внешними плагинами типа Flash Player и Java, однако отсутствие изоляции процессов и собственной обработки флеш и явы делает сам браузер беспомощным. Последнее время Microsoft работают над новым браузером, который будет носить название Edge, вот только будет ли он сохранять совместимость?

Подключаемые протоколы

В браузере Internet Explorer есть возможность добавлять так называемые подключаемые протоколы, которые могут быть сконфигурированы пользователем в дополнение к стандартным. Протоколы предназначены для расширения функционала браузера и фактически позволяют определить метод доступа к внешним ресурсам исходя из пользовательских критериев, то есть по вашему собственному протоколу, задавая специфический префикс URL. Протокол сопоставляет поведение браузера и логики работы с символической короткой строкой вида mailto: или http:.
В ветви реестра HKLM\SOFTWARE\Classes\PROTOCOLS содержится описание специализированных фильтров и обработчиков.
HKLM\SOFTWARE\Classes\PROTOCOLS\Handler - подключи описывают обработчики протоколов.
подключи представляют собой имена обработчиков, в которых имеется параметр CLSID, указывающий на соответствующий CLSID обработчика.
HKLM\SOFTWARE\Classes\PROTOCOLS\Filter -подключи описывают фильтры протоколов.
подключи представляют собой имена фильтров, в которых содержится параметр CLSID, указываются на соответствующий CLSID фильтра.
Обычно все эти указанные в подразделах CLSID указывают на тот же CLSID в ключе HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{CLSID}, а вот уже внутри информация о местоположении самого исполняемого модуля содержится в параметре InprocServer32. Обнаружение вируса сводится к просмотру и нахождению подозрительных обработчиков и фильтров.

Элементы управления ActiveX для Internet Explorer

ActiveX - это небольшая программа (.dll или .ocx), иногда называемая дополнением, благодаря которой достигается лучшее взаимодействие с определенным веб-сайтом. Например, онлайновый антивирус через свой ActiveX-компонент сканирует локальные файлы, сайт Microsoft Update устанавливает через свой ActiveX-компонент обновления безопасности в систему, на других сайтах может проигрываться специфическая анимация и так далее. Конечно же, данной технологией не могли не заинтересоваться вирусописатели, разрабатывающие вредоносные ActiveX-компоненты, которые обычно устанавливаются для последующей загрузки дополнительного программного обеспечения без Вашего ведома.
Все элементы ActiveX, которые инсталлируются через Internet Explorer, попадают сперва в директорию %Windir%\Downloaded Program Files. Обычно это файлы типов .exe, .dll, .ocx, .cab, и сопутствующие .inf. Кроме самого исполняемого модуля (либо архива), сюда же попадает и inf-файл, описывающий сам процесс инсталляции, который и выполняет установку ActiveX-компонента в систему. Устанавливаемые таким образом элементы могут регистрировать себя в системе как обычные программы.
Для самостоятельного поиска вируса нам потребуется простой механизм по изучению списка ActiveX элементов, установленных в системе. Существует ключ реестра, который содержит списки идентификаторов ActiveX, установленных для IE:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Ext\PreApproved
Однако ключ содержит одни лишь голые идентификаторы, никак не указывая их связность с реальными исполняемыми модулями. Для установления ассоциации с исполняемыми модулями нам предстоит вручную проверять каждое значение CLSID в другом ключе реестра:
HKEY_CLASSES_ROOT\CLSID и изучать для каждого CLSID подключ InprocServer32.

Сайты и протоколы Internet Explorer

Сайты и протоколы, добавленные в зону "Надежные узлы" (Trusted Zone). Обычно добавление в данную зону позволяет перечисленным в списке сайтам обходить некоторые виды проверок безопасности, то есть считаться более доверенными.
Используемые ключи реестра:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\ProtocolDefaults
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\ProtocolDefaults
Об обнаружении вируса в системе может говорить наличие в описанных выше ключах записей о сторонних ресурсах, назначение которых пользователю сложно определить.

Browser Helper Objects (BHO)

Browser Helper Objects (Объекты помощи браузеру, помощник браузера) - исполняемый модуль DLL, написанный в виде плагина для браузера Internet Explorer, предназначающийся для обеспечения дополнительного функционала, стандартно не поддерживаемого браузером. Вне зависимости от расширения практически всегда представляют собой обычные DLL библиотеки, которые загружаются вместе с браузером и работают в контексте основного процесса браузера. По этой причине разнообразная подозрительная активность зачастую остается незамеченной некоторыми персональными фаерволами. Вирусы могут инсталлировать BHO, которые отслеживают защищенные соединения и грабят пароли, либо записываются активность пользователя при посещении определенных сайтов. С точки зрения вируса подключить BHO к браузеру Internet Explorer достаточно просто, для этого достаточно стандартными средствами зарегистрировать класс BHO и прописать ссылку на него в специальном ключе реестра:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects
HKLM\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects
подразделы имеют имя со значением GUID и ссылаются на одноименный компонент.

Плагины Internet Explorer

Плагины Internet Explorer - это небольшие программные модули, загружаемые при старте браузера с целью добавления браузеру определенных функциональных возможностей. Обычно используются для визуализации различного нестандартного контента: проигрывания специфических форматов видео, аудио и прч.
Используемый ключ реестра:
HKLM\SOFTWARE\Microsoft\Internet Explorer\Plugins
подразделы описывают различные разделы плагинов.

Панели инструментов Internet Explorer

Панели инструментов Internet Explorer - это дополнения для браузера, которые позволяют создавать и добавлять отдельные пользовательские панели или наборы инструментов и специальные панели рабочего стола в командную строку браузера, строку закладок, меню, системную панель задач, а так же в прочие управляющие элементы. Зачастую панели инструментов создаются установленными в IE BHO.
Ответственный ключ реестра:
HKLM\SOFTWARE\Microsoft\Internet Explorer\Toolbar
HKCU\SOFTWARE\Microsoft\Internet Explorer\Toolbar
HKLM\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Toolbar
содержит подразделы в виде GUID, которые указываются на компоненты.

Расширения Internet Explorer

Расширения для Internet Explorer (в английской версии называемые аддонами) - это специальная категория дополнений, которые используются для добавления элементов к пользовательскому интерфейсу браузера. Возможна модификация главной панели инструментов с целью реализации на этой панели разнообразных отдельностоящих кнопок и целых меню. Кнопки панели инструментов могут запускать приложение, скрипт или открывать новую панель. Меню (иногда называемые сервисами), могут создавать пользовательское подменю в меню "Сервис" или "Справка" на панели инструментов. Очевидно, что меню (сервисы) и кнопки сами по себе не представляют опасности, пока не задействуешь их функционал, то есть щелкнешь по ним. Ведь это всего лишь ссылки, но вот после нажатия ссылка активирует закрепленную функциональную процедуру, которая не всегда может выполнять легальные действия.
С определенной версии IE все расширения браузера можно увидеть в подразделе "Панели инструментов и расширения" специализированного апплета Надстройки, до которого можно добраться через "Свойства обозревателя" - "Программы"- "Настроить надстройки":

Internet Explorer Add-ons

Другой способ предусматривает запуск браузера Internet Explorer из командной строки с параметром -extoff:

iexplore.exe -extoff

Поскольку при подобном типе запуска браузер позволяет увидеть все без исключения (и нормальные и скрытые) расширения.

Используемые ключи реестра:
HKLM\SOFTWARE\Microsoft\Internet Explorer\Extensions
HKCU\SOFTWARE\Microsoft\Internet Explorer\Extensions
HKLM\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Extensions
Подразделы представляют из себя CLSID, в которых вложенными ключами описываются расширения.

Пункты меню Internet Explorer

Возможно добавить дополнительные пункты в контекстное меню браузера Internet Explorer. Обычно это меню можно увидеть, нажав правую кнопку мыши на какой-либо активной ссылке, расположенной на странице, отображаемой в данный момент в окне браузера.
В реестре меню представлено по следующему пути:
HKCU\SOFTWARE\Microsoft\Internet Explorer\MenuExt
HKLM\SOFTWARE\Microsoft\Internet Explorer\MenuExt
Подразделы имеют наименование пункта меню. параметр по умолчанию в подразделе указывает на функциональный модуль, ответственный за пункт меню.

Дополнительные параметры Internet Explorer

С определенной версии IE существует возможность модифицировать содержимое вкладки Дополнительно в свойствах обозревателя (Свойства обозревателя - Дополнительно), добавив туда новую группу настроек.
Ответственный ключ реестра:
HKLM\SOFTWARE\Microsoft\Internet Explorer\AdvancedOptions
подключи описывают группы параметров во вкладке Дополнительно.

Стартовая страница

Стартовая страница отображается в первой стартовой вкладке после запуска браузера.
Используемые ключи и параметры реестра:
HKLM\SOFTWARE\Microsoft\Internet Explorer\Main
параметр Start Page
HKCU\SOFTWARE\Microsoft\Internet Explorer\Main
параметр Start Page
HKEY_USERS\SID_пользователя\SOFTWARE\Microsoft\Internet Explorer\Main
параметр StartPage

Страница поиска

HKLM\SOFTWARE\Microsoft\Internet Explorer\Main
параметр Search Page
HKCU\SOFTWARE\Microsoft\Internet Explorer\Main
параметр Search Page

Страница по умолчанию

Страница по умолчанию открывается, когда пользователь нажимает пиктограмму с изображением "домика", расположенную справа от строки адреса.
Используемые ключи и параметры реестра:
HKLM\SOFTWARE\Microsoft\Internet Explorer\Main
параметр Default_Page_URL
HKCU\SOFTWARE\Microsoft\Internet Explorer\Main
параметр Default_Page_URL
обычно содержит что-то вроде "http://go.microsoft.com/fwlink/p/?LinkId=255141"

Настройки прокси сервера

HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings
параметр ProxyServer обычно отсутствует. В случае наличия параметра требуется понять, что это за прокси и нужен ли он вам в работе?

Префикс по умолчанию

Описывает префикс, который добавляется к адресу при отсутствии явного указания префикса пользователем. Обычно в IE используется приставка http://.
Используемый ключ и параметр реестра:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\URL\DefaultPrefix
параметр @=http://
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\URL\Prefixes
параметры ftp, home, mosaic, www

Трансляция неизвестных адресов

Интерфейс IURLSearchHook описывает метод, используемый для трансляции адресов, содержащих неизвестный или не указанный непосредственно протокол. Примером может служить ситуация, когда в адресной строке браузера вводится адрес, не содержащий префикса http://. В подобной ситуации, когда браузер не может определить протокол адреса в адресной строке, он вызывает URLSearchHook. Internet Explorer сначала пытается самостоятельно определить протокол используя оригинальный адрес. Если ему это не удается, браузер создает объекты URL Search Hook которые зарегистрированы в системе и вызывает для каждого объекта метод трансляции до тех пор, пока URL не будет оттранслирован или все фильтры не будут вызваны.
Настройка трансляции производится в ключе реестра:
HKCU\SOFTWARE\Microsoft\Internet Explorer\URLSearchHooks
Параметры имеют имена CLSID, ссылающиеся на ключи HKLM\SOFTWARE\Classes\CLSID\{CLSID}, в которых в параметрах InprocServer32 содержится информация о трансляторе. По-умолчанию это C:\Windows\System32\ieframe.dll.

Другие настройки Internet Explorer

HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings
различные установки для сети Интернет. На какие обращать внимание?

устаревший параметр:
HKLM\SOFTWARE\Microsoft\Internet Explorer\Search
параметр SearchAssistant
HKLM\SOFTWARE\Microsoft\Internet Explorer\Search
параметр CustomizeSearch
HKCU\SOFTWARE\Microsoft\Internet Explorer\Search
параметр CustomizeSearch

устарело:
HKCU\SOFTWARE\Microsoft\Internet Explorer\SearchURL параметр Default

проверить, создав параметр:
HKCU\SOFTWARE\Microsoft\Internet Explorer\Main параметр Window Title

где он теперь:
HKCU\SOFTWARE\Microsoft\Internet Explorer\Main параметр Search Bar

где он теперь:
HKCU\SOFTWARE\Microsoft\Internet Connection Wizard параметр ShellNext

Многоуровневый поставщик услуг

Winsock LSP (Layered Service Provider) - многоуровневый поставщик услуг, Windows Sockets версии 2.0, предоставляющий возможность пользователю подключать собственные библиотеки DLL для обработки вызовов Windows Sockets API. Обычно поставщик занимается обработкой низкоуровневых задач, связанных с сетевым трафиком. Поставщик обрабатывает данные, передаваемые по протоколу TCP/IP, который используется для связи с локальной сетью и сетью Интернет. В процессе приема/передачи данных по протоколу TCP/IP, информация последовательно проходит по цепочке через все зарегистрированные в стеке TCP/IP поставщики (по структуре обычные DLL-библиотеки, которые используют Winsock API). Каждый поставщик может как угодно модифицировать проходящие данные и адреса. Таким образом, механизм LSP используется для вполне легитимных действий над трафиком и пространством имен, таких как подсчет трафика, антивирусная проверка, фильтрация контента, поэтому, например, многие антивирусы и фаерволы могут на вполне легальных основаниях находиться в стеке TCP/IP в качестве поставщиков услуг. Однако, некоторые вирусы могут добавлять свои модули в цепочку обработки.
Список поставщиков услуг хранится в специальной базе, которую можно найти в реестре в следующем разделе:
HKLM\System\CurrentControlSet\Services\Winsock2\Parameters
Не редка ситуация, когда Вы каким-либо образом нашли и удалили из цепочки модуль вируса, который находился в стеке поставщиков, однако не произвели коррекцию самой цепочки, в этом случае цепочка обработки рвется, и работа по протоколу TCP/IP с локальной сетью и сетью Интернет становится невозможной. Бывают и случаи удаления вредоносной DLL из файловой системы без должной коррекции (отмены регистрации провайдера) базы провайдеров, которые тоже не приводят ни к чему хорошему. Для восстановления (корректировки) цепочки провайдеров существуют утилиты LSP-Fix и AVZ (является полноценным сканером), которые проходят по цепочке разделов реестра Winsock2 и восстанавливают корректные связи.
Конечно, в случае с Windows Sockets 2.0 все далеко не так радужно. Чаще всего, в случае проблем с работоспособностью локальной сети и интернет, выполняют восстановление по заданному системному шаблону, однако этот шаблон надо знать, поскольку неправильные действия с базой поставщиков могут привести к полной неработоспособности сетевого интерфейса.

В Windows 7/8 технология LSP всё еще функционирует, однако не рекомендуется к использованию! Это объясняется тем, что начиная с Windows Vista разработчики активно продвигают новую технологию под названием "Платформа фильтрации Windows" (Windows Filtering Platform, WFP), которая предназначена обработки, отслеживания и перехвата сетевого трафика на всех уровнях сетевого стека, а так же призвана заменить все существующие технологии фильтрации в стеке TCP/IP. Существующие и разрабатываемые драйвера и приложения обработки пакетов предлагается портировать под новую технологию.

Компоненты Active Setup

Active Setup (Активная настройка/Набор активирования) - системный механизм, предназначенный для разового выполнения команд на этапе первичного входа пользователя в систему. Команды выполняются единожды, то есть при последующих заходах пользователя команда исполняться уже не будет. Конфигурация каждого компонента Active Setup делится на машинную и пользовательскую часть, которые расположены в разных ветвях реестра. Поэтому, когда пользователь входит в систему, Active Setup проверяет наличие GUID каждого компонента в пользовательской части соответствующего ключа реестра и если GUID отсутствует, то выполняется команда, ассоциированная с компонентом и по окончании процесса GUID компонента добавляется в пользовательскую часть реестра. Механизм может производить установку компонентов .msi. Например, все мы могли видеть работу Active Setup, когда первый раз входили под пользователей в систему и наблюдали первичное конфигурирование браузера Internet Explorer, выражающееся в появлении небольших окон установки в левом верхнем углу рабочего стола. Механизм может эксплуатироваться вирусами, поэтому обнаружение вируса в данном случае сводится к проверке машинной части ключей реестра Active Setup.
Информация о машинной части размещается в реестре в ключе:
HKLM\SOFTWARE\Microsoft\Active Setup\Installed Components
HKLM\SOFTWARE\Wow6432Node\Microsoft\Active Setup\Installed Components
Содержит подключи в виде GUID, которые и описывают установленные в системе компоненты.

  • Поделиться:

3 комментария:

  1. einaare

    Немного изменил css блога, жмем F5 для активации новой расцветки :)

  2. Виталий

    Приветствую!
    Active Setup (Активная установка?) - может "Набор активирования" (дословно - "Активный набор")
    Спасибо за статью! Полазил у себя в реестре, посмотрел, удалил несколько записей об автозагрузке некоторых программ. Как таковых, вирусов не обнаружил.
    IE не пользуюсь: отключил в компонентах, хотя при чистке системы записи об удаляемых файлах IE присутствуют (почему?). Edge не пользуюсь тоже, хватает того, что 10-ка следит за "телодвижениями" :)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *