В преддверии публикации моего романа Zero Day, выход которого назначен на 15 марта, продолжим тему случаев, связанных с вредоносным программным обеспечением (на прошлой неделе я опубликовал статью "Дело о вредоносном автозапуске"). Эта статья рассказывает о случае, о котором мне сообщил пользователь, применивший уникальный подход к очистке системы после того, как он столкнулся с невозможностью запустить утилиты Sysinternals.

Все чаще и чаще авторы вредоносного ПО используют антивирусные продукты и утилиты Sysinternals для контроля над целевой системой. Этот случай начался с того, что друг пользователя попросил его посмотреть компьютер, который стал тратить необычно много времени на загрузку и вход в систему. Этот друг, уже подозревая, что причиной могла стать вредоносная программа, попытался выполнить сканирование системы с помощью Microsoft Security Essentials (MSE), однако это сканирование не могло завершиться. В диспетчере задач так же не было ничего подозрительного.

Пользователь, знакомый с утилитами Sysinternals, попробовал проделать одну из тех операций по очистке от вредоносного софта, о которой я рассказывал в моей презентации Advanced Malware Cleaning. Однако двойной клик на значке Process Explorer закончился недолгим появлением интерфейса Process Explorer, после чего процесс утилиты завершался. Далее он обратился к Autoruns, однако и в этом случае результат был тот же. То же самое произошло и с Process Monitor, после чего он понял, что причиной всему является вредоносный код.

Вредоносное программное обеспечение может использовать множество методик для идентификации программ, которые оно хочет отключить. Например, оно может использовать беспорядок в исполняемых файлах ПО, искать определенный текст в образах исполняемых файлов или сканировать память процессов на ключевые слова. Тот факт, что для этого может пригодиться любой маленький уникальный атрибут, является причиной того, что я не стал реализовывать механизмы, нацеленные на предотвращение такой идентификации. Эта игра, в которой я не мог победить, так что я предоставил пользователю самому искать способы решения проблемы. Например, если вредоносная программа ищет имена исполняемых файлов, то пользователь может просто переименовать эти утилиты.

Ирония здесь заключается в том, что авторы вредоносных программ уже давно используют сами инструменты Sysinternals. Например, троян Clampi, который появился в начале 2009 года, использовал утилиту Sysinternals PsExec для автоматического распространения. Coreflood – вирус, который крал пароли в середине 2008 года – также использовал PsExec. Позже китайские хакеры использовали инструменты Sysinternals для атаки на нефтеперерабатывающий завод. Авторы вредоносного ПО даже украли бренд Sysinternals для выпуска scareware-продукта – вредоносной программы, которая представляется поддельным диалоговым окном безопасности, предлагающим вам купить фальшивое antimalware-ПО – под названием Sysinternals Antivirus:

clip_image002

Возвращаясь обратно к нашему случаю, пользователь, желая узнать, ищет ли вредоносная программа определенные процессы или она просто ищет окна с определенными ключевыми словами в заголовке, открыл Блокнот и написал некоторый текст, после чего сохранил его в файл с именем “process explorer.txt”. После того, как он дважды кликнул на только что созданном файле, Блокнот закрылся сразу после запуска.

Лишившись своих обычных инструментов для диагностики проблем, он решил узнать, есть ли какая-либо другая утилита Sysinternals, которой можно воспользоваться, для чего он перешел к списку инструментов Sysinternals. Он почти сразу заметил утилиту под названием Desktops. Этот инструмент позволяет открыть до трех дополнительных виртуальных рабочих столов для запуска приложений и использует комбинации “горячих” клавиш или диалоговое окно Desktops на панели задач для переключения между ними. Он подумал, что, возможно, вредоносная программа проигнорирует альтернативные рабочие столы. Он открыл в Desktops ссылку Sysinternals Live (она позволяет вам запускать утилиты прямо из сети, не загружая их к себе на компьютер) и создал второй рабочий стол. Затаив дыхание, он сделал двойной клик на иконке Process Explorer – и он запустился!

clip_image004

У данной конкретной вредоносной программы, по-видимому, есть работающая по таймеру подпрограмма, которая запрашивает текст заголовка окна и завершает процессы, которые имеют заголовки с запрещенными ключевыми словами, такими как “process explorer”, “autoruns”, “process monitor” и, вероятно, другие продвинутые инструменты для нахождения вредоносного ПО и антивирусных продуктов. Поскольку перечисление окон возвращает окна только с текущего рабочего стола процесса, данная вредоносная программа не смогла увидеть инструменты Sysinternals, запущенные на втором рабочем столе.

Пользователь не заметил ничего необычного в списке процессов Process Explorer, так что он запустил Process Monitor (потом я попробую использовать Autoruns). Он записал с помощью Process Monitor несколько минут активности системы и затем исследовал получившийся журнал. Он сразу заметил тысячи операций обращения к реестру Winlogon, чего он не встречал при предыдущих запусках Process Monitor. Предположив, что это связано с вредоносным кодом, он установил фильтр, чтобы оставить только процессы Winlogon и начал внимательнее просматривать список:

clip_image006

Большинство операций было запросами значения ключа системного реестра под странным названием HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon Notify\acdcacaeaacbafbeaa. Чтобы запускаться при каждом старте Windows, вредоносная программа зарегистрировала себя как DLL уведомлений Winlogon. Эти библиотеки обычно используются программным обеспечением, которые контролируют процессы входа в систему, выхода из системы и события смены пароля, но также зачастую они используются вредоносным ПО. Чтобы подтвердить свои подозрения и найти имя этой DLL, он щелкнул правой кнопкой мыши по одной из записей и выбрал “Jump To” в контекстном меню Process Monitor. В ответ на эти действия Process Monitor запустил Regedit и показал ключ реестра, на который ссылалась эта запись:

clip_image008

Значение DLLName указало на вредоносный DLL-файл, который имело то же название (вероятно, сгенерированное случайным образом), что и ключ реестра. Он знал, что данный вредоносный код, вероятно, был пропущен сканером MSE, но, зная имя DLL, он задался вопросом, мог ли MSE очистить этот конкретный файл. Прежде чем проверить это, он запустил полное сканирование, надеясь, что вредоносное ПО не обнаружит исполняемый файл антивируса на втором рабочем столе, однако это оказалось не так. Он запустил MSE снова и в диалоговом окне сканирования файла перешел к данной DLL. Несколько секунд спустя MSE завершил анализ и сообщил, что это известная вредоносная программа и можно с легкостью очистить систему от нее:

clip_image010

Он выбрал рекомендуемое действие, и сканер быстро обезвредил вредоносную DLL. В качестве последней проверки он перезагрузил систему. Система загрузилась, и он смог быстро войти в нее. Инструменты Sysinternals запустились на главном рабочем столе и результаты сканирования Process Monitor больше не содержали нежелательной активности. С помощью инструментов Sysinternals он победил блокирующее эти утилиты вредоносное ПО и успешно закрыл дело.