Троянские программы
|
Не верьте данайцам, дары приносящим.
Гомер |
Название этого типа атак происходит от известной легенды о статуе коня,
которую греки использовали для проникновения в стены города Троя во время
воспетой Гомером Троянской войны.
Троянские программы представляют очень большую опасность, потому что исполняются
они с привилегиями тех пользователей, которые имели несчастье их запустить,
и имеют доступ ко всем данным этого пользователя.
Вред, который может причинить троянская программа, ограничен только фантазией
ее разработчика. Из наиболее неприятных возможностей следует упомянуть
полное уничтожение всех доступных данных или их анализ и пересылку результатов
анализа автору или заказчику трояна. В некоторых случаях результат деятельности
троянской программы выглядит как целенаправленная диверсия со стороны
пользователя, что может повести расследование инцидента по ложному пути.
Пример троянской программы
Простой и по-своему элегантный пример троянской программы приводится во
многих учебниках по командному языку систем семейства Unix, например в
[Керниган/Пайк 1992]. В указанной работе эта программа приводится для
объяснения того, почему в Unix путь поиска исполняемых программ по умолчанию
не включает текущего каталога, и почему включать текущий каталог в этот
путь крайне нежелательно.
Программа из примера 12.1 работает следующим образом.
1. Вредитель помещает ее в общедоступный каталог под именем Is.
2. Пользователь входит в этот каталог и исполняет команду Is (просмотр
текущего каталога).
3. Вместо системной команды /bin/Is исполняется троянская программа.
4. Троянская программа совершает вредоносное действие и запускает настоящий
/bin/Is, позаботившись о том, чтобы отфильтровать свою запись из листинга
каталога.
Пример 12.1. Троянская программа на языке shell
#!/bin/sh
# Разместите эту программу в общедоступном каталоге и назовите ее Is
# Скопировать себя в домашний каталог пользователя;
# на этом месте может стоять и другая вредоносная операция ср $0 ~
/bin/Is $# | /home/badguy/filter_ls $#
Важная часть программы — модуль, который удаляет файл Is
из листинга текущего каталога — опущен из-за его сложности, ведь он должен
анализировать параметры команды Is и производить удаление своей записи
различными способами в зависимости от требуемого формата вывода команды.
Троянская программа может быть реализована не только в виде самостоятельного
загрузочного модуля, но и в виде разделяемой библиотеки. Так, в Windows
NT 4.0 вплоть до выхода Service Pack 5 присутствовала ошибка, позволявшая
зарегистрировать DLL, совпадающую по имени с любой из системных, причем
так, чтобы при разрешении ссылок из других модулей использовалась вновь
зарегистрированная библиотека.
Аналогичный пример для Win32
Уже во время подготовки книги к печати началась пандемия вируса Nimda,
один из приемов распространения которого аналогичен приведенному в примере
12.1: обнаружив каталог, в котором лежат файлы данных MS Office, вирус
помещает туда файл riched20.dll. При сборке программы в момент запуска,
Windows просматривает текущий каталог до перечисленных в PATH, поэтому
вместо модуля Office загружается троянский код вируса. В отличие от систем
семейства Unix, в Win32 порядок просмотра каталогов при сборке жестко
задан и не поддается контролю со стороны системного администратора, поэтому
перекрыть данный путь распространения заразы можно лишь модификацией ядра
Windows.
Многие троянские программы образуются модификацией присутствующих в
системе загрузочных модулей, разделяемых библиотек и даже модулей ядра.
Такая программа не обязательно должна представлять собой бинарный код
— это может быть также интерпретируемый код или последовательность команд
макропроцессора. Широко распространены макровирусы, распространяющиеся
с файлами данных пакета Microsoft Office.
Наиболее известны два специальных типа троянских программ, часть вредоносных
действий которых состоит в дальнейшем их распространении, а именно
вирусы и черви. Вирусы предполагают
целенаправленный запуск зараженной программы пользователем, черви же,
проникнув в систему, запускают собственный процесс размножения.
Широко распространенные в эпоху DOS бинарные вирусы
просто добавляют свой код ко всем исполняемым модулям, которые так или
иначе оказываются в сфере досягаемости запущенной копии вируса.
Промежуточное с точки зрения классификации между собственно вирусами и
червями занимают загрузочные вирусы, которые
размещаются в загрузочных секторах дисковых устройств. Загрузочный вирус
регистрирует себя в качестве драйвера дискового устройства и остается
-жить в системе, заражая все подключаемые к системе удаляемые носители
(дискеты, Zip-диски, болванки CD-ROM). Загрузка — чаще всего, по ошибке
— другой системы с зараженной дискеты приводит к заражению новой системы.
В современных ОС с их многоэтапной загрузкой и сложными архитектурами
драйверов загрузочные вирусы представляют несколько меньшую опасность,
чем в эпоху MS DOS.
Черви способны размножаться без участия пользователей системы. Заражению
червями подвержены лишь многопоточные ОС с более или менее развитыми сетевыми
сервисами. Заразив систему, червь запускает себя в качестве фонового процесса
и начинает атаку других систем, используя фиксированный набор известных
проблем в их системах безопасности. Нередко червь в обязательном порядке
заражает системы, которые доверяют зараженной или просто используют общую
с нею базу учетных записей — например, заразив одну из систем домена Windows
NT от имени администратора системы, червь может штатными средствами установить
себя на все остальные системы того же домена.
Вирусы и черви доставляют много неприятностей сами по себе, к тому же
их авторы часто не отличаются большой фантазией в выборе деструктивных
действий и просто уничтожают все или только наиболее важные данные в зараженных
системах.
Важно подчеркнуть, что если ваша сеть подвержена вирусным атакам, или
же если единственной защитой вашей сети от них служит антивирусный пакет,
способный только находить известные вирусы, она будет столь же уязвима
и для троянских программ, специально разработанных с целью атаки на данные
вашей организации, и, таким образом, вашу систему безопасности следует
признать абсолютно непригодной. |