ЗАБЕЗПЕЧЕННЯ ЕКСПЛУАТАЦІЙНОЇ БЕЗПЕКИ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ
2.1. МЕТОДИ І ЗАСОБИ ЗАХИСТУ ПРОГРАМ ВІД КОМП'ЮТЕРНИХ ВІРУСІВ
2.1.1. Загальна характеристика і класифікація комп'ютерних вірусів
Під комп'ютерним вірусом (або просто вірусом) розуміється автономно функціонуюча програма, що володіє здібністю до самостійного впровадження в тіла інших програм і подальшого самовідтворення і саморозповсюдження в інформаційно-обчислювальних мережах і окремих ЕОМ. Попередниками вірусів прийнято вважати так звані троянські програми, тіла яких містять приховані послідовності команд (модулі), що виконують дії, що завдають шкоди користувачам. Найбільш поширеним різновидом троянських програм є широко відомі програми масового застосування (редактори, ігри, транслятори і т.д.), в які вбудовані так звані "логічні бомби", що спрацьовують після настання деякої події. Слід зазначити, що троянські програми не є такими, що саморозмножуються.
Принципова відмінність вірусу від троянської програми полягає в тому, що вірус після його активізації існує самостійно (автономно) і в процесі свого функціонування заражає (інфікує) програми шляхом включення (імплантації) в них свого тексту. Таким чином, комп'ютерний вірус можна розглядати як своєрідний "генератор троянських програм". Програми, заражені вірусом, називаються вірусоносіями.
Зараження програми, як правило, виконується таким чином, щоб вірус отримав управління раніше самої програми. Для цього він або вбудовується в початок програми, або імплантується в її тіло так, що першою командою зараженої програми є безумовний перехід на комп'ютерний вірус, текст якої закінчується аналогічною командою безумовного переходу на команду вірусоносія, що була першою до зараження. Отримавши управління, вірус вибирає наступний файл, заражає його, можливо, виконує які-небудь інші дії, після чого віддає управління вірусоносію.
"Первинне" зараження відбувається в процесі надходження інфікованих програм з пам'яті однієї машини в пам'ять іншої, причому як засіб переміщення цих програм можуть використовуватися як магнітні носії (дискети), так і канали обчислювальних мереж. Віруси, що використовують для розмноження мережеві засоби, прийнято називати мережевими. Цикл життя вірусу зазвичай включає наступні періоди: впровадження, інкубаційний, реплікації (саморозмноження) і прояву. Протягом інкубаційного періоду вірус пасивний, що ускладнює задачу його пошуку і нейтралізації. На етапі прояву вірус виконує властиві йому цільові функції, наприклад незворотну корекцію інформації в комп'ютері або на магнітних носіях.
Фізична структура комп'ютерного вірусу достатньо проста. Він складається з голови і, можливо, хвоста. Під головою вірусу розуміється його компонента, що одержує управління першою. Хвіст - це частина вірусу, розташована в тексті зараженої програми окремо від голови. Віруси, що складаються з однієї голови, називають несегментованими, тоді як віруси, що містять голову і хвіст, - сегментованими.
Найбільш істотні ознаки комп'ютерних вірусів дозволяють провести наступну їх класифікацію.
По режиму функціонування:
резидентні віруси - віруси, які після активізації постійно знаходяться в оперативній пам'яті ком'ютера і контролюють доступ до його ресурсів;
транзитні віруси - віруси, які виконуються тільки у момент запуску зараженої програми.
По об'єкту впровадження:
файлові віруси - віруси, що заражають файли з програмами;
завантажувальні (бутові) віруси - віруси, що заражають програми, які зберігаються в системних областях дисків.
У свою чергу файлові віруси діляться на віруси, що заражають:
виконувані файли;
командні файли і файли конфігурації;
файли, створені на макромовах програмування, або файли, що містять макроси (макровіруси);
файли з драйверами пристроїв;
файли з бібліотеками вихідних, об'єктних, завантажувальних і оверлейних модулів, бібліотеками динамічної компоновки і т.п.
Завантажувальні віруси діляться на віруси, що заражають:
системний завантажувач, розташований в завантажувальному секторі дискет і логічних дисків;
позасистемний завантажувач, розташований в завантажувальному секторі жорстких дисків.
По ступеню і способу маскування:
віруси, що не використовують засобів маскування;
stealth-віруси - віруси, що намагаються бути невидимими на основі контролю доступу до заражених елементів даних;
віруси-мутанти (MtE-віруси) - віруси, що містять в собі алгоритми шифрування, що забезпечують відмінність різних копій вірусу.
MtE-віруси діляться на:
звичайні віруси-мутанти, в різних копіях яких розрізняються тільки зашифровані тіла, а дешифровщики співпадають;
поліморфні віруси, в різних копіях яких розрізняються не тільки зашифровані тіла, але і їх дешифровщики.
Найбільш поширені типи вірусів характеризуються наступними основними особливостями.
Файловий транзитний вірус цілком розміщується у виконуваному файлі, у зв'язку з чим він активізується тільки у разі активізації вірусоносія, а після виконання необхідних дій повертає управління самій програмі. При цьому вибір чергового файлу для зараження здійснюється вірусом за допомогою пошуку за каталогом. Файловий резидентний вірус відрізняється від нерезидентного логічною структурою і загальним алгоритмом функціонування. Резидентний вірус складається з так званого інсталятора та програм обробки переривань. Інсталятор отримує управління при активізації вірусоносія та інфікує оперативну пам'ять шляхом розміщення в ній керуючої частини вірусу і заміни адрес в елементах вектора переривань на адреси своїх програм, що оброблюють ці переривання. На так званій фазі стеження, наступній за описаною фазою інсталяції, при виникненні якого-небудь переривання управління отримує відповідна підпрограма вірусу. У зв'язку з істотно більш універсальною в порівнянні з нерезидентними вірусами загальною схемою функціонування, резідентні віруси можуть реалізовувати різноманітні способи інфікування.
Найбільш поширеними способами є інфікування програм, що запускаються, а також файлів при їх відкритті або читанні. Відмінною особливістю останніх є інфікування завантажувального сектора (бут-сектора) магнітного носія. Голова бутового вірусу завжди знаходиться в бут-секторі (єдиному для гнучких дисків і одному з двох - для жорстких), а хвіст - в будь-якій іншій області носія. Найбільш безпечним для вірусу способом вважається розміщення хвоста в так званих псевдозбійних кластерах, логічно виключених з числа доступних для використання.
Істотно, що хвіст бутового вірусу завжди містить копію оригінального (вихідного) бут-сектора. Механізм інфікування, що реалізовується бутовими вірусами, наприклад, при завантаженні MS DOS, такий. При завантаженні операційної системи з інфікованого диска вірус, завдяки своєму положенню на ньому (незалежно від того, з дискети або з вінчестера здійснюється завантаження), отримує управління і копіює себе в оперативну пам'ять. Потім він модифікує вектор переривань так чином, щоби переривання, які стосуються звертання до диска оброблялися власним обробником переривань вірусу, і запускає завантажувач операційної системи. Завдяки перехопленню переривань бутові віруси можуть реалізовувати такий же широкий набір способів інфікування і цільових функцій, як і файлові резидентні віруси.
Stealth-віруси користуються слабкою захищеністю деяких операційних систем і замінюють деякі їх компоненти (драйвери дисків, переривання) таким чином, що вірус стає невидимим (прозорим) для інших програм. Для цього замінюються функції DOS таким чином, що для зараженого файлу підставляються його оригінальна копія і зміст, яким вони були до зараження.
Поліморфні віруси містять алгоритм породження дешифровщиків (з розміром породжуваних дешифровщиків від 0 до 512 байтів) несхожих один на одного. При цьому в дешифровщиках можуть зустрічатися практично всі команди процесора Intel і навіть використовуватися деякі специфічні особливості його реального режими функціонування.
Макровіруси розповсюджуються під управлінням прикладних програм, що робить їх незалежними від операційної системи. Переважне число макровірусів функціонують під управлінням системи Microsoft Word for Windows. В той же час, відомі макровіруси, що працюють під управлінням таких прикладних програм як Microsoft Exel for Windows, Lotus Ami Pro, Lotus 1-2-3, Lotus Notes, в операційних системах фірм Microsoft і Apple.
Мережеві віруси, які також називають автономними реплікативними програмами, або, скорочено, реплікаторами, використовують для розмноження засоби мережевих операційних систем. Найпростіше реалізується розмноження в тих випадках, коли мережевими протоколами передбачено обмін програмами. Проте, розмноження можливе і в тих випадках, коли вказані протоколи орієнтовані тільки на обмін повідомленнями. Класичним прикладом реалізації процесу розмноження з використанням тільки стандартних засобів електронної пошти є реплікатор Моріса. Текст реплікатора передається від однієї ЕОМ до іншої як звичайне повідомлення, що поступово заповнює буфер, виділений в оперативній пам'яті ЕОМ-адресата. В результаті переповнення буфера, ініційованого передачею, адреса повернення в програму, що викликала програму прийому повідомлення, заміщається на адресу самого буфера, де в момент повернення вже знаходиться текст вірусу.
Тим самим вірус отримує управління і починає функціонувати на ЕОМ-адресаті.
"Лазівки", подібні описаній вище й обумовлені особливостями реалізації тих або інших функцій в програмному забезпеченні, є об'єктивною передумовою для створення і впровадження реплікаторів зловмисниками.
Ефекти, що викликаються вірусами в процесі реалізації ними цільових функцій, прийнято ділити на наступні групи:
спотворення інформації у файлах або таблиці розміщення файлів (FAT-таблиці), яке може призвести до руйнування файлової системи в цілому;
імітація збоїв апаратних засобів;
створення звукових і візуальних ефектів, включаючи, наприклад, відображення повідомлень, що вводять оператора в оману або утрудняють його роботу;
ініціація помилок в програмах користувачів або операційної системи.
Можливе також створення "вірусних черв'яків" - руйнуючих програм, які непомітно переміщуються між вузлами обчислювальної мережі, не завдаючи ніякої шкоди доти, доки не дістануться до цільового вузла. У ньому програма розташовується і перестає розмножуватися.
Оскільки в майбутньому слід чекати появи все більш і більш прихованих форм комп'ютерних вірусів, знищення осередків інфекції в локальних і глобальних мережах не стане простіше. Час комп'ютерних вірусів "загального призначення" йде в минуле.
2.1.2. Загальна характеристика засобів нейтралізації комп'ютерних вірусів
Найбільш поширеним засобом нейтралізації комп'ютерних вірусів є антивірусні програми (антивіруси). Антивіруси, виходячи з реалізованого в них підходу до виявлення і нейтралізації вірусів, прийнято ділити на наступні групи:
детектори;
фаги;
вакцини;
щеплення;
ревізори;
монітори.
Детектори забезпечують виявлення вірусів за допомогою перегляду виконуваних файлів і пошуку так званих сигнатур - стійких послідовностей байтів, наявних в тілах відомих вірусів. Наявність сигнатури в якому-небудь файлі свідчить про його зараження відповідним вірусом. Антивірус, що забезпечує можливість пошуку різних сигнатур, називають полідетектором.
Фаги виконують функції, властиві детекторам, але, крім того, "виліковують" інфіковані програми за допомогою "викушування" вірусів з їх тіл. За аналогією з полідетекторами, фаги, орієнтовані на нейтралізацію різних вірусів, називають поліфагамі.
На відміну від детекторів і фагів, вакцини за своїм принципом дії подібні до вірусів. Вакцина імплантується в програму, що захищається, і запам'ятовує ряд кількісних і структурних характеристик останньої. Якщо вакцинована програма не була до моменту вакцинації інфікованою, то при першому ж після зараження запуску відбудеться наступне. Активізація вірусоносія призведе до отримання управління вірусом, який, виконавши свої цільові функції, передасть управління вакцинованій програмі. У останній, у свою чергу, спочатку управління отримає вакцина, яка виконає перевірку відповідності характеристик, які вона запам'ятала, аналогічним характеристикам, отриманим на поточний момент. Якщо вказані набори характеристик не співпадають, то робиться висновок про зміну тексту вакцинованої програми вірусом. Характеристиками, використовуваними вакцинами, можуть бути довжина програми, її контрольна сума тощо.
Принцип дії щеплень заснований на врахуванні тієї обставини, що будь-який вірус, як правило, позначає програми, що інфікуються, якою-небудь ознакою з тим, щоб не виконувати їх повторне зараження. У іншому випадку мало б місце багатократне інфікування, що супроводжується істотним і тому таким, що легко виявляється збільшенням об'єму заражених програм. Щеплення, не вносячи ніяких інших змін в текст програми, що захищається, позначає її тією ж ознакою, що і вірус, який, таким чином, після активізації і перевірки наявності вказаної ознаки, вважає її інфікованою і "залишає у спокої".
Ревізори забезпечують стеження за станом файлової системи, використовуючи для цього підхід, аналогічний реалізованому у вакцинах. Програма-ревізор в процесі свого функціонування виконує стосовно кожного виконуваного файлу порівняння його поточних характеристик з аналогічними характеристиками, отриманими при попереднього перегляду файлів. Якщо при цьому виявляється, що, згідно наявної системної інформації, файл з моменту попереднього перегляду не оновлювався користувачем, а порівнювані набори характеристик не співпадають, то файл вважається інфікованим. Характеристики виконуваних файлів, що отримуються в ході чергового перегляду, запам'ятовуються в окремому файлі (файлах), у зв'язку з чим збільшення довжин виконуваних файлів, що має місце при вакцинації, в даному випадку не відбувається. Інша відмінність ревізорів від вакцин полягає в тому, що кожен перегляд виконуваних файлів ревізором вимагає його повторного запуску.
Монітор є резидентною програмою, що забезпечує перехоплення потенційно небезпечних переривань, характерних для вірусів із наступним запрошенням у користувача підтвердження на виконання операцій, наступних за перериванням. У разі заборони або відсутності підтвердження монітор блокує виконання програми користувача.
Антивіруси розглянутих типів істотно підвищують вірусозахищеність окремих ЕОМ і обчислювальних мереж в цілому, проте, у зв'язку з властивими їм обмеженнями, природно, не є панацеєю. У роботі приведені основні недоліки при використанні антивірусів.
У зв'язку з цим необхідна реалізація альтернативних підходів до нейтралізації вірусів: створення операційних систем, що володіють високою вірусозахищенністю в порівнянні з відомими, розробка апаратних засобів захисту від вірусів і дотримання технології захисту від вірусів.
2.1.3. Класифікація методів захисту від комп'ютерних вірусів
Проблему захисту від вірусів необхідно розглядати в загальному контексті проблеми захисту інформації від несанкціонованого доступу і технологічної і експлуатаційної безпеки ПЗ в цілому. Основний принцип, який повинен бути покладений в основу розробки технології захисту від вірусів, полягає в створенні багаторівневої розподіленої системи захисту, що включає:
регламентацію проведення робіт на ПЕОМ;
застосування програмних засобів;
використання спеціальних апаратних засобів.
При цьому кількість рівнів захисту залежить від цінності інформації, яка обробляється на ПЕОМ. Для захисту від комп'ютерних вірусів в даний час використовуються наступні методи.
Архівація. Полягає в копіюванні системних областей магнітних дисків і щоденному веденні архівів змінених файлів. Архівація є одним з основних методів захисту від вірусів. Решта методів захисту доповнює його, але не може замінити повністю.
Вхідний контроль. Перевірка всіх програм, що поступають, детекторами, а також перевірка довжин і контрольних сум програм, що поступають, на відповідність значенням, вказаним в документації. Більшість відомих файлових і бутових вірусів можна виявити на етапі вхідного контролю. Для цієї мети використовується батарея (декілька програм, що послідовно запускаються) детекторів. Набір детекторів достатньо широкий, і постійно поповнюється у міру появи нових вірусів. Проте при цьому можуть бути виявлені не всі віруси, а тільки розпізнавані детектором. Наступним елементом вхідного контролю є контекстний пошук у файлах слів і повідомлень, які можуть належати вірусу (наприклад, Virus, COMMAND.COM, Kill і т.д.). Підозрілою є відсутність в останніх 2-3 кілобайтах файлу текстових рядків - це може бути ознакою вірусу, який шифрує своє тіло.
Розглянутий контроль може бути виконаний за допомогою спеціальної програми, яка працює з базою даних "підозрілих" слів і повідомлень, і формує список файлів для подальшого аналізу. Після проведеного аналізу нові програми рекомендується декілька днів експлуатувати в карантинному режимі. При цьому доцільно використовувати прискорення календаря, тобто змінювати поточну дату при повторних запусках програми. Це дозволяє виявити віруси, що спрацьовують в певні дні тижня (п'ятниця, 13 число місяця, неділя і т.д.).
Профілактика. Для профілактики зараження необхідно організувати роздільне зберігання (на різних магнітних чи інших носіях) як програм, що надходять вперше так і програм,що експлуатувалися раніше, мінімізацію періодів доступності дискет для запису та мінімізацію розділення загальних магнітних носіїв між конкретними користувачами.
Ревізія. Аналіз знов отриманих програм спеціальними засобами (детекторами), контроль цілісності перед прочитуванням інформації, а також періодичний контроль стану системних файлів.
Карантин. Кожна нова програма перевіряється на відомі типи вірусів протягом певного проміжку часу. Для цих цілей доцільно виділити спеціальну ПЕОМ, на якій не проводяться інші роботи. У разі неможливості виділення ПЕОМ для карантину програмного забезпечення, для цієї мети використовується машина, що відключена від локальної мережі і не містить особливо цінної інформації.
Сегментація. Полягає у розбитті магнітного диска на ряд логічних томів (розділів), частина з яких має статус READ_ONLY (тільки читання). У даних розділах зберігаються виконувані програми і системні файли. Бази даних повинні зберігається в інших розділах, окремо від виконуваних програм. Важливим профілактичним засобом в боротьбі з файловими вірусами є виключення значної частини завантажувальних модулів з сфери їх досяжності. Цей метод називається сегментацією і заснований на розділенні магнітного диска (вінчестера) на окремі логічні томи, що мають атрибут READ_ONLY (тільки читання), а також на схемах парольного доступу. При цьому в захищені від запису розділи диска поміщаються виконувані програми і системні утиліти, а також системи управління базами даних і транслятори, тобто компоненти ПЗ, найбільш схильні до небезпеки зараження. Кількість логічних томів і їх розміри залежать від вирішуваних задач і об'єму вінчестера. Рекомендується використовувати 3 - 4 логічних томи, причому на системному диску, з якого виконується завантаження, слід залишити мінімальну кількість файлів (наприклад, системні файли, програми-пастки).
Фільтрація. Полягає у використанні програм-сторожів, для виявлення спроб виконати несанкціоновані дії.
Вакцинація. Спеціальна обробка файлів і дисків, що імітує поєднання умов, які використовуються деяким типом вірусу для визначення, заражена вже програма чи ні.
Автоконтроль цілісності. Полягає у використанні спеціальних алгоритмів, що дозволяють після запуску програми визначити, чи були внесені зміни в її файли.
Терапія. Передбачає дезактивацію конкретного вірусу в заражених програмах спеціальними програмами (фагами). Програми фаги "викушують" вірус із зараженої програми і намагаються відновити її код в початковий стан (стан до моменту зараження).
У загальному випадку технологічна схема захисту може складатися з наступних етапів:
вхідний контроль нових програм;
сегментація інформації на магнітному носії;
захист операційної системи від зараження;
систематичний контроль цілісності інформації.
Необхідно відзначити, що не слід прагнути забезпечити глобальний захист всіх файлів, що є на диску. Це істотно утруднює роботу, знижує продуктивність системи і, кінець кінцем, погіршує захист внаслідок частої роботи у відкритому режимі. Аналіз показує, що тільки 20-30% файлів повинні бути захищені від запису.
Аналіз розглянутих методів і засобів захисту показує, що ефективний захист може бути забезпечений при комплексному використанні різних засобів в рамках єдиного операційного середовища. Для цього необхідно розробити інтегрований програмний комплекс, що підтримує розглянуту технологію захисту.
2.2. МЕТОДИ ЗАХИСТУ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ ВІД ВПРОВАДЖЕННЯ НА ЕТАПІ ЙОГО ЕКСПЛУАТАЦІЇ І СУПРОВОДУ ПРОГРАМНИХ ЗАКЛАДОК
2.2.1. Класифікація засобів дослідження програм
У цьому підрозділі ми виходитимемо з припущення, що на етапі розробки програмна закладка була виявлена і усунена, або її взагалі не було. Для того, щоб привнести програмні закладки в цьому випадку необхідно узяти готовий виконуваний модуль, дизасемблювати його і після внесення закладки піддати повторній компіляції. Інший спосіб полягає в незаконному отриманні текстів початкових програм, їх аналізі, внесенні програмних дефектів і подальшій заміні оригінальних програм на програми з придбаними закладками. І, нарешті, може здійснюватися повна заміна прикладної виконуваної програми на виконувану програму порушника, що втім, вимагає від останнього необхідність мати точні і повні знання цільового призначення і кінцевих результатів прикладної програми.
Всі засоби дослідження ПЗ можна розбити на 2 класи: статичні і динамічні. Перші оперують початковим кодом програми як даними і будують її алгоритм без виконання, другі ж вивчають програму, інтерпретуючи її в реальному або віртуальному обчислювальному середовищі. Звідси витікає, що перші є більш універсальними в тому сенсі, що теоретично можуть отримати алгоритм всієї програми, у тому числі і тих блоків, які ніколи не отримають управління. Динамічні засоби можуть будувати алгоритм програми тільки на підставі конкретної її траси, отриманої при певних вхідних даних. Тому завдання отримання повного алгоритму програми в цьому випадку еквівалентне побудові вичерпного набору тестів для підтвердження правильності програми, що практично неможливо, і взагалі, при динамічному дослідженні можна говорити тільки про побудову деякої частини алгоритму.
Два найбільш відомих типа програм, призначених для дослідження ПЗ, якраз і відносяться до різних класів: це відлагоджувач (динамічний засіб) і дизасемблер (засіб статистичного дослідження). Якщо перший широко застосовується користувачем для відлагодження власних програм і задачі побудови алгоритму для нього вторинні і реалізуються самим користувачем, то другий призначений виключно для їх вирішення і формує на виході асемблерний текст алгоритму.
Крім цих двох основних інструментів дослідження, можна використовувати:
"дизкомпілятори" ("декомпілятори"), програми, що генерують з виконуваного коду програму на мові високого рівня;
"трасувальники", що спочатку запам'ятовують кожну інструкцію, що проходить через процесор, а потім переводять набір інструкцій у форму, зручну для статичного дослідження, автоматично виділяючи цикли, підпрограми і т.п.;
"слідкуючі системи", що запам'ятовують і аналізують трасу вже не інструкцій, а інших характеристик, наприклад, викликаних програмою переривань.
2.2.2. Методи захисту програм від дослідження
Для захисту програми від дослідження необхідно застосовувати методи захисту від дослідження файлу з її виконуваним кодом, що зберігається на зовнішньому носієві, а також методи захисту виконуваного коду, що завантажується в оперативну пам'ять для виконання цієї програми.
У першому випадку захист може бути заснований на шифруванні секретної частини програми, а в другому - на блокуванні доступу до виконуваного коду програми в оперативній пам'яті з боку відладчиків. Крім того, перед завершенням роботи програми, що захищається, повинен знищуватися (наприклад, обнулятися) весь її код в оперативній пам'яті. Це запобігає можливості несанкціонованого копіювання з оперативної пам'яті дешифрованого виконуваного коду після виконання програми, що захищається.
Таким чином, програма, що захищається від дослідження, повинна включати наступні компоненти:
ініціалізатор;
зашифровану секретну частину;
деструктор (деініціализатор).
Ініціалізатор повинен забезпечувати виконання наступних функцій:
збереження параметрів операційного середовища функціонування (векторів переривань, вмісту регістрів процесора і т.д.);
заборона всіх внутрішніх і зовнішніх переривань, обробка яких не може бути запротокольована в програмі, що захищається;
завантаження в оперативну пам'ять і дешифрування коду секретної частини програми;
передача управління секретній частині програми.
Секретна частина програми призначена для виконання основних цільових функцій програми і захищається шифруванням для попередження внесення до неї програмної закладки.
Деструктор після виконання секретної частини програми повинен виконати наступні дії:
обнулення секретного коду програми в оперативній пам'яті;
відновлення параметрів операційної системи (векторів переривань, вмісту регістрів процесора і т.д.), які були встановлені до заборони неконтрольованих переривань;
виконання операцій, які неможливо було виконати при забороні неконтрольованих переривань;
звільнення всіх незадіяних ресурсів комп'ютера і завершення роботи програми;
Для більшої надійності ініціалізатор може бути частково зашифрований і у міру виконання може дешифрувати сам себе. Дешифруватися у міру виконання може і секретна частина програми. Таке дешифрування називається динамічним дешифруванням виконуваного коду. В цьому випадку чергові ділянки програм перед безпосереднім виконанням розшифровуються, а після виконання відразу знищуються.
Для підвищення ефективності захисту програм від дослідження необхідне внесення до програми додаткових функцій безпеки, направлених на захист від трасування. До таких функцій можна віднести:
періодичний підрахунок контрольної суми області оперативної пам'яті, яка зайнята початковим кодом, що захищається; порівняння поточної контрольної суми із заздалегідь сформованою еталонною і вживання необхідних заходів у разі неспівпадання;
перевірку кількості займаною програмою оперативної пам'яті, що захищається; порівняння з об'ємом, до якого програма адаптована, і вживання необхідних заходів у разі невідповідності;
контроль часу виконання окремих частин програми;
блокування клавіатури на час відпрацювання особливо секретних алгоритмів.
Для захисту програм від дослідження за допомогою дизасемблерів можна використовувати і такий спосіб, як ускладнення структури самої програми з метою заплутування зловмисника, який дизасемблює цю програму. Наприклад, можна використовувати різні сегменти адреси для звернення до однієї і тієї ж області пам'яті. В цьому випадку зловмисникові буде важко здогадатися, що насправді програма працює з однією і тією ж областю пам'яті.
2.2.3. Аналіз програм на етапі їх експлуатації
У даному розділі будуть розглянуті методи пошуку і нейтралізації РПЗ за допомогою дизасемблерів і відлагожувачів на етапі експлуатації програм. Тобто завдання захисту на відміну від завдань захисту в попередньому розділі тут вирішується "з точністю до навпаки".
Основна схема аналізу виконуваного коду, в даному випадку, може виглядати таким чином:
виділення чистого коду, тобто видалення коду, що відповідає за захист цієї програми від несанкціонованого запуску, копіювання і т.п. і перетворення решти коду в стандартний, що правильно інтерпретується дизассемблером;
лексичний аналіз;
дизасемблювання;
семантичний аналіз;
перевід в форму, зручну для наступного етапу (в тому числі и переклад на мову високого рівня);
синтаксичний аналіз.
Після зняття захисту здійснюється пошук сигнатур (лексем) РПЗ. Закінчення етапу дизасемблювання передує синтаксичному аналізу, тобто процесу ототожнення лексем, знайдених у вхідному ланцюжку, одній з мовних конструкцій, що задаються граматикою мови, тобто синтаксичний аналіз виконуваного коду програм полягає в ототожненні сигнатур, знайдених на етапі лексичного аналізу, одному з видів РПЗ.
При синтаксичному аналізі можуть зустрітися наступні труднощі:
можуть бути не розпізнані деякі лексеми. Це випливає з того, що макроасемблерні конструкції можуть бути представлені нескінченним числом регулярних асемблерних виразів;
порядок слідування лексем може бути відомим з деякою вірогідністю або взагалі не відомим;
граматика мови може поповнюватися, оскільки можуть виникати нові типи РПЗ або механізми їх роботи.
Таким чином, остаточний висновок про відсутність або наявність РПЗ можна дати тільки на етапі семантичного аналізу, а завдання цього етапу можна конкретизувати як згортку термінальних символів в нетермінали якомога вищого рівня там, де вхідний ланцюжок заданий строго.
Оскільки семантичний аналіз зручніше вести на мові високого рівня далі проводиться етап перекладу асемблерного тексту в текст на мові вищого рівня, наприклад, на спеціалізованій мові макроасемблера, який націлений на виділення макроконструкцій, використовуваних в РПЗ.
На етапі семантичного аналізу дається остаточна відповідь на питання про те, чи містить вхідний виконуваний код РПЗ, і якщо так, то якого типу. При цьому використовується вся інформація, отримана на всіх попередніх етапах. Крім того, необхідно враховувати, що ця інформація може вважатися правильною лише з деякою вірогідністю, причому не виключені взагалі помилкові факти, або висновки дослідників. В цілому, завдання семантичного аналізу є складним і ресурсоємним і скоріше за все не може бути повністю автоматизованим.
2.3. ОСНОВНІ ПІДХОДИ ДО ЗАХИСТУ ПРОГРАМ ВІД НЕСАНКЦІОНОВАНОГО КОПІЮВАННЯ
2.3.1. Основні функції засобів захисту від копіювання
При захисті програм від несанкціонованого копіювання застосовуються методи, які дозволяють привносити в програму, що захищається, функції прив'язки процесу виконання коду програми тільки до тих ЕОМ, на які вони були інстальовані. Інстальована програма для захисту від копіювання при кожному запуску повинна виконувати наступні дії:
аналіз апаратно-програмного середовища комп'ютера, на якому вона запущена, формування на основі цього аналізу поточних характеристик свого середовища виконання;
перевірка достовірності середовища виконання шляхом порівняння його поточних характеристик з еталонними, що зберігаються на вінчестері;
блокування подальшої роботи програми при неспівпадінні поточних характеристик з еталонними.
Етап перевірки достовірності середовища є одним з самих уразливих з погляду захисту. Можна детально не розбиратися з логікою захисту, а трохи "підправити" результат порівняння, і захист буде знятий.
При виконанні процесу перевірки достовірності середовища можливі три варіанти: з використанням множини операторів порівняння того, що є, з тим, що повинно бути, з використанням механізму генерації виконуваних команд залежно від результатів роботи захисного механізму і з використанням арифметичних операцій. При використанні механізму генерації виконуваних команд в першому байті зберігається початкова ключова контрольна сума BIOS, в другий байт записується підрахована контрольна сума в процесі виконання завдання. Потім здійснюється віднімання із значення першого байта значення другого байта, а отриманий результат додається до кожного елементу оперативної пам'яті в області операційної системи. Зрозуміло, що якщо суми не співпадуть, то операційна система функціонувати не буде. При використанні арифметичних операцій здійснюється перетворення над даними арифметичного характеру залежно від результатів роботи захисного механізму.
Для зняття захисту від копіювання застосовують два основні методи: статичний і динамічний.
Статичні методи передбачають аналіз текстів захищених програм в природному або перетвореному вигляді. Динамічні методи передбачають стеження за виконанням програми за допомогою спеціальних засобів зняття захисту від копіювання.
2.3.2. Основні методи захисту від копіювання
Перераховані нижче методи, в основному направлені на протидію статичним способам зняття захисту від копіювання. У наступному підрозділі розглянемо методи протидії динамічним способам зняття захисту.
Криптографічні методи
Для захисту програми, що інсталюється, від копіювання за допомогою криптографічних методів інсталятор програми повинен виконати наступні функції:
аналіз апаратно-програмного середовища комп'ютера, на якому повинна буде виконуватися програма, що інсталюється, і формування на основі цього аналізу еталонних характеристик середовища виконання програми;
запис криптографічно перетворених еталонних характеристик апаратно-програмного середовища комп'ютера на вінчестер.
Перетворені еталонні характеристики апаратно-програмного середовища можуть бути занесені в наступні області жорсткого диска:
у будь-які місця області даних (у створений для цього окремий файл, в окремі кластери, які повинні позначатися потім в FAT як зарезервовані під операційну систему або дефектні);
у зарезервовані сектори системної області вінчестера;
безпосередньо у файли розташування програмної системи, що захищається, наприклад, у файл настроювання її параметрів функціонування.
Можна виділити два основні методи захисту від копіювання з використанням криптографічних прийомів:
з використанням односторонньої функції;
з використанням шифрування.
Одностороння функція це функція, для якої при будь-якому x з області визначення легко обчислити f(x), проте майже для всіх у з її області значень, знайти x, таке, щоби виконувалося y=f(x), обчислювально важко.
Якщо еталонні характеристики програмно-апаратного середовища представити у вигляді аргументу односторонньої функції x, то у - є "образ" цих характеристик, який зберігається на вінчестері і по значенню якого обчислювально неможливо отримати самі характеристики. Прикладом такої односторонньої функції може служити функція дискретного піднесення до степеня, описана в розділах 2.1 і 3.3 з розмірністю операндів не меншого 512 бітів.
При шифруванні еталонні характеристики шифруються по ключу, що збігається з цими поточними характеристиками, а поточні характеристики середовища виконання програми для порівняння з еталонними також шифруються, але по ключу, що збігається з цими поточними характеристиками. Таким чином, при порівнянні еталонні і поточні характеристики знаходяться в зашифрованому вигляді і співпадатимуть тільки в тому випадку, якщо початкові еталонні характеристики співпадають з початковими поточними.
Метод прив'язки до ідентифікатора
У випадку якщо характеристики апаратно-програмного середовища відсутні в явному вигляді або їх визначення значно уповільнює запуск програм або знижує зручність їх використання, то для захисту програм від несанкціонованого копіювання можна використовувати методи прив'язки до ідентифікатора, що формується інсталятором. Суть даного методу полягає в тому, що на вінчестері при інсталяції програми, що захищається від копіювання, формується унікальний ідентифікатор, наявність якого потім перевіряється інстальованою програмою при кожному її запуску. За відсутності або неспівпадінні цього ідентифікатора програма блокує своє подальше виконання.
Основною вимогою до записаного на вінчестер унікального ідентифікатора є вимога, згідно з якою даний ідентифікатор не повинен копіюватися стандартним способом. Для цього ідентифікатор доцільно записувати в наступні області жорсткого диска:
у окремі кластери області даних, які повинні позначатися потім в FAT як зарезервовані під операційну систему або як дефектні;
у зарезервовані сектори системної області вінчестера.
Некопійований стандартним чином ідентифікатор може розташовуватися на дискеті, до якої повинна буде звертатися при кожному своєму запуску програма. Таку дискету називають ключовою. Крім того, програма, що захищається від копіювання, може бути прив'язана і до унікальних характеристик ключової дискети. Слід враховувати, що при використанні ключової дискети значно збільшується незручність для користувача, оскільки він завжди повинен вставляти в дисковод цю дискету перед запуском програми, що захищається від копіювання.
Методи, засновані на робота з переходами і стеком
Дані методи засновані на включення в тіло програми переходів за адресами і перериваннями, що динамічно змінюються, а також команд, що самогенеруються (наприклад, команд, отриманих за допомогою додавання і віднімання). Крім того, замість команди безумовного переходу (JMP) може використовуватися повернення з підпрограми (RET). Заздалегідь в стек записується адреса переходу, який в процесі роботи програми модифікується безпосередньо в стеку.
При роботі із стеком, стек визначається безпосередньо в області виконуваних команд, що приводить до затирання при роботі із стеком. Цей спосіб застосовується, коли не потрібне повторного виконання коду програми. Таким же способом можна генерувати виконувані команди до початку обчислювального процесу.
Маніпуляції з кодом програми
Можна навести два наступні способи маніпуляцій з кодом програми:
включення в тіло програми "порожніх" модулів;
зміна програми, що захищається
Перший спосіб полягає у включенні в тіло програми модулів, на які імітується передача управління, але реально ніколи не здійснюється. Ці модулі містять велику кількість команд, що не мають ніякого відношення до логіки роботи програми. Але "непотрібність" цих програм не повинна бути очевидна потенційному зловмисникові.
Другий спосіб полягає в зміні початку програми, що захищається, так, щоб стандартний дизасемблер не зміг її правильно дизасемблювати. Наприклад, такі програми, як Nota і Copylock, упроваджуючи захисний механізм у файл, що захищається, повністю модифікують початковий заголовок EXE-файлу.
2.3.3. Методи протидії динамічним способам зняття захисту програм від копіювання
Набір методів протидії динамічним способам зняття захисту програм від копіювання включає:
Періодичний підрахунок контрольної суми області оперативної пам'яті, яка зайнята образом завдання, в процесі його виконання. Це дозволяє:
помітити зміни, внесені до завантажувального модуля;
у випадку, якщо програму намагаються "роздягнути", виявити контрольні точки, встановлені відлагоджувачем.
Перевірка кількості вільної пам'яті і порівняння ії з тим об'ємом, до якого завдання "звикло" або "привчене". Ці дії дозволяють застрахуватися від дуже грубого стеження за програмою за допомогою резидентних модулів.
Перевірка вмісту незадіяних для програми, що захищається, областей пам'яті, які не потрапляють під загальний розподіл оперативної пам'яті, доступної для програміста. Це дозволяє добитися "монопольного" режиму роботи програми.
Перевірка вмісту векторів переривань (особливо 13h і 21h) на наявність тих значень, до яких завдання "привчене". Іноді буває корисним порівняння перших команд операційної системи, що відпрацьовуються цими перериваннями, з тими командами, які там повинні бути. Разом з попереднім очищенням оперативної пам'яті перевірка векторів переривань і їх примусове відновлення дозволяє позбавитися від більшості присутніх в пам'яті резидентних програм.
Переустановлення векторів переривань. Вміст деяких векторів переривань (наприклад, 13h і 21h) копіюється в область вільних векторів. Відповідно змінюються і звернення до переривань. При цьому стеження за відомими векторами не дасть бажаного результату. Наприклад, найпершими виконуваними командами програми копіюється вміст вектора 21h (4 байти) у вектор 60h, а замість команд int 21h в програмі скрізь записується команда int 60h. В результаті в явному вигляді в тексті програми немає жодної команди роботи з перериванням 21h.
Постійне чергування команд дозволу і заборони переривання, що утрудняє установку відлагоджувачем контрольних точок.
Контроль часу виконання окремих частин програми, що дозволяє виявити призупинення роботи ("останови") в тілі виконуваного модуля.
Багато перерахованих захисних засобів можуть бути реалізовані виключно мовою Асемблер. Одна з основних особливостей цієї мови полягає в тому, що для неї не існує обмежень в області роботи із стеком, регістрами, пам'яттю, портами введення/виведення і т.п.
Захист мобільних програм
Історія виникнення мобільних вірусів  У червні 2000 р. в Іспанії з'явилася програма, яку можна вважати першим вірусом для мобільних телефонів. Вірус отримав ім'я «Timofonica» (приставка «timo» в перекладі на російську мову означає «шахрайство», «обдурювання»), що по звучанню дуже нагадувало назву найбільшого піренейського телекомунікаційного гіганта Telefonica. Вірус посилав із заражених ПК SMS-повідомлення на телефони місцевого оператора MoviStar, що надає послуги в стандарті GSM. Ці повідомлення містили всього один рядок на іспанською мовою: «Інформація для вас: Telefonica вас надуває!». Російських користувачів мобільників Timofonica не торкнулася. Якщо бути точним, назвати Timofonica мобільним вірусом не можна, адже він базувався на ПК і розповсюджувався по електронній пошті. Більше ніякої дії на мобільні телефони він не чинив. У серпні 2000 р. сполошилися абоненти японського оператора NTT DoCoMo. Причина крилася в дивну поведінку їх мобільних телефонів, оснащених підтримкою сервісу «i-mode» (швидкий доступ до розважальних ресурсів Глобальної мережі). У момент, коли відбувалося одне з типових online-голосувань за допомогою wap-сервісу, при відповіді на одне з питань, трубки всіх власників, які беруть участь у вікторині, почали телефонувати на місцевий телефон поліції, що призвело до суттєвої перевантаження мережі. Всього було зареєстровано більше 400 порожніх дзвінків. У ході розслідування одного інциденту з'ясувалося, що в усі телефони абонентів NTT DoCoMo, що підтримують «i-mode», оператором був вшитий «баг», що дозволяє несанкціонований доступ до апарата. З'ясувати, для чого були здійснені дзвінки саме на номер поліції, так і не вдалося. Випадок з часом був забутий .
Наприкінці 2003 р. в інтерв'ю одному інтернет-журналу Євген Касперський заявив: «Ні вірусів для мобільників і навряд чи з'являться. Звичайним мобільних телефонів шкідливі програми ніколи не загрожували і навряд чи будуть загрожувати в майбутньому. Java - добре захищене середовище, абсолютно безперспективна з точки зору тих що здійснюють написання вірусів. Дрібні огріхи оперативно латаються, і приводів для занепокоєння немає. Те, що ми помилково називаємо «телефонними вірусами», насправді являє собою наслідки некоректною обробки певних команд. Дійсно, можна згадати «вбивцю Сіменс», від якого постраждав не один десяток користувачів трубок 35-ї серії: при спробі відкрити SMS-повідомлення з одним хитро оформленим словом телефон безнадійно зависав. Рятувала тільки перестановка SIM-карти в будь-який інший апарат, що дозволяє стерти повідомлення без його відкриття. Зі смартфонами ситуація неоднозначна. Для широкого розповсюдження шкідливого коду потрібно велика популярність певної ОС і одночасно наявність дір у її захисті. Поки набагато небезпечніше завантаження на смартфон зараженого файлу, який згодом може бути перенесений на робочий комп'ютер в обхід антивірусних моніторів і брандмауерів.
14 червня 2004 на адресу електронної пошти «Лабораторії Касперського» надійшов лист від відомого колекціонера комп'ютерних вірусів, тісно пов'язаного з деякими авторами вірусів, іспанця VirusBuster. Лист містив файл з ім'ям caribe.sis. Швидкий аналіз файлу показав, що файл є додатком для операційної системи Symbian і одночасно архівом-інсталятором, що містить в собі інші файли. За кілька годин аналітики змогли розібратися, що це за файл: це був черв'як для мобільних телефонів, розсилає себе через Bluetooth. Висновки повністю підтвердилися на наступний день, коли аналітики протестували працездатність хробака на телефоні Nokia N-Gage, оснащеному операційною системою Symbian. Черв'як був створений людиною, відомим під псевдонімом Vallez. Він проживає у Франції і в той момент входив до складу хакерів групи 29A. Ця група ставила своєю метою створення нових, концептуальних вірусів для нестандартних операційних систем і додатків. Її учасники як би демонстрували антивірусним компаніям та іншим хакерам, що існують нові напрямки атаки. Цього разу метою було створення шкідливої програми для смартфонів. Для розмноження хробака також був обраний нестандартний спосіб. Хробаки зазвичай поширюються по електронній пошті, і логічно було б очікувати від Cabir такого ж шляху розсилки себе. Тим більше, що однією з основних функцій смартфонів є можливість роботи з Інтернетом та електронною поштою. Однак автор хробака обрав інший спосіб - протокол Bluetooth. Це стало другим ключовим моментом ідеї. Вірус Cabir відразу після потрапляння на чий-небудь смартфон починає постійно сканувати ефір з метою пошуку все нових і нових жертв. Крім банального самовідтворення ніякої небезпеки для смартфонів Cabir не несе, окрім збільшення швидкості розряду батареї, внаслідок активного використання технології Bluetooth. При виявленні потенційного «клієнта» заражене пристрій відправляє йому файл caribe.sis об'ємом 15 КБ. Для жертви це виглядає так: на екрані з'являється пропозиція прийняти якесь лист і, якщо користувач дає згоду, на його телефон пересилається файл з вірусом, після чого система запитує дозволу інсталювати програму під назвою «Caribe». Якщо і на це питання слід ствердну відповідь, черв'як встановлюється в систему, для вірності копіюючи себе відразу в кілька директорій. Так було покладено початок мобільному хакерству. Одними з перших звернули увагу на проблему мобільних вірусів фінська компанія F-Secure та «Лабораторія Касперського». За різними підрахунками, на поточний момент відомо близько 300 мобільних вірусів. Називаються й інші цифри - до кількох тисяч. Різночитання в кількості і назвах мобільних вірусів визначаються різними підходами до класифікації у різних антивірусних компаній. Незважаючи на порівняльне достаток мобільних вірусів дійсно небезпечних серед них поки що небагато.
Основні види мобільних вірусів:  черв'яки, що розповсюджуються через специфічні протоколи і сервіси; трояни-вандали, які використовують помилки ОС для установки в систему; трояни, орієнтовані на нанесення фінансового збитку користувачеві.Найбільш небезпечні черв'яки, що здатні викликати дуже швидке зараження великої кількості систем, порушивши працездатність мобільної мережі або перетворивши її на підконтрольну зловмисникові розподілену мережу («зомбі»-мережа).   Короткий список мобільних вірусів:  Cabir - черв'як. Передається через Bluetooth. Розсилає свої копії на всі доступні Bluetooth-з'єднання, через що «смарт» може «гальмувати». Cardtrap - троян. Встановлює на карту пам'яті телефону різні троянські програми для Win32-систем. Comwar - черв'як. Розповсюджується у вигляді MMS, став найпоширенішим шкідливим кодом у MMS-трафіку. Flexispy - перший повнофункціональний шпигун, який його творці продавали на своєму сайті за 50 $: встановлює тотальний контроль над смартфоном і відсилає зловмисникові інформацію про здійснені дзвінки та відправлених SMS. Cxover - перший багатоплатформовий вірус. При своєму запуску перевіряє, що це за операційна система. Запущений на ПК шукає доступні через ActiveSync мобільні пристрої. Потім вірус копіює себе через ActiveSync на знайдене пристрій. Потрапивши в телефон (або КПК), вірус потім намагається виконати зворотну процедуру - скопіювати себе на ПК. Крім цього, він може видаляти користувача файли на мобільному пристрої. Mobler.a - багатоплатформовий черв'як, здатний функціонувати на операційних системах Symbian і Windows. Копіює себе з телефону на ПК і назад. WinCE4.Duts. Вражає кишенькові комп'ютери на базі Windows CE. Особливої небезпеки не представляє. Вважається, що його створення було просто доказом можливості існування вірусів для PDA. Trojan-SMS.J2ME.RedBrowser - троян, може заражати практично всі існуючі моделі мобільних телефонів (включаючи звичайні мобільники!). Wesber - троян. Може за допомогою SMS красти гроші з мобільного рахунку абонента. Є другим трояном, здатним функціонувати не тільки на смартфонах, але і практично на будь-яких сучасних мобільних телефонах завдяки тому, що він написаний для платформи Java (J2ME). Worm.SymbOS.StealWar - шпигун Pbstealer і черв'як Comwar. Автор StealWar об'єднав їх в одному модулі, і вийшов черв'як, що має риси обох своїх «батьків» (краде дані адресної книги і розсилає себе через MMS). Metal Gear Solid - маскується під інсталяційний файл гри, після активації шукає і відключає антивірусні програми, після чого стає проблематичним вилікувати телефон. Commwarrior - MMS-хробак. Поширюється через MMS і Bluetooth. Розсилає MMS-повідомлення без відома власника. Швидко «садить» акумулятор. Skulls. Замінює всі стандартні іконки в меню на стилізоване зображення черепа з кістками. Відкрити програми за допомогою іконок стає неможливим. Розповсюджується у вигляді Extreme theme.sis. icons v.1.00. Міняє рідні іконки на «биті». Ozicom. Після установки змінюються іконки, всі написи під ними на івриті. Doomboot-A - маскується під гру DOOM 2. Lasco - впроваджує свій код у всі sis файли, встановлені на «СМАРТ». Його творці взяли за основу Cabir і додали до нього функцію зараження файлів. Поки вважається колекційним вірусом (тобто широко не поширений і не завдає особливої шкоди).   Проблеми захисту від мобільних вірусів Поява в лютому 2006 р. трояна RedBrowser стало неприємним сюрпризом. Вперше об'єктом зараження стали звичайні мобільники, і вважати безпечну платформу J2ME вже було не можна. Нині під загрозою опинилися не тільки смартфони, але і звичайні телефони, що використовують програми, написані на мові JAVA, і які мають доступ в Інтернет. «Під ці параметри підпадають 90% нових моделей мобільників, - вважає провідний вірусний аналітик« Лабораторії Касперського »Олександр Гостєв. - У перспективі це може призвести навіть до серйозних збоїв у роботі стільникових операторів. Якщо такі віруси отримають велике поширення, робота будь-якої компанії, що надає послуги мобільного зв'язку, може бути паралізована протягом 15 хвилин ». Головна проблема в тому, що при прямому підключенні телефону до Інтернету використовувати засоби захисту не можна. І якщо на смартфони можна встановити антивірусні програми, то оперативна пам'ять звичайних мобільних телефонів цього не дозволяє. Вельми сприяє поширенню мобільних вірусів широке застосування Bluetooth і MMS (при недотриманні елементарних правил безпеки). У США був випадок, коли мобільні телефони Nokia 6600 з увімкненим Bluetooth, виставлені у вітрині магазину каліфорнійського міста Санта-Моніка, заразилися вірусом Cabir від мобільників що проходять повз людей.
Мобільні антивіруси Антивірусні компанії вже почали випускати версії своїх програм для захисту смартфонів: Symantec Client Security для смартфонів Nokia, Kaspersky Security для PDA, Kaspersky Anti-Virus для Symbian OS, KAV Mobile («Лабораторія Касперського»), WinMobile, Trend Micro Mobile Security (Trend Micro ), випустили свої версії BitDefender і ESET, McAfee випустила повнофункціональне рішення для операторів і абонентів.   Причини розповсюдження мобільних вірусів:  уразливості програмного забезпечення; низький рівень «мобільною» грамотності; ставлення власників мобільних телефонів до мобільних вірусів, як до проблеми майбутнього; цікавість (а що буде, якщо я запущу цей файл/гру/програму?); недотримання елементарних правил безпеки.   Шляхи проникнення вірусу в телефон:  з іншого телефону через Bluetooth-з'єднання; за допомогою MMS-повідомлення; з ПК (підключення через Bluetooth, USB, WiFi, інфрачервоне ...); через web-або wap-сайти.   Симптоми зараження 1. Поява - після копіювання і встановлення яких-небудь файлів (як правило, «ігор») - всіляких «глюків» і «багів». Наприклад: безпричинно «зависає» телефон, не запускаються які-небудь програми, неможливо відкрити котрусь папку .2. Поява невідомих підозрілих файлів та іконок.3. Мобільник мимовільно відправляє SMS та MMS, швидко спустошуючи рахунок власника.4. Блокуються будь-які функції телефону.   Деструктивні дії мобільних вірусів  непомітна для користувача масове розсилання SMS та MMS; несанкціоновані дзвінки на платні номери; швидке спустошення рахунку абонента (у результаті дзвінків на платні номери і масової розсилки SMS та MMS); знищення даних користувача (телефонна книга, файли і т.д.); викрадення конфіденційної інформації (паролі, номери рахунків і т.д.); блокування функцій телефону (SMS, ігри, камера і т.д.) або апарат в цілому; швидка розрядка акумулятора; розсилка (від імені власника телефону) заражених файлів всіма можливими способами (e-mail, WiFi, Bluetooth і т.д.); при синхронізації телефону з комп'ютером - пересилка на ПК деструктивного коду; можливість віддаленого управління апаратом;     Як захищатися від мобільних вірусів 1. Користуйтеся антивірусами.2. Будьте обережні при встановленні всіляких програм Якщо є можливість, перед копіюванням/установкою чого-небудь на мобільник, перевірте те, що ви збираєтеся копіювати/встановлювати, на стаціонарному ПК антивірусним монітором зі свіжими базами.3. Не встановлюйте на мобільник незнайомий «контент» невідомого походження.4. Не дозволяйте запуск незнайомих програм.5. Завжди тримайте Bluetooth постійно вимкненим, включайте його тільки в разі потреби
6. Якщо вам пересилають по Bluetooth якийсь підозрілий файл, ви завжди можете відхилити його прийом!7. Не завантажуйте файли з Інтернету відразу на мобільник. Завантажте їх спочатку на ПК, перевірте антивірусом, а вже потім встановлюйте в мобільник.   
Захист авторських прав ПЗ на цифрових носіях
Сьогодні існують технології, програмне і апаратне забезпечення, дозволяють порівняно легко і з незначними витратами виробляти копіювання і тиражування оригінальних авторських творів (програм, ігор, цифрових аудіо- і відеофайлів, комп'ютерної графіки, електронних книжок). З огляду економічних факторів, і зневажливого ставлення до Закону масовим тиражем розходяться саме піратські копії. У ситуації за захистом авторських прав законодавчих заходів вочевидь не досить, тому авторам, розробникам і видавцям необхідно уявити про методи у своїх розробок та творів.
Питання застосуванні та виборі методів захисту потрібно розглядати ще на стадії розробки і створення програм чи цифрових творів. Зазвичай засоби захисту використовуються з єдиною метою:
запобігти піратському копіюванню і тиражуванню програм;
забезпечити цілісність програм, тобто запобігти внесення неавторизованих змін;
забезпечувати виконання користувачем умов ліцензійної угоди.
Для захисту програмного забезпечення і баз даних зазвичай застосовуються такі технології:
шифрування даних, аутентифікація користувачів;
захист носіїв (дискети, компакт-диски);
електронні ключі.
Для захисту цифрового контенту застосовуються:
шифрування контенту і інформації;
захист носіїв (дискети, компакт-диски);
маркірування інформації з допомогою цифрового водяного знака, цифрових міток і міток часу;
фізичні апаратні ключі.
Слід зазначити, що надійно захистити інтелектуальну власність може лише комплексне застосування різних технологій захисту в різних етапах поширення та ефективного використання продукту. Оскільки розробка власної технології захисту – справа складна і, краще скористатися готовими комерційними рішеннями чи звернутися по пораду до фахівців, які допоможуть вибрати собі оптимальний за вартістю й надійності варіант захисту вашого продукту.
Шифрування
Шифрування є засноване на криптографічних алгоритмах та способах захисту. Під шифруванням розуміється процес перетворення відкритих даних в послідовність даних, недоступних розуміння, з допомогою деякого алгоритму шифрування.
Методи шифрування застосовуються на вирішення наступних завдань:
забезпечення таємності і конфіденційності переданої інформації задля унеможливлення їх використання;
забезпечення цілісності даних задля унеможливлення їх змін у процесі передачі;
ідентифікація учасників фінансових транзакцій і користувачів електронного контенту;
застосування цифрового електронного підпису на утвердження дійсності джерела інформації;
спільне поширення цифрового контенту та інформації про засоби її використання (цифрових прав)
підтвердження передачі чи надаваних послуг.
Захист носіїв
Захист носіїв здійснюється двома шляхами, які різняться застосовуваними технологіями. Перший спосіб у тому, що у дискеті чи компакт-диску ділянку деякого файлу пошкоджують апаратним способом. У процесі роботи програма перевіряє наявність ушкодженого файлу та його параметри, після чого роблять висновок про легальність копії виконуваної програми.
Другий спосіб ґрунтується на застосуванні однієї з варіантів технології цифрового водяного знаку і використовують у основному задля захисту компакт-дисків. На кожен диск записується деяка унікальна інформація, т.зв. електронний відбиток.
Зазвичай кожен із способів застосовується у комплексі з іншими методами (шифрування, цифрова підпис тощо.), що підвищує ступінь захищеності програмного забезпечення і цифрового контенту.
Електронні ключі
Електронний ключ це пристрій, яке підключається до одного з портів комп'ютера, і є апаратним елементом системи захисту докладання. Електронні ключі можуть працювати у каскадному режимі, тобто одного порту комп'ютера можуть підключатися кілька ключів одночасно.
Цифрові водяні знаки
Цифровий водяний знак містить деяку інформацію, яка додається до цифрового змісту (контенту) і, можливо пізніше буде виявлена чи залучена для пред'явлення прав цього змісту.
Патентний захист програмного забезпечення
Перевага патентного захисту в порівнянні з авторським правом, складається в одному їх найбільш принциповому розходженні. Так якщо авторське право охороняє об’єктивну форму твору, то патентне право охороняє суті тих принципів, які покладені в його основу...
Відповідно до законодавства винаходу надається правова охорона, якщо він є новим, має винахідницький рівень і промислово здатний. Українське законодавство застосовує критерій світової новизни. Це означає, що винахід повинний бути невідомим у світі із загальнодоступних джерел.
Винахід має винахідницький рівень, якщо він для фахівця явно виходить з рівня техніки. Рівень техніки включає будь-які відомості, що стали загальнодоступними у світі до дати пріоритету винаходу. Винахід є промислово застосовним, якщо він може бути використаний в яких-небудь галузях діяльності.
Можна виділити кілька важливих особливостей патентного права на винаходи:— права на запатентовану розробку, обмежені національними рамками відповідної країни. На той самий об’єкт у різних країнах патент може бути виданий різним особам;— права, що випливають із патенту, діють лише певний проміжок часу. Відповідно до законодавства патент на винахід діє в плині 20 років;— на патентовласника покладається обов’язок використати свій патент і сплачувати щорічні мита за його підтримку.
Вартість складання, видачі й підтримки патенту, може бути дуже істотною як для індивідуального патентовласника, так і для малої фірми. Витрати на патент, прямо залежать від кількості країн, у яких він буде охоронятися. Хоча в Правила складання й подання заявки на винахід і заявки на корисну модель сказано, що не визнаються патентоспроможними винаходами алгоритми й програми для обчислювальних машин застосування даного інституту до захисту окремих видів програм й алгоритмів все-таки можливо з деякими застереженнями. З переліку патентоспроможних об’єктів, зазначених у п.2 ст.6 Закону України «Про охорону прав на винаходи і корисні моделі», для цілей охорони програм можна виділити продукт (пристрій) і процес (спосіб). Безсумнівно, програми можуть бути захищені патентом на винахід, якщо вони є частиною патентоспроможного об’єкта — пристрою або способу.
В травні 2003 року внесені зміни в Закон України «Про охорону прав на винаходи і корисні моделі», якими з переліку об’єктів, що не можуть одержати правову охорону, виключені математичні методи, методи організації і управління господарством, методи виконання розумових операції, комп’ютерні програми та ін. Відповідно п.3 ст.6 закону правова охорона не поширюється лише на такі об’єкти технології: сорти рослин і породи тварин; біологічні в своїй основі процеси відтворення рослин та тварин, що не відносяться до небіологічних та мікробіологічних процесів; топографії інтегральних мікросхем; результати художнього конструювання.
Так наприклад, у складі деякого сумісного з комп’ютером пристрою можуть бути запатентовані програми-драйвера [1]. Як спосіб, можливе патентування деяких алгоритмів.
Відповідно до п. 2.3.2. Правил [2], до способів як об’єктів винаходу відносяться процеси виконання дій над матеріальним об’єктом за допомогою матеріальних об’єктів. Хоча на перший погляд здається, що алгоритм, що лежить в основі програми, не підходить під дане визначення це відчуття оманливе. Інформація, якою оперує комп’ютер, являє собою сукупність відповідних електромагнітних сигналів. Матеріальний характер останніх звичайно не викликає сумніву. Як приклад можна привести винахід «Груповий спосіб АБИ (ABBYY) верифікації комп’ютерних кодів з відповідними їм оригіналами [3]«. По своїй суті даний винахід являє собою алгоритм, закладений в основу широко відомої програми розпізнавання тексту ABBYY FineReader. Як відзначає патентний повірений по цій справі проф. Л.Н. Линник, «одним з найважливіших практичних аспектів складання заявки й подальшої взаємодії з експертизою є чітка й детальна система розшифровки й визначення використовуваних позначень, символів й/або термінів [4]». Грамотно сформулювавши всі використовувані у формулі винаходу терміни, можна одержати патент на алгоритм.
Крім охорони програми, як складової частини винаходів, ряд авторів указують на можливість охорони складових частин програмного забезпечення й іншими інститутами промислової власності. Так, на думку Г.В. Віталієва, «зовнішній вигляд упакування, а також зовнішній вигляд і форма носія інформації (наприклад, дискети), якщо вони відповідають умовам патентоспроможності, можуть підлягати охороні промисловим зразком».