Главная > Заметки > Мониторинг реестра

Мониторинг реестра

После статьи где я исследовал вирус получил такой вопрос:

… А можно поподробнее как Вы узнали, что это именно svchost пишет в реестр. Догадка, или как-то это можно проверить? У меня похожая проблема: кто-то постоянно пишет один ключ, я его удаляю, а он снова появляется. Можно это как-то отследить кто именно добавляет записи в реестр? Заранее спасибо.

В том конкретном случае это была догадка, но можно и отследить. Это делается при помощи Process Monitor. Только нужно правильно настроить фильтры.

Например, нас интересует ветка HKEY_CURRENT_USER\Software\test.

Итак, настраиваем фильтры (вызвать окно управления фильтрами можно через меню Filter | Filter…, или с помощью сочетания клавиш Ctrl+L)

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

Во-вторых, добавляем фильтр по интересующей нас ветке:

Path begins with HKCU\Software\test.

И в-третьих, если нужно следить только за изменениями реестра (а в данном случае только это и нужно) добавляем фильтр по операции занесения значения в реестр (RegSetValue):

Operation is RegSetValue

Таким образом, настроенные фильтры будут выглядеть следующим образом:

Procmon - filters (registry)

Настраиваем фильтры

Применяем фильтры, и ждём пока появятся события.

При появлении события попадающего под фильтр, оно тут-же отобразится в окне программы:

Procmon - result (registry)

А вот и события

Из скриншота видно, что процесс, пишущий что-то в интересующую нас ветку реестра носит имя powershell.exe и PID 11004. А уж на сколько этот процесс безвреден, и имеет-ли он моральное право гадить в реестр нужно уже смотреть по обстановке Улыбка.

Небольшой совет для оптимизации: запуск Process Monitor может негативно сказаться на производительности компьютера, так как вне зависимости от настроенных фильтров он сохраняет все зарегистрированные события даже, если они не отображаются (в этом можно убедиться отключив фильтры и/или включив просмотр, например, файловой активности) и сохраняет их в памяти. Если оставить его запущенным на длительное время может случиться так, что ProcMon сожрёт всю память, после чего вылетит с ошибкой. Для предотвращения такого неприятного момента можно

  • Во-первых, сохранять события не в памяти, а в файл. Для этого нужно в меню выбрать File | Backing Files… и указать путь к файлу, в котором будут сохраняться события.
  • Во-вторых, можно сохранять только те события, которые попадают под фильтры (т.е. те, которые отображаются в окне). Если вы уверены, что фильтры настроены правильно, и все остальные события не нужны, их можно безвозвратно отбросить. Это делается при помощи активации параметра Filter | Drop Filtered Events. В случае если, события сохраняются в файл, активация этого параметра уменьшит его размер в разы.

Regshot

 

Дописав статью, и прочтя её, решил, что название статьи будет неоправданно громким, если не рассказать про одну маленькую, но очень полезную утилиту – Regshot (в справке к программе значится сайт www.regshot.ru, но меня упорно перебрасывало с него на какой-то левый сайт). Судя по всему программа прекратила своё развитие, но даже старенькая версия, которую без труда можно найти на просторах интернета выполняет свою функцию.

Приведу короткое описание взятое с какого-то сайта:

Утилита предназначена для фиксации изменений в реестре Windows. Она может делать снимок реестра, сохранять его в файле, загружать из файла, сравнивать два снимка, находить все отличия (что изменилось, что было удалено, что появилось нового). По результатам изменений формируются несколько отчётов. HTML отчёт содержит в наглядном виде характеристики снимков и список всех изменений…

Т.е. если нужно отследить где в реестре изменяется какое-либо значение, то вполне возможно, что достаточно будет воспользоваться Regshot и не возиться с фильтрами ProcMon.

Как говорилось выше Regshot работает со снимками реестра, т.е. сначала нужно сделать один снимок (кнопка Снимок 1), после чего произвести какие-то изменения и нажать кнопку Снимок 2. Просканировав реестр второй раз утилита отобразит результаты.

Regshot - main windows

Главное окно Regshot

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

Text Services and Input Languages

Языки и службы текстового ввода

Порядок действий предельно прост: запускаем Regshot делаем первый снимок (Снимок 1 | Локальный реестр), меняем язык, делаем второй снимок (Снимок 2 | Локальный реестр).

После того как Regshot сделает второй снимок, он просканирует два снимка на предмет отличий, и выведет окно c результатами сканирования:

Regshot - result

Результаты сканирования

Вполне возможно, что в отчёт попадут не только нужные нам данные, но и "левые" изменения, не связанные с тем, что мы ищем. Если такие данные сразу видны их можно исключить из конечного отчёта (если не уверены лучше оставить, чтобы потом разобраться). В нашем случае, в отчёт попали две ветки из раздела HKEY_CURRENT_USER: Keyboard Layout и Software. Так как нас интересуют языки, логично предположить, что изменения в ветке Software нам не интересны и их можно исключить.

После нажатия на кнопку OK открывается отчёт, в котором видно, что поменялось:

Regshot - final result

Конечный результат

Из последнего скриншота можно увидеть, что в разделе реестра HKEY_CURRENT_USER\Keyboard Layout\Preload ключ 1 изначально имел значение 00000409 (что соответствует английскому языку), а ключ 2 – 00000419 (что в свою очередь соответствует русскому языку). После проведённых нами манипуляция (изменение языка по умолчанию) эти значения поменялись.

Вот вроде и всё, что касается мониторинга реестра Улыбка.

Рубрики:Заметки Метки: ,
  1. Комментариев нет.
  1. 01/09/2015 в 14:22

Оставьте комментарий