Ситуация, когда сервер подвергается атаке вируса-шифровальщика, является критической для любого бизнеса. В данной статье мы разберем специфический случай заражения вирусом Ryuk, при котором операционная система и большинство файлов оказались зашифрованы, однако файлы базы данных MS SQL Server остались нетронутыми благодаря механизмам защиты самой СУБД. Проанализируем, как можно спасти данные в такой ситуации, какие инструменты использовать и как избежать окончательной потери информации.
Рассмотрим техническую причину, по которой автору темы удалось спасти данные. В MS SQL Server реализован механизм, называемый Exclusive Lock (эксклюзивная блокировка). Когда служба SQL-сервера sqlservr.exe активна и база данных находится в работе, операционная система блокирует доступ к файлам .mdf и .ldf для любых сторонних процессов на уровне файловой системы. Пока работает процесс сервера, вирус-шифровальщик не может получить права на запись в открытый поток файла, так как файл занят другим приложением.
Однако стоит учитывать особенности поведения современных вирусов, таких как Ryuk. Разберем их тактику:
SQLServer, SQLWriter и службы антивирусной защиты.vssadmin.exe Delete Shadows /All /Quiet, что делает невозможным стандартное восстановление через точки отката Windows.В нашем случае вирус, вероятно, не смог корректно завершить процесс sqlservr.exe из-за нехватки прав или внутренней ошибки, что и создало «окно возможностей» для спасения базы.
Проанализируем порядок действий, который поможет сохранить оставшиеся данные:
Выясним, почему этот метод оказался самым эффективным. Когда мы загружаемся с внешнего USB-носителя (Live CD/USB) с операционной системой (например, WinPE или Linux), основная зараженная ОС остается неактивной. Вирус не запускается, а значит, не может препятствовать копированию файлов.
Порядок действий:
C:\Program Files\Microsoft SQL Server\MSSQL.x\MSSQL\DATA\.mdf (данные) и .ldf (лог транзакций) на чистый внешний жесткий диск.После того как файлы извлечены, их необходимо подключить к другому, чистому экземпляру MS SQL Server. Посмотрим на возможные проблемы. Так как мы копировали файлы «на горячую» или после резкого отключения сервера, база данных может оказаться в состоянии Inconsistent (несогласованном).
При попытке подключения (Attach) в SQL Server Management Studio (SSMS) вы можете увидеть статус Recovery Pending или Suspect. В этом случае нам помогут команды DBCC CHECKDB.
Разберем пример кода для проверки и исправления базы:
-- Переводим базу в однопользовательский режим для восстановления
ALTER DATABASE [Имя_Вашей_Базы] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
-- Проверяем базу на ошибки
DBCC CHECKDB ('Имя_Вашей_Базы') WITH NO_INFOMSGS, ALL_ERRORMSGS;
GO
-- Если найдены ошибки, используем исправление с возможной потерей данных
-- (использовать только если нет другого выхода!)
DBCC CHECKDB ('Имя_Вашей_Базы', REPAIR_ALLOW_DATA_LOSS);
GO
-- Возвращаем многопользовательский режим
ALTER DATABASE [Имя_Вашей_Базы] SET MULTI_USER;
GO
Если ваша база данных используется для работы с 1С:Предприятие, после успешного подключения к SQL-серверу рекомендуется выполнить выгрузку в файл конфигурации .dt. Рассмотрим, зачем это нужно:
Если у вас нет возможности немедленно выключить сервер, проанализируем метод «заморозки» процессов. Вместо того чтобы убивать процесс вируса (что может вызвать ответную реакцию системы), можно использовать утилиту Process Explorer.
Чтобы не допустить повторения ситуации, разберем ключевые настройки безопасности:
sqlservr.exe должна запускаться от имени специально созданной учетной записи с минимальными правами в системе, а не от имени LocalSystem или администратора домена.Важное напоминание: В случае с 1С всегда старайтесь иметь актуальную копию в формате .dt на внешнем носителе. Как показала практика, именно связка MDF + Live CD + конвертация в DT спасла работу бухгалтерии и избавила от необходимости ручного ввода данных за целый год.