Кратко — причин несколько. Изменение (замена) записи в реестре, которая указывает на 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) — и я помогу интерпретировать и скажу, на что ещё смотреть и можно ли безопасно вернуть старое значение.