Почему в системном реестре Windows была заменена запись, указывающая на DLL-файл?

Здравствуйте. Нужна помощь с разбором ситуации на терминальном хосте — у меня не хватает опыта в системном администрировании, чтобы понять причину изменения записи в реестре.
  • 11 марта 2026 г. 15:00
Ответы на вопрос 1
Кратко — причин несколько. Изменение (замена) записи в реестре, которая указывает на DLL, может быть как легитимным (обновление ПО/драйвера/обновление Windows, изменение политики), так и злонамеренным (malware ставит свою DLL для перехвата/инжекции/подмены). Что делать дальше — собрать факты и по ним принять решение.

Ниже — что проверить сначала и какие команды/инструменты использовать (шаги в порядке приоритета).

1) Срочные меры (если есть подозрение на компрометацию)
- Изолируйте терминал от сети (особенно если сервер в продуктиве).
- Не перезагружайте, не удаляйте файлы до сбора данных.
- Сделайте копию подозрительной DLL и экспорт реестра (см. пункты ниже).
- Просканируйте хост антивирусом/EDR и загрузите DLL в VirusTotal.

2) Сразу соберите базовую информацию
- Какой ключ реестра (полный путь) и какое было старое/новое значение? — это очень важно.
- Где лежит DLL (полный путь на диске)?
- Проверить подпись и хеш DLL:
  PowerShell:
  Get-AuthenticodeSignature -FilePath "C:\путь\to.dll"
  Get-FileHash -Algorithm SHA256 "C:\путь\to.dll"
- Экспортировать ключ:
  reg export "HKLM\...\ПУТЬ_КЛЮЧА" C:\temp\key_before.reg (или просто reg query для чтения)
- Узнать время последней записи ключа:
  PowerShell:
  (Get-Item "Registry::HKLM\...\ПУТЬ_КЛЮЧА").LastWriteTime

3) Посмотрите, кто/что могло изменить запись
- Просмотр событий Windows (System, Application, Security) на предмет установок/примеров: Event Viewer или PowerShell:
  Get-WinEvent -LogName System -MaxEvents 200 | where { $_.TimeCreated -gt (Get-Date).AddDays(-1) }
- Если на машине включено агентное ПО управления (SCCM, Intune, RMM), проверьте историю команд/дистрибутивов/деплойментов.
- Проверьте Group Policy (если машина в домене): на хосте
  gpresult /h C:\temp\gp.html
  и посмотрите GPO, которые правят реестром или выполняют скрипты.

4) Частые легитимные причины
- Обновление программы/драйвера установило новую DLL или изменило путь.
- Windows Update или компонент приложений (например, слои совместимости, SxS) изменил манифесты/ссылки.
- Установка антивируса/EDR/программ для мониторинга, которые подменяют DLL для перехвата (часто легитимно).
- Групповые политики / скрипты входа/сценарии деплоймента.

5) Частые злонамеренные сценарии (на что обратить особое внимание)
- AppInit_DLLs, AppCertDlls, Image File Execution Options\Debugger — ключи, которыми злоумышленники внедряют DLL.
- InProcServer32 в CLSID/ProgID (для COM-инъекций).
- Shell Extensions / ContextMenuHandlers — для персистенции в проводнике.
- Services\ImagePath — служба может запускать DLL-хост или exe с подменой.
- Run / RunOnce / Scheduled Tasks — для автозапуска.

6) Инструменты для динамической диагностики
- Process Monitor (Sysinternals): запустить фильтр по операции RegSetValue/RegCreateKey или по имени проблемной DLL, чтобы поймать процесс, который меняет реестр.
- Autoruns (Sysinternals): быстро увидеть, где DLL прописана для автозапуска.
- Sigcheck (Sysinternals) — проверить подпись всех бинарников.
- Handle/Process Explorer — посмотреть, кто держит файл открытым.

7) Как включить аудит изменений реестра (чтобы поймать в следующий раз)
- Включите в локальной политике: Local Security Policy -> Advanced Audit Policy Configuration -> Object Access -> Audit Registry (или Audit File System/Object Access) и затем в Regedit у нужного ключа: правки -> Advanced -> Auditing -> добавить группу (например, Domain\Administrators или Everyone) и поставить Audit на Set Value/Delete.
- После этого события будут в журнале Security и можно увидеть учетную запись/процесс, который изменял ключ.

8) Что делать с изменённой записью сейчас
- Если это известное обновление/ПО — оставить/переустановить ПО.
- Если неясно и есть подозрение на вредоносность — восстановить из бэкапа/точки восстановления, удалить/изолировать DLL, но сначала собрать артефакты (хеш, подпись, скриншоты, экспорт реестра).
- Если хотите — присылайте сюда точный путь реестра, старое и новое значение и хеш DLL — помогу проанализировать и подсказать безопасное восстановление.

9) Команды-резюме, которые можно выполнить и прислать мне вывод
- reg query "HKLM\путь\к\ключу" /v ИмяЗначения
- (Get-Item "Registry::HKLM\путь\к\ключу").LastWriteTime
- Get-FileHash -Algorithm SHA256 "C:\путь\to.dll"
- Get-AuthenticodeSignature "C:\путь\to.dll"
- gpresult /h C:\temp\gp.html (прикрепите файл)
- list of installed updates: wmic qfe list /format:table  (или Get-HotFix)

Если хотите, пришлите:
- полный путь ключа реестра и новое значение,
- путь к DLL и результат Get-FileHash + Get-AuthenticodeSignature,
- время изменения (LastWriteTime) — и я помогу интерпретировать и скажу, на что ещё смотреть и можно ли безопасно вернуть старое значение.
Похожие вопросы