.: Menu :.
Home
Реферати
Книги
Конспекти уроків
Виховні заходи
Зразки документів
Реферати партнерів
Завантаження
Завантажити
Електронні книги


????????...

 
��������...
Антивірусні системи 


Антивірусні системи

ДИПЛОМНА РОБОТА

на тему «Антивірусні системи»













ЗМІСТ

Вступ
1. ВСТУП ДО КОМП»ЮТЕРНОЇ ВІРУСОЛОГІЇ 7
1.1. Коротко про віруси 7
1.2. Опис джерел інформаційних загроз системі Windows NT 8
1.2.1 Файли додатків 9
1.2.2 Файли офісних документів 11
1.2.3 Файли інтерпртованих програм 12
1.2.4 Завантажувальні сектори дисків і дискет 13
1.2.5 Повідомлення електронної пошти 15
1.2.6 Файлообмінні мережі 16
1.2.7 Впровадження по мережі 16
1.2.8 Драйвери ОС NT 17
1.3. Класифікація комп.ютерних шкідливих програм. 18
1.3.1 Файлові віруси 19
1.3.2 Завантажувальні віруси 22
1.3.3 Файлово-завантажувальні віруси 23
1.3.4 Стелс-віруси 24
1.3.5 Віруси, що шифруються 24
1.3.6 Поліморфні віруси 25
1.3.7 Макрокомандні віруси 25
1.3.8 Поштові віруси 27
1.3.9 Віруси в пакетних файлах ОС 29
1.3.10 Віруси в драйверах ОС 29
1.3.11 Безтілесні віруси 30
1.3.12 Віруси для пірінгових мереж 30
1.3.13 Комбіновані віруси 31
1.3.14 Відомі й невідомі віруси 31
1.3.15 Колекційні віруси 32
1.4 Шкідливий вплив комп.ютерних вірусів на ОС NT 32
1.4.1 Візуальні й звукові ефекти 33
1.4.2 Вплив на файли 34
1.4.3 Зміна вмісту секторів диска 35
1.4.4 Вплив на бази даних 36
1.4.5 Вплив на апаратне забезпечення комп.ютерів 37
1.4.6 Вплив на систему в цілому 37
1.4.7 Одержання несанкціонованого доступу й викрадення інформації 38
1.4.8 Компрометація користувача 40
1.4.10 Соціальний інжиніринг 41
2. ОПИС МЕТОДІВ ВИЯВЛЕННЯ Й БОРОТЬБИ З КОМП»ЮТЕРНИМИ ВІРУСАМИ 42
2.1 Методи виявлення комп.ютерних вірусів 42
2.1.1 Сканування 42
2.1.2 Евристичний аналіз 43
2.1.3 Виявлення змін 44
2.1.4 Аналіз мережного трафіку 45
2.1.5 Аналіз баз даних поштових програм 46
2.1.6 Виявлення вірусів у системі автоматизації документообігу 46
2.1.7 Вакцинування 47
2.2 Методи й засоби захисту від комп.ютерних вірусів 48
2.2.1 Програмно-технічні методи 48
2.2.2 Захист, убудований в BIOS комп.ютера 49
2.2.3 Захист поштових серверів 49
2.2.4 Захист серверів систем документообігу 50
2.2.5 Захист нестандартних інформаційних систем 50
2.2.6 Мережевий центр керування антивірусами 51
2.2.7 Багаторівневі системи з Web-інтерфейсом 53
2.2.8 Адміністративно-технологічні методи захисту 55
2.2.9 Встановлення персональних брандмауерів 56
3 ПРОЕКТУВАННЯ ІНФОРМАЦІЙНОЇ СИСТЕМИ 58
3.1 Вибір засобу забезпечення захисту інформації для операційної системи на базі NT 58
3.2 Постановка завдання на проектування 58
3.2.1 Об.єкти моніторингу 58
3.2.2 Опис методу 58
3.2.3 Переваги методу 58
3.2.4 Недоліки методу 59
3.2.5 Способи застосування 59
3.3 Опис інформаційної системи 60
3.3.1 Концептуальний проект програми 60
3.3.2 Архітектура інформаційної системи 60
3.3.3 Алгоритм роботи інформаційної системи 60
3.3.4 Обробка IRPs 62
3.3.5 Обробка керуючих повідомлень 64
3.3.6 Загрузка та вигрузка драйверу 66
3.3.7 Ініціалізація драйверу 67
3.3.8 Операції, що потребують блокування 68
3.3.9 Реалізація обробки керуючих повідомлень 68
3.3.10 Механізм налагодження фільтра-драйвера 69
3.4 Реалізація драйверу 70
3.4.1 Опис функції DriverEntry і функцій використовуваних нею 70
3.4.2 Опис класу «Асоціативний список» 75
3.4.3 Опис функцій для обробки пакетів, адресованих керуючому об.єкту пристрою 77
3.4.4 Опис функцій для обробки пакетів, адресованих фільтруючому об.єкту пристрою 80
3.4.5 Реалізація допоміжної динамічної бібліотеки для роботи з драйвером 84
3.5 Реалізація клієнтського додатку 89
3.5.1Методи реалізовані в скрипті вірусного сканеру 89
3.6 Застосування інформаційної системи 92
ВИСНОВОК 93
СПИСОК ВИКОРИСТАНОЇ ЛІТЕРАТУРИ 94






ВСТУП
Безпека в сфері інформаційних технологій - це комплекс мір, і вона повинна сприйматися як система. Комп.ютерна безпека має різні аспекти, серед яких не можна виділити більш значимі або менш. Тут важливо все. Не можна відмовитися від якоїсь частини цих мір, інакше система не буде працювати.
Комп.ютерна безпека мало відрізняється від безпеки в загальному значенні. У звичайному житті ніхто не буде ставити залізні двері з гарним замком на дерев.яну комору з діркою в стіні. Так само й автомобіль із гарною гумою, але несправними гальмами буде небезпечний. Аналогічно й при забезпеченні комп.ютерної безпеки важливо дотримувати мір захисту у всіх точках дотику з агресивним середовищем. Кожний інформаційний ресурс, будь то комп.ютер користувача або сервер організації, повинен бути повністю захищений. Захищеними повинні бути файлові системи, мережі й т.д. Способи реалізації ми не обговорюємо, але доступ до даних теж повинен бути безпечним, і люди, що працюють із інформацією, можуть розглядатися як ланка в ланцюжку механізму, що забезпечує працездатність і безпеку всієї системи.
Стан сучасної мережі інтернет інакше як «криміногенною» назвати не можна. Постійні вірусні й троянські атаки тероризують практично всіх користувачів інтернету - домашніх користувачів, невеликі й середні компанії, глобальні корпорації й державні структури. Про причини подібної криміналізації мережі говорилося й говориться досить багато - це корисливий інтерес. Що конкретно мається на увазі? Добування нелегального прибутку шляхом створення й поширення шкідливих програм - це:
крадіжки приватної й корпоративної банківської інформації (одержання доступу до банківських рахунків персональних користувачів і організацій).
викрадання номерів кредитних карт.
розподілені мережеві атаки (DDoS-атаки) з наступною вимогою грошового викупу за припинення атаки (сучасний комп.ютерний варіант звичайного рекету).
створення мереж троянських проксі-серверів для розсилання спаму (і комерційне використання цих мереж).
створення зомбі-мереж для багатофункціонального використання.
створення програм показу небажаної реклами.
впровадження в комп.ютери троянських програм, що постійно дзвонять на платні (і досить дорогі) телефонні номери.
тощо.
Оцінити розмах діяльності сучасного злочинного комп.ютерного співтовариства досить складно. Як мені здається, у комп.ютерному андеграунді активні десятки (якщо не сотні) хакерських угруповань. Чисельність хакерів у подібних угрупованнях можна обчислювати, швидше за все, тисячами, про що говорять поліцейські зведення практично із всіх комп.ютеризованих країн світу. За останні два роки було арештовано кілька десятків хакерів і хакерських груп, у які сумарно входило кілька сотень людин. Однак це не зробило істотного впливу на кількість вірусів, і троянських програм.
Оберт тіньового комп.ютерного бізнесу також піддається тільки загальним оцінкам. За інформацією з відкритих джерел, хакери в 2004-2005 роках вкрали або привласнили шахрайським чином кілька сотень мільйонів доларів. Зважаючи на те, що більша частина комп.ютерного криміналу дотепер залишається на волі, можна припустити, що, швидше за все, оберти комп.ютерного андеграунду можуть щорічно вимірюватися мільярдами доларів, що може перевищувати доходи антивірусних компаній - про це трохи нижче.
Усього ж збиток світової економіки від діяльності комп.ютерних «злих геніїв» давно вже перевалив за десяток мільярдів доларів щорічно й продовжує рости. По оцінках дослідницької організації «Computer Econоmics», в 2004 році він склав майже 18 мільярдів доларів і має тенденцію до 30-40-процентного щорічного зростання.


ВСТУП ДО КОМП»ЮТЕРНОЇ ВІРУСОЛОГІЇ
1.1. Коротко про віруси

Вірусом називається спеціально створена програма, що здатна самостійно поширюватися в комп.ютерному середовищі. Це означає, що якщо вірус потрапив до вас у комп.ютер разом з однією із програм або з документом, то через якийсь час ваші програми або документи будуть |заражені| вірусом. Якщо до того ж комп.ютер підключений до локальної або глобальної мережі, вірус може поширитися й на інші комп.ютери.
Ціль створення вірусної програми може бути різною, але ніколи не буває шляхетною. У результаті поширення віруси змінюють програми й документи, що зберігаються на дисках комп.ютера, що часто приводить до їхньої втрати. Гірше всього те, що віруси здатні знищити взагалі всю інформацію, що є в комп.ютері. Але ж вартість цієї інформації може в десятки й сотні разів перевищувати вартість самого комп.ютера.
Комп.ютерні віруси не тільки поширюються, заражаючи нові комп.ютери. Більшість із них, потрапивши в комп.ютер, починають усіляко шкодити користувачеві. Зовнішні прояви вірусів можуть бути різноманітними. Вони обмежуються винятково фантазією автора вірусу й можливостями комп.ютера.
Багато вірусів відносно безпечні для даних, що зберігаються в комп.ютері, і по більшій частині діють тільки на нерви користувача. Вони можуть, наприклад, обсипати символи, відображувані на екрані в текстовому режимі, виводити на екран сторонні написи, відтворювати сторонні звуки за допомогою убудованого в комп.ютер динаміка.
Вірус може не тільки знищити, але й змінити інформацію, записану на диск комп.ютера. Цей випадок найнебезпечніший. Якщо користувач вчасно не виявить вірус, і вірус непомітно змінить документи або файли баз даних, помилка може виявиться вже занадто пізніше у вигляді неправильного рахунку або перекрученого балансу.
На сьогодні нам не відомі віруси, здатні безповоротно вивести з ладу апаратуру комп.ютера, але в деяких випадках вони можуть завдати значної шкоди. Так, існують віруси, що змінюють пароль, необхідний для запуску комп.ютера. Цей пароль зберігається в енергонезалежній пам.яті комп.ютера, що харчується від маленької батарейки або акумулятора. Як правило, можна тимчасово відключити живлення енергонезалежної пам.яті, щоб скинути її вміст. Але якщо така можливість відсутня (що іноді буває), залишається тільки приступити до підбора пароля або звернутися до виробника.
В описі вірусів було виявилено вірус, що виконує компресію файлів, що заражаються. Цей свого роду нав.язливий аналог утиліти Diet, не запитуючи дозволу, стискає файли всіх додатків, що заражаються. У такий спосіб вірус збільшує обсяг дискової пам.яті комп.ютера. Не варто зваблюватися із приводу корисних вірусів. Навіть такі необразливі на перший погляд віруси таять у собі багато потенційних небезпек. Серед них можливі помилки в коді самого вірусу й несумісність із іншими програмами.

1.2. Опис джерел інформаційних загроз системі Windows NT
Перші комп.ютерні віруси поширювалися головним чином через файли й дискети. Потім, після появи пакета Microsoft Office і інших офісних додатків з макрокомандами віруси стали поширюватися через файли офісних документів, строго кажучи, що не є програмами.
Сьогодні найнебезпечнішими каналами поширення вірусів і інших шкідливих програм є Інтернет і електронна пошта. Саме по цих каналах поширюється переважна більшість сучасних шкідливих програм.
Слідує зазначити, що комп.ютерні віруси поширюються в першу чергу завдяки недбалості користувачів і адміністраторів комп.ютерних систем. При використанні сучасних захисних засобів і дотриманні навіть елементарних технологій захисту можна різко знизити ризик поразки комп.ютерних систем вірусами й шкідливими програмами інших типів.
Для поширення шкідливі програми використають наступні об.єкти й канали:
файли додатків.
файли офісних документів.
файли програм на інтерпритовних мовах програмування.
загрузочні сектори дисків.
повідомлення електронної пошти.
пірінгові мережі.
Інтернет та локальні мережі.
драйвери ОС.
Не виключено, що згодом у міру вдосконалювання інформаційних технологій і розробки нового комп.ютерного обладнання цей список буде розширений.
1.2.1 Файли додатків
Файли програм складаються із двійкових команд, призначених для безпосереднього виконання центральним процесором. Змінюючи цей файл, можна змінювати дії, які виконує програма.
Файлові комп.ютерні віруси вставляють свій шкідливий код у тіло програмних файлів таким чином, що при запуску програми керування передається вірусу. Потім вірус виконує свої шкідливі дії й повертає керування програмі-жертві.
Як правило, програма, заражена комп.ютерним вірусом, зовні поводиться як звичайна, тому користувач не підозрює, що на його комп.ютері «живе» вірус.
Деякі віруси впроваджуються в тіло програмного файлу таким чином, що розмір файлу-жертви залишається незмінним, що служить додатковим засобом маскування.
Програмні файли є одним із широко використовуваних каналів поширення комп.ютерних вірусів і інших шкідливих об.єктів
Як шкідливі дії вірус, насамперед, записує свій код в інші, ще не заражені файли. Таким чином, через якийсь час всі файли, що зберігаються на диску комп.ютера, будуть заражені файловим вірусом.
Користувач, одержавши заражений програмний файл від іншого користувача або завантаживши його з Інтернету, ризикує заразити свій комп.ютер, якщо запустить цей файл на виконання.
Помітимо, що якщо файловий вірус з.явився на одній робочій станції мережі, то він може заразити всі робочі станції й сервер цієї мережі. При цьому вірус потрапить тільки в такі мережеві каталоги, до яких є доступ на запис у користувача робочої станції.
Тобто вірус має ті ж права доступу до мережних ресурсів, що й користувач, на комп.ютері якого перебуває вірус. Саме тому не рекомендується без крайньої на те необхідності підключатися до мережі із правами адміністратора, тому що при цьому, якщо на робочій станції з.явиться вірус, він буде мати необмежений доступ до ресурсів мережі.
Файловий вірус або інший шкідливий об.єкт може  використати реєстр ОС Windows NT для автоматичного запуску при завантаженні ОС.
Для цього він використовує наступний ключ реєстру:
HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun
Шляхи поширення файлових вірусів звичайно збігаються зі шляхами поширення файлів:
обмін програмними файлами через зйомні носії.
завантаження программ з веб-сторінок чи з FTP серверів.
обмін файлами через локальну мережу.
Мабуть, єдиний надійний канал одержання програм, вільних від вірусів і інших шкідливих об.єктів, є придбання ліцензійних копій програм на компакт-дисках безпосередньо в компанії-розробника і її партнерів. Проте, відомі випадки, коли по чиїйсь помилці в продаж потрапляли ліцензійні компакт-диски із зараженими файлами.
Для того щоб не допустити проникнення на свій комп.ютер вірусів і інших шкідливих об.єктів через програмні файли, потрібно перед запуском в обов.язковому порядку перевіряти всі нові програми антивірусом. Особливо це відноситься до програм, отриманим по електронній пошті або завантаженим з Інтернету.
Крім того, варто встановлювати на своєму комп.ютері й запускати тільки такі програми, які були отримані з надійного джерела.
1.2.2 Файли офісних документів
Найпростіші текстові редактори, такі як Microsoft Notepad, зберігають документи у вигляді текстових файлів. Ці файли містять тільки коди символів, і не можуть бути виконані центральним процесором комп.ютера.
Текстові файли не можуть бути використані для поширення комп.ютерних вірусів, тому що в них немає програмного коду.
Через текстові файли комп.ютерні віруси й інші шкідливі програмні об.єкти не поширюються, якщо тільки це не файл із командами операційної системи або файл програми, написаної на одній з інтерпретуємих мов програмування.
Сучасні текстові й табличні процесори, такі як Microsoft Word і Excel, записують у файли документів не тільки текстову, числову й графічну інформацію, але й програмні об.єкти — так звані макрокоманди.
Цією можливістю володіють і інші додатки пакета Microsoft Office, а також деякі інші аналогічні пакети, що містять текстовий і табличний процесор, програму підготовки презентацій, базу даних і інші програми.
Документи, створені пакетом Microsoft Office і аналогічними по призначенню пакетами, створеними іншими компаніями, будемо називати офісними документами.
Офісні документи можуть містити не тільки текст і графіку, але й програмний код у вигляді макрокоманд.
Комп.ютерні віруси вміють модифікувати існуючі макрокоманди, розташовані усередині документів, а також додавати в документи нові макрокоманди.
Таким чином, комп.ютерні віруси можуть впроваджуватися в документи типів *.doc, *.xls, а також інші офісні документи, створювані пакетом Microsoft Office і утримуючі макрокоманди. Віруси, здатні на це, називаються макрокомандними.
Поширення макрокомандних вірусів відбувається в процесі обміну зараженими офісними документами. При цьому файли документів можуть передаватися з використанням дискет, компакт-дисків, флеш-дисків або будь-яких інших аналогічних пристроїв зовнішньої пам.яті, через локальну мережу або Інтернет.
Зараження макрокомандним вірусом може відбутися після того, як користувач відкриє офісний документ, що містить макрокомандний вірус, для перегляду у відповідному офісному додатку.
Спроба позбутися від макрокомандних вірусів шляхом видалення з диска всіх файлів офісних документів не буде мати успіху, тому що такі віруси можуть записати себе й у файли шаблонів офісних документів.
Крім того, макрокомандні віруси можуть залишити в системі віруси або шкідливі об.єкти будь-яких інших типів.
1.2.3 Файли інтерпртованих програм
Всі комп.ютерні програми можна розділити на ті, що виконуються й інтерпретовані програми.
Програми, що виконуються, містять код, що призначений для безпосереднього виконання центральним процесором комп.ютера.
Що ж стосується інтерпретованих програм, то вони являють собою текстові файли (або фрагменти тексту, убудовані в офісні документи), які виконуються, а точніше кажучи, інтерпретуються за допомогою спеціальної програми. Така програма називається інтерпретатором.
Інтерпретовані програми складаються на таких мовах програмування, як Basic, Java, JavaScript, VB Script, Visual Basic for Application і ін. Крім того, пакетні файли, що містять команди ОС, також можна розглядати як інтерпретовані програми.
Якщо інтерпретована програма записана у файлі, то цей файл може стати об.єктом атаки комп.ютерного вірусу або шкідливої програми іншого типу.
Вірус може записати свій код усередину такого файлу, у результаті чого він одержить керування при запуску інтерпретуємої програми.
Комп.ютерний вірус може поширюватися через файли інтерпретуємих програм, у тому числі через командні файли ОС NT.
Користувач звичайно сам запускає інтерпретовані програми явним або неявним чином. Неявний запуск макрокоманд відбувається при завантаженні для редагування офісних документів. Макрокоманди документів Microsoft Office є ні що інше, як інтерпретовані програми мовою Microsoft Visual Basic for Application.
1.2.4 Завантажувальні сектори дисків і дискет
Насамперед, на першому етапі програма завантаження, записана в постійній пам.яті комп.ютера BIOS, зчитує вміст першого сектора дискети або диска (залежно від способу завантаження), де перебуває завантажувальний сектор.
У завантажувальному секторі теж є програма завантаження, що виконується на другому етапі. Ця програма призначена для завантаження ОС NT.
Програма завантаження з першого сектора диска або дискети завантажує й запускає завантажник ОС, що включається в роботу на третьому етапі.
Модифікуючи вміст перших секторів дискет і дисків, завантажувальні й комбіновані файлово-завантажувальні віруси можуть перехопити керування на другому або третьому етапі завантаження ОС NT. Якщо це відбудеться, вірус одержить керування до моменту завантаження ОС і зможе контролювати як процес завантаження, так і операції, виконувані системними модулями Windows NT.
Завантажувальні й файлово-завантажувальні віруси поширюються разом з дискетами, коли користувач намагається завантажити комп.ютер із зараженої дискети.
Якщо до користувача потрапила дискета, заражена завантажувальним вірусом,  він може випадково або навмисно завантажити з її ОС (наприклад, за допомогою комбінації клавіш Control+Alt+Delete, за допомогою кнопки скидання, або будь-яким іншим способом).
Це часто відбувається, якщо користувач забуває вийняти дискету з комп.ютера після завершення роботи. Включивши комп.ютер на інший день, він може, не бажаючи цього, виконати спробу завантаження із забутої дискети.
У результаті завантажувальний вірус одержить керування, запише свій код у завантажувальний сектор жорсткого диска комп.ютера, і надалі буде заражати всі дискети, з яким працює користувач. Зараження відбудеться навіть у тому випадку, якщо користувач не копіював жодного файлу з дискети.
Якщо вірус володіє тільки властивостями завантажувального вірусу, то він здатний поширюватися лише через завантажувальні записи дискет. Однак файлово-завантажувальні віруси можуть поширюватися й через файли, тому вони можуть поширюватися швидше завантажувальних вірусів.
Крім того, завантажувальні й файлово-завантажувальні віруси можуть потрапити на комп.ютер у результаті дії вірусів і шкідливих об.єктів іншого типу.
Помітимо, що механізм завантаження ОС NT із застосуванням завантажувальних секторів допускає одночасне зараження комп.ютера відразу декількома різними завантажувальними й файлово-загрузочними вірусами.
1.2.5 Повідомлення електронної пошти
По каналах електронної пошти поширюються звичайні віруси, Worm, троянські програми, програми Backdoor, а також поштові віруси, створені спеціально для поширення через системи електронної пошти.
Сьогодні електронна пошта служить основним каналом поширення шкідливих програм самих різних типів. По цих каналах не поширюються хіба лише завантажувальні віруси (але комбіновані файлово-завантажувальні поширюються).
Електронна пошта є каналом поширення шкідливих програм практично будь-яких типів
Шкідливі об.єкти можуть впроваджуватися в поштові повідомлення такими способами:
у вигляді файлів, що вкладені.
у вигляді зсилок на шкідливі об»єкти ActiveX чи аплети Java.
у вигляді конструкцій, які є скриптами HTML.
Якщо вірус потрапив на комп.ютер користувача у вигляді приєднаного файлу, то для його активізації користувач повинен витягти й запустити такий файл на виконання.
Багато користувачів запускають приєднані файли, не замислюючись про наслідки.
Відправники поштових вірусів часто маскують дійсне призначення приєднаних файлів, вибираючи для них таке ім.я, що потенційно може викликати в користувача інтерес. Такі поштові повідомлення називаються троянськими поштовими повідомленнями.
Особливості настроювання й помилки в програмному забезпеченні поштового клієнта, а також помилки в ОС NT приводять до того, що деякі шкідливі об.єкти, впроваджені в поштові повідомлення, активізуються відразу після перегляду повідомлення.
При цьому користувач може й не виконувати ніяких спеціальних дій. При наявності помилок у поштовому клієнті й в ОС вірус може активізуватися навіть у процесі перегляду заголовків повідомлень електронної пошти.
Поштові віруси можуть самі розсилати себе по адресах, витягнутим з адресної книги поштової програми клієнта.
Збільшення вихідного трафіка електронної пошти може свідчити про те, що на комп.ютері активізувався поштовий вірус, що розсилає свій код по адресах, узятих із записної книги користувача або з інших джерел.
1.2.6 Файлообмінні мережі
Існують віруси та інші шкідливі програми, спеціально призначені для мереж обміну файлами (файлообмінними й пірінговыми мережами) між комп.ютерами користувачів Інтернету, такими як Kazaa, Windows Messenger, ICQ та ін.
Ці віруси створюють ситуацію, при якій користувач мережі копіює із зараженого вузла файл шкідливої програми. При цьому система пошуку файлів модифікується таким чином, щоб замість потрібних йому файлів користувач знаходить і завантажує файли з вірусом.
Щоб одержати керування, шкідливі програми, що заражають мережі обміну файлами, додають рядок запуску в реєстр операційної системи Microsoft Windows NT.
Самостійна активація вірусу для пиринговых мереж неможлива. Для поширення вірусу, що заражає файлообмінні мережі, на комп.ютерах мережі повинен бути встановлений клієнт відповідної мережі. У противному випадку поширення буде неможливо.
1.2.7 Впровадження по мережі
Шкідливі програми можуть поширюватися через Інтернет або локальну мережу компанії.
Такі програми можуть проникати на інфіковані вузли, переборюючи захист від несанкціонованого доступу, а також використовуючи відкриті порти системи й ресурси, виділені на комп.ютері в спільне користування.
Шкідлива програма може підібрати пароль для одержання несанкціонованого доступу до вузла мережі, якщо адміністратор не блокував можливість підбора пароля системними засобами.
Шкідлива програма може підібрати пароль доступу до вузла мережі або перехопити пароль, переданий по мережі. Якщо пароль зашифрований, то на його розшифровку, можливо, прийдеться витратити певний час.
Навіть якщо шкідливій програмі не відомий пароль доступу до ресурсів вузла мережі, вона може одержати до них доступ, якщо буде використано відомі помилки в прикладному й системному забезпеченні.
Одна з найбільш відомих помилок подібного роду — помилка переповнення буфера в прикладній або системній програмі.
Шкідлива програма може одержати доступ до ресурсів мережі, якщо на одному з вузлів мережі працює «хробак» або троянська програма.
Крім того, шкідлива програма може використати для одержання несанкціонованого доступу до ресурсів вузла або всієї мережі, якщо розроблювач випадково або навмисно залишив можливість одержання такого доступу в обхід штатної системи розмежування доступу або захисту від несанкціонованого доступу.
1.2.8 Драйвери ОС NT
Шкідливі програми можуть поширюватися й через драйвери ОС NT, хоча цей канал поширення вірусів використається досить рідко.
Вірус може впровадитися в програмний файл драйвера операційної системи (наприклад, у драйвер диска) і виконувати системні операції під своїм контролем.
Варто помітити, що в середовищі ОС Microsoft Windows NT/2000/XP/2003 для такого впровадження програмний код шкідливої програми повинен працювати із привілеями адміністратора.
Шкідлива програма може також функціонувати і як сервіс ОС Microsoft Windows NT/2000/XP/2003.
Створюючи систему захисту від вірусів і шкідливих програм, системний адміністратор повинен чітко уявляти собі, звідки може виникнути загроза безпеці. Ці знання також необхідні й користувачеві, особливо якщо його комп.ютер підключений до локальної мережі або Інтернету.

1.3. Класифікація комп.ютерних шкідливих програм.

На цей час створено величезну кількість шкідливих програм. Різні фахівці й компанії, що займаються антивірусним захистом, використають різні підходи до класифікації шкідливих програм, що створює додаткові труднощі при вивченні проблеми.
Ми будемо дотримуватися наступних способів класифікації:
по типах шкідливих програм.
по ступені поширеності:
по шкідливому впливу.
за рівнем небезпеки.
У літературі й документації на антивірусні програми можна зустріти наступні типи шкідливих програм:
комп.ютерні віруси.
хробаки.
логічні бомби.
троянські об.єкти.
програми Backdoor.
програмні засоби для одержання несанкціонованого доступу до комп.ютерних систем.
Важливо відзначити, що існує безліч комбінованих шкідливих програм, що мають різні властивості.
Наприклад, програма може проникнути в комп.ютер як вірус, а потім установити там модуль Backdoor, що відкриває зловмисникові доступ до ресурсів комп.ютера. Троянська програма після запуску користувачем може «випустити» комп.ютерний вірус, установити модуль Backdoor або логічну бомбу.
Всі комп.ютерні віруси варто розглядати як шкідливі, тому що вже сам факт їхнього поширення може завдати шкоди інформаційній системі.
Віруси можна класифікувати на наступні типи:
файлові віруси.
завантажувальні віруси.
файлово-завантажувальні віруси.
стелс-віруси.
віруси, що шифруються.
поліморфні віруси.
макрокомандні віруси.
поштові віруси.
віруси в пакетних файлах ОС.
віруси в драйверах ОС.
безтілесні віруси.
віруси для пірінгових мереж.
комбіновані віруси.
відомі й невідомі віруси.
колекційні віруси.
Як можна побачити, список різних типів вірусів досить великий. Знання особливостей вірусів різних типів важливо не тільки для розробки антивірусних програм, але й для їхнього грамотного використання.
1.3.1 Файлові віруси
З перших днів існування персональних комп.ютерів і по теперішній час для зберігання інформації будь-якого типу використаються файли.
Саме файли стали об.єктом атаки найперших комп.ютерних вірусів. Сучасні віруси також атакують файли, впроваджуючи в них свій шкідливий програмний код.
Визначення файлового вірусу містить опис механізму прикріплення вірусу до тіла файлу:
Файловий вірус — це вірус, що записує свій код у тіло програмного файлу або офісного документа (документа, що містить макрокоманди й створеного такою програмою, як Microsoft Office або аналогічної).
При цьому під час запуску програми (або завантаженню офісного документа для редагування) вірус одержує керування. Одержавши керування, файловий вірус може записати своє тіло в усі інші файли, що зберігаються на диску комп.ютера.
Заражаючи файл, вірус записує свій код усередину виконуваного файлу й змінює його таким чином, щоб після запуску файл керування одержав код вірусу (мал. 1 1).

Мал. 1-1. Впровадження вірусу у файл
Вірус може записати свій код у кінець, початок або середину файлу. Вірус також може помістити кілька фрагментів свого коду в різних місцях зараженої програми.
Після впровадження у файл вірус виконує інші шкідливі дії: заражає інші файли, установлює в пам.яті власні резидентні модулі та ін. Потім вірус, як правило, передає керування зараженій програмі й далі вона виконується як звичайно.
Як приклад на мал. 1-2 показано вихідний зміст програмного файлу mouse.com, а на мал. 1-2 — зміст того ж файлу, але інфікованим дуже відомомим в минулому небезпечним вірусом OneHalf.

Мал. 1-2. Зміст  програмного файлу mouse.com

Мал. 1-3. Вірус OneHalf у файлі mouse.com
До файлових вірусів можна віднести й так звані віруси-супутники.
Як відомо, в ОС Microsoft Windows NT існують три типи файлів, які користувач може запустити на виконання. Це командні або пакетні файли, що мають розширення імені файлу cmd, а також файли з розширеннями COM і EXE.
В одному каталозі можуть одночасно перебувати кілька файлів COM і EXE, що мають однакове ім.я, але різне розширення імені. Коли користувач бажає виконати програму й уводить її ім.я в системному запрошенні операційної системи, то він звичайно не вказує розширення файлу. У цьому випадку операційна система буде виконувати файл, що має розширення COM. Якщо в поточному каталозі або в каталогах, зазначених у змінного середовища PATH, існують тільки файли з розширенням EXE і CMD, то виконуватися буде файл із розширенням EXE.
Коли вірус-супутник заражає файл, що має розширення EXE або CMD, він створює в цьому ж каталозі ще один файл із таким же ім.ям і розширенням COM. Вірус записує себе в цей COM-файл.
1.3.2 Завантажувальні віруси
Процес завантаження операційної системи з диска або дискети здійснюється в кілька кроків. На першому кроці програма завантаження зчитує вміст спеціальних секторів диску, називаних завантажувальними записами.
Завантажувальні записи звичайно розташовані на самому початку диска (або дискети), і містять програмний код, необхідний для виконання наступних кроків завантаження ОС.
Головний завантажувальний запис, що перебуває на жорсткому диску, називається Master Boot Record (MBR). Аналогічний запис на дискеті зветься Boot Record (BR).
Цим скористалися творці комп.ютерних вірусів, що створили так званий завантажувальний вірус:
Завантажувальний вірус — такий вірус, що записує свій код у головний завантажувальний запис Master Boot Record диска або завантажувальний запис Boot Record диска й дискет.
Завантажувальний вірус одержує керування до програми завантаження ОС, у результаті чого процедура керування виконується під контролем вірусу.
При зараженні дискети або жорсткого диска комп.ютера завантажувальний вірус заміняє завантажувальний запис або головний завантажувальний запис. Дійсний завантажувальний запис або головна завантажувальна при цьому запис звичайно не пропадає (хоча так буває не завжди). Вірус копіює їх в один з вільних секторів (див. мал. 1-4).

Мал. 1-4. Завантажувальний вірус зберігає вихідний уміст завантажувального сектора
На мал. 1-5 ми показали вихідний уміст завантажувального сектора.

Мал. 1-5. Вихідний зміст завантажувального сектора
На мал. 1-6 представлений той же сектор, що й на мал. 1-5, але заражений вірусом Form.

Мал. 1-6. Фрагмент вірусу Form у завантажувальному секторі
1.3.3 Файлово-завантажувальні віруси
Завантажувальні віруси можуть поширюватися тільки через завантажувальні записи дискет, а файлові віруси — через файли. Це до деякої міри обмежує їхнє поширення.
Однак існують комбіновані файлово-завантажувальні віруси, які сполучать у собі властивості й файлових, і завантажувальних вірусів:
Файлово-завантажувальний вірус — комбінація файлового й завантажувального вірусу.
Файлово-завантажувальний вірус прикріплюється до завантажувального запису диска або дискет, а також до програмних файлів. Вірус цього типу активізується після завантаження комп.ютера із зараженого диска (дискети) або при запуску зараженого файлу.
Файлово-завантажувальні віруси можуть поширюватися як файлові, прикріплюючись потім до завантажувальних записів дисків і дискет. Вони також здатні поширюватися через завантажувальні записи дискет, заражаючи потім файли.
Цей факт двоїстого поводження й відбитий у назві даного типу вірусів.
1.3.4 Стелс-віруси
Відразу після появи перших комп.ютерних вірусів стали створюватися й перші антивірусні програми. Такі програми сканували вміст оперативної пам.яті й дисків комп.ютера, виявляючи й нейтралізуючи шкідливий код.
Як відповідна міра розроблювачі вірусів навчилися створювати такі віруси, які вміють «ховатися» від антивірусних програм. Із цією метою віруси перехоплюють виклики деяких функцій ОС NT.
Завдяки такому перехопленню антивірус, читаючи заражений файл або завантажувальний запис, фактично одержує незаражені дані. Тим самим антивірус уводиться в оману.
Стелс-вірус  — це вірус, що залишає в пам.яті комп.ютера модулі, що перехоплюють звертання програм до дисків.
Слід зазначити, що були розроблені й відповідні міри. Використовуючи спеціальні методики й програмне забезпечення, можна організувати захист і від стелс-вірусів.
1.3.5 Віруси, що шифруються
Перші антивірусні програми шукали віруси, порівнюючи вміст файлів і секторів диска з характерними фрагментами вірусів (із сигнатурами вірусів). Саме ці фрагменти зберігалися у вірусних базах даних антивірусних програм.
Щоб виключити виявлення, розробники комп.ютерних вірусів стали застосовувати шифрування вірусного коду. Так з.явилися віруси, що шифруються.
Вірус, що шифрується - це вірус, що при зараженні нових файлів і системних ділянок диска шифрує власний код, користуючись для цього випадковими паролями (ключами).
Коли вірус одержує керування, він розшифровує свій власний код і передає йому керування.
Сучасні антивіруси вміють розшифровувати код вірусу, що тому шифруються віруси можуть бути ефективно виявлені й знищені.
1.3.6 Поліморфні віруси
Подальше вдосконалювання вірусів, що шифруються, було спрямовано на утруднення їхнього виявлення. Із цією метою були розроблені так звані поліморфні віруси.
Поліморфний вірус — це такий вірус, що шифрується, що при зараженні нових файлів і системних областей диска шифрує власний код.
При цьому для шифрування вірус користується випадковими паролями (ключами), а також різними методами шифрування, що виключає можливість упізнання вірусу по сигнатурах вірусів.
Поліморфні віруси набагато сложніше виявити, чим звичайні, тому що екземпляри таких вірусів відрізняються друг від друга. Однак для їхнього пошуку й нейтралізації були розроблені нові методики.
Сучасні антивірусні програми справляються з поліморфними вірусами, незважаючи на всі хитрування, початі їхніми розроблювачами.
1.3.7 Макрокомандні віруси
У середині 90-х років уперше з.явилися комп.ютерні віруси, що атакують не програмні файли, а файли документів пакета програм Microsoft Office.
На відміну від раніше відомих вірусів, віруси, що заражають файли документів, складаються не з команд центрального процесора комп.ютера, а з макрокоманд мови Visual Basic for Applications(VBA).
Макрокомандний вірус прикріплюється до файлів офісних документів і поширюється разом з ними.
Макрокомандні віруси написані з використанням інтерпретовної мови програмування, вбудованої в офісні додатки для автоматизації обробки офісних документів.
Перший головний секрет першого вірусу WinWord.Concept і практично всіх інших відомих нам сьогодні вірусів для текстового процесора Microsoft Word, полягає в тім, що він використовує можливість збереження файлу документа у форматі файлу стилів.
Файл, заражений макрокомандним вірусом, можна відкрити як звичайний файл документа. Його можна редагувати й зберегти зміни на диску. Єдине, що не можна з ним зробити, так це зберегти файл в іншому форматі, наприклад у форматі документа або у форматі RTF.
Якщо вибрати з меню File рядок Save As, то в діалоговому вікні, що відкрився, Save As список Save File as Type, буде показаний сірим кольором і не доступний для вибору. Такий «дефект» важко помітити, тому що операція збереження файлу в іншому форматі виконується досить рідко.

Рис. 1-7. Диалоговаое вікно Save As
Макрокомандний вірус розмножується, змінюючи код стандартних макрокоманд, призначених, наприклад, для відкриття й збереження файлу. Разом з виконанням корисних функцій змінені макрокоманди будуть зберігати тіло вірусу в інших документах Microsoft Office.
Макрокомандні віруси одержали широке розповсюдження після виникнення й поширення пакета програм Microsoft Office.
Хоча перші макрокомандні віруси вражали тільки документи Microsoft Word, незабаром з.явилися макрокомандні віруси й для інших додатків Microsoft Office.
Фактично макрокомандні віруси можна створити для документів, створюваних будь-якими додатками, якщо крім даних усередині документів зберігаються макрокоманди, а мова макрокоманд допускає не тільки читання, але й запис файлів.
Сучасні антивіруси виявляють макрокомандні віруси, скануючи вміст документів.
1.3.8 Поштові віруси
Разом з ростом популярності Інтернету дуже поширилося використання електронної пошти, що представляє собою один з найбільш важливих сервісів цієї всесвітньої мережі.
По каналах електронної пошти передається величезна кількість ділової й особистої пошти, а від працездатності цього сервісу залежить успішність діяльності величезної кількості компаній.
Популярністю електронної пошти скористалися розроблювачі вірусів, створивши новий тип вірусів — поштові віруси.
Поштовий вірус використає для свого поширення канали електронної пошти.
Зараження поштовим вірусом відбувається в результаті дій користувачів, що переглядають пошту, а також через помилки в поштових програмах і операційних системах.
Відомо, що разом з електронним повідомленням можна передавати будь-які файли (мал. 1-8). Такі файли називаються приєднаними або файлами вкладень (attachment file).

Мал. 1-8. Файл вкладення усередині повідомлення електронної пошти
Файли вкладень мають в собі загрозу для комп.ютера — через них на комп.ютер може проникнути вірус, хробак, троянська або інша шкідлива програма.
Крім того, повідомлення електронної пошти може передаватися у вигляді документа HTML, які звичайно є основою для створення Web-сайтів Інтернету.
Привабливість такого формату для повідомлень електронної пошти полягає в тім, що він допускає довільне форматування тексту повідомлення, а також додавання в повідомлення посилань на ресурси Інтернету, зображень і активних компонентів, таких як аплети Java і  елементи керування ActiveX.
Якщо повідомлення електронної пошти передається у форматі HTML, то воно являє потенційну загрозу для одержувача. Повідомлення може містити посилання на шкідливий компонент, розміщений будть-де в Інтернеті, а також шкідливий програмний код, що активізується при перегляді повідомлення.
Потрапивши на комп.ютер користувача, поштовий вірус може розіслати свій код по адресах, витягнутим із книги електронних адрес поштової програми, установленої на комп.ютері. Це дозволяє поштовому вірусу швидко поширюватися в Інтернеті.
Звичайні антивірусні програми, розраховані на перевірку файлів і дисків, не завжди здатні виявити віруси в повідомленнях електронної пошти. Це відбувається тому, що такі повідомлення зберігаються в базах даних поштових програм, що мають різний формат.
Сучасні антивіруси вміють не тільки сканувати бази даних повідомлень розповсюджених поштових програм, але й нейтралізують поштові віруси безпосередньо на поштових серверах, а також на робочих до того, як повідомлення потраплять у поштову програму.
Із цією метою поштові програми сканують «на лету» потоки даних протоколів SMTP, POP3 і IMAP, призначених для передачі повідомлень електронної пошти.
У цей час поштові віруси являють собою найбільшу небезпеку, тому що вони зустрічаються набагато частіше вірусів інших типів.
1.3.9 Віруси в пакетних файлах ОС
В операційних системах на базі NT є такий засіб автоматизації виконання процедур, як пакетні файли.
Пакетні файли містять програми на спеціальній командній мові, що залежить від ОС. За допомогою цієї мови можна запускати довільні програми, видавати команди ОС, створювати файли й каталоги, словом, робити практично все що завгодно з ОС і вмістом диска.
Можливості пакетних файлів використовують спеціально створені віруси, які називаються вірусами пакетних файлів.
Пакетний вірус, вірус пакетних файлів  — це вірус, що записує своє тіло усередину пакетного файлу операційної системи (ОС на базі NT), маскуючи здійсненний код під рядки коментарів.
Слід зазначити, що віруси цього типу зустрічаються вкрай рідко.
1.3.10 Віруси в драйверах ОС

Комп.ютерні віруси можуть впроваджуватися не тільки у звичайні програми, але й у файли драйверів операційних систем.
Вірус для драйвера ОС — це файловий вірус, що впроваджується у файли драйверів операційних систем.
Драйвери являють собою системні програми, за допомогою яких ОС взаємодіє з периферійними пристроями комп.ютера, такими як диск, клавіатура, принтер і т.д.
Тому що драйвери розташовані в програмних файлах, то віруси, що заражають драйвери, можна віднести до файлових вірусів.
Помітимо, що на практиці такі віруси, хоча й існують, але не одержали широкого поширення.
1.3.11 Безтілесні віруси

Існують віруси, що заражають не файли або завантажувальні області дисків, а оперативну пам.ять комп.ютера. Ці віруси називаються безтілесними.
Безтілесний вірус заражає тільки оперативну пам.ять комп.ютера, не потрапляючи у файли або службові області дисків
Такі віруси не можуть бути виявлені антивірусними програмами, які обмежують перевірки скануванням файлів, розташованих на дисках комп.ютера.
Хоча безтілесні віруси існує тільки доти, поки працює операційна система, час їхнього існування може бути досить велико. Це відбудеться, наприклад, якщо вони потрапили на сервер, що працює цілодобово.
1.3.12 Віруси для пірінгових мереж

У сучасному Інтернеті є велика кількість мереж, призначених для обміну файлами без застосування централізованого сервера. Ці мережі дозволяють користувачам Інтернету вільно обмінюватися музичними файлами, програмами й іншою інформацією.
Ці мережі часто називаються файлообмінними або пірінговими. Останнє із цих назв походить від назви застосовуваного в таких мережах способу обміну даними вузол-вузол (Peer-To-Peer).
Для пірінгових мереж розроблювачами шкідливих програм були створені спеціальні віруси, називані вірусами для пірінгових мереж.
Вірус пірінгових мереж  — це шкідлива програма, спеціально призначена для систем обміну файлами між комп.ютерами користувачів Інтернету, такими як Kazaa, Morpheus і т.д.
Щоб такий вірус потрапив на комп.ютер користувача пірінгової мережі, користувачеві потрібно виконати якусь дію, наприклад, завантажити й запустити на виконання файл.
1.3.13 Комбіновані віруси

Багато вірусів не можна однозначно віднести до того або іншого типу, тому що вони мають властивості вірусів відразу декількох типів.
Віруси або шкідливі програми одного типу можуть нести в собі віруси або шкідливі інших типів.
Так, наприклад, троянське поштове повідомлення може нести у своєму тілі комп.ютерний вірус або програму Backdoor, а також логічну бомбу. Комп.ютерний вірус, що поширюється через файли, може встановити на комп.ютер завантажувальний вірус або вірус будь-якого іншого типу, а також комбінацію шкідливих програм.
Комбінований вірус — вірус,  у якому реалізована комбінація декількох істотно різних методів або алгоритмів зараження, а також поширення.
1.3.14 Відомі й невідомі віруси

Із цими поняттями виникає плутанина через їхнє неоднозначне тлумачення.
Всі основні компанії, що спеціалізуються на створенні антивірусних програм і засобів, збирають по усьому світу інформацію про існуючі й нові шкідливі програми й обмінюються цією інформацією.
Зібрана в такий спосіб інформація додається антивірусними компаніями в так звані вірусні бази даних. Вірусні бази даних є найважливішим компонентом всіх антивірусних програм, тому що вони містять відомості про виявлені шкідливі програмні об.єкти.
Відомий вірус — раніше виявлений і вивчений комп.ютерний вірус, доданий у базу даних антивірусної програми
Основним критерієм приналежності вірусів до категорії відомих є факт додавання його у вірусну базу даних антивірусної програми.
Якщо той або інший вірус утримується в базі даних антивірусної програми, то такий вірус буде для цієї програми відомим, а якщо немає — невідомим.
Невідомий вірус — комп.ютерний вірус, опис якого відсутній у базі даних антивірусної програми
1.3.15 Колекційні віруси

У середовищі фахівців з антивірусного захисту використається такий термін, як колекційний вірус.
Колекційним називається комп.ютерний вірус, що існує тільки в колекціях вірусів фахівців і компаній, що займаються професійною розробкою антивірусних програм.
Колекційні віруси не поширюються й не зустрічаються у звичайних комп.ютерних системах. Ці віруси можуть створюватися розроблювачами антивірусних програм з метою вивчення механізмів поширення вірусів або для виконання робіт зі створення нових антивірусів.
1.4 Шкідливий вплив комп.ютерних вірусів на ОС NT

Більшість вірусів і шкідливих програм не тільки розмножуються, вони ще виконують шкідливі дії, передбачені їхнім автором.
У різних вірусів ці додаткові дії можуть бути небезпечними або безпечними, що кидаються в очі або скриті. Розповісти про всі прояви вірусів неможливо, тому що для цього прийдеться описати кожний вірус.
Докладну інформацію про шкідливі впливи вірусів можна знайти у вірусних базах даних, розміщених на Web-сайтах розроблювачів антивірусного ПО.
Будемо класифікувати шкідливі дії по їхньому впливу й ефектам:
візуальні й звукові ефекти.
вплив на файли.
зміна вмісту секторів диска.
вплив на бази даних.
вплив на апаратне забезпечення комп.ютера.
вплив на систему в цілому.
одержання несанкціонованого доступу й викрадення інформації.
компрометація користувача.
соціальний інжиніринг (провокування користувача).
Не всі віруси мають явно виражені шкідливі дії. Однак навіть ті віруси, які не роблять шкідливих дій, можуть становити небезпеку через помилки, допущених авторами вірусів.
1.4.1 Візуальні й звукові ефекти
Комп.ютерні віруси й шкідливі програми можуть проявляти себе, створюючи самі різні візуальні й звукові ефекти. Різноманіття цих ефектів обмежено тільки фантазією розроблювача.
Серед відомих ефектів можна перелічити обпадання букв, перекручування зовнішнього вигляду елементів керування програм (кнопок, меню та ін.), а також поява дефектів при відображенні вмісту вікон програм і вікон ОС NT.
Помітимо, що деякі із цих ефектів можуть проявлятися й при несправності відеоадаптера, а також при наявності помилок у роботі драйверів відеоадаптера.
Тому якщо на екрані всі кнопки в діалогових вікнах раптом змінили свій колір, це ще не означає, що комп.ютер інфікований вірусом. Однак додаткова антивірусна перевірка в цьому випадку не перешкодить.
Комп.ютерні віруси й інші шкідливі програми можуть створювати візуальні й звукові ефекти.
Шкідливі програми можуть відображати на екрані комп.ютера діалогові вікна з несподіваними або незрозумілими повідомленнями. Однак ці діалогові вікна можуть з.являтися й при виникненні помилок у програмах і апаратурі комп.ютера.
Комп.ютерні віруси й шкідливі програми можуть виконувати музичні композиції, видавати дивні й несподівані звуки, а також шум.
Наявність сторонніх звуків може служити непрямою ознакою інфікування комп.ютера. Однак точний «діагноз» можна поставити тільки за допомогою антивірусної програми.
1.4.2 Вплив на файли
Більшість комп.ютерних вірусів і шкідливих програм інших типів, так чи інакше, впливають на програмні файли й файли документів, що зберігаються на дисках комп.ютера.
Шкідливі програми можуть змінювати вміст інформації, що зберігається у файлі, а також атрибути  файлу (ім.я, дата створення, розмір, режим доступу й т.д.). Файли можуть бути видалені або перейменовані.
Крім файлів, віруси й шкідливі програми можуть виконувати дії й над каталогами. Це зміна вмісту каталогу, а також атрибути  каталогу (ім.я, дата створення, режим доступу та ін.). Каталог може бути видалений або перейменований.
Атрибути розмежування доступу файлової системи NTFS можуть певною мірою захистити файли й каталоги від шкідливих програм.
Однак такий захист буде діяти тільки в тому випадку, якщо вірус або шкідлива програма працює із правами користувача, що не має доступ на запис до файлів і каталогів.
Деякі віруси й шкідливі програми повністю заповнюють диски комп.ютера файлами, блокуючи таким способом роботу ОС.
В нових версіях файлової системи NTFS, що застосовується в ОС Microsoft windows 2000/XP/2003, використається механізм квотування дискового простору.
Цей механізм може запобігти повному блокуванню роботи ОС через переповнення системного диска, однак це можливо тільки в тому випадку, якщо вірус або шкідлива програма працює із правами користувача, а не адміністратора.
1.4.3 Зміна вмісту секторів диска
Досвідчені користувачі й адміністратори знають, що інформація на дисках зберігається порціями. Фактично диск комп.ютера можна уявити собі у вигляді набору блоків розміром 512 байт, називаних секторами диска.
Сектори диска утворять кластери, причому залежно від різних обставин кластер може складатися з одного або з десятків розташованих рядом секторів.
Інформація, що зберігається в секторах і кластерах, використовується файловою системою для формування логічних структур більш високого рівня, таких як файли й каталоги, а також службових структур самої файлової системи.
Працюючи з комп.ютерними програмами, користувачі ніколи не мають справи зі змістом окремих секторів або кластерів диска, тому що це рівень драйверів і службових програм ОС.
У деяких випадках віруси або шкідливі програми можуть читати й змінювати вміст секторів і кластерів диска, руйнуючи вміст каталогів, файлів і внутрішніх структур файлової системи. Це може привести до часткової або повної втрати інформації, що зберігається на диску.
Шкідлива програма може відформатувати диск (дискету) на рівні команд ОС, а також на рівні викликів відповідних системних інтерфейсів ОС, тобто на низькому рівні.
Для виконання форматування на низькому рівні в середовищі ОС Microsoft Windows 2000/XP/2003 шкідлива програма повинна мати адміністративний рівень доступу.
Форматування на рівні команд операційної системи припускає формування структур файлової системи.
Форматування на низькому рівні припускає знищення вмісту всіх секторів диска й, можливо, відновлення службової інформації, без формування структур файлової системи.
В обох випадках результатом форматування диска буде повна втрата інформації, що зберігається на диску. Відновлення такої інформації, якщо й буде можливо, буде потрібувати залучення фахівців в області відновлення даних.
1.4.4 Вплив на бази даних
Деякі віруси й шкідливі програми націлені на зміну вмісту комп.ютерних баз даних. Такі шкідливі об.єкти найнебезпечніші, тому що їхню дію найчастіше дуже важко виявити.
Одержавши доступ до бази даних, шкідлива програма може виконати над нею наступні операції:
зміна вмісту інформації, що зберігається в базі даних.
видалення таблиць.
зміна атрибутів таблиць.
зміна сценаріїв обробки інформації, що зберігаються в базі даних.
видалення баз даних.
видалення файлів баз даних.
Звичайно для виконання всіх цих операцій шкідливій програмі потрібно знати пароль доступу до бази даних, що має відповідні привілеї.
Однак шкідлива програма може одержати доступ до бази даних і без пароля, якщо в програмному забезпеченні сервера бази даних є відомі уразливості, створені навмисно або виникли через помилки в програмному забезпеченні сервера.
Якщо шкідлива програма одержала доступ до програм або сценаріїв обробки даних, що зберігається в базі даних, то вона зможе використати це для свого поширення.

1.4.5 Вплив на апаратне забезпечення комп.ютерів

У пресі й іншій літературі часто можна зустріти твердження про те, що комп.ютерні віруси нібито можуть ушкодити встаткування комп.ютера таким чином, щоб воно зажадало ремонту або заміни.
На щастя, відомі комп.ютерні віруси й інші відомі шкідливі програми впливають тільки на програмне забезпечення комп.ютера, але не можуть «зламати» апаратні пристрої.
Проте, шкідлива програма може імітувати ушкодження встаткування комп.ютера таким чином, щоб створилося враження про необхідність ремонту або заміни.
При цьому шкідлива програма може записувати в журнали подій відповідні повідомлення, видавати на екран діалогові вікна з повідомленнями про несправність пристроїв і виконувати інші подібні функції.
Помітимо, однак, що віруси й шкідливі програми іноді здатні змінити вміст BIOS комп.ютера.
При цьому шкідлива програма може, наприклад, поміняти пароль, запитуваний у користувача при включенні живлення комп.ютера або навіть ушкодити вміст всієї перепрограмувальної пам.яті. Останнє приведе до того, що система перестане завантажуватися.
Для виключення ушкодження вмісту перепрограмувальної пам.яті та BIOS досить настроїти параметри BIOS відповідним чином або встановити перемичку, що забороняє запис у цю пам.ять. Докладні інструкції на цей рахунок звичайно є в документації на системну плату комп.ютера.

1.4.6 Вплив на систему в цілому

У деяких випадках віруси й шкідливі програми здатні впливати на працездатність всієї комп.ютерної системи в цілому, сповільнюючи або повністю блокуючи її роботу.
При цьому шкідлива програма може захопити всі системні ресурси (такі як дискова й оперативна пам.ять), а також завантажити центральний процесор комп.ютера інтенсивною, але марною роботою.
Якщо комп.ютерна система підключена до локальної мережі або Інтернету, її робота може бути сильно вповільнена або заблокована в результаті атак шкідливих програм. Такі шкідливі програми запускаються на вузлах тої ж локальної мережі або на вузлах Інтернету й діють спільно.
Одна з відомих атак позначається абревіатурою DoS, що означає атаку типу «відмова в обслуговуванні», що вживається шкідливими програмами.
При атаці DoS всі ресурси вузла, що атакується, задіються на обробку запитів, сформованих атакуючими вузлами. У результаті атакується вузел, що стає нездатним виконувати свої звичайні завдання (наприклад, обслуговувати своїх клієнтів) через гострий дефіцит тих або інших системних ресурсів.
Іноді атакам з боку шкідливих програм піддаються так звані сервери доменних імен DNS, що є найважливішими ресурсами Інтернету. Сервери імен відповідають за перетворення доменних імен (таких, наприклад, як www.microsoft.com) в адреси IP відповідних їм вузлів.
Комп.ютерний вірус або інша шкідлива програма може змінити настроювання сервера доменних імен DNS таким чином, щоб замість одних Web-сайтів відвідувачі попадали на інші.
Така зміна можлива, якщо в ПО сервера DNS або ОС, установленої на сервері, є помилки, або якщо адміністратор неправильно настроїв сервер DNS.
1.4.7 Одержання несанкціонованого доступу й викрадення інформації
Відомо, що в нашім світі володіння інформацією є ключовим чинником успішного ведення бізнесу й іншої діяльності.
Саме тому за допомогою комп.ютерних вірусів і шкідливих програм іншого типу зловмисники намагаються проникнути в чужі комп.ютерні системи з метою викрадення інформації.
Проникнувши в комп.ютерну систему, комп.ютерний вірус або інша шкідлива програма може надати зловмисникові повний доступ до окремих уражених комп.ютерів і навіть до всієї системи в цілому.
Шкідлива програма може встановити для цього програму Backdoor, що надає зловмисникові схований доступ до системи.
Назва Backdoor використається й для позначення схованого програмного інтерфейсу, призначеного для одержання несанкціонованого доступу до комп.ютерної системи.
Для зменшення ймовірності одержання несанкціонованого доступу до комп.ютерної системи, підключеної до Інтернету необхідно виконати повний комплекс захисних мір.
Потрібно правильно настроїти права доступу до системи й установити всі відновлення операційної системи, установити антивірусну програму й стежити за своєчасним відновленням антивірусної бази даних.
Варто встановити й правильно настроїти брандмауер для захисту від атак по мережі, а також інтелектуальні засоби захисту від атак, що аналізують уміст мережевого трафіку.
Однак щоб гарантовно виключити можливість викрадення даних з комп.ютера через Інтернет або локальну мережу, потрібно фізично не підключати комп.ютер до Інтернету або до локального мережі.
На жаль, комп.ютерні програми й ОС настільки складні, що в них завжди присутні програмні помилки. Деякі із цих помилок можуть привести до виникнення проломів у захисті систем від несанкціонованого доступу.
Коли такі проломи стають відомі зловмисникам (а це відбувається із завидною регулярністю), те одержання несанкціонованого доступу й викрадення інформації стають лише справою часу.
Зберігання критичних даних у зашифрованому виді трохи зменшує ймовірність їхнього використання у випадку викрадення, однак повністю виключити таку можливість не можна. Сучасні методи дозволяють розшифровувати дані за невеликий період часу.
Шкідлива програма може викрасти дані по локальній мережі, навіть не звертаючись до ресурсів вузла, що містить такі дані. Для цього вона може працювати на іншому вузлі цієї ж мережі й «прослуховувати» весь мережевий трафік, витягаючи з нього парольну й іншу критичну інформацію.
Комп.ютерний вірус, троянська або інша шкідлива програма може перехоплювати коди клавіш, що натискаються користувачем, і довідатися таким способом паролі доступу до захищених ресурсів комп.ютерної системи.
Шкідливі програми, що перехоплюють коди натиснутих клавіш і відправляють ці коди зловмисникові, часто називаються «клавіатурними шпигунами».
З метою одержання несанкціонованого доступу до ресурсів комп.ютера шкідлива програма може викрасти зашифрований файл паролів, а потім розшифрувати його (або відправити зловмисникові у вихідному виді для розшифровки).
1.4.8 Компрометація користувача
Зараження комп.ютера вірусом або шкідливою програмою може привести не тільки до ушкодження, зміні або знищенню даних, що зберігаються на цьому комп.ютері, але й до компрометації, а також провокуванню користувача.
Потрапивши на комп.ютер користувача, шкідлива програма може скористатися персональною інформацією, що зберігається на комп.ютері, для виконання від імені користувача яких-небудь дій.
Наприклад,  шкідлива програма може підписати користувача на поштові розсилання, зробити покупку в Інтернет-магазині й зробити будь-які інші аналогічні дії.
Адресна книга користувача або деякі записи з неї можуть бути викрадені комп.ютерним вірусом або іншою шкідливою програмою. Надалі вірус або інша шкідлива програма може скористатися викраденою інформацією для свого поширення.
При цьому шкідлива програма для свого поширення буде відправляти від імені користувача поштові повідомлення з вірусом. Це, безсумнівно, викличе невдоволення партнерів користувача по переписці.
1.4.10 Соціальний інжиніринг
Дія вірусів і шкідливих програм часто спрямована на провокування користувача. Користувач провокується на здійснення таких дій, які можуть привести до проникнення на його комп.ютер шкідливих програм, а також до поширення вже наявних там шкідливих програм.
Поштові віруси й троянські програми найчастіше провокують користувача на відвідування троянського Web-сайту. Це може привести до установки на комп.ютері користувача троянської програми, хробака або іншого шкідливого програмного об.єкта.
Шкідлива програма може спровокувати користувача на запуск програми або програмного сценарію. Це характерно для поштових вірусів, троянських програм і троянських Web-сайтів.
Одержавши троянське поштове повідомлення, користувач відкриває вкладений у нього файл програми, і той запускається, виконуючи свою шкідливу дію.
Для провокування користувача на відвідування троянського Web-сайту або запуск програми використаються різні спеціальні прийоми.
Як правило, це маскування щирого призначення програми або Web-сайту зміною імені відповідної адреси URL або імені файлу, публікація опису ресурсу, що не відповідає дійсності, приховування дійсного імені файлу з використанням особливостей інтерфейсу операційної системи.

ОПИС МЕТОДІВ ВИЯВЛЕННЯ Й БОРОТЬБИ З КОМП»ЮТЕРНИМИ ВІРУСАМИ

2.1 Методи виявлення комп.ютерних вірусів
Розглянемо методи виявлення вірусів і інших шкідливих програм:
сканування.
евристичний аналіз.
виявлення змін.
аналіз мережевого трафіку.
аналіз баз даних поштових програм.
виявлення вірусів у системі автоматизації документообігу.
вакцинування.
2.1.1 Сканування
Історично перші антивірусні програми використовували для виявлення комп.ютерних вірусів метод сканування.
При скануванні антивірусна програма переглядає вміст файлів, розташованих на дисках комп.ютера, а також зміст оперативної пам.яті комп.ютера з метою пошуку вірусів.
При цьому класичне сканування припускає пошук шкідливих програм по їхніх сигнатурах, тобто по послідовностях байтів даних, характерних для даних вірусів.
Метод сканування дозволяє виявити такі шкідливі програми, які не використають для протидії антивірусним програмам шифрування свого програмного коду, а також поліморфізм.
Помітимо, що антивірусні програми не в змозі сканувати зашифровані архіви й документи, якщо їй не відомий пароль або ключ для розшифровки даних. Перед пошуком шкідливих програм у таких архівах або документах користувач повинен їх розшифрувати.
Аналогічно, сканер антивірусної програми не зможе одержати доступ до файлів, що зберігається на шифрованих віртуальних дисках PGPDisk і аналогічних, якщо їй не відомий пароль або ключ для розшифровки даних.
Перед скануванням таких дисків користувач повинен сам увести всю необхідну парольну інформацію.
2.1.2 Евристичний аналіз
Як ми відзначили вище, звичайне сканування не дозволяє виявляти поліморфні віруси й віруси що шифруються. Крім того, цей метод не є ефективним проти шкідливих програм, сигнатури яких відсутні в базі даних антивірусу, тобто з новими вірусами.
Для усунення цього недоліку розроблювачі антивірусів створили новий метод виявлення шкідливих програм, який називається назвою евристичний аналіз.
При використанні цього методу антивірус контролює всі дії, які може виконати програма. При цьому  відслідковуються потенційно небезпечні дії, характерні для вірусів.
Контролюючи дії програм, що перевіряються, евристичний аналізатор сучасних антивірусів здатний виявити нові, невідомі віруси ще до того, як ці віруси почали діяти.
Проте, евристичний аналіз не дає повної гарантії виявлення будь-яких нових вірусів.
Крім того, евристичний аналізатор може прийняти «необразливу» програму за шкідливу. Це відбувається в тих випадках, коли програма виконує які-небудь дії, характерні для вірусів або шкідливих програм іншого типу.
Евристичний аналіз віднімає чимало процесорного часу. Тому, налаштовуючи антивірусну програму, користувач може відключити евристичний аналізатор.
З огляду на те, що без евристичного аналізатора антивірусна програма не зможе виявити поліморфні віруси й ті що шифруються, а також нові віруси, таке відключення приведе до зниження надійності антивірусного захисту.
Сучасні антивірусні програми, що працюють у режимі монітора, здатні сканувати файли, до яких виконує запити ОС і програми, що запускаються користувачем. Таким чином, скануються всі файли, до яких відбувається запит.
2.1.3 Виявлення змін
Інший метод виявлення вірусів і шкідливих програм різного типу заснований на виявленні змін, що викликали вірусами й шкідливі програмами у файлах.
Програми, чия робота заснована на виявленні змін, називаються ревізорами диска.
Ревізори диска періодично сканують уміст дисків комп.ютера, записуючи у свою базу даних контрольні суми файлів і критично важливих внутрішніх ділянок файлових систем. При скануванні нові значення контрольних сум звіряються зі старими значеннями.
Якщо при порівнянні виявляються зміни, ревізор диска відображає на екрані попереджуюче повідомлення.
Ревізори диска дозволяють виявляти нові віруси, після того як вони почали діяти.
За допомогою ревізора диска можна виявити будь-які зміни, зроблені у файлах комп.ютерними вірусами й іншими шкідливими програмами, а також користувачами.
Цей факт дозволяє використати ревізори диска не тільки для захисту від шкідливих програм, але й для контролю цілісності важливих файлів і документів.
Помітимо, що ревізори диска неефективні для виявлення макрокомандних вірусів у файлах офісних документів, створюваних такими програмами, як Microsoft Word, Microsoft Excel та ін.
Це пов.язане з тим, що  файли офісних документів постійно редагуються, внаслідок чого вони піддані дуже частим змінам.
Ревізори диска можуть взаємодіяти з антивірусними програмами, що виконують сканування й евристичний аналіз.
Таке зв.язування може прискорити антивірусну перевірку файлів, якщо ревізор диска буде координувати свої дії з антивірусною програмою. При цьому ревізор знаходить файли, що змінилися, а програма-антивірус виконує їхнє сканування й аналіз.
Прискорення відбувається за рахунок того, що перевірці піддаються не всі, а тільки файли, що змінилися.
2.1.4 Аналіз мережного трафіку
Сьогодні найбільшу погрозу являють собою віруси й інші шкідливі програми, що поширюються по каналах електронної пошти. Це пов.язане з популярністю електронної пошти, яка використовується практично в усіх сферах діяльності людини.
Найбільш ефективною методикою виявлення й нейтралізації шкідливих програм, що поширюються по каналах електронної пошти, є аналіз трафіку електронної пошти безпосередньо на поштовому сервері.
При цьому антивірусні програми перевіряють дані, що проходять через поштовий сервер, і видаляють із них шкідливі об.єкти ще до того, як вони потраплять на комп.ютер користувача.
Антивіруси, що працюють на поштовому сервері, сканую трафік електронної пошти, крім поширення шкідливих програм разом з поштовими повідомленнями.
Для передачі повідомлень електронної пошти використаються протоколи SMTP, POP3 і IMAP. Спеціалізовані антивіруси, що працюють на поштових серверах, здатні аналізувати потоки даних, передані з використанням цих протоколів, запобігаючи поширенню шкідливих програмних об.єктів через електронну пошту.
Сканування трафіку електронної пошти можна виконувати й на комп.ютері користувача, блокуючи проникнення шкідливих програмних об.єктів у бази даних поштових програм.
Метод сканування мережевого трафіку може ефективно застосовуватися не тільки для блокування проходження шкідливих програмних об.єктів, але й для виявлення спроб одержання несанкціонованого доступу до вузла мережі.
При цьому сканер, аналізуючи мережевий трафік, намагається виявити дії, характерних для атак на систему розмежування доступом, а також атак на інші критичні системи вузла мережі.
2.1.5 Аналіз баз даних поштових програм
Звичайні антивірусні програми, призначені для сканування файлів, виявляються малоефективними для виявлення поштових вірусів.
Це пов.язане з тим, що повідомлення електронної пошти зберігаються не у вигляді окремих файлів, а усередині бази даних повідомлень поштової програми. Тому антивірусна програма, не розрахована на сканування вмісту таких баз даних, не зможе виявити шкідливі програмні об.єкти усередині повідомлень електронної пошти.
І хоча можна створити таку антивірусну програму, що буде здатна сканувати вміст баз даних найбільш популярних поштових програм, це не вирішить всіх проблем.
Бази даних повідомлень різних поштових клієнтів мають різний формат, тому важко (якщо взагалі можливо) створити антивірус, «розуміючий» структуру баз даних будь-якої поштової програми. До того ж, у будь-який момент може з.явитися новий поштовий клієнт, що застосовує новий формат бази даних повідомлень.
Таким чином, більше кращим способом боротьби з поштовими вірусами є сканування мережевого трафіку на поштовому сервері або на комп.ютері користувача.
2.1.6 Виявлення вірусів у системі автоматизації документообігу
Системи автоматизації документообігу, такі як Microsoft Exchange і Lotus Notes, зберігають документи й повідомлення в базах даних власного формату. Крім цього, у таких системах є можливість програмування з використанням макрокоманд.
Шкідливий програмний код може інфікувати повідомлення, що зберігаються в базах даних систем автоматизації документообігу, у тому числі з використанням внутрішньої мови макрокоманд цих систем.
Звичайні антивірусні програми, розраховані на перевірку файлів, не можуть бути використані для захисту систем автоматизації документообігу, тому що вони не в змозі перевіряти вміст баз даних таких систем.
Однак у цей час багато антивірусних компаній випустили спеціальні версії антивірусних програм, здатні перевіряти бази даних систем документообігу Microsoft Exchange і Lotus Notes. Без їхнього застосування захист сервера системи автоматизації документообігу не можна вважати повним.
Крім Microsoft Exchange і Lotus Notes існує чимало менш відомих інформаційних систем, що зберігають документи в базах даних. Ці системи можуть створюватися для використання тільки в окремих компаніях або для рішення яких-небудь специфічних завдань.
Для захисту малопоширених і унікальних інформаційних систем від вірусів і інших шкідливих програм можна використати вбудовані антивіруси.
Розроблювачі таких систем можуть здобувати в антивірусних компаній ліцензії на використання антивірусного ядра й вбудовувати це ядро в створювані системи. Це забезпечить надійний антивірусний захист маловідомих або «нестандартних» інформаційних систем.
2.1.7 Вакцинування
На зорі розвитку антивірусних програм використовувався метод захисту від вірусів із назвою вакцинування.
При вакцину ванні до програми приєднується спеціальний модуль контролю, що стежить за її цілісністю. Цей модуль перевіряє контрольну суму програми або які-небудь інші її характеристики.
Вакцинування — малоефективний спосіб захисту, заснований на приєднанні до програм спеціального модуля. Цей модуль контролює цілісність файлу програми.
Метод вакцинування неефективний, тому що, наприклад, не може захистити комп.ютер від стелс-вірусов.
Тому сучасні засоби антивірусного захисту не застосовують вакцинування.

2.2 Методи й засоби захисту від комп.ютерних вірусів

Розглянемо програмно-технічні й адміністративно-технологічні рішення й заходи, необхідні для зниження ризику вірусного зараження й зменшення шкоди, якщо таке зараження вже відбулося.

2.2.1 Програмно-технічні методи

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

2.2.2 Захист, убудований в BIOS комп.ютера

У системні плати комп.ютерів теж вбудовують найпростіші засоби захисту від вірусів. Ці засоби дозволяють контролювати всі звертання до головного завантажувального запису жорстких дисків, а також до завантажувальних секторів дисків і дискет. Якщо яка-небудь програма спробує змінити вміст завантажувальних секторів, спрацьовує захист і користувач одержує відповідне попередження.
Однак цей захист не дуже надійний. Існують віруси (наприклад, Tchechen.1912 і 1914), які намагаються відключити антивірусний контроль BIOS, змінюючи деякі осередки в енергонезалежній пам.яті (CMOS-пам.яті) комп.ютера.
2.2.3 Захист поштових серверів
Для захисту поштових серверів можна придбати антивіруси, спеціально призначені для перевірки поштового трафіку, або підключити до поштового сервера звичайні антивіруси, що допускають роботу в режимі командного рядка.
Демон антивірусу Doctor Web можна інтегрувати з усіма найбільш відомими поштовими серверами й системами, такими як Doctor ComminiGatePro, Sendmail, Postfix, Exim, QMail і Zmailer. Аналогічні засоби надаються й Лабораторією Касперського в складі пакета Kaspersky Corporate Suite.
Поштовий сервер MERAK Mail Server допускає підключення зовнішніх антивірусів різних типів, що мають інтерфейс командного рядка. Деякі поштові сервери (наприклад, EServ) поставляються з вбудованим антивірусом.
Можна також додатково перевіряти трафік POP3 і на робочих станціях користувачів. Це дозволяє зробити, наприклад, антивірусний проксі-сервер SpIDer Mail для протоколу POP3, який можна придбати разом з антивірусом Doctor Web.
2.2.4 Захист серверів систем документообігу
Існує ряд антивірусних програм, спеціально призначених для антивірусного захисту подібних систем. Це Trend Micro ScanMail для Lotus Notes, McAfee GroupScan і McAfee GroupShield, Norton Antivirus для Lotus Notes, антивірус Касперського Business Optimal для MS Exchange Server і деякі інші.
Ці програми сканують пошту й файли вкладень, видаляючи в реальному часі всі шкідливі програми, виявляють макрокомандні віруси  й троянські програми у формах і макросах, у файлах сценаріїв і в об.єктах OLE. Перевірка виконується в режимі реального часу, а також на вимогу.
2.2.5 Захист нестандартних інформаційних систем
Для антивірусного захисту нестандартних інформаційних систем, що зберігають дані у власних форматах, необхідно або вбудовувати антивірусне ядро в систему, або підключати зовнішній сканер, що працює в режимі командного рядка.
Наприклад, ядро антивірусу Doctor Web було використано ФГУП «НПО машинобудування» для захисту системи документообігу, створеної на базі власної технології Sapiens (http://www.npomit.ru). Вся інформація, що зберігається цією системою в базі даних, перевіряється антивірусним ядром Doctor Web.
Як розроблювачі інформаційних систем для відповідального застосування, «НПО машинобудування» постачало антивірусним захистом такі свої розробки, як Sapiens Реєстрація й Контроль Виконання Документів, Sapiens Моніторинг Обчислювальних Ресурсів, Sapiens Електронний Архів Конструкторської Документації.
2.2.6 Мережевий центр керування антивірусами
Якщо локальна мережа нараховує сотні й тисячі комп.ютерів, то необхідно централізоване керування антивірусними програмами й контроль їхньої роботи. Виконання в «ручному» режимі таких операцій, як відстеження відновлень антивірусної бази даних і завантажувальних модулів антивірусних програм, контроль ефективності виявлення вірусів на робочих станціях і серверахта ін., не є ефективним, якщо в мережі є велика кількість користувачів або якщо мережа складається з територіально віддалених друг від друга сегментів.
Якщо ж не забезпечити своєчасне й ефективне виконання перерахованих вище операцій, технологія антивірусного захисту корпоративної мережі обов.язково буде порушена, що рано або пізно приведе до вірусного зараження. Наприклад, користувачі можуть неправильно настроїти автоматичне відновлення антивірусної бази даних або просто виключати свої комп.ютери в той час, коли таке відновлення виконується. У результаті автоматичне відновлення не буде виконано й виникне потенційна загроза зараження новими вірусами.
У сучасних антивірусних системах реалізовані наступні функції дистанційного керування й контролю:
установка и обновление антивірусных программ, а также антивірусных баз данных.
централизованная дистанционная установка и настройка  антивірусов.
автоматическое обнаружение новых рабочих станций, подключенных к корпоративной сети, с последующей автоматической установкой на эти станции антивірусных программ.
планирование заданий для немедленного или отложенного запуска (таких как обновление программ, антивірусной базы данных, сканирование файлов и т.п.) на любых компьютерах сети.
отображение в реальном времени процесса работы антивірусов на рабочих станциях и серверах сети.
Всі перераховані вище функції або більшість з них реалізовані в мережних центрах керування провідних корпоративних антивірусних продуктів, створених компаніями Sophos (http://www.sophos.com), Symantec (http://www.symanteс.ru), Network Associates (http://www.nai.com) і Лабораторія Касперського.
Мережні центри керування дозволяють управляти антивірусним захистом всієї мережі з однієї робочої станції системного адміністратора. При цьому для прискорення процесу установки антивірусів у мережах, підключених до основної мережі повільними каналами зв.язку, у цих мережах створюються власні локальні дистрибутивні каталоги.
При використанні клієнт-серверної архітектури основою мережного центра керування є антивірусний сервер, установлений на одному із серверів корпоративної мережі. З ним взаємодіють, з одного боку, програми-агенти, установлені разом з антивірусами на робочих станціях мережі, а з іншого боку — керуюча консоль адміністратора антивірусного захисту (мал. 3).

Мал. 3. Взаємодія консолі адміністратора, агентів і антивірусного сервера
Антивірусний сервер виконує керуючі й координуючі дії. Він зберігає загальний журнал подій, що мають відношення до антивірусного захисту й виникаючих на всіх комп.ютерах мережі, список і розклад виконання завдань. Антивірусний сервер відповідає за прийом від агентів і передачу адміністратору антивірусного захисту повідомлень про виникнення тих або інших подій у мережі, виконує періодичну перевірку конфігурації мережі з метою виявлення нових робочих станцій або робочих станцій з конфігурацією, що змінилася, антивірусних засобів і т.д.
Крім агентів, на кожній робочій станції й сервері корпоративної мережі встановлюється антивірус, що виконує сканування файлів і перевірку файлів при їхньому відкритті (функції сканера й антивірусного монітора). Результати роботи антивірусу передаються через агентів антивірусному серверу, яких їх аналізує й протоколює в журналі подій.
Керуюча консоль може являти собою стандартний додаток Microsoft Windows з віконним інтерфейсом або аплет (snap-in) керуючої консолі Control Panel операційної системи Microsoft Windows. Перший підхід реалізований в керуючій системі антивірусів Sophos, а другий — у керуючій системі Norton AntiVirus.
Користувальницький інтерфейс керуючої консолі дозволяє переглядати структуру корпоративної мережі, одержуючи при необхідності доступ до окремих комп.ютерів тих або інших груп користувачів або доменів.
2.2.7 Багаторівневі системи з Web-інтерфейсом
Архітектура багаторівневих систем з Web-інтерфейсом припускає використання Web-сервера як ядро системи. Завданням цього ядра є, з одного боку, організація діалогової інтерактивної взаємодії з користувачем, а з іншого боку - із програмними модулями тої або іншої системи.
Переваги такого підходу полягають в уніфікації способів керування різними системами мережі, а також у відсутності необхідності встановлювати на робочу станцію адміністратора які-небудь керуючі програми або консолі. Адміністрування може виконуватися з будь-якого комп.ютера мережі, а якщо мережа підключена до Інтернету, то з будь-якого місця земної кулі, де є Інтернет і комп.ютер із браузером.
Для захисту керуючої інформації при її передачі по Інтернету або корпоративної локальної мережі застосовуються протоколи SSH або інші аналогічні засоби (наприклад, власні захищені модифікації протоколу HTTP).
На мал. 4-5 жображена структурна схему системи антивірусного захисту з Web-інтерфейсом Trend Virus Control System. Ця система дозволяє повністю управляти й контролювати роботу корпоративної системи антивірусного захисту з однієї робочої станції через браузер, навіть якщо окремі фрагменти мережі перебувають у різних країнах або на різних континентах.

Мал. 4. Антивірусна система з Web-інтерфейсом
Ця схема аналогічна схемі, показаної на мал. 4-1, однак адміністратор антивірусного захисту управляє її роботою через браузер, а не через консольний додаток.
На робочих станціях встановлюється антивірус (PC-cillin, Server Protect, InterScan VirusWall, ScanMail і т.д.). Цей антивірус управляється антивірусним сервером через агента.
На комп.ютері, що грає роль антивірусного сервера, установлюється Web-сервер Microsoft IIS. Спеціальний Web-додаток, що працює на цьому сервері, управляє антивірусним сервером. Він також надає адміністраторові користувальницький інтерфейс для керування системою антивірусного захисту.
З метою забезпечення максимальної незалежності від комп.ютерних платформ сервер Trend VCS Server і клієнтський додаток написані мовою програмування Java і інших мовах, що застосовуються для розробки додатків Інтернету.
Що ж стосується повідомлень про виникнення подій у корпоративній системі антивірусного захисту, то вони передаються програмами-агентами серверу Trend VCS Server і розсилаються по електронній пошті, через системи SMS та ін.
2.2.8 Адміністративно-технологічні методи захисту
Для того щоб антивірусні програми ефективно виконували свої функції, необхідно строго дотримувати рекомендацій по їхньому застосуванню, описані в документації. Особливу увагу варто звернути на необхідність регулярного відновлення вірусних баз даних і програмних компонентів антивірусів. Сучасні антивіруси вміють завантажувати файли відновлень через Інтернет або по локальній мережі. Однак для цього їх необхідно настроїти відповідним чином.
Однак навіть без застосування антивірусних програм можна постаратися запобігти проникненню вірусів у комп.ютер і зменшити шкоду, що вони нанесуть у випадку зараження.
Часто співробітники компаній працюють не тільки в офісі, але й удома, обмінюючись файлами між домашнім комп.ютером і офісною робочою станцією. Системний адміністратор компанії не в змозі захистити від вірусів всі домашні комп.ютери співробітників. Віруси можуть потрапити на домашній комп.ютер з Інтернету, а також у результаті обміну ігровими програмами. Найчастіше це відбувається, якщо до домашнього комп.ютера мають доступ інші члени родини й діти.
Всі файли, які співробітники приносять із будинку на роботу, варто розглядати як потенційно небезпечні. У відповідальних випадках такий обмін варто повністю заборонити, або сильно обмежити. Потенційно небезпечні «домашні» файли необхідно перевіряти перед відкриттям антивірусними програмами.
2.2.9 Встановлення персональних брандмауерів
Корпоративна мережа, підключена до Інтернету, повинна бути захищена від атак хакерів за допомогою брандмауера. Однак крім цього можна додатково захистити робочі станції й сервери мережі, установивши на них персональні брандмауери, такі як AtGuard (мал. 5).

Мал. 5. Налаштування персонального брандмауера AtGuard
Крім фільтрації небажаного трафіку, деякі персональні брандмауери здатні захистити комп.ютер від троянських аплетів Java і елементів керування ActiveX. Такі компоненти можуть бути вбудовані в поштові повідомлення формату HTML і в сторінки троянських Web-сайтів.
Персональні брандмауери, що перебувають у так званому режимі навчання, можуть надати допомогу у виявленні трафіку від троянських програм, логічних бомб і інших небажаних шкідливих компонентів. Коли такий компонент спробує встановити зв.язок з комп.ютером хакера, брандмауер відобразить на екрані попереджуюче повідомлення.
Варто помітити, що в опціях браузеру також можна відключити можливість використання активних компонентів, таких як аплети Java і елементи керування ActiveX. Однак персональні брандмауери більш універсальні, і дозволяють блокувати використання таких компонентів будь-якими програмами, наприклад, поштовими клієнтами.

3 ПРОЕКТУВАННЯ ІНФОРМАЦІЙНОЇ СИСТЕМИ

3.1 Вибір засобу забезпечення захисту інформації для операційної системи на базі NT

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

3.2.1 Об.єкти моніторингу
Об.єктами моніторингу є абсолютно всі файли до яких буде осществляться доступ на запис або читання. Можливо також пропускати деякі файли, наприклад текстові. Дана можливість реалізується на стороні клієнта драйвера - сканнирующего ядра.
3.2.2 Опис методу
При встановленні драйверу всі операції над файлами будуть оброблятися драйвером-фільтром файлової системи. Якщо до драйверу приєднаний клієнт, то усі файлові операції будуть заблоковані та передані клієнту на розгляд. Клієнт в свою чергу сканує вміст файлу, до якого здійснюється звернення та передає драйверу відповідь, дозволити чи відмінити дискову операцію. Якщо до драйверу не під»єднаний клієнт, тоді драйвер дозволяє всі файлові операції.

3.2.3 Переваги методу

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

3.2.4 Недоліки методу

Складності при створенні драйвера файлової системи ОС на базі NT. Також антивірусний монітор може значною мірою сповільнити роботу операційної системи при неефективній обробці файлів клієнтом драйвера. Складності в налагодженні й супроводі викликані природою розроблювальної системи. Як відомо, драйвера складно налагоджувати та супроводжувати. Помилки в драйверах приводять систему до краху й користувач ОС на базі NT бачить так званий «синій екран смерті», також відомий як BSOD(blue screen of death). Супровід драйвера ускладнений тим, що важко одержати інформацію для налагодження, тому що для неї потрібний дамп пам.яті. Дампи пам.яті можуть досягати більших розмірів(рівним розмірам оперативної пам»яті). Це робить нереальним одержання з машини користувача інформації для налагодження.
3.2.5 Способи застосування
Крім функції, розглянутої в контексті даної розробки, метод знаходить широке застосування в області захисту інформації, зокрема для розмежування доступу користувачів.
3.3 Опис інформаційної системи
3.3.1 Концептуальний проект програми
Над файлами визначений деякий набір операцій (відкриття, читання, запис та ін.). Цей набір операцій визначається операційною системою. Для зараження комп»ютеру вірусом шкідливий код повинен запуститися на виконання. Частіш за все цей код розташований у файлах додатків. Користувач ПК запускає додаток і код отримує керування. Якщо використовується драйвер-фільтр файлової системи, то він перехоплює всі файлові операції, а також створення процесів та передає необхідну інформацію клієнтові. Повного ім»я файлу достатньо для того щоб перевірити його на наявність вірусних сигнатур та повернути драйверу відповідь.
Якщо до файлу приходить багато звернень, тоді драйвер повідомляє про це клієнтові спеціальним чином. Це потрібно для того щоб якнайшвидше повернути керування потоку який було заблоковано для аналізу файлу.
3.3.2 Архітектура інформаційної системи
Архітектура інформаційної системи є досить простою. Вона складається всього з 2х компонентів – драйверу, що блокує файлові операції, та клієнтського додатку, що проводить аналіз файлів на наявність в них вірусних сигнатур(мал. 3.1).





Мал. 3.1 Архітектура інформаційної системи
3.3.3 Алгоритм роботи інформаційної системи
Розглянемо роботу інформаційної системи, що проектується. Алгоритм зображено на мал. 3.3.1. Опишемо основні кроки роботи системи.
1 Під»єднання до драйверу – це перший крок роботи інформаційної системи. На цьому кроці клієнт встановлює зв»язок із драйвером і драйвер починає блокувати процеси та файлові операції.
2 Клієнт організує поток у якому будуть отримуватися нотифікації. Цей поток повинен якнайбільш часто визивати функцію драйверу по отриманню нотифікацій. Клієнт може получати нотифікації трьох видів:
пуста нотифікація – означає що у черзі драйверу немає заблокованих операцій.
нотифікація про створення нового процесу – приходить кожен раз, коли визивається функція NtCreateProcess.
нотифікація про файлову операцію – приходить кожен раз, коли визивається функція NtCreateFile.
3 Перевірка файлів які були передані із нотифікацією. Результатом перевірки можуть бути 2 значення:
об»єкт заражено – в цьому разі доступ до об»єкту блокується(операція повертає помилку).
об»єкт не заражено – операція завершується без помилки.


Мал. 3.3.1 Алгоритм роботи інформаційної системи
3.3.4 Обробка IRPs
IRP - структура даних, що представляє запит на ввід-вивід і здійснюючий контроль за обробкою даного запиту. IRP складається із заголовка і однієї або більше комірок стеку. У даній структурі залежно від типу запиту (вірніше як мінімум від старшого коду IRP_MJ_XXX) зберігаються покажчики на ті або інші структури даних. Для докладного ознайомлення з IRPs див. [lit ref]. Фільтр-драйвер файлових систем для того, щоб мати можливість обробляти за своїм розсудом IRPs, адресовані об.єктам пристроїв файлових систем, повинен вставити свій фільтруючий об.єкт пристрою в стек драйвера файлової системи (підставою даного стека є сам об.єкт пристрою файлової системи, іншу частину стека становлять об.єкти пристроїв, що причепили себе до нього. див. [lit ref]).
Будь-який об.єкт пристрою при одержанні IRP може виконувати наступні дії:
• переслати пакет драйверу, що стоїть нижче за ієрархією, (якщо драйвер існує), при цьому може встановити функцію завершальної обробки (Completion Routine - дана функція буде викликана менеджером вводу-виводу, коли драйвером, що стоїть нижче за ієрархією, буде завершена обробка даного пакета. ця складна тема докладно описана в [7, 9]).
• завершити обробку даного пакета.
• створити новий пакет запиту на ввід-вивід і переслати його драйверу, що стоїть нижче за ієрархією.
• змінити існуючий IRP і переслати його драйверу, що стоїть нижче за ієрархією.
Для фільтра-драйвера файлових систем при обробці багатьох пакетів (наприклад, IRP_MJ_CREATE, IRP_MJ_CLOSE, IRP_MJ_READ, IRP_MJ_WRITE та ін.) дуже важливим є файловий об.єкт (file object - докладний опис можна знайти в [7, 9, 10]). Файловий об.єкт - представлення менеджером вводу/виводу в пам.яті екземпляра відкритого об.єкта (файлу, директорії, пристрою, тому). Файловий об.єкт це ядерний еквівалент хендлу (handle), створеного в результаті успішної операції створення або відкриття. Всі запити на ввод/вивід, адресовані фізичному диску або логічному тому, вимагають файлового об.єкта. Відповідальність по створенню й підтримці файлового об.єкту лежить на менеджері вводу-виводу й драйвері файлової системи рівня ядра. Структура «файловий об.єкт» створюється (і частково заповнюється) менеджером вводу-виводу перед тим, як він відправить запит на відкриття або створення (IRP_MJ_CREATE) драйверу файлової системи. Драйвер файлової системи, одержавши покажчик на файловий об.єкт, обробляє даний запит і у випадку успіху ініціалізує деякі поля файлового об.єкту.[7] Файловий об.єкт використається багатьма функціями фільтра-драйвера для обробки необхідних запитів. Але є пакет запиту на ввід-вивід (старший код IRP_MJ_DEVICE_CONTROL), в центрі якого стоїть не файловий об.єкт, а керуюче повідомлення.

3.3.5 Обробка керуючих повідомлень

Під керуючими повідомленнями мається на увазі IOCTL (I/O Control code - керуючий код вводу-виводу). IOCTL дозволяє звертатися до драйвера з запитами, що відрізняються від операцій читання й запису в пристрій (хоча й вони легко реалізуються через IOCTL запити). Завдяки IOCTL додатки рівня користувача одержують можливість взаємодіяти із драйверами рівня ядра. Користувальницький додаток для того, щоб послати яку-небудь команду драйверу рівня ядра (або фільтру-драйверу), повинен спочатку відкрити об.єкт пристрою, створеного цим драйвером, за допомогою функції Win32 CreateFile [8]. Потім користувальницький додаток за допомогою функції Win32 DeviceIoControl [7, 8, 9] посилає драйверу CTL_CODE (див. Мал. 3.3).

Мал. 3.3 Схема CTL_CODE
CTL_CODE [8] має у своєму складі, крім коду запитуваної операції, додаткове обмеження на мінімальний рівень прав користувача, при якому операційна система передасть запит драйверу, що забезпечує додатковий захист. Крім того, в CTL_CODE вказується тип пристрою, якому посилає запит, і методи передачі буферів (вхідного й вихідного) між додатком користувача й драйвером режиму ядра.
Загальний прапор встановлюється тільки для нових типів пристроїв FILE_DEVICE_XXX при створенні власних повідомлень. Приватний прапор встановлюється при створенні набору власних повідомлень для повідомлень, що входять у цей набір. Тип пристрою відповідає типу пристрою, що був зазначений для даного драйвера у функції створення керуючого об.єкта пристрою IoCreateDevice [7, 9] при ініціалізації драйвера функцією DriverEntry [7, 9]. Код операції визначає запитувану операцію. Рівень прав користувача приймає одне з наступних значень [7, 9]:
• FILE_ANY_ACCESS, диспетчер вводу-виводу посилає IRP від будь-якого користувача що має хендл цільового об.єкта пристрою.
• FILE_READ_DATA, диспетчер вводу-виводу посилає IRP від будь-якого користувача, що має, принаймні, права читання.
• FILE_WRITE_DATA, диспетчер вводу-виводу посилає IRP від будь-якого користувача, що має, принаймні, права запису.
• (FILE_READ_DATA | FILE_WRITE_DATA), диспетчер вводу-виводу посилає IRP від будь-якого користувача, що має права запису й читання. Метод передачі буферів визначається однієї з наступних констант [7, 8, 9]:
• METHOD_BUFFERED, якщо відбувається передача невеликих обсягів інформації. У цьому випадку IRP буде містити покажчик на буфер в користувальницькому просторі й покажчик на буфер у системному просторі.
• METHOD_IN_DIRECT або METHOD_OUT_DIRECT, якщо драйвер по даному запиту зчитує або записує велика кількість інформації із пристрою, використовуючи DMA або PIO, і повинен швидко завершити операцію.
• METHOD_NEITHER, драйвер може одержувати цей запит, тільки виконуючись у контексті потоку, що послали даний запит. Запити користувача драйверу посилає Win32 функція DeviceIoControl [8], що має наступні параметри:
• HANDLE hDevice – описатель об.єкта пристрою, раніше відкритий з допомогою функції CreateFile.
• DWORD dwIoControlCode – CTL_CODE запитуваної операції. • LPVOID lpInBuffer – покажчик на вхідний буфер.
• DWORD nInBufferSize – розмір вхідного буфера.
• LPVOID lpOutBuffer – покажчик на вихідний буфер.
• DWORD nOutBufferSize – розмір вихідного буфера.
• LPDWORD lpBytesReturned – покажчик на змінну, що одержує розмір інформації, поміщеної у вихідний буфер, у байтах. Якщо розміру вихідного буфера не досить для одержання хоча б частини інформації, виконання запиту не вдається, виклик функції GetLastError повертає ERROR_INSUFFICIENT_BUFFER. Якщо ж частина інформації удалося розмістити у вихідному буфері, виконання запиту не вдається, але виклик функції GetLastError повертає ERROR_MORE_DATA.
• LPOVERLAPPED lpOverlapped – покажчик на OVERLAPPED структуру. Якщо об.єкт пристрою був відкритий із вказівкою прапора FILE_FLAG_OVERLAPPED, те після виклику функції DeviceIoControl керування повернеться негайно, а при завершенні операції буде установлений у стан, що сигналізує, об.єкт події. Якщо ж прапор FILE_FLAG_OVERLAPPED зазначений не був, то керування повернеться в програму користувача тільки після завершення обробки запиту або виникнення помилки.
У результаті виклику додатком рівня користувача DeviceIoControl функції драйверу приходить IRP пакет, що має наступний старший код: IRP_MJ_DEVICE_CONTROL. Функція, що обробляє такі IRPs, витягає CTL_CODE і обробляє дане керуюче повідомлення відповідної образом.

3.3.6 Загрузка та вигрузка драйверу

Фільтр-драйвер завантажує операційна система (на базі ядра Windows NT) на етапі свого завантаження. У процесі завантаження фільтра-драйвера диспетчер вводу/виводу (I/O Manager) викликає функцію DriverEntry, яка робить ініціалізацію драйвера. Після успішної ініціалізації фільтр-драйвер буде прикріплений як мінімум до однієї файлової системи (файлова система системного тому). До нього відразу ж почнуть приходити пакети з запитами на ввід-вивід (вірніше, менеджер вводу-виводу буде викликати певні робочі процедури для певних IRPs. Так само в процесі роботи драйвера до нього будуть приходити запити від користувальницького додатку, для якого менеджер вводу-виводу буде викликати функцію, що обробляє керуючі повідомлення. Вивантаження даного фільтра-драйвера відбувається тільки при завершенні роботи операційної системи.

3.3.7 Ініціалізація драйверу

По суті, об.єкт драйвера (покажчик на який менеджер вводу-виводу передає як перший параметр при виклику функції DriverEntry) – це структура, деякі поля якої ініціалізує диспетчер вводу-виводу, деякі поля - функція ініціалізації драйвера. Єдине, на що авторові даної роботи хотілося б звернути увагу, - це те, що для підтримки операційної системи Windows 2000 Professional необхідно було ввести механізм (трохи відрізняється від реалізованого в Windows XP Professional) приєднання фільтруючих об.єктів пристрою нашого драйвера до об.єктів пристроїв файлових систем, що представляють собою для операційної системи змонтовані томи. Справа в тому, що функція IoRegisterFsRegistrationChange [7, 13] в Windows 2000 працює по-іншому, чим в Windows XP. Тобто після виклику даної функції в Windows 2000 драйвер буде одержувати повідомлення про реєстрацію файлових систем у якості активних файлових систем, а в WinXP після виклику даної функції такі повідомлення прийдуть від всіх файлових систем (навіть від тих, які зареєструвалися ще до завантаження драйвера). Для виходу із ситуації, що створилася, була написана функція FindFileSystems, що викликається перед викликом функції IoRegisterFsRegistrationChange (для операційної системи Windows 2000). Дана функція використається в DriverEntry. Для того щоб не пропустити ні однієї файлової системи, функція перебирає вміст директорії «FileSystems» глобального простору імен менеджера об.єктів. При цьому для кожного драйвера файлової системи потрібно одержати покажчик на об.єкт драйвера, за допомогою якого потрібно одержати покажчики на об.єкти пристроїв, що належать даній файловій системі. Тепер, одержавши покажчик на об.єкт пристрою локальної файлової системи, можливо прикріпитися зверху до стеку драйверів даної файлової системи й одержувати запити (IRPs), адресовані файлової системи. Для того щоб прикріпити наш об.єкт фільтр-пристрою (Filter Device Object - FiDO) до об.єкта пристрою файлової системи використається функція AttachToFsDO. Функція повертає код помилки або код STATUS_SUCCESS.

3.3.8 Операції, що потребують блокування

Однією із завдань даного драйвера є блокування файлів. Дана функціональність реалізована за допомогою обробки запиту зі старшим кодом IRP_MJ_CREATE, IRP_MJ_WRITE, IRP_MJ_READ. При обробці будь-якого запиту на створення або відкриття фільтр-драйвер додає до списку запитів, з якого буде читати запити клієнтський додаток. Далі клієнт сканує файл і якщо він заражений доповідає про це драйверу, який повертає код помилки доступу (ACCESS_DENIED). У противному випадку, драйвер пересилає даний запит нижче по стеку (наприклад, файловій системі, до якої він причепився).
Наступним завданням є повідомлення про створення процесів ОС. Драйвер регіструє спеціальний callback, який буде викликатися кожен раз коли створюється новий процес. Регістрація здійснюється за допомогою функції PsSetLoadImageNotifyRoutine. Далі драйвер додає цю подію по списку та діє як при обробці файлових запитів.

3.3.9 Реалізація обробки керуючих повідомлень

За допомогою коду керування (CTL_CODE) клієнтський додаток повідомляє механізму IOCTL (а вірніше, функції DeviceIoControl) про те, яка функція повинна бути виконана відносно пристрою від імені користувальницького додатка. При цьому перше, що робить функція DeviceIoControl - одержує покажчик на комірку стеку вводу-виводу з пакета IRP (I/O stack location - одна позиція в змінюваній частині IRP), що має наступний старший код IRP_MJ_DEVICE_CONTROL, за допомогою функції IoGetCurrentIrpStackLocation [7 - 13]. Потім визначає код керування: витягає його з осередку стека вводу-виводу оброблюваного IRP. Буфер вхідних даних містить будь-які додаткові дані, які можуть знадобитися пристрою для того, щоб обробити запит користувальницького додатка. Якщо в результаті обробки запиту пристрій генерують які-небудь дані, ці дані розміщаються в буфері вихідних даних. Про результат виконання операції IOCTL користувальницький додаток довідається за допомогою коду стану.

3.3.10 Механізм налагодження фільтра-драйвера

Перед тим як прийняти рішення щодо методу налагодження фільтра-драйвера були розглянуті наявні дебагери [7, 9, 11]. Виявилося, що одні дебагери вимагають два комп.ютери, інші - певні файли (наприклад, налагоджувальні символи). І було прийнято рішення розробити свій власний метод налагодження. Фільтр-драйвер передбачалося тестувати на віртуальних машинах, які мають серед іншого віртуального встаткування паралельний порт, якому можна зіставити який-небудь файл реальної машини. Ця можливість і була використана. Був написаний код дебагу, головним обов.язком якого було записувати інформацію в паралельний порт. Код дебагу дає можливість викликати в будь-якому місці фільтра-драйвера функцію TRACE, що приймає такі ж аргументи, що й функція Win32 printf. Можна відстежити які функції фільтра драйвера були викликані в процесі роботи, які значення мали певні змінні й т.д. Величезним плюсом даного методу налагодження є те, що ми маємо можливість стежити за роботою драйвера до останнього моменту (так званого блакитного екрана смерті). Це дуже полегшує налагодження драйверу. Адже найменша помилка в коді (наприклад, обіг по нульовій адресі) приводить до повної зупинки операційної системи.
3.4 Реалізація драйверу
3.4.1 Опис функції DriverEntry і функцій використовуваних нею

DriverEntry у процесі своєї роботи використовує наступні функції:
CreateNamedDeviceObject,
FindDriverLocation,
LoadFSESA,
FindFileSystems,
FilesDispatch
DetachFromFsDO
AttachToFsDO
FilesFSNotification

CreateNamedDeviceObject
NTSTATUS
CreateNamedDeviceObject (
PDRIVER_OBJECT pDriverObject ).
pDriverObject - покажчик на об.єкт драйвера.
Функція створює іменований об.єкт пристрою (control device object або CDO). Даний об.єкт використовується додатками рівня користувача для того щоб управляти драйвером. Як відомо додатки Win32 не мають доступу до всьому простору імен менеджера об.єктів (Object Manager) і не зможуть прямо звертатися до даного об.єкта пристрою, тому для даного керуючого об.єкта пристрою необхідно створити символічне посилання в директорії «??» або «GLOBAL», що дана функція й виконує. У випадку помилки буде повернутий код помилки. Функція повертає код помилки або код STATUS_SUCCESS.

FindDriverLocation
NTSTATUS FindDriverLocation().
Дана функція, використовуючи покажчик на шлях у реєстрі (переданий менеджером вводу-виводу як параметр у функцію DriverEntry), шукає в реєстрі повне ім.я даного драйвера й зберігає дане значення до глобальної змінної g_usDriverLocation. Функція повертає код помилки або код STATUS_SUCCESS.

LoadFSESA
NTSTATUS LoadFSESA(PUNICODE_STRING pusFsesaLocation).
pusFsesaLocation - покажчик на структуру, у якій перебуває повне ім.я файлу FSESA. Даний файл повинен перебуває в тій же директорії, що й файл фільтра-драйвера. Функція виконує наступні дії:
Відкриває файл FSESA.
Визначає розмір файлу FSESA.
Читає заголовок файлу й зберігає його в глобальної змінної g_FsesaHeader, перевіряє правильність сигнатури файлу FSESA.
Виділяє з несторінкового пула пам.ять для купи файлів, що треба заблокувати й зчитує в цей буфер список файлів що треба заблокувати.
Виділяє зі сторінкового пула пам.ять для купи томів і зчитує в цей буфер уміст купи томів у файлі FSESA. ініціалізує глобальні змінні, стосовні до купи томів.
Виділяє зі сторінкового пула пам.ять для купи елементів каталогу й зчитує в цей буфер уміст купи елементів каталогу у файлі FSESA.
Ініціалізує глобальні змінні, стосовні до купи елементів каталогу. привласнює полям cFileOpenings всіх структур у даній купі значення 0 і опускає прапор SAFLAG_SIZECHANGED.
Якщо на якому-небудь із перерахованих етапів відбудеться помилка, то буде повернуто код даної помилки й ініціалізація драйвера завершиться з помилкою. Функція повертає код помилки або код STATUS_SUCCESS.

FindFileSystems
NTSTATUS FindFileSystems(WCHAR *puPath).
puPath - покажчик на рядок у кодуванні Unicode, завершену нульовим символом. Дана функція використається DriverEntry при пошуку активних файлових систем для Windows 2000 (в Windows XP необхідності в цій функції немає). Для того щоб не пропустити ні однієї файлової системи, функція перебирає вміст директорії «FileSystems» глобального простору імен менеджера об.єктів. При цьому для кожного драйвера файлової системи потрібно одержати покажчик на об.єкт драйвера, за допомогою якого потрібно одержати покажчики на об.єкти пристроїв, що належать даній файловій системі. Тепер, одержавши покажчик на об.єкт пристрою локальної файлової системи, можливо прикріпитися зверху до стеку драйверів даної файлової системи й одержувати запити (IRPs), адресовані файлової системи. Для того щоб прикріпити наш об.єкт фільтр-пристрою (Filter Device Object - FiDO) до об.єкта пристрою файлової системи використовується функція AttachToFsDO (її опис див. далі). Функція повертає код помилки або код STATUS_SUCCESS.

FilesDispatch
NTSTATUS FilesDispatch(PDEVICE_OBJECT pDeviceObject,
PIRP pIrp).
pDeviceObject - покажчик на об.єкт пристрою, якому адресований IRP.
pIrp - покажчик на пакет запиту на ввід-вивід.
Дана функція визначає, якому з об.єктів пристроїв (керуючому об.єкту пристрою або фільтруючому об.єкту пристрою) адресований даний пакет і викликає відповідну робочу процедуру. Функція повертає код помилки або код STATUS_SUCCESS.

DriverEntry
NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObject,
PUNICODE_STRING pusRegistryPath).
pDriverObject - покажчик на об.єкт драйвера.
pusRegistryPath - покажчик на ключ у реєстрі, створений для фільтра-драйвера.
Крім виклику перерахованих вище функцій, при виклику DriverEntry виконуються наступні дії:
Створюється та ініціалізується м»ютекс g_pFsesaMutex для синхронізації доступу до даних.
Виклик функції IoRegisterFsRegistrationChange для реєстрації бажання даного драйвера одержувати повідомлення про реєстрацію файлової системи в якості активної файлової системи.
Створення асоціативного списку g_MountedVolumes для зберігання зв.язку між змонтованим томом і нашими внутрішніми структурами.
Створення асоціативного списку g_EncryptedFileObjects для зберігання зв.язку між файловим об.єктом і нашими внутрішніми структурами.
Реєстрація робочих процедур фільтра-драйвера.
Реєстрація функцій для обробки запитів на швидкий ввід-вивід (Fast I/O).
Реєстрація функції DeallocateResources, що викличе менеджер вводу-виводу при динамічному вивантаженні драйвера. Динамічна вивантаження й завантаження фільтра-драйвера використається під час налагодження даного драйвера.
Функція повертає код помилки або код STATUS_SUCCESS.

DeallocateResources
void DeallocateResources(PDRIVER_OBJECT pDriverObject).
pDriverObject - покажчик на об.єкт драйвера.
У даній функції відбувається звільнення всіх ресурсів, виділених драйвером.

FilesFSNotification
void CrioFilesFSNotification (PDEVICE_OBJECT
pDeviceObject, BOOLEAN bFsActive).
pDeviceObject - покажчик на керуючий (іменований) об.єкт пристрою файлової системи.
bFsActive - прапор, показує зареєструвала файлова система об.єкт пристрою або немає.
Менеджер вводу-виводу викличе дану функцію, щоб сповістити фільтр-драйвер про те, що певна файлова система реєструє себе в якості активної файлової системи. Дана функція визначає чи потрібно причіплятися до даного об.єкта, якщо прапор bFsActive дорівнює TRUE, або визначає потрібно чи відчепитися від даного об.єкта, якщо файлова система разрегеструє себе. Якщо необхідно приєднатися до стеку файлової системи, то буде викликана функція AttachToFsDO (опис даної функції див. далі), якщо необхідно відчепитися - буде викликана функція DetachFromFsDO (її опис див. далі).

AttachToFsDO
void AttachToFsDO(PDEVICE_OBJECT pFsDeviceObject).
pFsDeviceObject - покажчик на об.єкт пристрою файлової системи, до якого потрібно приєднатися.
Першою справою дана функція створює об.єкт пристрою (FiDO). Потім намагається приєднати його до зазначеного об.єкта пристрою файлової системи. Дана функція використається не тільки під час ініціалізації драйверу.

DetachFromFsDO
void DetachFromFsDO (PDEVICE_OBJECT pFsDeviceObject).
pFsDeviceObject - покажчик на об.єкт пристрою файлової системи, від якого потрібно від»єднатися.
Функція від.єднує наш об.єкт пристрою від об.єкта пристрою файлової системи й видаляє його. Дана функція використається не тільки під час ініціалізації драйверу.

3.4.2 Опис класу «Асоціативний список»

Реалізація класу «Асоціативний список» (Association List) представляє собою хеш таблицю, у якій можна зберігати дані й при правильно підібраному розмірі швидко знаходити необхідну інформацію. Величезним достоїнством цього класу є відсутність обмежень на структуру даних. Тобто формат даних, що зберігаються в хеш таблиці, може бути довільним. Розглянемо члени даного класу:
m_HashTableSize – розмір хеш таблиці.
m_cbValueServicePart – кількість байт для зберігання службової інформації (це значення ключа й покажчик на наступний елемент, що має таке ж хеш-значення).
m_cbValueInfoPart – кількість байт для зберігання асоційованих із ключем даних (яка-небудь структура).
m_pHashTable – хеш таблиця (масив покажчиків на списки).
Розглянемо методи класу «Асоціативний список»:
Init – метод, у параметрах якого потрібно вказати розмір хеш таблиці (HashTableSize) і кількість байт для зберігання власної інформації (cbValueInfoPart). По-перше, будуть проініціалізовані члени класу. По-друге буде виділена пам.ять (з пула) для масиву покажчиків (m_pHashTable). Тобто для кожного хеш-значення, якщо буде потреба, буде створено список.
DeInit – даний метод видаляє всі створені списки й звільняє пам.ять для масиву покажчиків на списки.
Add – даному методу необхідно передати як параметри значення ключа (Key) і покажчик на структуру (pInfo), яку потрібно зберегти в хеш таблиці. Розмір даної структури повинен дорівнювати значенню члена класу m_cbValueInfoPart. Цей метод додає значення в таблицю, при цьому, створюючи елемент списку, що складається із двох частин (службова частина ListItemServicePart і інформаційна - структура, розмір якої буде зазначений при виклику методу Init). При створенні елемента списку буде виділена пам.ять для службової й інформаційної частин. Інформаційна частина буде розміщена відразу ж за службовою. Ідеальним є випадок, коли кожному ключу відповідає своє хеш значення, тобто в списку перебуває всього по одному елементу. Але, якщо відбудеться колізія, то для даного хеш значення буде створений «дійсний» список, тобто даний список буде складатися більш ніж з одного елемента.
Delete – тут єдиним параметром є ключ (Key). Елемент списку, відповідному даному ключу буде вилучений з хеш таблиці.
Get – для даного методу параметром є ключ (Key). У результаті успішного пошуку буде повернутий покажчик на хеш-значення, інакше значення NULL.

Даний клас використається у фільтрі-драйвері для зберігання:
Відповідності між покажчиком на фізичний або логічний об.єкт пристрою й його серійним номером, структурою VOLUME, що відповідає даному тому. Такі відповідності зберігається в глобальної змінної g_MountedVolumes.
Відповідності між покажчиком на об.єкт файлу й покажчиком на його унікальний ідентифікатор. Відповідності такого роду зберігається в глобальної змінної g_FileObjects.
3.4.3 Опис функцій для обробки пакетів, адресованих керуючому об.єкту пристрою

Перелічимо ці функції:
CfShutDown.
TestRegister.
CfDeviceIoControl.
GetStandardizedPath.
GetPdoPointer.

CfCreate
NTSTATUS
CfCreate(
PDEVICE_OBJECT pDeviceObject,
PIRP pIrp).
pDeviceObject - покажчик на об.єкт пристрою (CDO).
pIrp - покажчик на пакет запиту на ввід-вивід.
Дана функція обробляє запити зі старшим кодом IRP_MJ_CREATE.
CfCreate повертає STATUS_SUCCESS і завершує обробку даного запиту.

CfShutDown
NTSTATUS
CfShutDown (
PDEVICE_OBJECT pDeviceObject,
PIRP pIrp).
pDeviceObject - покажчик на об.єкт пристрою (CDO).
pIrp - Покажчик на пакет запиту на ввід-вивід.
Дана функція обробляє запити зі старшим кодом IRP_MJ_SHUTDOWN. Вона викликає функцію TestRegister і завершує обробку даного запиту з кодом, що повернула функція TestRegister. Алгоритм роботи даної функції показано на мал. 3.4.1.


Мал. 3.4.1 Алгоритм роботи функції CfShutDown

TestRegister
NTSTATUS TestRegister().
Функція перевіряє ключ реєстру HKEY_LOCAL_MACHINESystemCurrentControlSetServicesCRIOFILE чи перебуває там строковий параметр ImagePath, якому привласнене ім.я файлу ядра безпеки із вказівкою повного шляху до нього. Якщо цей параметр відсутній, то він створюється знову. Якщо йому привласнене неправильне значення, то йому привласнюється правильне значення. Однак якщо відсутній вищевказаний розділ реєстру й при цьому на диску відсутній файл ядра безпеки, то інформація в реєстрі не відновлюється.

CfDeviceIoControl
NTSTATUS CfDeviceIoControl(PDEVICE_OBJECT pDeviceObject,
PIRP pIrp).
pDeviceObject - покажчик на об.єкт пристрою (CDO).
pIrp - Покажчик на пакет запиту на ввід-вивід.
Дана функція обробляє запити зі старшим кодом IRP_MJ_DEVICE_CONTROL. Докладний опис дій, які виконує функція залежно від значення керуючого коду (CTL_CODE), наведене в Додатку А. Алгоритм роботи даної функції показано на мал. 3.4.2.


Мал. 3.4.2 Алгоритм роботи функції CfDeviceIoControl
Функція повертає код помилки або STATUS_SUCCESS код.

GetPdoPointer
unsigned GetPdoPointer(WCHAR VolumeLetter).
VolumeLetter - літера диску.
Літера диску буде використана для створення символічного посилання. Потім ми відкриваємо це символічне посилання, одержуємо ім.я пристрою, якому вона відповідає. По імені об.єкта пристрою одержуємо покажчик на об.єкт пристрою і його повертаємо. Дана функція використовується при обробці DIOC_GETSECURITYATTR і DIOC_GETSECURITYATTR керуючих кодів.

GetStandardizedPath
bool GetStandardizedPath(UNICODE_STRING
*pusStandardizedPath).
pusStandardizedPath - покажчик на структуру, у якій утримується шлях. Даний шлях потрібно перетворити в стандартизований шлях. У випадку помилки дана функція повертає FALSE, інакше - TRUE.
3.4.4 Опис функцій для обробки пакетів, адресованих фільтруючому об.єкту пристрою

До вищезгаданих функцій відносяться наступні:
CfFiDOCreate.
CfFiDORead.
CfFiDOWrite.

CfFiDOCreate
NTSTATUS CfFiDOCreate(PDEVICE_OBJECT pDeviceObject, PIRP
pIrp).
pDeviceObject - покажчик на об.єкт пристрою, якому адресований пакет запиту на уведення-вивід.
pIrp - покажчик на пакет запиту на ввід-вивід.
Дана функція виконує наступні дії:
1 Перевіряє покажчик на об.єкт файлу (file object), якщо він дорівнює NULL, те передає запит драйверу, що лежить нижче.
2 Перевіряє поле FileName в об.єкті файлу, якщо там немає імені, то передає запит драйверу, що лежить нижче.
3 Перевіряє поле Vpb в об.єкті файлу, якщо воно порожнє, то передає запит драйверу, що лежить нижче.
4 Одержує значення поля RealDevice з Vpb структури - це покажчик на фізичний об.єкт пристрою (далі pPDO). Якщо цього не виходить, то передає запит драйверу, що лежить нижче.
5 Перетворить отриманий шлях (FileName) у стандартизований шлях за допомогою функції GetStandardizedPath (см. вище), якщо це можливо, інакше передає запит драйверу, що лежить нижче.
6 Блокує операцію і додає ім»я файлу до списку заблокованих файлів. Якщо клієнт повідомляє про те, що файл заражений, то операція буде завершена й повернута помилка STATUS_ACCESS_DENIED, інакше передає запит драйверу, що лежить нижче.
Алгоритм роботи даної функції показано на мал. 3.4.3.

Мал. 3.4.3 Алгоритм роботи функції CfFiDOCreate

CfFiDORead
NTSTATUS CfFiDORead(PDEVICE_OBJECT pDeviceObject, PIRP
pIrp).
pDeviceObject - покажчик на об.єкт пристрою, якому адресований пакет запиту на ввід-вивід.
pIrp - покажчик на пакет запиту на ввід-вивід.
Дана функція виконує наступні кроки:
1 Одержує pPDO аналогічно функції CfFiDOCreate.
2 Блокує операцію і додає ім»я файлу до списку заблокованих файлів. Якщо клієнт повідомляє про те, що файл заражений, то операція буде завершена й повернута помилка STATUS_ACCESS_DENIED, інакше передає запит драйверу, що лежить нижче.

CfFiDOWrite
NTSTATUS CfFiDOWrite(PDEVICE_OBJECT pDeviceObject, PIRP
pIrp).
pDeviceObject - покажчик на об.єкт пристрою, якому адресований пакет запиту на уведення-вивід.
pIrp - покажчик на пакет запиту на ввід-вивід.
Дана функція виконує наступні кроки:
1 Одержує pPDO аналогічно функції CfFiDOCreate.
2 Блокує операцію і додає ім»я файлу до списку заблокованих файлів. Якщо клієнт повідомляє про те, що файл заражений, то операція буде завершена й повернута помилка STATUS_ACCESS_DENIED, інакше передає запит драйверу, що лежить нижче.
Алгоритм роботи даної функції показано на мал. 3.4.4.

Мал. 3.4.4 Алгоритм роботи функції CfFiDOWrite

3.4.5 Реалізація допоміжної динамічної бібліотеки для роботи з драйвером

Для спрощення роботи з драйвером-фільтром ОС розробимо спеціальну динамічну бібліотеку. Dll-бібліотека являє собою обгортку над системними визовами IODeviceControl, тобто експортує фунції які керують драйвером.
Введемо слідуючі константи для різноманітних кодіх помилок, флагів, тощо.
#define FOPN_ERROR_SUCCESS - код успішного завершення операції.
#define FOPN_ERROR_NOT_CONNECTED – код який означає, що зв»язок з драйвером не встановлено.
#define FOPN_ERROR_DRIVER_ABSENT – драйвер не встановлено.
#define FOPN_ERROR_ACCESS_DENIED – доступ до драйверу не може бути здійснено.
#define FOPN_ERROR_BUFFER_TOO_SMALL – озаначає що розмір буферу переданий до функції за допомогою аргументу не достатньо великий.
#define FOPN_ERROR_UNKNOWN – код інших помилок.

Введемо спеціальне значення, яке будемо використовувати для встановлення звя»зку з драйвером, яке являє собою пароль.
#define DEDICATED_PROCESS_PASSWORD 0x12345678

Флаги які описують зміст нотифікацій:
#define FLAG_NOTIFY_PROCESS – повідомляє про те, що перехоплена операцію по створенню нового процесу.
#define FLAG_BOOST_PRIORITY – повідомляє про те, що перехоплена операція була декілька разів повторена.
#define FLAG_INFORMATION – повідомляє про те, що перехоплена файлова операція.
#define FLAG_EMPTY_NOTIFICATION – пуста нотифікація.
#define FLAG_LM_NOTIFICATION – операція завантаження модуля(dll).

Створимо також структуру даних _NOTIFYREPLY, що представляє відповідь на нотифікацію:
typedef struct _NOTIFYREPLY {
ULONG size. // Розмір структури
ULONG flags. // Тип відповіді
ULONG reserved. // Зарезервований флаг
ULONG pid. // Ідентифікатор процесу
ULONG buffer size. // Розмір буферу в символах, включаючи символ
// завершення строки
char buffer[1]. // Буфер за даними
}.

Бібліотека-обгортка експортує слідуючий набір функцій для роботи з драйвером-фільтром файлової системи:
FOPNL_API ULONG FOPNL_Connect (IN ULONG code, IN ULONG priority) – ця функція встановлює зв»язок з драйвером. Перший параметр – пароль доступу, другий – пріорітет процесу клієнтського додатку.
FOPNL_API ULONG FOPNL_Disconnect () – функція розриває зв»язок з драйвером. Якщо процесс завершується нормально без помилок, виклик цієї функції не потрібен.

FOPNL_API ULONG FOPNL_GetNotification( OUT ULONG* flags,
OUT ULONG* uniq_id,
ULONG* pid,
IN char* buffer,
IN ULONG buf_size ) – найважливіша функція для роботи з драйвером. Викликається кожен раз для отримання нотифікацій про блоковану активність. Розглянемо список аргументів цієї функції.
1 flags – повертає флаг, який ідентифікує тип нотифікації. Можливі значення флагу такі:
FLAG_NOTIFY_PROCESS – Повідомляє про те, що змінився якийсь файл. FLAG_BOOST_PRIORITY – Повідомляє про те, що якийсь процес робить спробу доступу до файлу, який заблоковано. Якщо приходить цей флаг, заблокований файл треба якомога бистріше обробити.
FLAG_INFORMATION – Флаг зарезервовано для подальшого розширення.
FLAG_EMPTY_NOTIFICATION – Пуста нотифікація. В разі пустої нотифікації треба викликати FOPNL_GetNotification до тих пір, поки не буде отримано інший флаг.
FLAG_LM_NOTIFICATION – Повідомляє про те, що якась бібліотека або виконуваний файл був заблокований. Заблоковані об»єкти треба звільнити якомога бистріше.

2 Uniq_id – повертає унікальний номер операції. Для деяких типів операцій треба викликати відповідні функції, які приймають цей параметр. Це значення дійсне при слідуючих значеннях параметру flags: FLAG_NOTIFY_PROCESS, FLAG_BOOST_PRIORITY, FLAG_LM_NOTIFICATION.
3 Pid – повертає ідентифікатор процесу який спричинив створення нотифікації. Дійсний тільки у випадку FLAG_LM_NOTIFICATION.

4 Buffer – буфер який постачається користувачем. Заповнюється структурою, яка відповідає аргументу flags(див. вище опис структури _NOTIFYREPLY).
5 Buf_size – розмір буферу у байтах.

FOPNL_API ULONG FOPNL_UnlockFile(IN ULONG uniq_id) – застосовується для розблокування файлу. Аргумент uniq_id - унікальний номер який повертає FOPNL_GetNotification.

FOPNL_API ULONG FOPNL_UnlockLM(IN ULONG uniq_id) – звільняє dll або exe модуль. Аргумент uniq_id див вище.

FOPNL_API ULONG FOPNL_BlockFile(IN ULONG uniq_id) – блокує доступ до файлу. Повертає ACCESS_DENIED при звернені до цього файлу. Аргумент uniq_id див вище.

FOPNL_API ULONG FOPNL_UnblockFile(IN WCHAR* file_name) –разблоковує файл за ім»ям. Ім»я повинно починатися з «DEVICEHARDDISKVOLUME1». Список заблокованих файлів знаходиться в реєстрі у ключі «HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesFOPNlocked»

FOPNL_API ULONG FOPNL_GetRecentList(WCHAR* buf, ULONG size, LARGE_INTEGER last) ця функція застосовується для отримання списку змінених файлів. Список представлений у вигляді юнікодних строк. Завершується двома нульовими символами. Другий аргумент функції – час останнього файлу, який було змінено.

FOPNL_API ULONG FOPNL_ControlChangedList(IN OUT ULONG* cmdres) – функція для керування списком знінених файлів. Параметр cmdres повертає нуль якщо якщо список переповнено. Приймає одиницю щоб очистити список або нуль щоб виявити, чи є список переповнений.

FOPNL_API ULONG FOPNL_BlockFileByName(IN WCHAR* file_name) – блокує файл за ім»ям. Ім»я файлу повинно починатися з «DEVICEHARDDISKVOLUME1».
3.5 Реалізація клієнтського додатку

Для того щоб інформаційна система була повною, треба розробити клієнтський додаток, який буде працювати з драйвером та сканувати перехоплені файли. Для реалізації такого додатку створимо MFC аплікацію. Вона буде посилати команди драйверу, а також отримувати нотифікації. Працювати з драйвером будемо завдяки розробленій бібліотеці fopn.dll, яка огортає системні визови IOGetDeviceControl. Алгоритм роботи клієнтського додатку було описано в п. 3.3( див. мал. 3.3.1 ). Клієнтський додаток створює поток у якому визиває постійно функцію FOPN_GetNotification() бібліотеки fopn.dll. Якщо функція повертає не пусту нотифікацію, тоді додаток запускає Perl скрипт для сканування файлу. Якщо скрипт знаходить вірус, тоді клієнтський додаток визиває одну з функцій FOPNL_UnlockFile або FOPNL_UnlockLM.
3.5.1 Методи реалізовані в скрипті вірусного сканеру

new([, OPTION ...]) – цей метод потрібен для того щоб створювати новий об»єкт File::Scan.
Слідуючі ключі можуть бути задані:
extension => якщо файл інфіковано вірусом, його розширення буде замінено на зазначене в цьому параметрі.
move => ім»я директорії до якої буде перенесено інфікований файл.
copy => ім»я директорії до якої буде скопійовано інфікований файл.
delete => якщо встановити 0, тоді файл буде заливено, в іншому випадку інфікований файл буде знищено.

max_bin_size => встановлює обмеження на файли, що скануються. Якщо встановити 0, тоді всі файли будуть про скановані, розмір по-замовчуванню – 10240 Кб.

scan([FILE])
Цей метод сканує файл на віруси. Основний код програми розташовано у даній функції. Пошук по сигнатурах дуже легко реалізувати завдяки вбудованим процедурам пошуку язику Perl. Якщо у файлі було знайдено вірус, тоді повертається назва вірусу. Алгоритм роботи функції зображено на мал. 3.5.1

Мал. 3.5.1 Алгоритм роботи функції scan()

skipped()
Цей метод повертає число від 0 до 4 якщо файл було пропущено. Слідуючі коди можуть бути повернені:

Код
Значення

0
Файл не було пропущено

1
Файл не може бути відкритий

2
Розмір файлу – 0

3
Розмір файлу дуже маленький

4
Розмір файлу перевищую задане значення


suspicious()
Код
Значення

0
Файл не є підозрілим

1
Файл є підозрілим


error()
Цей метод повертає текст повідомлення про помилку.
3.6 Застосування інформаційної системи
Для застосування системи необхідно встановити драйвер і запустити тестову программу. Всі необхідні налаштування містяться в программі. Программа підтримує встановлення правил, які активуються коли та чи інша дія має місце. Программа виводить результати у вікно виводу, що дає змогу побачити всі деталі операції.


ВИСНОВОК

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

СПИСОК ВИКОРИСТАНОЇ ЛІТЕРАТУРИ

Безруков Н.Н. Компьютерная вирусология. - К.: УРЕ, 1991.
Семьянов П. Красная волна. // НОВИНТЕХ, 1991, N 2.
Моисеенков И. Безопасность компьютерных систем. // Компьютер Пресс, 1991, N 10-12.
Thompson K. Reflection on trusting trust. // CACM, 1984,v. 27, N 8.
Защита программного обеспечения. Под ред. Гроувера Д. -М.: Мир, 1992.
Семьянов П., Зегжда Д. Анализ средств противодействия исследованию программного обеспечения. // Компьютер Пресс, 1993, N11.
Расторгуев С.П., Дмитриевский Н.Н. Искусство защиты и |раздевания| программ. - М.: 1991.
Спесивцев А.В. и др. Защита информации в персональных ЭВМ. М.: Радио и связь, 1992.
Cohen F. Computer viruses - theory and experiments. Proceedings of the 7th National Computer Security Conference. -1984.
Leonard M. Adleman. An Abstract Theory of Computer Viru-ses. Proceedings of CRYPTO-88 conference. - 1988.
Зегжда Д. П., Котляров В. П. Средство сертификации и контроля несанкционированного доступа программ и данных компьютерных сетей. Тезисы докладов третьего всесоюзного семинара |Качество программного обеспечения|. - М.: Алгоритм, 1991.
Касперский Е. Компьютерные вирусы: эволюция вверх, вниз и в стороны. Материалы эхо-конференции SU.VIRUS. - 1994.
Зегжда Д.П., Матвеев В.А., Молотков С.В., Тихомиров Ю.В., под редакцией Шмакова Э. М. Защита информации в компьютерных системах. Теоретические аспекты защиты от вирусов. - СПб.: СПбГТУ, 1993.
Cohen F. Computer viruses. Theory and experiments // Adv.Comput. Syst. Secur. Vol. 3 - Norwood (Mass), 1988.
Зегжда Д.П., Матвеев В.А., Мешков А.В., Семьянов П.В. Автоматизация анализа безопасности программного обеспечения. Тезисы докладов республиканского научно-технического семинара |Методы и технические средства защиты информации|. - Обнинск: 1993.
Peterson P.E. Virus Definition Revisited. Материалы эхо-конференции comp.virus. - 1994.
Заморин А.П., Марков А.С. Толковый словарь по вычислительной технике и программированию. Основные термины. - М.:Рус.яз., 1988.
Вирт Н. Алгоритмы и структуры данных. - М.:Мир, 1989.
Матвеев В.А., Молотков С.В., Зегжда Д.П., Мешков А.В., Семьянов П.В., Шведов Д.В. Основы верификационного анализа безопасности исполняемого кода программ. - СПб.:СПбГТУ, 1994.
Экспертные системы. Принципы работы и примеры. Под ред. Р. Форсайта. - М.: Радио и связь, 1987.

Search:
????????...

загроза ядерної війни

Анкета Захара Беркута

негативні риси образу чіпки

пособія по роботі в Exceli

цікаві факти про фізику

твір міщанин шляхтич честь

міжнародні договори та угоди в галузі інформації та комунікації

кайдашева сім'я цитати

мое ставлення до чiпки

Структура сучасного комп'ютера називається магістрально-модульною



?????????? ????????? ????
   
Created by Yura Pagor, 2007-2010