Виявлення невідомого вірусу

Pegas, http://pegas1.narod.ru

У цьому розділі розглядаються ситуації, з якими може зіткнутися користувач у тому випадку, якщо він підозрює, що його комп'ютер уражений вірусом, але ні одна з відомих йому антивірусних програм не дала позитивного результату. Де і як шукати вірус? Які при цьому необхідні інструментальні засоби, якими методами слід користуватися і яким правилам слідувати?


Найперше правило – не панікувати. Ні до чого хорошого це не призведе. Ви – не перший і не останній, чий комп'ютер виявився зараженим, до того ж не кожен збій комп'ютера є проявом вірусу. Тому частіше згадуйте приказку – "Не такий страшний чорт, як його малюють". До того ж поразка вірусом не найгірше, що може трапитися з комп'ютером.


 


Не слід телефонувати в антивірусні фірми з питанням: "Напевно, у мене в комп'ютері вірус. Що мені робити? ". Допомогти вам не зможуть, оскільки для видалення вірусу потрібно дещо більше інформації. Для того щоб антивірусна фірма могла надати реальну допомогу, на її адресу слід вислати зразок вірусу – заражений файл у випадку файлового вірусу або заражену дискету (або її файл-образ) у випадку завантажувального вірусу. Яким чином виявляються заражені файли / диски, буде розказано нижче.


Не забувайте перед використанням антивірусних програм і утиліт завантажити комп'ютер з резервної копії DOS, розташованої на явно чистої від вірусів і захищеної від запису дискеті, і в подальшому використовувати програми тільки з дискет. Це необхідно для того, щоб застрахуватися від резидентного вірусу, так як він може блокувати роботу програм чи використовувати їх роботу для інфікування перевірених файлів / дисків. Більше того, існує велика кількість вірусів, знищують дані на диску, якщо вони "підозрюють", що їх код може бути виявлений. Звичайно ж, це вимога ніяк не відноситься до макро-вірусів і до дисків, розмічених одним з нових форматів (NTFS, HPFS), – після завантаження DOS такий вінчестер виявиться недоступним для DOS-програм.

Виявлення завантажувального вірусу

У завантажувальних секторах дисків розташовані, як правило, невеликі програми, призначення яких полягає у визначенні розмірів і меж логічних дисків (для MBR вінчестера) або завантаженні операційної системи (Для boot-сектора).


На початку слід прочитати вміст сектора, підозрілого на наявність вірусу. Для цієї мети зручно використовувати DISKEDIT з "Нортоновских утиліт" або AVPUTIL з професійного комплекту AVP.


Деякі завантажувальні віруси практично відразу можна виявити по наявності різних текстових рядків (наприклад, вірус "Stoned" містить рядки: "Your PC is now Stoned!", "LEGALISE MARIJUANA!"). Деякі віруси, що вражають boot-сектори дисків, навпаки, визначаються за відсутності рядків, які обов'язково повинні бути присутніми в boot-секторі. До таких рядках відносяться імена системних файлів (наприклад, рядок "IO SYSMSDOS SYS") і рядки повідомлень про помилки. Відсутність або зміна рядка-заголовка boot-сектора (рядок, що містить номер версії DOS або назва фірми-виробника програмного забезпечення, наприклад, "MSDOS5.0" або "MSWIN4.0") також може служити сигналом про зараження вірусом, якщо на комп'ютері не встановлена Windows95/NT – ці системи з невідомої мені причини записують у заголовок завантажувальних секторів дискет випадкові рядки тексту.


Стандартний завантажувач MS-DOS, розташований в MBR, займає менше половини сектора, і багато вірусів, що вражають MBR вінчестера, досить просто помітити щодо збільшення довжини коду, розташованого в секторі MBR.


Однак існують віруси, які впроваджуються в завантажувач без зміни його текстових рядків і з мінімальними змінами коду завантажувача. Для того щоб виявити такий вірус, в більшості випадків достатньо відформатувати дискету на свідомо незараженою комп'ютері, зберегти у вигляді файлу її boot-сектор, потім якийсь час використовувати її на зараженому комп'ютері (записати / прочитати кілька файлів), а після цього на незараженою комп'ютері порівняти її boot-сектор з оригінальним. Якщо в коді завантажувального сектора відбулися зміни – вірус спійманий.


Існують також віруси, що використовують більш складні прийоми зараження, наприклад, які змінюють при інфікуванні MBR всього 3 байти Disk Partition Table, відповідні адресою активного завантажувального сектора. Для ідентифікації такого вірусу доведеться провести більш детальне дослідження кодів завантажувального сектора аж до повного аналізу алгоритму роботи його коду.


Наведені міркування грунтуються на тому, що стандартні завантажувачі (програми, записувані операційною системою у завантажувальні сектори) реалізують стандартні алгоритми завантаження операційної системи і оформляються у відповідності з її стандартами. Якщо ж диски відформатовані утилітами, що не входять до складу DOS (наприклад, Disk Manager), то для виявлення в них вірусу слід проаналізувати алгоритм роботи та оформлення завантажувачів, створюваних такий утилітою.

Виявлення файлового вірусу

Як зазначалося, віруси поділяються на резидентні і нерезидентні. Зустрічалися до цих пір резидентні віруси відрізнялися набагато більшим підступністю і витонченістю, ніж нерезидентні. Тому для початку розглянемо найпростіший випадок – ураження комп'ютера невідомим нерезидентним вірусом. Такий вірус активізується при запуску будь-якої зараженої програми, робить все, що йому належить, передає управління програмі-носію і надалі (на відміну від резидентних вірусів) не буде заважати її роботі. Для виявлення такого вірусу необхідно порівняти довжини файлів на вінчестері і в дистрибутивних копіях (згадка про важливість зберігання таких копій вже стало банальністю). Якщо це не допоможе, то слід побайтно порівняти дистрибутивні копії з використовуваними програмами. В даний час розроблено досить багато утиліт такого порівняння файлів, сама найпростіша з них (утиліта COMP) міститься в DOS.


Можна також переглянути дамп виконуваних файлів. У деяких випадках можна відразу виявити присутність вірусу по наявності в його коді текстових рядків. Багато вірусів, наприклад, містять рядки: ". COM", "*. COM", ". EXE", "*. EXE", "*.*", "MZ", "COMMAND" і т.д. Ці рядки часто зустрічаються на початку або в кінці заражених файлів.


Існує і ще один спосіб візуального визначення зараженого вірусом DOS-файлу. Він заснований на тому, що виконувані файли, вихідний текст яких написаний на мові високого рівня, мають цілком певну структуру. У разі Borland чи Microsoft C / C + + сегмент коду програми знаходиться на початку файлу, а відразу за ним – сегмент даних, причому на початку цього сегменту варто рядок-копірайт фірми-виробника компілятора. Якщо в дампі такого файлу за сегментом даних слід ще одну ділянку коду, то цілком імовірно, що файл заражений вірусом.


Те ж справедливо і для більшості вірусів, що заражають файли Windows і OS / 2. У виконуваних файлах цих ОС стандартним є розміщення сегментів у наступному порядку: сегмент (и) коду, за якими йдуть сегменти даних. Якщо за сегментом даних йде ще один сегмент коду, це також може служити сигналом про присутність вірусу.


Користувачам, знайомим з мовою Асемблер, можна спробувати розібратися в кодах підозрілих програм. Для швидкого перегляду найкраще підходить HIEW (Hacker's View) або AVPUTIL. Для більш докладного вивчення потрібно дізассемблер – Sourcer або IDA.


Рекомендується запустити одну з резидентних антивірусних програм-блокувальників і стежити за її повідомленнями про "підозрілих" діях програм (запис в COM-або EXE-файли, запис на диск за абсолютним адресою і т.п.). Існують блокувальники, які не тільки перехоплюють такі дії, а й повідомляють адресу, звідки надійшов "підозрілий" виклик (до таких блокувальникам відноситься AVPTSR). Виявивши подібне повідомлення, слід з'ясувати, від якої програми воно прийшло, і проаналізувати її коди за допомогою резидентного дизассемблера (наприклад, AVPUTIL.COM). При аналізі кодів програм, резидентно знаходяться в пам'яті, велику допомогу часто надає трасування переривань 13h і 21h.


Слід зазначити, що резидентні DOS-блокувальники часто виявляються безсилими, якщо робота ведеться в DOS-вікні під Windows95/NT, оскільки Windows95/NT дозволяють вірусу працювати "в обхід" блокувальника (як, втім, і всіх інших резидентних програм). DOS-длокіровщікі також нездатні зупинити розповсюдження Windows-вірусів.


Розглянуті вище методи виявлення файлових і завантажувальних вірусів підходять для більшості як резидентних, так і нерезидентних вірусів. Проте ці методи не спрацьовують, якщо вірус виконаний за технологією "Стелс", що робить непотрібним використання більшості резидентних блокувальників, утиліт порівняння файлів і читання секторів.

Виявлення макро-вірусу

Характерними проявами макро-вірусів є:

Для перевірки системи на предмет наявності вірусу можна використати пункт меню Tools / Macro. Якщо виявлені "чужі макроси", то вони можуть належати вірусу. Однак цей метод не працює у випадку стелс-вірусів, які забороняють роботу цього пункту меню, що, у свою чергу, є достатньою підставою вважати систему зараженою.


Багато вірусів мають помилки або некоректно працюють в різних версіях Word / Excel, в результаті чого Word / Excel видають повідомлення про помилку, наприклад:


WordBasic Err = номер помилки

Якщо таке повідомлення з'являється при редагуванні нового документа або таблиці і при цьому свідомо не використовуються будь-які користувацькі макроси, то це також може служити ознакою зараження системи.


Сигналом про вірус є і зміни у файлах і системної конфігурації Word, Excel і Windows. Багато віруси тим чи іншим чином змінюють пункти меню Tools / Options – дозволяють або забороняють функції "Prompt to Save Normal Template "," Allow Fast Save "," Virus Protection ". Деякі віруси встановлюють на файли пароль при їх зараженні. Велика кількість вірусів створює нові секції і / або опції в файлі конфігурації Windows (WIN.INI).


Природно, що до проявів вірусу відносяться такі очевидні факти, як поява повідомлень або діалогів з досить дивним змістом або мовою, не збігається з мовою встановленої версії Word / Excel.

Виявлення резидентного вірусу

Якщо в комп'ютері виявлені сліди діяльності вірусу, але видимих змін у файлах і системних секторах дисків не спостерігається, то цілком можливо, що комп'ютер вражений одним з "стелс"-вірусів. У цьому випадку необхідно завантажити DOS з явно чистої від вірусів дискети, що містить резервну копію DOS, і діяти, як і при ураженні нерезидентним вірусом. Однак іноді це небажано, а в ряді випадків неможливо (відомі, наприклад, випадки купівлі нових комп'ютерів, заражених вірусом). Тоді доведеться виявити і нейтралізувати резидентну частину вірусу, виконану за технологією "стелс". Виникає питання: де в пам'яті і як шукати вірус або його резидентну частину? Існує кілька способів інфікування пам'яті.

DOS-віруси

1. Вірус може проникнути в таблицю векторів переривань


Кращий спосіб виявити такий вірус полягає в тому, щоб знайти карту розподілу пам'яті, яка відображає список резидентних програм (приклад такої карти наведений у табл. 3.1). Докладна карта пам'яті повідомляє інформацію про всіх блоках, на які розбита пам'ять: адреса блоку управління пам'яттю MCB, ім'я програми-власника блоку, адреса її префікса програмного сегмента (PSP) і список перехоплюваних блоком векторів переривань.


За наявності вірусу в таблиці векторів переривань, утиліти, що відображають карту розподілу пам'яті (наприклад, AVPTSR.COM, AVPUTIL.COM), починають "галасувати".


 Таблиця 3.1. Карта розподілу незараженной пам'яті

+—————————————————–+
| Адреса | Адреса | Розмір | Ім'я програми | Номери векторів |
| Блоку | PSP | блоку | власника | переривань |
| MCB | | MCB (Кб) | блоку MCB | |
|—–+—–+——-+————-+——————-|
|0E9A |0E9B | 3,20K| COMMAND.COM | 22,24,2E |
| 0F6E | 0F6F | 0,04 K | блок вільний | |
|0F72 |0E9B | 0,15K| COMMAND.COM | |
|0F7D |0F85 | 23,20K| AVPTSR.COM | 10,1B,1C,23,26,27 |
| | | | | 28,2F,40,EF,FF |
| 1545 | 1546 | 0,10 K | блок вільний | |
|154D |154E | 3,90K| PLUCK.COM | 09,13,16,21 |
|164B |0E9B |549,30K| COMMAND.COM | 30,EE,F2,F3,F4,F5 |
| | | | | F6,F7,F8,FE |
+—————————————————–+

Таблиця 3.2. Таблиця векторів переривань уражена вірусом

+—————————————————–+
| Адреса | Адреса | Розмір | Ім'я програми | Номери векторів |
| Блоку | PSP | блоку | власника | переривань |
| MCB | | MCB (Кб) | блоку MCB | |
|—–+—–+——-+————-+——————-|
|0E9A |0E9B | 3,20K| COMMAND.COM | 22,24,2E,EB |
| 0F6E | 0F6F | 0,04 K | блок вільний | |
|0F72 |0E9B | 0,15K| COMMAND.COM | |
|0F7D |0F86 | 23,20K| AVPTSR.COM | 10,1B,23,26,27,28 |
| | | | | 2F,40,CA,D3 |
| 1546 | 1547 | 0,10 K | блок вільний | |
|154E |154F | 3,90K| PLUCK.COM | 09,13,16,91 |
|164C |0E9B |549,30K| COMMAND.COM | 30,85,89,8E,90,93 | –+
| | | | | 95,97,98,9D,9E,9F | |
| | | | | A2,A7,A9,AB,AE,AF | |
| | | | | B1, B3, BB, BE, BF, C0 | | – "Шум"
| | | | | C4,C9,CE,CF,D0,D1 | |
| | | | | D2,D4,D5,D8,D9,DA | |
| | | | | DB,DD,DF,E0,E4,E5 | |
| | | | | E6,E7,E8,E9,EA,ED | |
| | | | | EE,F3,F4,F5,F7,F8 | |
| | | | | F9 | –+
+—————————————————–+


Інший, більш надійний, але вимагає високої кваліфікації користувача спосіб, – переглянути таблицю векторів переривань за допомогою дизассемблера. Якщо при цьому будуть виявлені коди якоїсь програми, то код вірусу (або ділянка коду) знайдено.


2. Вірус може декількома способами вбудуватися в DOS: у довільний системний драйвер, в системний буфер, в інші робочі області DOS (наприклад, в область системного стека або у вільні місця таблиць DOS і BIOS)


Найбільш "популярним" способом інфікування вірусом довільного системного драйвера є прикріплення тіла вірусу до файлу, що містить драйвер, і модифікація заголовка поражаемого драйвера. Якщо при цьому вірус оформляє себе як окремий драйвер, то його можна виявити при перегляді карти розподілу пам'яті, що містить список системних драйверів. Якщо при цьому в списку присутній драйвер, який не описаний у файлі CONFIG.SYS, те він і може бути вірусом. Якщо ж вірус "приклеюється" до розташованого перед ним драйверу, не виділяючи свої коди як окрему програму-драйвер, то виявити його можна методами, описаними нижче.


Вірус, вбудовується в системний буфер, повинен зменшувати загальну кількість буферів; в іншому випадку він буде знищений наступними операціями зчитування з диска. Досить нескладно написати програму, яка підраховує кількість буферів, реально присутніх в системі, і порівнює отриманий результат із значенням команди BUFFERS, розташованої у файлі CONFIG.SYS (якщо команда BUFFERS відсутній, то зі значенням, встановлюються DOS за замовчуванням).


Існує достатньо способів проникнення вірусу в системні таблиці або область стека DOS. Однак реалізація цих способів зажадає від автора вірусу досконального знання різних версій DOS. До того ж вільного місця в DOS не так вже й багато, і тому написання повноцінного "стелс"-вірусу такого типу малоймовірно. Якщо ж все-таки подібний вірус з'явиться, то знайти його код можна дизасемблювання "Підозрілих" на наявність вірусу ділянок DOS.


3. Вірус може проникнути в область програм у вигляді:

Якщо вірус впроваджується у відведену для прикладних програм область пам'яті у вигляді нового блоку, створюючи для себе власний MCB, або як окрема резидентна програма, то його можна виявити при перегляді докладної карти розподілу пам'яті, що відображає адреси всіх блоків MCB. Зазвичай такий вірус виглядає як окремий блок пам'яті (табл. 3.3), що не має імені і перехоплює один або кілька векторів переривань (наприклад, INT 8, 13h, 1Ch, 21h). Слід зазначити, що вірус може виділити собі блок пам'яті як у звичайній (conventional), так і у верхній пам'яті (UMB).


 Таблиця 3.3.a. Вірус в області користувальницьких програм

+—————————————————–+
| Адреса | Адреса | Розмір | Ім'я програми | Номери векторів |
| Блоку | PSP | блоку | власника | переривань |
| MCB | | MCB (Кб) | блоку MCB | |
|—–+—–+——-+————-+——————-|
|0E9A |0E9B | 3,20K| COMMAND.COM | 22,24,2E |
| 0F6E | 0F6F | 0,04 K | блок вільний | |
|0F72 |0E9B | 0,15K| COMMAND.COM | |
|10D1 |10DA | 23,20K| AVPTSR.COM | 10,1B,23,26,27,28 |
| | | | | 2F,40 |
|17AF |17B0 | 1,70K| ? | 08 <—-+ |
|1820 |0E9B |539,30K| COMMAND.COM | 30,31 | |
|9F04 |0000 | 3,90K| ? | 1C,21 <–+ | |
+———————————————|-|—–+
| |
вірус "Yankee" – + |
вірус "Jerusalem" — +

Таблиця 3.3.b. Вірус в області користувальницьких програм (UMB)

+—————————————————–+
| Адреса | Адреса | Розмір | Ім'я програми | Номери векторів |
| Блоку | PSP | блоку | власника | переривань |
| MCB | | MCB (Кб) | блоку MCB | |
|—–+—–+——-+————-+——————-|
|03D8 |03D8 | 2,62K| COMMAND.COM | 22,24,2E |
| 047D | 0000 | 0,06 K | блок вільний | |
|0482 |03D8 | 0,25K| COMMAND.COM | |
|0493 |0493 | 18,90K| AVPTSR.COM | 10,1B,23,26,27,28 |
| | | | | 2F,40 |
|08F5 |03D8 |618,64K| COMMAND.COM | 30 |
|A000 |0008 |136,09K| DOS | |
|C13A | – | 1,20K| DOS | <–+ |
| C186 | – | 54,96 K | блок вільний | | |
+———————————————|——-+
|
вірус "Tremor", що маскується під блок DOS – +


4. Вірус може проникнути за кордон пам'яті, виділеної під DOS


Практично всі завантажувальні і щось у системі віруси розташовуються за межами пам'яті, виділеної для DOS, зменшуючи значення слова, розташованого за адресою [0040:0013]. У цьому випадку перший мегабайт пам'яті комп'ютера виглядає так:


00000 +——+ Пам'ять DOS 00000 +——+ Пам'ять DOS
| | | |
| | | |
| | XXXX0h |——| "Вирізаний" вірусом
| | | | Ділянку пам'яті
A0000h |——| Відео-пам'ять A0000h |——| Відео-пам'ять
| | | |
C0000h |——| ROM BIOS C0000h |——| ROM BIOS
| | | |
| | | |
+——+ +——+

Виявити такі віруси дуже просто – достатньо дізнатися ємність оперативної пам'яті і порівняти її з реальною. Якщо замість 640K (на деяких старих PC – 512K) система повідомить менше значення, то слід переглянути дизассемблером "відрізаний" ділянку пам'яті. Якщо на цій ділянці будуть виявлені коди якоїсь програми, то, швидше за все, вірус знайдений.


Увага! Ємність оперативної пам'яті може зменшитися на 1 або декілька кілобайт і в результаті використання розширеної пам'яті або деяких типів контролерів. При цьому типовою є наступна картина: у "відрізаному" ділянці вміст більшості байтів нульове.


5. Вірус може вбудовуватися в конкретні, свідомо резидентні програми або "приклеїтися" до вже наявних блоків пам'яті


Можливе інфікування вірусом файлів DOS, які є резидентними (наприклад, IO.SYS, MSDOS.SYS, COMMAND.COM), драйверів (ANSY.SYS, COUNTRY.SYS, RAMDRIVE.SYS) та ін Виявити такий вірус набагато складніше внаслідок малої швидкості його поширення, але, проте, вірогідність атаки подібного вірусу значно менше. Все частіше стали зустрічатися "хитрі" віруси, які коригують заголовки блоків пам'яті або "обманюють" DOS таким чином, що блок з кодами вірусу стає одним цілим з попереднім блоком пам'яті.


У цьому випадку виявити вірус набагато складніше – необхідно знати реальну довжину програм, розміщених в пам'яті, і список переривань, які вони перехоплюють. Але цей спосіб не дуже зручний і іноді не спрацьовує. Тому рекомендується використовувати інший метод, який може полегшити виявлення вірусу в подібній ситуації. Він заснований на наступному властивості – переважна більшість вірусів для виявлення незаражених файлів і секторів дисків перехоплює переривання 13h або 21h, вбудовуючись в обробник переривання. У такому випадку для виявлення вірусу досить переглянути текст (команди асемблера) обробників зазначених переривань (наприклад, за допомогою програми AVPUTIL.COM). Правда для того, щоб відрізнити вірус від звичайних програм, потрібно достатній досвід роботи з вірусами і деяке уявлення про структуру обробника на незараженою комп'ютері. До того ж слід бути обережним: існує кілька вірусів, які "завішують" систему при спробі трасування їх кодів.


Відомі віруси, які при зараженні файлів або дисків не користуються перериваннями, а безпосередньо працюють з ресурсами DOS. При пошуку подібного вірусу необхідно ретельно дослідити зміни у внутрішній структурі зараженої DOS: список драйверів, таблиці файлів, стеки DOS і т.д. Це є дуже кропіткою роботою, і, враховуючи численність версій DOS, вимагає дуже високої кваліфікації користувача.


Звичайно, існують і інші, досить екзотичні способи інфікування пам'яті вірусом, наприклад впровадження вірусу в відеопам'ять, в High Memory Area (HMA) або в розширену пам'ять (EMS, XMS), але подібні віруси зустрічаються досить рідко і завжди виявлялися хоча б одним з перерахованих вище ознак. Існують також монстри, які використовують захищений режим процесорів i386 і вище. На щастя, відомі віруси такого типу або "не живуть" разом з сучасними операційними системами і тому дуже помітні, або не використовують стелс-прийомів. Однак поява повноцінного стелс-DOS-вірусу, що працює в захищеному режимі, цілком реально. Такий вірус буде невидимий для DOS-завдань і виявити його буде можливо, тільки або перенісши заражені файли на незаражений комп'ютер, або після перезавантаження DOS з чистою дискети.

Windows-віруси

Виявлення резидентного Windows-вірусу є вкрай складним завданням. Вірус, перебуваючи в середовищі Windows як додаток чи VxD-двайвер, практично невидимий, оскільки одночасно активні кілька десятків додатків і VxD, і вірус за зовнішніми ознаками від них нічим не відрізняється. Для того, щоб виявити програму-вірус в списках активних додатків і VxD, необхідно досконально розбиратися у "нутрощах" Windows і мати повне уявлення про драйвери та додатках, встановлених на даному комп'ютері.


Тому єдиний прийнятний спосіб спіймати резидентний Windows-вірус – завантажити DOS і перевірити запускаються файли Windows методами, описаними вище.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*