Що таке комп'ютерні віруси?
Із загальної точки зору комп'ютерні віруси являють собою програми, які мають здатність до прихованого розмноження у середовищі операційної системи за допомогою включення у код, що виконується, (програми, компоненти операційної системи, пакетні файли, текст, що компілюється, тощо) своєї, можливо модифікованої копії, яка зберігає здатність до подальшого розмноження. Крім функції розмноження (зараження інших файлів) комп'ютерні віруси виконують, як правило, ті чи інші деструктивні дії, про які мова бути йти далі.
Цей варіант належить М.Безрукову і базується на означенні, даному у 1989 р. Ф.Коуеном (F.Cohen) піонером першого серйозного дослідження комп'ютерних вірусів.
За способом зараження більшість комп'ютерних вірусів можна підрозділити на два класи: файлові та бутові віруси. Розглянемо коротко механізми їх дії.
Найпоширенішим засобом зараження файлу вірусом є дописування його тіла у кінець файлу (див. рис. 1). При цьому, щоб при запуску зараженого файлу одразу одержати управління, вірус замість початку файлу, який приховує у своєму тілі, ставить команду переходу на себе. Після того, як вірус відпрацював, він передає управління файлу-жертві. В деяких випадках, якщо в силу тих чи інших причин початок файлу, що інфікується, не зберігається, або є ще якісь "помилки" у вірусі, файл буде зіпсований і його подальше лікування буде неможливим.
Останнім часом поширились віруси, що перезаписують початок файлу-жертви (File Overwriters), не змінюючи його довжину. Зрозуміло, що інфікована таким чином програма замість свого дійсного початку містить вірус і буде безповоротно зіпсована, залишаючись в змозі лише заражати інші програми. Як правило, вказані віруси під час своєї дії інфікують якомога більше файлів і, в залежності від різних умов, виконують ті чи інші додаткові руйнівні дії. Прикладами цих вірусів є: Abraxas-3, Banana, Burger, Bloodlust, Bk Monday, Cossiga, Clint, Druid та багато інших.
Зауважимо, що віруси можуть записувати своє тіло також у кінець або середину файлу-жертви. Останнім часом з'явились віруси, які впроваджують себе до файлу, що заражається окремими "плямами". При запису у середину файлу вірус інколи знаходить "порожні" місця і приміщує туди своє тіло, не змінюючи довжину жертви. У більшості випадків довжина інфікованого файлу збільшується на деяку величину, що, як правило, є постійною для вірусу, який заразив його. Ця величина зветься довжиною вірусу і вимірюється звичайно у байтах. У більшості випадків віруси пишуться на мові Асемблера, інколи на мовах високого рівня (Pascal, C тощо). У першому випадку довжина вірусів порівняно невелика (SillyCR.76 мабуть, світовий рекордсмен малих резидентних вірусів, що зберігає працездатність інфікованої програми, має довжину у 76 байт), у другому може бути у декілька десятків Кбайт (MiniMax 31125 байт). Цікаво, що існують віруси (DICHOTOMY), які при зараженні записують частини свого тіла у два різних файли (296 + 567 байт).
Рис. 1. Схема дії файлового вірусу
Важливою характеристикою вірусів є здатність багатьох з них залишатись у пам'яті комп'ютера після запуску інфікованого файлу. Такі віруси називають резидентними. Зрозуміло, що резидентні віруси уражають файли набагато частіше ніж нерезидентні.
Бутові віруси заражають Boot-сектор вінчестера або дискет. Механізм зараження цими вірусами представлений на рис. 2. Вірус записує початок свого тіла до Boot-сектора, а решту у вільні (інколи зайняті) кластери, помічаючи їх як погані. Туди ж вірус приміщує також і справжній запис Boot-сектора, щоб потім передати йому управління. За своєю природою бутові віруси завжди резидентні.
Рис. 2. Схема дії бутового вірусу
Останнім часом з'явились окремі віруси, які заражають і Boot-сектори (або Master Boot записи) і файли. Такі віруси звуться файлово-бутовими (Multi-Partite Viruses). Прикладом таких, поки що дуже рідких вірусів, є вірус One_Half, що розглядається далі.
Крім того є віруси, механізм зараження яких суттєво відрізняється від розглянутих вище механізмів. Першим таким вірусом був вірус DIR. Цей вірус не заражував виконувані файли, а лише змінював у каталогах посилання на початок файлу-жертви, так щоб воно тепер вказувало на тіло вірусу, який містився в єдиному екземплярі на всьому диску. Таким чином при запусканні будь-якої зараженої програми вірус одержував управління першим, а після відпрацювання передавав управління запущеній програмі. Схема дії вірусу DIR приводиться на рис. 3.
Рис. 3. Схема дії вірусу DIR
Сучасні віруси застосовують найрізноманітніші засоби, з метою утруднити роботу по їх виявленню, розшифруванню та знешкодженню.
В поліморфні віруси (Self-Encrypting Polymorphic Viruses) встроюються так звані поліморфні генератори вірусних шифрувальників та розшифрувальників (MtE MuTation Engine механізми утворення поліморфних копій), які змінюють їх коди з часом.
Значна частина сучасних вірусів використовує так звану Stelh-технологію (за аналогією із назвою відомого літака). Ці віруси-невидимки самоліквідуються при спробі дослідження їх за допомогою відповідних засобів (відлагоджувачі та трасувальники), видають інформацію, начебто уражений комп'ютер не має інфекції і т.п. Так, вже один із перших вірусів BRAIN при спробі проглядання зараженого Boot-сектора виводив не своє тіло, що знаходилось там, а справжній не інфікований запис. Вірус DARK AVENGER "підправляв" дію команди DIR операційної системи так, щоб довжина зараженого ним файлу виводилась без урахування довжини вірусу, тобто справлялось враження, що файл не інфікований.
Віруси-супутники (Companion Viruses) замість зараження існуючого EXE-файлу, утворюють новий файл, який має теж саме ім'я, але інше розширення (COM). Сам вірус буде знаходитись у знов утвореному файлі. Напpиклад, для файлу EDIT.EXE буде утворений файл EDIT.COM і сам вірус буде знаходитись в останньому файлі. Пpи спробі запуску EXE-пpогpами з командного рядка, замість потрібної програми буде запущена знов утворена, з