Дело о вредоносном автозапуске
Учитывая то, что мой роман,
Инженер поддержки Microsoft взялся исследовать этот случай, начав с поиска других подозрительных файлов в папке %SystemRoot% одной из зараженных систем. Один из файлов, Nvrsma.dll, недавно открывался и, хотя он имел такое же имя, как компонент драйвера видеокарты Nvidia, в рассматриваемом компьютере не было установлено адаптера это фирмы. Когда он попытался удалить или переименовать этот файл, он столкнулся с ошибкой совместного доступа, что означало, что некоторый процесс открыл этот файл и препятствовал его открытию другими процессами. У Sysinternals есть несколько инструментов, которые могут перечислить процессы, у которых есть открытые файлы или загруженные библиотеки DLL, в том числе
Winlogon - это системный процесс ядра, отвечающий за управление интерактивными сеансами входа в систему, и в данном случае он стал хранилищем вредоносного DLL. Следующим шагом было определение того, как данный DLL был настроен для загрузки в Winlogon. Это должно было быть сделано через папку автозагрузки, так что инженер запустил утилиту
Если бы он смог понаблюдать за запуском Winlogon с помощью утилиты для работы с файловой системой и реестром, такой как
После настройки Process Monitor для регистрации загрузочной активности и перезагрузки системы инженер запустил Process Monitor и открыл лог загрузки. Он выполнил поиск строки "nvrsma" и нашел этот запрос Winlogon ключа реестра HKLM\Software\Microsoft\Windows NT\CurrentVersion\bwpInit_DLLs, который возвращал строку "nvrsma":
Инженер никогда раньше не видел ключ bwpInit_DLLs, но его название было поразительно похоже на точку входа автозапуска, которая была ему известная - AppInit_DLLs. Значение AppInit_DLLs считывает главная библиотека для управления окнами, User32.dll, при загрузке процесса. User32.dll загружает любые DLL, на которые ссылается этот ключ, так что любой процесс Windows, у которого есть графический пользовательский интерфейс (в противоположность интерфейсу с командной строкой, загружает DLL, записанные в этом ключе. Ниже по списку операций он увидел, как Winlogon загрузил Nvrsma.dll:
Способность загружать DLL в каждом процессе сделала AppInit_DLLs любимой мишенью для авторов вредоносных программ. Фактически, это стало настолько большой неприятностью, что в Windows 7
В журнале загрузки не было никакой ссылки на AppInit_DLLs, что очевидно указывало на то, вредоносный код каким-то образом принудил User32.dll запрашивать альтернативное расположение. Это также объясняло, почему эта запись не отображалась в Autoruns. Он задался вопросом, почему ни один другой процесс не загружал Nvrsma.dll, однако ниже в логе он увидел, что попытка загрузить эту DLL другим процессом привела к той же ошибке совместного доступа, с которой столкнулся он:
Простая загрузка DLL не заставит обработчик остаться открытым и не вызовет такой тип ошибки, так что он стал искать другие операции CreateFile в этой DLL, которым не соответствовали операции CloseFile. Последняя такая операция перед возникновением ошибки совместного доступа была выполнена Winlogon:
Стек этой операции, который он открыл, дважды кликнув на строке операции для открытия диалогового окна Properties и затем переключившись на вкладку Stack, показал, что файл Nvrsma.dll открыл себя сам, защищая себя тем самым от удаления и загрузки другими процессами:
Теперь он должен был определить, как был атакован User32.dll. User32.dll - это одна из доверенных системных DLL. Это означает, что поскольку для оптимизации производительности Windows во время загрузки создается отображение файлов, которое может использоваться любым процессом, который загружает DLL. Эти доверенные DLL перечислены в ключе реестра, который Autoruns вывод во вкладке KnownDLLs, так что инженер вернулся к Autoruns, чтобы более внимательно просмотреть результаты сканирования. Самый эффективный способ определить потенциальное вредоносное ПО с помощью Autoruns - запустить его с набором опций Verify Code Signatures, с помощью которых Autoruns проверяет цифровые подписи образов, которые он находит. После более пристального просмотра инженер обратил внимание на то, что User32.dll, в отличие от остальных доверенных DLL, не имел достоверной цифровой подписи:
Поддельный User32.dll вел себя практически идентично настоящему User32.dll, иначе бы приложения с графическим пользовательским интерфейсом завершались бы с ошибкой, однако он запрашивал альтернативное значение в системном реестре. Чтобы проверить это, инженер запустил утилиту
В качестве финальной проверки того, эти отличия были ответственны за различия в поведении файлов, инженер решил просмотреть код DLL. Любые ключи реестра и их значения, так же как и имена файлов, используемые исполняемым файлом, сохраняются в файле образа исполняемого файла и видны из утилиты для сканирования строк кода. Он попытался использовать утилиту
Зная то, как активируются первичные DLL вредоносного кода, он принялся за очистку от них целевой системы. Поскольку User32.dll блокировался вредоносным ПО всякий раз при запуске Windows (иначе вы могли бы переименовать файл и заменить его, что и сделала вредоносная программа в данном случае), он загрузил Windows Preinstallation Environment (WinPE) с CD и оттуда скопировал чистый User32.dll поверх вредоносной версии. Затем он удалил связанные с вирусной программой файлы, которые он обнаружил во время своего исследования. После этого он перезагрузил систему и проверил, очистилась ли она от вируса. Он закрыл это случай, дав администраторам сети больницы подробное описание шагов по очистке системы, которые он проделал и предоставил данное вредоносное ПО в команду Microsoft, занимающуюся решением проблем безопасности, чтобы они могли включить автоматический процесс очистки системы в Forefront и Malicious Software Removal Toolkit. Он нашел решение казалось бы неразрешимой задачи, используя несколько утилит Sysinternals, и помог больнице вернуться к нормальному режиму работы.
Источник:
Перевод: Dazila
По теме
- Устраняем конфликт подписей дисков
- Дело о загадочных звуках
- Дело об ооооочень долгом входе в систему
- Дело об ошибке службы установки
- Дело о загадочных перезагрузках
- Дело о зависшей программе запуска игры
- Анализируем вирус Stuxnet с помощью инструментов Sysinternals (ч.3)
- Анализируем вирус Stuxnet с помощью инструментов Sysinternals (ч.2)
- Анализируем вирус Stuxnet с помощью инструментов Sysinternals (ч.1)
- Дело о нерабочей системе