МЕТОДИ БОРОТЬБИ 
 з вірусом  b>  p>
 У цій главі описані наиб-
 леї ефективні методи 
 боротьби з вірусами, захисту 
від проникнення і лікування. 
 Наведено алгоритми необ-
 ходимо дій при подо-
зорі на наявність вірусу 
 в комп'ютері. Описані заходи 
 по запобіганню "епідеміо-
ми Академії "шляхом створення про-грами 
-блокувальника.  p>
 Розглянуто приклад створення 
 програми-антивіруса. 
 Представлені вихідні тек-
сти програм з докладними коментарями 
.  p>
 У попередніх розділах відбулося знайомство з комп'ютерними вірусу-
 ми, що вражають Flash BIOS, документи текстового процесора 
Microsoft Word 6.0 for Windows, файли різних операційних систем 
 та інші. Прийшов час розглянути різні способи боротьби з ними.  p>
 Отже, що ж таке антивірус? Відразу ж розвіємо одну часто виникають-
 щую ілюзію. Чомусь багато хто вважає, що антивірус може вияв-
жити будь-який вірус, тобто, запустивши антивірусну програму або моні-
 тор, можна бути абсолютно впевненим у їх надійності. Така точка 
зору не зовсім вірна. Справа в тому, що антивірус - це теж програм-
 ма, звичайно, написана професіоналом. Але ці програми здатні 
розпізнавати і знищувати лише відомі віруси. Тобто антивірус 
 проти конкретного вірусу може бути написаний лише в тому випадку, ко-
та у програміста є хоча б один екземпляр цього вірусу. 
 От і йде ця нескінченна війна між авторами вірусів і антівіру-
сов, щоправда, першого в нашій країні чомусь завжди більше, ніж друге. 
 Але і у творців антивірусів є перевага! Справа в тому, що су-
суспільством велика кількість вірусів, алгоритм яких практично 
 скопійований з алгоритму інших вірусів. Як правило, такі варіації 
створюють непрофесійні програмісти, які з якихось причи-
 нам вирішили написати вірус. Для боротьби з такими "копіями" придумуйте-
але нова зброя - евристичні аналізатори. З їх допомогою антивірус 
 здатний знаходити подібні аналоги відомих вірусів, повідомляючи 
користувачеві, що в нього, схоже, завівся вірус. Природно, надійність 
 евристичного аналізатора не 100%, але все ж його коефіцієнт поліз-
ного дії більше 0,5. Таким чином, в цій інформаційній вої-
 не, як, втім, і в будь-який інший, залишаються найсильніші. Віруси, кото-
рие не розпізнаються антивірусними детекторами, здатні написати 
 тільки найбільш досвідчені й кваліфіковані програмісти.  p>
 Таким чином, на 100% захиститися від вірусів практично невозмож-
 але (мається на увазі, що користувач змінюється дискетами з друзями 
і грає в ігри, а також отримує інформацію з інших джерел, 
 наприклад з мереж). Якщо ж не вносити інформацію в комп'ютер через 
поза, заразитися вірусом неможливо - сам він не народиться.  p>
 Отже, що ж можна порадити, щоб стикатися з вірусами як 
 можна менше або, принаймні, тільки стикатися, не допускаючи 
їх на жорсткий диск свого вінчестера. У першу чергу - самі еле-
 ментарние правила "комп'ютерної гігієни": перевірка дискет на наяв-
чіе вірусу найнадійнішими антивірусними програмами, такими,  p>
 наприклад, як AVP або DrWeb. Дуже добре, якщо на жорсткому диску 
 встановлений ревізор Adinf. Багато користувачів додають стрічку по-
пуску ревізорів, антивірусів, антивірусних моніторів в конфігур-
 ційних файл AUTOEXEC.BAT - теж дуже дієво.  p>
 Є певні способи боротьби і з завантажувальними вірусами. 
 В установках (SETUP) комп'ютера передбачений захист від запису 
в MBR. Коли запис починається, BIOS відразу ж її зупиняє 
 і запитує підтвердження на дозвіл запису. Природно, 
слід заборонити запис, а потім завантажиться зі своєю, заздалегідь підго-
 лення, системної дискети. У більшості комп'ютерних користу-
Ватель такий дискети немає - а треба б завести. І це ще не все. 
 Віруси постійно удосконалюються, і все їхнє різноманіття охопити, 
звичайно, неможливо. Тому треба бути готовим, що рано чи по-
 здно вірус все-таки потрапить на жорсткий диск, і зустріти його потрібно 
у всеозброєнні.  p>
  Стандартні програми захисту  b>  p>
 У більшості випадків вірус, що заразив комп'ютер, допоможуть вияв-
 жити вже розроблені програми-детектори. Вони перевіряють, має-
ся чи у файлах на вказаному користувачем диску специфічна для 
 даного вірусу послідовність байт. При виявленні вірусу про-
грама виводить на екран відповідне повідомлення.  p>
 Варто також зазначити, що програми-детектори не надто універ-
 сальних, оскільки здатні виявити тільки відомі віруси. Не-
яким таким програмам можна повідомити спеціальну послідовно-
 ність байт, характерну для якогось вірусу, і вони зможуть 
виявити інфіковані їм файли - наприклад, це вміє Notron 
 AntiVirus або AVSP.  p>
 Програма Aidstest застаріла і зараз вже практично не використовує-
 ся. Найбільш широке поширення одержали програми DrWeb 
і AVP. Завдяки своїм новітнім детекторів, вони можуть виявити 
 будь-які віруси - як самі старі, так і тільки що з'явилися. Ще 
потрібно згадати детектор Adinf. Ця антивірусна програма вияв-
 жива всі віруси, що не змінюють довжину файлів, невидимі віруси, 
та багато інших. Таким чином, ці три програми забезпечать потужніше-
 шую захист проти вірусів. До речі, на заході теж віддають перевагу 
користуватися російськими програмами DrWeb і AVP.  p>
 Рятуючись від вірусів, потрібно створити потужний захист проти них. Встановіть 
 на своєму диску AVP, DrWeb та Adinf. Кожна програма хороша по-сво-
йому - нехай захист буде багаторівневою. Всі ці програми можна 
 вписати в файл AUTOEXEC.BAT, тоді при завантаженні комп'ютера про-
верка на зараження вірусом буде здійснюватися автоматично.  p>
 Завжди перевіряйте файли, що потрапляють на ваш комп'ютер. Будь-який з 
 них може бути заражений вірусом, це треба пам'ятати. Ніколи не по-
зволяйте стороннім працювати на вашому комп'ютері - саме вони 
 найчастіше приносять віруси. Особливу увагу слід приділяти іграм - 
найчастіше віруси розповсюджуються саме так. Нові ігри і про-грами 
 завжди потрібно перевіряти на вірус.  p>
  Пошук вірусу  b>  p>
 Коли під час роботи комп'ютер починає вести себе як-то незвичайний-
 але, перша думка, що приходить на думку будь-якому користувачеві - вже не ви-
рус чи це так. У такій ситуації важливо правильно оцінити свої підозр-
 ня і зробити висновки.  p>
 Як правило, людина, що володіє деяким досвідом та володіє з-
 Відповідаю програмним інструментарієм, справляється з цим заду-
чий без особливих ускладнень. Найбільш складна ситуація - коли дей-
 ствовать доводиться в "польових" умовах, наприклад, на чужій машині.  p>
 Типовий варіант: стандартна PC (286, 386 ... Pentium), як мінімум 
 1Мбайт ОЗУ, як мінімум 400Мбайт HDD; можлива наявність прин-
тера, звукової карти, CDD і іншої периферії. Програмне забезпе-чення 
: Windows 95, можливо Windows 3.1x, але працюють все одно під 
DOS. Джентльменський набір: Norton Commander 3.0-5.0, Norton Utility 
 6.0-8.0, свіжі антивіруси: AidsTest та DrWeb, русифікатори, архівато-
ри, резидентні програми та інше. Як обов'язковий усло-
 вия - наявність завідомо "чистої" захищеної від запису завантажувального 
дискети, що містить (хоча б у скороченому вигляді) вищезгаданий 
 комплект програм.  p>
 Отже, на думку господаря комп'ютер поводиться дивно. Наприклад, 
 програми, які раніше працювали правильно, починають збоїти або 
взагалі перестають запускатися, комп'ютер періодично "висне", ек-
 ран і динамік відтворюють незвичайні відео-і аудіоеффекти. Що 
будемо робити?  p>
 1. Садовить перед собою господаря комп'ютера і детально расспраші-
 ваем його про події, що передували виникнення збоїв. Вияс-
нитка потрібно наступне.  p>
 Ким і як використовується машина? Якщо співробітники або господар годину-
 то приносять дрібні іграшки, гороскопи, встановлюють і перуть 
різні бухгалтерські програми, то ймовірність наявності виру-
 са в машині дуже висока. Великі іграшки, які насилу 
вміщаються навіть у упакованому вигляді в коробку дискет, переносяться 
 з машини на машину рідко. При цьому вони, частіше за все, ретельно 
перевіряються на наявність вірусів.  p>
 а) Коли вперше помічені симптоми вірусу? Деякі віруси 
 люблять пристосовувати свою діяльність до певної дати або 
часу: 1 травня, 7 листопада, 13-те число, п'ятниця, п'ятій годині вечора, 
 а також 6 марта, 15 листопада, 11-а хвилина кожної години.  p>
 б) Не чи пов'язані зміни в роботі комп'ютера з перших запус-
 ком будь-якої програми? Якщо так, то ця програма - перший 
в черзі на "медкомісію".  p>
 в) не пов'язано поява симптомів зараження з розпаковуванням 
 будь-якого старого архіву і запуском програм з нього? Неко-
торие сучасні антивіруси (AVP, DrWeb) вміють перевіряти 
 архіви найбільш популярних форматів. Але ж зрідка ще 
зустрічаються архіви. ice,. arc,. zoo,. bsa,. uc2,. ha,. pak,. chz,. eli 
 та інші - їх антивіруси діагностувати не можуть.  p>
 г) Чи не має господар (господиня) комп'ютера звичку залишати 
 дискети в дисководі при перезавантаженні? Завантажувальний вірус мо-
жет роками жити на дискеті, ніяк себе не виявляючи.  p>
 2. У присутності господаря (господині) вмикаємо комп'ютер. Уважний-
 але стежимо за процесом завантаження. Спочатку запускається програма 
POST, записана в ПЗП BIOS. Вона тестує пам'ять, тестує і 
 ініціалізує інші компоненти комп'ютера і завершується ко-
Ротко поодиноким гудком. Якщо "вірус" проявляє себе вже на 
 цьому етапі - він тут ні до чого. Теоретично вірус може суще-
ствовать і в BIOS: передбачається, що перший віруси на терито-
 рію СРСР "приїхали" усередині болгарських ПЗУ (сучасні ПЗУ 
часто не є "постійними пристроями, що запам'ятовують", 
 вони передбачають можливість перезапису BIOS).  p>
 3. У присутності господаря (господині) намагаємося викликати незвичайне по-
 ведення комп'ютера.  p>
 а) Ідеально, якщо вірус (якщо це дійсно він) оригінали та 
 але сповіщає всіх про свою присутність, наприклад, виводить на ек-
ран повідомлення типу "I am VIRUS!".  p>
 Віруси проявляють себе різними способами: програють ме-
 лодії, виводять на екран сторонні малюнки і написи, що імі-
руют апаратні збої, змушуючи тремтіти екран. Але, на жаль, 
 найчастіше віруси спеціально себе не виявляють. До антіві-
вірусні програмами додаються каталоги з описами вірусів 
 (для AidsTest вони зберігаються у файлі aidsvir.txt, для DrWeb - 
у файлі virlist.web). Найбільш повним є гіпертекстовий 
 каталог avpve, що входить до складу антивірусного пакета Е. Каспер - 
ського. У ньому можна не тільки прочитати достатньо докладний 
 опис будь-якого вірусу, але й спостерігати його прояви.  p>
 Від цих вірусів слід відрізняти так звані "студен-
 орієн жарти", особливо широко поширені на комп'ютерах 
терах ВНЗ та шкіл. Як правило, це резидентні програми, 
 які періодично проводять нагадують роботу виру-
сов відео-і аудіоеффекти. На відміну від справжніх вірусів, 
 ці програми не вміють розмножуватися. Наявність такого роду 
програм на "бухгалтерських" комп'ютерах малоймовірно.  p>
 б) Дуже часто збої викликаються вірусами не навмисно, 
 а лише в силу їх несумісності з програмним середовищем, метушні-
кається через наявність в алгоритмі вірусу помилок і неточнос-
 тей. Якщо будь-яка програма "зависає" при спробі запуску, 
існує дуже велика ймовірність, що саме вона і заражений-
 на вірусом. Якщо комп'ютер "висне" в процесі завантаження (пос-
ле успішного завершення програми POST), то за допомогою по-
 крокової виконання файлів config.sys і autoexec.bat (клавіша 
F8 в DOS 6.x) можна легко визначити джерело збоїв.  p>
 4. Не переобтяжуючи комп'ютер, запускаємо (можна прямо з вінчестера) 
 антивірус, найкраще DrWeb з ключем/hal. Вірус (якщо він є) 
спробує негайно заразити DrWeb. Останній достатньо на-
 Дежнев детектує цілісність свого коду і в разі чого виведе 
повідомлення "Я заражений невідомим вірусом!" Якщо так і вироби 
 дет, то наявність вірусу в системі доведено. Уважно дивимося на 
діагностичні повідомлення типу "Файл такий-то ВОЗМОЖНО за-
 ражен вірусом такого-то класу" (СОМ, EXE, TSR, BOOT, MACRO 
і т.п.). Підозри на ВООТ-вірус в 99% бувають виправдані.  p>
 Одного разу DrWeb 3.20 "лаявся" на ВООТ-сектор дискети, "вилікувано-
ної "AidsTest від вірусу LzExe, тому антивірусним програмам 
 теж не завжди можна довіряти. Наявність великої кількості фай-
лов, імовірно заражених вірусом одного і того ж клас-
 са, з великою вірогідністю вказує на присутність в компьюте-
ре невідомого вірусу. Але можуть бути і виключення - DrWeb 
 версії 3.15 і нижче активно "лаявся" на стандартні DOC-компо-
нентов WinWord 2.0.  p>
 Крім того, DrWeb визначає наявність в пам'яті комп'ютера неіз-
 Вестн резидентних вірусів і Stealth-вірусів. Помилки при їх 
визначенні (в останніх версіях антивіруса) досить рідкісні. 
 Версія 3.15, не вміє лікувати вірус Kaczor, справно запідозрив-
ла наявність агресивного резидента в пам'яті. Версія ж 3.18, вмію-
 щая його лікувати, в інфікованої системі взагалі нічого не заме-
Тіла, а детектувала і вилікувала вірус лише при завантаженні з чистим 
 дискети. При цьому треба мати на увазі, що попередження типу 
"Дивна дата файлу", поодинокі підозри на СОМ-, ЕХЕ-ві-
 руси та інше навряд чи можуть бути розцінені як безперечний доку-
зательство наявності вірусу.  p>
 MACRO-віруси живуть виключно в Windows і ніякого нега-
 тивного впливу на DOS-програми зробити не можуть, за ви-
ням того випадку, коли вони що-небудь стерли в Windows-сеансі.  p>
 5. Нерідко збої бувають викликані природними причинами, ніяк-
 го відношення до вірусів не мають.  p>
 а) Апаратні збої. Виключити цю можливість допоможе завантаження 
 з чистим дискети і запуск (з неї) діагностичної програми 
ndiags. Тестуємо пам'ять, основну плату, порти і все Залишився-
 ве. Іноді достатньо простий зовнішній огляд комп'ютера - 
може бути, щось неправильно підключено.  p>
 б) Порушення в логічній структурі диска. Завантажується з чистою 
 дискети і запускаємо (з неї) ndd. Спочатку просто відзначаємо наявність 
помилок (перехресних ланцюжків, втрачених кластерів і так далі). 
 Якщо помилок дуже багато і переважна їх числа відноситься 
до СОМ-і ЕХЕ-файлів, то ні в якому разі не можна виконувати опе-
 рацію виправлення помилок: це може бути DIR-подібний вірус, 
і таке "лікування" диска може стати для багатьох програм фатальний-
 вим. Якщо помилки є і їх відносно небагато, ризикуємо і ле-
чим диск. Знову завантажується з вінчестера. Збої пропали?  p>
 в) Конфлікти між різними компонентами операційної си-
 СТЕМ та прикладними програмами. Особливо "шкідливими" 
є дискові драйвери-обманщики, активно видозмінюють-
 щие (нехай і з благородними цілями) інформацію, що зчитує-
мую або записувану на диск:  p>
 - дискові кеш (SMARTDRV, NC_CASHE);  p>
 - пакувальники дисків (DblSpace, DrvSpace, Stacker);  p>
 - системи безпеки (антивірусні монітори типу PROTECT, 
 HDPROT, ADM та інші, системи розмежування доступу 
DISKMON, DISKREET). Нерідко дають збій застарілі прістиковоч-
 ные системи захисту від несанкціонованого копіювання, типу 
NOTA або CERBERUS.  p>
 6. Нарешті, самий цікавий випадок - вірус явно не виявлений, 
 але підозри на його наявність 'як і раніше залишаються. Досить 
докладно цю тему виклав Е. Касперський у своїй книзі "Комп-
 терни віруси в MS-DOS", обрані фрагменти якої можна 
знайти в гіпертекстовому каталозі avpve того ж автора. Залишається 
 тільки привести короткий виклад цих голів з уточненнями і за-
мечаніямі (може бути, досить спірними).  p>
 а) Виявлення завантажувального вірусу. Завантажується з чистою дискети 
 і, запустивши DiskEditor, заглядаємо в сектор 0/0/1 вінчестера. 
Якщо вінчестер розділений (за допомогою fdisk) на логічні диски, 
 то код займає приблизно половину сектора і починається 
з байт FAh 33h COh (замість 33h іноді може бути 2Bh). Зака-
 Чіван код повинен текстовими рядками типу "Missing operating 
system ". Наприкінці сектора розміщуються зовні розрізнені бай-
 ти таблиці розділів. Потрібно звернути увагу на розміщення 
активний розділ в таблиці розділів. Якщо операційна система 
 розташована на диску С, а активний 2, 3 або 4 розділ, то вірус міг 
змінити точку старту, сам розмістившись на початку другого логи-
 чеського диска (заодно потрібно подивитися і там). Але також це мо-
жет говорити про наявність на машині декількох операційних си-
 стем і будь-якого boot-менеджера, що забезпечує вибіркову 
завантаження. Перевіряємо всю нульову доріжку. Якщо вона чиста, 
 тобто її сектора містять тільки байт-заповнювач, все в поряд-
ке. Наявність сміття, копій сектора 0/0/1 і іншого може гово-
 вірить про присутність завантажувального вірусу. ?? іншому, антивіруси при 
лікуванні завантажувальних вірусів лише "обезголовлювали" супротивника  p>
 (відновлюють початкове значення сектора 0/0/1), залишаючи тіло 
 "догнивала" на нульовій доріжці. Перевіряємо boot-сектор MS-DOS, 
він зазвичай розташований в секторі в 0/1/1. Його зовнішній вигляд для 
 порівняння можна знайти як у вищезгаданій книзі Е. Касперс - 
кого, так і на будь-який "чистої" машині. Отже, якщо вірус вияв-
 дружин, за допомогою DiskEditor переписуємо у файл заражений 
об'єкт: MBR 0/0/1 (а краще всю нульову доріжку), boot 0/1/1 
 і все інше. Бажано відправити цей комплект вірусоло-
гам. Копію, за бажання, залишаємо собі - для дослідів.  p>
 б) Виявлення файлового вірусу. Нерезидентні файлові виру-
 си спеціально не приховують свого наявності в системі. Тому 
основною ознакою зараження файлу є збільшення його 
 довжини, що легко помітити навіть у інфікованої операци-
онной системі. Резидентні віруси можуть приховувати зміна 
 довжини файлу (та й взагалі наявність свого коду всередині файлу-
жертви), якщо вони написані Stealth-технології. Але при заг-
 Рузком з "чистою" дискети це можна побачити. Деякі віруси 
не змінюють довжину заражаємо програм, використовуючи "порожні" 
 ділянки всередині файлу програми або кластерний "хвіст" фай-
ла, розташований після останнього заповненого сектора.  p>
 У цьому випадку основна ознака зараження - зміна конт-
 рольний суми байт файлу. Це легко виявляють антівіру-
си-інспектора типу Adinf. Як крайній захід можна рас-
 сматрівать пряме вивчення коду програм, підозрілих 
з точки зору наявності в них вірусу. Один з кращих програм-
 них засобiв для оперативного вивчення коду вірусів - програм-
ма HackerView (hiew.exe by SEN). Але, оскільки "за промовчу-
 нію" комп'ютер чужий, hiew, td, softice, ida і подібних 
програм на ньому може просто не виявитися. Зате стандартний 
 відладчик debug присутній точно. Завантажуємо підозрювану 
на наявність вірусу програму (у чистій операційній системі) 
 в пам'ять за допомогою команди debug <назва програми>. Коман-
та й дозволяє дизасемблювати фрагмент коду, команда d - 
 переглядати його в шістнадцятковому форматі, команда g <ад-
рес> запускає програму на виконання з зупинкою в зазначений-
 ної точці, команда t забезпечує покрокову трасування коду, 
команда г відображає поточний вміст регістрів. Щоб ви-
 зуально розпізнати наявність вірусу за кодом, звичайно, необхідний 
певний досвід. Ось на що треба звертати особливу увагу:  p>
 - Наявність на початку програми послідовності команд подоб-
 ного типу вкрай підозріло:  p>
 Start:  p>
 call Metka 
 Metka: pop   p>
 - Наявність на початку файлу рядків типу "PkLite", "Ь291" або "diet" 
має на увазі обробку програми відповідним пакувальником;  p>
 якщо початок програми не містить послідовності команд, ха-
 рактерних для пакувальника, не виключений факт її зараження.  p>
 - Програми, написані на мовах високого рівня, що часто содер-
 жат у своєму початку сегмент коду, потім сегмент даних. Наявність 
ще одного сегмента коду, що розташовується в кінці файлу 
 про-грами, досить підозріло.  p>
 - Підозра викликають розташовані на початку програми, напи-
 санній на мові високого рівня, фрагменти видозміни соб-
ного коду, виклики DOS-або BIOS-переривань та інше. Же-
 лательно візуально пам'ятати характерні початку програм, 
скомпільованих в тій чи іншій системі програмування (на-
 приклад, почала програм, написаних на Turbo Pascal, містять 
велика кількість дальніх викликів підпрограм call xxxx: xxxx).  p>
 - Нарешті, про наявність вірусу можуть свідчити "сторонні-
 ние" рядки типу "Eddie lives." всередині файлу.  p>
 7. Ловля вірусу "на живця". Отже, припустимо, що наявність вірусу в си-
стеми доведено одним із запропонованих вище методів, і заражений-
 ные вірусом об'єкти визначені. Тепер можна почати вивчення 
вірусу і, слідом за цим, спробувати видалити його з машини. Бажаю-
 тельно надіслати зразок вірусу професійним вірусологам. 
А для цього необхідно виділити вірус у чистому вигляді.  p>
 а) Виділення завантажувального вірусу. Як вже говорилося вище, якщо 
 вірус уразив вінчестер, необхідно за допомогою програми 
DiskEditor зберегти у файлі образ зараженого об'єкта (наприклад 
 заходів, сектору 0/0/1 або всієї нульової доріжки). Але, як відомо, 
завантажувальні віруси тільки "живуть" в системних областях вин-
 честера, розмножуються ж вони, заражаючи системні області дис-
кет. Тому дивимося на лицьову панель комп'ютера. Якщо 
 в наявності дисководи обох типів (3.5 "і 5.25"), то доведеться  p>
/•  p>
 відформатувати 4 дискети на 4 стандартних формату: 360Кбайт, 
 720Кбайт, 1.2Мбайт і 1.44Мбайт. Потім за допомогою програми 
DiskEditor уважно розглянемо і постараємося запам'ятати 
 зовнішній вигляд boot-секторів цих дискет (0/0/1), хоча б перші 
байти (природно, все це робиться на чистій машині). Встав-
 ляем не захищені від запису дискети по черзі в дисководи 
"хворий" машини і (обов'язково) звертаємося до них: намагаємося 
 прочитати теку, записати, прочитати і видалити які-небудь 
файли. Нарешті, на чистій машині за допомогою DiskEditor 
 знову переглядаємо сектор 0/0/1. Якщо на який-небудь дискеті 
він змінився, за допомогою того ж DiskEditor знімаємо образ 
 всій дискети у файл. Вірус спійманий. Можна упакувати файл ка-
ким-небудь архіватором і послати його вірусологи. Деякі 
 хитрі віруси зберігають своє тіло на додатковій, спеціально 
відформатованої доріжці, так званому інженерному ци-
 ліндре дискети. У цьому випадку без пакету копіювання ключових 
дискет типу fda, teledisk або copymaster не обійтися.  p>
 б) Виділення резидентного вірусу. Як відомо, резидентний ви-
 рус постійно знаходиться в пам'яті ПЕОМ, вибираючи жертву для 
зараження. Найчастіше в якості жертв виступають запуску-
 емие програми. Однак файли програм можуть заражатися при 
відкриття, копіювання на дискету або з неї (вірус OneHalf), у 
 час пошуку за допомогою DOS-функцій FindFirst або FindNext. 
Необхідно підібрати підходящого претендента на "конт-
 рольне" зараження - невелику програму простої структури, 
приманку. Деякі віруси намагаються розпізнати приманку 
 і відмовляються від її зараження. Не підходять для таких цілей 
занадто короткі програми або такі, більша частина яких 
 складається з повторюваних байт (наприклад, 90h - код команди 
NOP). В якості приманки з великим успіхом можна вико-
 вать програми test.com і test.exe. Ось їх вихідні тексти 
на мові Assembler.  p>
  test.com  b>  p>
 cseg segment  p>
 assume cs: cseg, ds: cseg, ss: cseg  p>
 org-lOOh 
 Start:  p>
 db 1249 dup (OFAh, 90h, OFBh, OF8h)  p>
 1 60 Методи боротьби з вірусами  p>
 mov ah, 4Ch  p>
 int 21h  p>
 cseg ends  p>
 End Start  p>
  test.exe  b>  p>
 cseg segment  p>
 assume cs: cseg, ds: cseg 
 Start:  p>
 db 1000 dup (OFAh, 90h, OFBh, OF8h)  p>
 mov ah, 4Ch  p>
 int 21h  p>
 cseg ends  p>
 sseg segment stack  p>
 assume ss: sseg  p>
 db 118 dup (OFAh, 90h, OFBh, OF8h)  p>
 sseg ends  p>
 End Start  p>
 скопіюємо принади на заражену машину. Виконаємо над ними як 
 якомога більше операцій: запустимо, скопіюємо в інше місце вінчесте-
ра і на дискету, перемістити, переглянемо їх у NC і DOS (командою 
 dir). При цьому бажано кілька разів поміняти системний час 
і дату, тому що віруси нерідко активні не кожен день і не круг-
 круглі добу. Щоб виключити Stealth-, Online з чистим дис-
кети і розглянемо уважно ці файли. Як правило, достатньо 
 буває проконтролювати розмір файлів і переглянути їх код при 
допомоги F3 - наявність вірусу визначити нескладно.  p>
 в) Виділення нерезидентного файлу. Самий неприємний випадок. 
 Крім того, що вірус нерідко вередує, розпізнаючи 
приманку, і як і раніше відмовляється працювати "без вихідних 
 і відпусток", так ще й заражаемость програм сильно залежить від 
їх розташування на вінчестері. Одні нерезидентні віруси за-
 ражают тільки в поточному каталозі, інші - тільки в подкатало-
Гах 1-го рівня, третє - в каталогах, зазначених у рядку path 
 системної середовища (Vienna), четверті - взагалі в усіх каталогах 
вінчестера. Тому скористаємося програмою типу it, щоб 
 скопіювати приманки у всі каталоги диска (запускаємо з кор-
невого каталогу):  p>
 rt copy a: test .*.  p>
 Точка "." в кінці - символ поточного каталогу. Потім їх можна буде 
видалити:  p>
 rt del test *  p>
 Тепер вибираємо свідомо заражену програму і запускаємо її N раз, 
 постійно змінюючи час та дату. Проконтролювати зміна довжини 
допоможе та ж програма rt:  p>
 rt dir test .*> test.txt  p>
 Отримуємо файл test.txt, що містить список файлів test .* із зазначенням 
 їх довжини. Вибираємо той файл приманки, який змінив довжину. 
Ось вірус і спійманий.  p>
  Як досліджувати алгоритм роботи вірусу  b>  p>
 Ситуація, коли комп'ютер виявився заражений невідомим вірусом, 
 зустрічається не дуже часто, але повністю відкидати таку 
можливість не можна. Вище розглядалися способи виявлення ви-
 руса і виділення його в чистому вигляді. Зараз переходимо до дослідження 
алгоритму роботи файлових вірусів для успішної боротьби з ними.  p>
 1. Перш ніж перейти до розгляду цього питання, згадаємо неко-
 торие принципи функціонування MS DOS.  p>
 Структура СОМ-і ЕХЕ-програм. Взагалі кажучи, слід отли-
 чать СОМ-і ЕХЕ-програми від СОМ-і ЕХЕ-файлів. Справа в тому, 
що в даний час розширення СОМ або ЕХЕ є просто 
 ознакою (до речі, необов'язковим) запускається програми. Спо-
соб завантаження програми в пам'ять і її запуску визначається опера-
 ционной системою по внутрішньому формату програми. Цей факт 
часто не враховували автори першого вірусів, що призводило до Уніч-
 тоженію деяких програм замість їх зараження.  p>
 СОМ-програма являє собою частину коду і даних, яка 
 починається з виконуваної команди і займає не більше 64Кбайт. 
Наприклад, таку структуру має командний процесор 
 COMMAND.СОМ операційної системи MSDOS до версії 6.22 
включно.  p>
 Структура ЕХЕ-програми набагато складніше. На початку файлу 
 ЕХЕ-програми розташовується заголовок (див. додаток). Поля 
ReloCS і ExelP визначають розташування точки входу в програму, 
 поля ExeSP і ReloSS - розташування стека, поля PartPag 
і PageCnt - розмір кореневого сегмента програми. Розмір деяких  p>
 6-1436  p>
 програм, обчислений по полях PartPag і PageCnt, може не з-
 впадати з реальним розміром файлу. Такі програми називаються 
"сегментованим" або "містять внутрішні оверлеї". 
 Досвідчені автори вірусів уникають заражати такі програми. Пос-
ле заголовка може розміщуватися спеціальна таблиця, 
 точне місце розташування якої визначається полем TablOff, а розмір - по-
лем ReloCnt. У цій таблиці зберігаються адреси тих слів в коді 
 про-грами, які модифікуються операційною системою під час 
завантаження програми. Наприклад, переглядаючи файл програми при 
 допомогою утиліти HackerView, можна бачити команду call 
0000:1234 h. У процесі завантаження програми MS-DOS підставить вме-
 сто нулів потрібний сегментний адресу, і все буде працювати коректив-
але. До речі, якщо в полі TablOff вказано число 40h або більше, 
 то, швидше за все, це програма у форматі Windows. Подібний 
формат має, наприклад, командний процесор Windows 95 
 COMMAND.COM. Незважаючи на своє розширення, він має на нача-
ле знамениті символи "MZ" і довжину 95Кбайт.  p>
 2. Приступаємо до дослідження конкретного файлового вірусу і розрив-
 лення алгоритму його лікування. В якості жертви "показового 
розтину "візьмемо широко відомий на початку 90-х років вірус 
 SVC-1740. Вибір визначився наступними обставинами:  p>
 - це дуже простий вірус з чіткою структурою;  p>
 - він не містить деструктивних функцій;  p>
 - не містить грубих помилок в алгоритмі;  p>
 - він стандартно заражає СОМ-і ЕХЕ-програми. 
 Запустивши SVC вірус на своїй машині, можна спостерігати наступних 
щие його прояви.  p>
 а) У MS-DOS встигли заразитися файли ARCVIEW.EXE, 
 HIEW.EXE і LEX.EXE. У результаті HackerView, перевіряючий 
цілісність свого коду, відмовився працювати, повідомивши: "HIEW 
 bad, work is aborted".  p>
 6) Windows 3.11 та Windows 95 спочатку запустилися коректно, але 
 потім продемонстрували різнокольорові горизонтальні смуги 
в відеорежимі 800х600х256 (вірус не заражав будь-які драй-
 віра, просто в момент старту Windows в пам'яті знаходився ви-
вірусні обробник переривання INT 21h).  p>
 Вилікування прийшло після використання антивірусів:  p>
 DrWeb з:/сир/а1 
 і 
 AidsTest з:/f/g/q  p>
 3. За допомогою раніше описаних методів уразив дві принади:  p>
 TEST.COM і TEST.EXE. Збільшення їх довжини на 1740 байт мож-
 але побачити тільки на "чистої" машині (Stealth-ефект). Несколь-
до слів про інструментарії. Взагалі кажучи, вибір дизассемблер 
 досить широкий. Свого часу була широко відома програма 
DisDoc. За визнанням Е. Касперського, він активно користується інте-
 рактівним дизассемблер IDA. Швидко переглянути код програм-
ми дозволяє утиліта HackerView. Також можливе використання 
 будь-якого відладчика. У даному випадку для вивчення коду заражених 
приманок використовувався дизассемблер Sourcer v5.04. Незважаючи на 
 відсутність деяких корисних опцій і помилки при дізассемблі-
рованії (досить рідкісні), користуватися програмою зручно - 
 упакована PkLite, вона займає на дискеті всього 48Кбайт.  p>
 Отже, запускаємо дизассемблер командою sr test-сом. На екрані появи-
 лась темно-синя лицьова сторінка. Натиснувши клавішу "а", можна пе-
Рейти на сторінку опцій. Рекомендується встановити опцію "а" - 
 обов'язково дизасемблювати фрагмент програми, маю-
щійся після команд jmp/ret/iret - це дозволяє отримати ассемб-
 лерний код тих фрагментів програм, до яких немає явного перех-
так (процедури обробки переривань, приховані підпрограми 
 і так далі). Натиснувши Enter, повернемося на першу сторінку. Запустимо процес 
дізассемблірованія натисканням клавіші "g". Залежно від про-
 ізводітельності комп'ютера, процес дізассемблірованія триває від 
кількох секунд до кількох хвилин. Для грубої оцінки розміру 
 лістингу можна прийняти, що один кілобайт коду відповідає десять-
ти-п'ятнадцяти кілобайтам тексту. 6740 байт зараженої приманки 
 дають 96Кбайт тексту + фото test.sdf. Цей дуже цікавий файл хра-
нит в текстовому вигляді як опції, використані при дізассембліро-
 вання, так і параметри отриманого тексту (розміщення фрагментів 
коду і даних, місце розташування символічних імен та інше). 
 Якщо змінити ці параметри, перейменувати файл у test.def і пере-
дати його Sourcer в командному рядку як параметр, то дізас-
 семблер буде працювати у відповідності з новими інструкціями. Ана-
логічну операцію проробимо для файлу testexe.  p>
 б *  p>
 4. Займемося аналізом отриманого лістингу. Поверхнево вивчаючи за-
 раженние приманки, бачимо:  p>
 - файли збільшили свою довжину на 1740 байт;  p>
 - в їх кінці явно видно сторонні коди;  p>
 - змінився час створення файлів, точніше, змінилося кількістю-
 ство секунд - воно стало рівним 60;  p>
 - на початку файлу test.coM з'явилася команда jmp;  p>
 - у заголовку файлу test.exe змінилися значення полів ReloCS, 
 ExelP, ExeSP, ReloSS, PartPag і PageCnt.  p>
 Отже.  p>
 а) На початку вірусного коду міститься послідовність команд 
 виду:  p>
 call sub_1 
 sub_1: pop si 
 sub si, 3  p>
 Подібна послідовність символів характерна для дуже мно-
 гих вірусів. Команда call поміщає в стек зміщення наступної за 
ній команди. Це значення витягується вірусом за допомогою ко-
 мих фахівців pop si (у той час як зазвичай це робиться командою ret) 
і поміщається в регістр si. Скорегувавши цю величину на довжину 
 команди call (3 байти), вірус отримує можливість коректного 
звернення до комірок пам'яті щодо кодового сегмента:  p>
 mov cs: Data [si], xxxx.  p>
 Не випадково DrWeb завжди реагує на подібні команди в на-
 Чале програм, видаючи попередження. Втім, 
це не є обов'язковою ознакою присутності вірусу. На-приклад 
, застаріла прістиковочная захист від несанкціонований-
ного копіювання (НСК) "Nota" також користується цим прийомом.  p>
 б) Важливим елементом алгоритму вірусу є визначення на-
 лічія власного резидента в ОЗУ. Викликаючи переривання DOS 
з "секретної" функцією 83h, вірус чекає реакції системи. "Здо-
 світовий" система не зреагує на провокацію, а "хвора" поме-
стіт в регістр dx число 1990h (рік створення вірусу?), чим і з-
 вести про наявність вірусу в пам'яті. Ось відповідний 
фрагмент вірусного обробника переривання INT 21h:  p>
 cmp ah, 83h 
 je loc_9  p>
 loc_9:  p>
 mov dx, 1990h 
 iret  p>
 Наявність такої перевірки використовує антивірус-фаг під час детектив-
 вання вірусного коду в оперативній пам'яті. Також антивірус-бло-
кіровщік може імітувати присутність вірусу в пам'яті, запобігання-
 обертаючи його впровадження в програмне забезпечення комп'ютера.  p>
 в) У разі відсутності вірусного обробника INT 21h в пам'яті, 
 вірус намагається встановити його і залишитися в пам'яті резидентної. 
Алгоритм резидентної запису коду вірусу в пам'ять заснований 
 на прямій модифікації заголовка блоку пам'яті (МСВ). Під-
робное опис цього алгоритму і методів боротьби з вірусами, 
 використовують подібний метод інсталяції, можна знайти 
в одному з номерів журналу "Монітор" за 1993 р.  p>
 г) Встановивши свою резидентну копію в ОЗП (або виявивши на-
 відмінність такої копії), вірус передає управління оригінальній 
програмі. Вивчення цього моменту надзвичайно важливо для ана-
 лізу. У процесі зараження (цей фрагмент з лістингу уда-
льон) вірус зчитує (в data_15) 24 байти початку програми 
 і аналізує перші два байти з них. Залежно від содер-
жімого перші слова ( "MZ" чи ні), вірус виконує заражений-
 ня жертви або по СОМ-, або по ЕХЕ-алгоритму, дописуючи 
фрагмент пам'яті зі своїм кодом до її кінця. Природно, вва-
 танние 24 байти також дописуються в файл-жертву. Тому 
для визначення способу передачі управління оригінального 
 коду програми цілком достатньо повторно порівняти збережений-
ний фрагмент початку з ознакою "MZ":  p>
 cmp cs: data_15 [si], 5A4Dh 
 je lt_Was_EXE  p>
 Якщо програма була заражена по СОМ-алгоритму, вірус 
 просто витягує перші 3 байти з комірки пам'яті за адресою 
data_15, копіює їх у старе початок оригінального коду (по адре-су 
 cs: 100h) і передає туди управління. Адресу data_15 відпо-
ствует 80-ий (якщо рахувати від кінця) байт зараженої програми.  p>
 Якщо програма була заражена з ЕХЕ-алгоритму, вірус 
 обчислює стару точку входу по збереженим в data_20 і data_21 
значень полів ReloCS і ExelP, відновлює розташування 
 стека по збереженим в data_18 і data_19 значень полів ReloSS 
і ExeSP і передає управління на ReloCS + ES 10 h: ExeIP (ES - 
 сегмент PSP; ES + lOh - сегмент початку програми; ES + ReloCS + 
10h - повний сегмент точки входу). Розташування цих адрес 
 в зараженому файлі (від кінця файлу):  p>
 data_20 - 60 
 data_21 - 58 
 data_18 - 66 
 data_19 - 64  p>
 Ще можуть стати в нагоді збережені значення полів PartPag 
 і PageCnt (від кінця файлу):  p>
 data_16 1 - 78 
 data_16 3 - 76  p>
 Для лікування зараженого файлу достатньо відновити вимірюв-
 ненние значення комірок, адреси яких тільки що вирахували, 
і відсікти 1740 вірусних байт від кінця файлу.  p>
 5. Ще кілька особливостей, з якими іноді можна зустріти-
 ся при дізассемблірованіі коду вірусу і вивченні лістингу. Код 
вірусу може бути зашифрований. У цьому випадку на початку вірусного 
 коду повинен розташовуватися розшифровувача. Взагалі кажучи, рас-
шіфровщіков може бути багато, але перші завжди існує. 
 Якщо розшифровувача змінюється від одного зараженого файлу до дру-
гому, значить маємо справу з поліморфним вірусом. Вироджених 
 випадок - зашифровуються тільки збережені в тілі вірусу бай-
ти. Для СОМ-файлу цілком досить покроково пройти расшіф-
 ровщік в відладчик, дочекатися його завершення і зберегти на вин-
честер розшифрувати код вірусу. Отриманий файл можна 
 розбирання. Для ЕХЕ-файла таке не підходить, тому що в 
пам'яті після завантаження не має назви, і отриманий файл 
 не може бути дізассе