Структура СО М- і ЕХЕ-програм
СОМ-програма являє собою ділянку коду і даних, що починається
з виконуваної команди і займає не більше 64Кбайт. Наприклад, таку
структуру має командний процесор COMMAND.СОМ операційної системи
MSDOS, версій до 6.22 включно.
ЕХЕ-програма має набагато складнішу структуру. На початку файлу
ЕХЕ-програми розташовується заголовок довжиною. 28 байт, що містить
# 61623; MZ ш - ознака ЕХЕ-файлу;
# 61623; PartPag - довжина файлу по модулю 512;
# 61623; PageCnt - довжина файлу в 512-байтових сторінках;
# 61623; ReloCnt - розмір настроювальної таблиці;
# 61623; HdrSize -розмір заголовка;
# 61623; MinMem-мінімум необхідної пам'яті;
# 61623; MaxMem - максимум необхідної пам'яті;
# 61623; Relo-SS - відносний сегмент стека;
# 61623; ExeSP - зміщення покажчика стека;
# 61623; ChkSum - контрольна сума файлу;
# 61623; ExelP - зміщення точки входу;
# 61623; ReloCS - відносний сегмент точки входу;
# 61623; TablOff - зміщення настроювальної таблиці;
# 61623; Overlay - номер оверлейного сегмента.
Поля ReloCS і ExelP визначають місце розташування точки входу в
програму, поля ExeSP і ReloSS - місце розташування стека, поля PartPag і
PageCnt - розмір кореневого сегмента програми.
Обчислений за PartPag і PageCnt розмір програми може не збігатися
реальним
розміром
файлу.
такі
програми
називаються
«Сегментованими» або «що містять внутрішні оверлеї». грамотні
Після заголовка може розташовуватися спеціальна таблиця, точне
місце розташування якої визначається полем TablOff. а розмір - полем
які модифікуються операційною системою під час завантаження
Стандартні методи зараження.
Випадок СОМ-програми. Тіло вірусу приписується до кінця файлу, десь
всередині його зберігаються кілька (зазвичай, три) байтів оригінального
початку програми, на їх місце записуються команди переходу на початок
вірусу. Коли вірус закінчує виконання передбачених ним
дій, він відновлює оригінальні байти початку програми і
передає туди управління.
Випадок ЕХЕ-програми. Тіло вірусу приписується до кінця файлу, в
заголовку його модифікуються значення полів, що визначають
місце розташування точки входу і розмір програми (іноді ще -
місця розташування стека). В результаті управління отримує вірусний код.
Після закінчення роботи вірус, використовуючи збережені при зараженні
значення змінених полів, здійснює перехід на оригінальне
Як працює вірус
Розглянемо схему функціонування простого завантажувального вірусу,
заражающего дискети. При включенні комп'ютера управління передається
програмі початкового завантаження, яка зберігається в постійно
пристрої зберігання даних (ПЗУ).
Ця програма тестує обладнання і при успішному завершенні
перевірок намагається знайти дискету в дисководі А:
Будь-яка дискета розмічена на сектори і доріжки, сектори об'єднуються в
Серед секторів є кілька службових, що використовуються операційною
системою для власних потреб (в цих секторах не можуть розміщуватися
данні користувача). Серед службових секторів становить інтерес
один - т. зв. сектор початкового завантаження (boot-sector).
У секторі початкового завантаження зберігається інформація про дискеті -
кількість поверхонь, кількість доріжок, кількість секторів і
пр. Але цікава не ця інформація, а невелика програма початкового
завантаження (ПНЗ), яка повинна завантажити саму операційну систему і
передати їй управління.
Таким чином, нормальна схема початкового завантаження наступна:
ППЗ (ПЗУ) - ППЗ (диск) - СИСТЕМА
Тепер розглянемо вірус. У завантажувальних віруси виділяють дві частини -
т. н. голову і т. н. хвіст. Хвіст, взагалі кажучи, може бути порожнім.
Нехай є чиста дискета і заражений комп'ютер, під яким
розуміється комп'ютер з активним резидентним вірусом. Як тільки цей
вірус виявить, що в дисководі з'явилася підходяще середовище - в
даному випадку не захищена від запису і ще не заражена
дискета, він приступає до зараження. Заражаючи дискету, вірус виробляє
# 61623; виділяє деяку область диска і позначає її як недоступну
операційній системі, це можна зробити по-різному, в найпростішому і
традиційному випадку зайняті вірусом сектори позначаються як збійні
# 61623; копіює у виділену область диска свій хвіст і оригінальний
(Здоровий) завантажувальний сектор;
# 61623; заміщає програму початкового завантаження в завантажувальному секторі
(Тепер) своєю головою;
# 61623; організовує ланцюжок передачі управління згідно зі схемою. Таким
чином, голова вірусу тепер першої отримує управління, вірус
встановлюється в пам'ять і передає управління оригінальному
завантажувального сектора. У ланцюжку
ППЗ (ПЗУ) - ППЗ (диск) - СИСТЕМА
з'являється нова ланка:
ППЗ (ПЗУ) - ВІРУС - ППЗ (диск) - СИСТЕМА
Була розглянута схема функціонування простого бутового вірусу,
що живе в завантажувальних секторах дискет. Як правило, віруси здатні
заражати не тільки завантажувальні сектори дискет, але і завантажувальні
сектори жорстких дисків - вінчестерів. При цьому на відміну від дискет на
вінчестері є два типи завантажувальних сек
торів, що містять програми початкового завантаження, які отримують
управління. При завантаженні комп'ютера з вінчестера першої бере на себе
управління програма початкового завантаження в MBR (Master Boot Record -
головний завантажувальний запис). Якщо жорсткий диск розбитий на кілька
розділів, то лише один з них позначений як завантажувальний (boot).
Програма початкового завантаження в MBR знаходить завантажувальний розділ
вінчестера і передає управління на програму початкового завантаження
цього розділу. Код останньої збігаються з кодом програми початкового
завантаження, що міститься на звичайних дискетах, а відповідні
завантажувальні сектори відрізняються тільки таблицями параметрів. Таким
чином, на вінчестері є два об'єкти атаки завантажувальних вірусів
- програма початкового завантаження в MBR і програма початкового завантаження в
boot-секторі завантажувального диска.
Описаний випадок поширення вірусу є найбільш часто реєструється антивірусними компаніями. Нерідкі випадки, коли заражений файл-документ або таблиця Excel через недогляду потрапляє в списки розсилки комерційної інформації будь-якої великої компанії. В цьому випадку страждають не п'ять, а сотні або навіть тисячі абонентів таких розсилок, які потім розішлють заражені файли десяткам тисячам своїх абонентів.
Файл-сервери «загального користування» та електронні конференції також служать одним з основних джерел поширення вірусів. Практично щотижня приходить повідомлення про те, що будь-який користувач заразив свій комп'ютер вірусом, який був знятий з BBS, ftp-сервера або з будь-якої електронної конференції.
У разі масової розсилки вірусу по файл-серверам ftp / BBS ураженими практично одночасно можуть виявитися тисячі комп'ютерів, однак у більшості випадків «закладаються» DOS- або Windows-віруси, швидкість поширення яких в сучасних умовах значно нижче, ніж макро-вірусів. З цієї причини подібні інциденти практично ніколи не закінчуються масовими епідеміями, чого не можна сказати про макро-віруси.
Третій шлях «швидкого зараження» - локальні мережі. Якщо не брати необхідних заходів захисту, то заражена робоча станція при вході в мережу заражає один або кілька службових файлів на сервері (в разі Novell NetWare - LOGIN.COM)
На наступний день користувачі при вході в мережу запускають заражені файли
Замість службового файлу LOGIN.COM може також виступати різне програмне забезпечення, встановлене на сервері, стандартні документи-шаблони або Excel-таблиці, що застосовуються в фірмі, і т.д.
Нелегальні копії програмного забезпечення, як це було завжди, є однією з основних «зон ризику». Часто піратські копії на дискетах і навіть на CD-дисках містять файли, заражені найрізноманітнішими типами вірусів.
Небезпеку становлять також комп'ютери, встановлені в навчальних закладах. Якщо один зі студентів приніс на своїх дискетах вірус і заразив будь-якої навчальний комп'ютер, то чергову «заразу» отримають і дискети всіх інших студентів, які працюють на цьому комп'ютері.
Те саме можна сказати і до домашніх комп'ютерів, якщо на них працює більше однієї людини. Нерідкі ситуації, коли син-студент (або дочка), працюючи на багато користувачів комп'ютері в інституті, перетягують звідти вірус на домашній комп'ютер, в результаті чого вірус потрапляє в комп'ютерну мережу фірми тата або мами.
Досить рідко, але до сих пір цілком реально зараження комп'ютера вірусом при його ремонті або профілактичному огляді. Ремонтники - теж люди, і деяким з них властиво байдуже ставлення до елементарних правил комп'ютерної безпеки. Одного разу забувши закрити захист від запису на одному зі своїх флоппі-дисків, такий «маестро» досить швидко рознесе заразу по машинам своєї клієнтури і швидше за все втратить її (клієнтуру).
Наведемо узагальнений приклад структури програми-вірусу. Вона складається з
псевдокоманди DOS і підпрограм - маленьких внутрішніх програм
(Складові їх інструкції зберігаються окремо від головної програми),
виконують деякі спеціальні функції щоразу, коли до них
loc: = search (this)
Підпрограма під назвою findfile звертається до каталогу виконуваних
файлів або програм на диску, бере довільне ім'я файлу і
привласнює ім'я цього файлу змінної this (цей). У наступній
рядку програми використовується псевдокоманда DOS LOAD (завантажити), з
допомогою якої файл поміщається в оперативну пам'ять комп'ютера.
Інша підпрограма під назвою search (пошук) переглядає тільки
що завантажену програму в пошуках інструкції, яка могла б
послужити підходящим місцем, куди можна занести вірус. коли
процедура search знаходить таку інструкцію, вона визначає
відповідний номер рядка і привласнює його в якості значення
змінної loc. Тепер все готово для того, щоб підпрограма-вірус
могла проникнути в довільно обрану з каталогу програму.
Підпрограма insert (вставити) замінює обрану інструкцію інший
(Наприклад такий, як виклик підпрограми). замінена інструкція
передає управління блоку команд, складових
головне тіло підпрограми-вірусу, яка приєднується до кінця
програми. Потім до кінця доданої підпрограми приєднується
інструкція, яка повертає управління «зараженої» програмою на
інструкцію, наступну за вставленої. Таким чином, коли
виконується підпрограма-вірус, виконується також і підмінена
інструкція зараженої програми. Вихідна програма працює так,
ніби нічого особливого не сталося. Однак насправді
підпрограма-вірус скористалася якимось миттю, щоб
захопити владу над засобами операційної системи і причепити свою
копію до ще одній програмі, що зберігається на диску. наведений приклад
Нині фахівці виділили і інші прийоми, що відрізняються
один від одного ідеями і витонченістю виконання.