УДК 004.491.22 ББК 32
Трубачев Е.С.
ТРОЯНСКИЕ ПРОГРАММЫ:
МЕХАНИЗМЫ ПРОНИКНОВЕНИЯ И ЗАРАЖЕНИЯ
Trubachev E.S.
TROJAN PROGRAMS: MECHANISMS OF INTRUSION AND INFECTION
Ключевые слова: вирусы, троянские программы, механизмы проникновения и заражения вирусом.
Key words: viruses, Trojan programs, mechanisms of intrusion and infection.
Аннотация
В данной статье представлена классификация вирусов - троянских программ, анализируются механизмы проникновения и заражения вирусом-трояном.
Abstract
The paper gives the classification of viruses - Trojan programs, analyses of mechanisms of intrusion and infection by Trojan virus.
Цель исследования - классифицировать вирусы-трояны, по результатам классификации определить механизмы проникновения вирусов-троянов и заражения ПК, разработать рекомендации по антивирусной защите.
Трояны или программы класса «троянский конь» написаны с целью - нанести ущерб целевому компьютеру путем выполнения несанкционированных пользователем действий: кража данных, порча или удаление конфиденциальных данных, нарушения работоспособности ПК или использования его ресурсов в неблаговидных целях.
Некоторые троянские программы способны к самостоятельному преодолению систем защиты вычислительной системы с целью проникновения в нее. Однако в большинстве случаев они проникают на ПК вместе с другим вирусом. Троянские программы можно рассматривать как дополнительную вредоносную программу. Нередко пользователи сами загружают троянские программы из сети Интернет.
Жизненный цикл троянов можно определить следующими стадиями:
- проникновение в систему.
- активация.
- выполнение вредоносных действий.
Троянские программы [3] различаются между собой по тем действиям, которые они производят на зараженном ПК. Классификация таких программ, назначение, действия приведены в таблице 1.
Таблица 1 - Классы троянских программ
Название Назначение Действия
Trojan-PSW Воровство паролей Могут быть использованы для поиска системных файлов, хранящих различную конфиденциальную информацию (например, пароли), «воруют» регистрационную информацию к различному ПО
Название Назначение Действия
Trojan-Clicker Интернет-кликеры Организация несанкционированных обращений к Интернет-ресурсам для следующих целей: 1) привлечение потенциальных «жертв» для заражения вирусами; 2) организация атаки на сервер; 3) увеличение посещаемости сайтов и пр.
Trojan- Downloader Доставка прочих вредоносных программ Активация загруженных из Интернет программ (запуск на выполнение, регистрация на автозагрузку)
Trojan-Dropper Инсталляторы других вредоносных программ Инсталляция на диск других файлов, их запуск на выполнение
Trojan-proxy Троянские прокси-сервера Осуществляют анонимный доступ с ПК «жертвы» к различным Интернет-ресурсам. Используются для рассылки спама
Trojan-Spy Шпионские программы Осуществляют электронный шпионаж за пользователем зараженного ПК: вводимая информация, снимки экрана, список активных приложений, действия пользователей сохраняются в файле и периодически отправляются злоумышленнику
Trojan Прочие троянские программы Осуществляют прочие действия, попадающие под определение троянских программ, например, разрушение или модификацию данных, нарушение работоспособности ПК
Trojan-Notifier Оповещение об успешной атаке Информируют различными способами своему «хозяину» о зараженном ПК. При этом на адрес «хозяина» отправляется информация о зараженном ПК: Ш-адрес, номер открытого порта, адрес эл. почты и т.д.
Backdoor Утилиты удаленного администрирования Могут быть использованы для обнаружения и передачи злоумышленнику конфиденциальной информации, уничтожения данных и т.д.
ArcBomb «Бомбы» в архивах Вызывают нештатное поведение архиваторов при попытке распаковать данные
RootKit Скрытие присутствия в операционной системе Программный код, действие которого направлено на сокрытие присутствия в системе объектов: процессов, файлов, данных реестра и т.д.
Рассмотрим механизм работы RootKit-программ, угроза которых в последнее время становится все более актуальной.
В системе Windows под RootKit принято считать программу, которая несанкционированно внедряется в систему, перехватывает вызовы системных функций (API), производит модификацию системных библиотек. Перехват низкоуровневых API
позволяет такой программе маскировать свое присутствие в системе, защищая ее от обнаружения пользователем и антивирусным ПО.
RootKit-технологии можно разделить на две основные категории:
- программы, работающие в режиме пользователя (user-mode);
- программы, работающие в режиме ядра (kernel-mode).
Первая категория основана на перехвате функций библиотек, вторая - на внедрение в систему драйвера, осуществляющего перехват API уровня ядра.
В режиме пользователя существует несколько методов перехвата функций:
Модификация машинного кода прикладной программы.
Модификация таблицы импорта исполняемого файла.
Перехват функций LoadLibrary и GetProcAddress.
Модификация программного кода API функции.
Модификация программного кода библиотек DLL.
Рассмотрим наиболее распространенный метод, который совмещает в себе перехват функций LoadLibrary и GetProcAddress и модификацию таблицы импорта.
Известно два способа вызова функций, размещенных в DLL:
- раннее связывание (статически импортируемые функции);
- позднее связывание (динамически импортируемые функции).
В первом случае компилятору известен перечень импортируемых программой функций. Используя эти данные, компилятор формирует таблицу импорта EXE-файла, которая содержит список используемых программой библиотек и список импортируемых из каждой библиотеки функций. Для каждой функции в таблице импорта имеется поле для хранения адреса (виртуального адреса). На стадии компиляции реальный адрес ОП не известен. В процессе загрузки EXE-файла в ОП система анализирует его таблицу импорта, загружает в ОП все перечисленные в ней библиотеки и производит занесение в таблицу импорта реальных адресов функций. На рисунке 1 цифрами 1-3 показан процесс раннего связывания. В момент загрузки кодового сегмента в ОП происходит заполнение полей адресов в таблице импорта (1). В момент вызова функции из таблицы импорта берется адрес функции (2) и выполняются действия вызова функции (3).
Позднее связывание отличается от раннего связывания тем, что компилятору в данном случае не известен перечень импортируемых программой функций. Загрузка библиотеки производится динамически при помощи функции API LoadLibrary. Эта функция находится в файле kernel32.dll. Программа при помощи функции LoadLibrary может загрузить библиотеку в любой момент времени. Для получения реального адреса функции применяется функция kernel32.dll GetProcAddress. На рисунке 1 шаг 4 демонстрирует загрузку библиотеки при помощи LoadLibrary, определение адресов при помощи функции GetProcAddress. Таблица импорта EXE-файла при этом не нужна. Независимо от метода связывания системе необходимо знать, какие функции экспортирует DLL. Для этого у каждой DLL имеется таблица экспорта, в которой перечислены экспортируемые функции.
Рисунок 1 - Схема взаимодействия, характеризующая принцип вызова API функции Рисунок 2 демонстрирует схему перехвата RootKit-программой таблицы импорта
программы, включая функции GetProcAddress и LoadLibrary.
Рисунок 2 - Схема перехвата вызываемых программой функций
RootKit-программа находит в ОП таблицу импорта, заменяет адреса требуемых функций на адреса своих перехватчиков. В момент вызова API функции программа считывает ее адрес из модифицированной таблицы импорта, управление передается по этому адресу. В данном случае перехватываются статически импортируемые функции, в числе которых - GetProcAddress и LoadLibrary библиотеки kernel32.dll. При запросе программой адресов интересующих её функций ей выдается не реальный адрес функции, а адреса перехватчика RootKit-программы.
Таким образом, при вызове статически импортируемых функций модифицированные адреса берутся из таблицы импорта; при динамическом определении адреса вызывается перехваченная функция GetProcAddress, которая возвращает адреса функций-перехватчиков. В результате у программы нет возможности определить правильный адрес функции.
«Предупрежден, значит, вооружен...». Зная механизмы проникновения и заражения, можно исправить коды программных модулей операционной системы. Один из способов -запретить пользовательским программам напрямую взаимодействовать друг с другом; разрешить взаимодействие друг с другом с помощью посредника - операционной
системы. Взаимодействие должно строиться по схеме:
Пользовательская программа □ Операционная система □ Пользовательская программа.
В данной статье представлена классификация вирусных программ - троянов. Классификация представлена с точки зрения действия трояна. Рассмотрены механизмы вредоносного действия программы RootKit, которая модифицирует таблицу импорта в exe-файле. Даны рекомендации системному программисту.
Библиографический список
1. Боровко Р. Рынок антивирусных пакетов и средств по борьбе со спамом /cnews.ru.
2. Беляев А.В. Методы и средства защиты информации / http://www.citforum.ru.
3. Трубачев Е.С. Проблемы информационной безопасности. Методы и средства защиты информационных ресурсов / Вестник Волжского университета имени В.Н. Татищева. - 2009. - Вып. 14.