Троянські програми
| |
Не вірте данайцям, дари що приносить.
Гомер |
Назва цього типа атак походить від відомої легенди про статую коня,
яку греки використовували для проникнення в стіни міста Троївши під час
оспіваної Гомером Троянської війни.
Троянські програми представляють дуже велику небезпеку, тому що виконуються
вони з привілеями тих користувачів, які мали нещастя їх запустити,
і мають доступ до всіх даних цього користувача.
Шкода, яка може заподіяти троянська програма, обмежена лише фантазією
її розробника. З найбільш неприємних можливостей слід згадати
повне знищення всіх доступних даних або їх аналіз і пересилку результатів
аналізу авторові або замовникові трояна. В деяких випадках результат діяльності
троянської програми виглядає як цілеспрямована диверсія з боку
користувача, що може повести розслідування інциденту по помилковій дорозі.
Приклад троянської програми
Простій і по-своєму елегантний приклад троянської програми наводиться в
багатьох підручниках з командної мови систем сімейства 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 від імені адміністратора системи, черв'як може штатними засобами встановити
себе на всі останні системи того ж домена.
Віруси і черв'яки завдають багато неприємностей самі по собі, до того ж
їх автори часто не відрізняються великою фантазією у виборі деструктивних
дій і просто знищують всі або лише найбільш важливі дані в заражених
системах.
Поважно підкреслити, що
якщо ваша мережа схильна до вірусних атак, або ж якщо єдиним захистом
вашої мережі від них служить антивірусний пакет, здатний лише знаходити
відомі віруси, вона буде настільки ж уразлива і для троянських програм,
спеціально розроблених з метою атаки на дані вашої організації, і, таким
чином, вашу систему безпеки слід визнати абсолютно
непридатною.
|