Валентин Холмогоров - Pro Вирусы
Глава 6. Технологии заражения
О том, какие именно деструктивные функции выполняют на инфицированном компьютере различные вредоносные программы, а также о том, какой транспорт они используют для проникновения в атакуемую систему, мы побеседовали в предыдущих главах. Настало время кратко обсудить методики, используемые вирусами и троянцами для заражения ПК.
Эта глава содержит определенный объем сугубо технической информации, поэтому читатель, не желающий вникать в различные наукообразные сложности, может пропустить данный раздел.
Дроппер
Несмотря на довольно скромные размеры (средний размер вредоносной программы составляет 60–100 килобайт) ряд современных вредоносных приложений, как правило, включает в себя несколько модулей, реализующих различные функции. Один из таких модулей принято называть дроппером, он может быть реализован как в виде отдельного файла, так и в качестве составного компонента сложной угрозы.
Например, широко распространенные троянцы семейства MulDrop представляют собой троянцев-дропперов: основное (и единственное) назначение этих вредоносных программ — установка на атакуемый компьютер другого троянца, который хранится внутри контейнера Trojan.MulDrop, как одна матрешка в другой (как правило — в упакованном и зашифрованном виде). В отличие от троянцев-загрузчиков (Trojan.Download), Trojan.MulDrop не скачивает «полезную нагрузку» из Интернета, а извлекает ее «из себя».
Иными словами, дроппер — это объект, осуществляющий извлечение содержащихся в нем основных модулей вируса или троянца, их распаковку и установку в операционной системе. Основные компоненты вредоносной программы при этом могут помещаться дроппером, например, в одну из папок на диске или загружаться непосредственно в оперативную память. Основная функция дроппера — сохранить в атакуемой системе все компоненты вредоносного приложения, при необходимости зарегистрировать их в автозагрузке и передать им управление.
Инфектор
Еще один компонент вредоносных приложений называют инфектором. Инфектор — это модуль, осуществляющий заражение файловых объектов (например исполняемых файлов или динамических библиотек) либо загрузочной записи компьютера путем изменения их внутренней структуры.
Инжектор
Инжектором принято называть функциональный модуль вредоносной программы, реализующий встраивание вредоносных компонент в запущенный процесс другого приложения (инжект). После успешного осуществления инжекта вредоносный компонент вируса или троянца выполняется в контексте инфицированного процесса.
Объект для инжекта во многом определяется целью злоумышленников и функциональным назначением самой вредоносной программы. Наиболее распространенным объектом для инжектов в Windows являются запущенные в системе процессы браузеров или различные системные процессы, такие как svchost.exe или explorer.exe (проводник).
Лоадер
Лоадером называют компонент вредоносной программы, осуществляющий загрузку других модулей (например, динамических библиотек) в оперативную память компьютера и (в ряде случаев) настройку этих компонентов в памяти. Для загрузки компонент лоадер может использовать как функции API, так и различные собственные механизмы.
Процесс заражения
Соответственно, различные компоненты вредоносной программы в целях инфицирования операционной системы могут действовать совместно. В качестве примера такой функциональной интеграции можно рассмотреть механизм заражения Microsoft Windows одной из ранних версий вредоносной программы, принадлежащей к семейству Ramnit (Rmnet).
Первым на атакуемом компьютере запускается дроппер, который извлекает из своего тела, расшифровывает, а потом помещает во временную папку инфектор загрузочной записи и несколько модулей, реализованных в виде динамических библиотек. Затем дроппер запускает инфектор с помощью одной из системных функций, после чего файл инфектора удаляется.
После успешного запуска инфектор модифицирует основную загрузочную запись компьютера (MBR, Master Boot Record) с целью обеспечения запуска модулей Rmnet до старта средств антивирусной защиты, если таковые установлены на инфицированной машине. Оригинальная MBR вместе с частью вирусной загрузочной записи перемещается в конец диска.
При запуске операционной системы вредоносная программа получает управление, имеющийся в ее архитектуре инжектор встраивает модули Rmnet в один из запущенных процессов, в контексте которого они начинают выполняться. Один из модулей предназначен для саморепликации вредоносной программы, второй выполняет функции бэкдора, третий осуществляет мониторинг сетевого трафика, и, наконец, последний реализует функцию кражи паролей от различных приложений, в частности FTP-клиентов. Описанная здесь схема заражения представлена на рис. 11.
Рис. 11. Одна из реализаций схемы заражения ОС Windows
В зависимости от модификации и типа вредоносного приложения механизм заражения может значительно меняться: представленный выше весьма упрощенный алгоритм является лишь одним из множества возможных вариантов и достаточно схематичен. Современные вредоносные приложения могут использовать различные руткит-технологии, позволяющим им эффективно скрывать свое присутствие в операционной системе, а также применять всевозможные методы антиотладки.
Инфицирование файловых объектов
Современные файловые вирусы реализуют различные методы заражения файлов, иногда достаточно изощренные. В общем случае механизм заражения файловых объектов можно упрощенно представить следующим образом. Определив по тем или иным заданным вирусописателем критериям подходящий для заражения файл, вирус модифицирует его, дописывая в его структуру собственное тело (иногда — в зашифрованном виде, в этом случае при выполнении вредоносного кода задействуется специальный механизм его расшифровки). В частности, вирус может поместить свою копию в начало файла, а оригинальное содержимое перенести в его конец. Затем вирус изменяет код приложения таким образом, чтобы при его запуске первым управление получил встроенный в него вредоносный компонент (например, размещая в соответствующей секции файла команду перехода на начало вируса). После выполнения основного тела вируса управление передается обратно инфицированному приложению, и оно выполняет свои функции так, как и было изначально задумано его разработчиками. Пользователь в большинстве случаев не замечает того, что в момент старта программы произошло что-то необычное. Такой метод заражения можно условно представить в виде схемы (рис. 12).
Рис. 12. Один из возможных алгоритмов заражения файловых объектов вирусом
Существует вариант заражения, при котором оригинальный файл, наоборот, в том или ином виде сохраняется внутри вредоносной программы и в момент запуска вируса отображается в память компьютера или сохраняется в какой-либо папке на диске и запускается оттуда. Схожий алгоритм использовали, например, вирусы семейства Neshta. В процессе заражения машины вирус сохранял свою копию в папке установки Windows под именем svchost.com, а затем изменял параметр ключа системного реестра [HKCRexefileshellopencommand], записывая в него значение “(default)” = “%WinDir%svchost.com “%1” %*”. В результате при попытке запуска пользователем любой программы на инфицированном компьютере в первую очередь запускалось тело вируса из файла svchost.com, которому передавалось имя нужного пользователю приложения в виде параметра. Если этот исполняемый файл еще не был инфицирован ранее, Neshta сохранял его имя в специальном журнале для последующего заражения и запускал оригинальную программу. Если же пользователь пытался запустить ранее зараженный файл, вирус, получив управление, распаковывал оригинальный исполняемый файл нужной пользователю программы, помещал его во временную папку текущего пользователя Windows и запускал оттуда.
С целью избежания повторного заражения вирусы, как правило, используют специальные уникальные идентификаторы — в процессе заражения файла инфектор проверяет наличие в структурах файла соответствующей строки, и в случае ее обнаружения заражения не происходит. Описанная выше схема представлена на рис. 13.
Рис. 13. Альтернативный алгоритм заражения файловых объектов вирусом
Существуют и альтернативные методы заражения, используемые злоумышленниками значительно реже. Например, известно семейство вредоносных программ (иногда их называют общим термином «вирус-компаньон»), действовавших достаточно просто: они сохраняли свою копию в той же папке, где расположен исходный файл приложения, причем с тем же самым именем, а оригинальный исполняемый файл переименовывали. При запуске такой программы пользователем сначала запускался вирус, а после того, как он отрабатывал, управление передавалось оригинальному приложению.