Підсистема безпеки W98

Кріс Касперски, http://dore.on.ru/kpnc

З кожним днем обсяги і

цінність оброблюваними персональними

комп'ютерами даних безперервно ростуть і одним з

головних критеріїв оцінки тієї чи іншої системи

перш за все є надійність.

Доак і за все в цьому світі

за надійність доводиться платити. У даному

випадку ресурсами системи, зручністю

використання і сумісністю з раніше

випущеним програмним забезпеченням. Для багатьох

користувачів це неприйнятно. Поетом дуже

деякі наважуються встановити WindowsNT на

домашній (і навіть офісний) комп'ютери.

Увтім, з появою на

ринку дешевих і досить високо

продуктивних мікропроцесорів Clerion можна

сподіватися на зміну ситуації, але все ж

сьогодні найбільш поширеною була й

залишається "домашня" система WINDOWS 98.

У відміну від своєї

попередниці WINDWOS 95, остання володіє

значно поліпшеною підсистемою

безпеки. Дивно, але це практично не

афішується фірмою MiroSoft, і більш ніж

поверхнево висвітлюється в документації і MSDN.

Замим головним

досягненням Windows 98 безперечно є нова

архітектура роботи з жорсткими дисками.

Нарешті-то драйвер останніх повністю 32-бітний

і жодним чином не звертається до BIOS. Важко

сказати в яких цілях це було зроблено –

безпеки або продуктивності. За

Мабуть розробниками все ж рухало

останнє, але як би там не було запропоноване ними

рішення помітно знизило вразливість системи

перед завантажувальними і Stealth-вірусами.

Пому? Давайте

розглянемо як функціонували попередні

версії цієї операційної системи:



Прикладна програма --- int 0x21 ---> Операційна сист --- int 0x13 --->

Вірус \ DOS-драйвер.sys --- CALL far ---> BIOS (BASIS I \ O) --- IO 0x170 --->

ЖОРСТКИЙ ДИСК

У дуже

спрощеному вигляді це показано на малюнку. Чи не

дивлячись на те, що дискові драйвера пізніх

версій windows були 32-битими і могли не звертатися до

BIOS-у, сервіс MS-DOS int 0x21 залишався повністю

16-бітовим і звертався до власних драйверам,

які в свою чергу стукали не інакше як у

дисковий сервіс int 0x13.

Т. Е. коли DOS-додаток

скажімо відкривало файл на диску, то викликався

обробник int 0x13, який міг бути перехоплений НЕ

тільки встановленими драйверами (резидентами)

але і в тому числі і вірусами. Тому останні

були активні в будь-якому DOS-вікні протягом усього

сеансу роботи. Перехоплення int 0x13 дозволяв їм

маскувати свою присутність на комп'ютері, якщо

користувач не робив додаткових

заходів.

Уперший вирішення цієї

проблеми було знайдено Євгеном Сусліковим.

Написана ним утиліта відновлювала

оригінальний обробник int 0x13 і не дозволяла його

перехоплювати. Приблизно в той же час KPNC

запропонував більш універсальне рішення – драйвер,

який самостійно обробляв звернення до

жорстким дискам, минаючи BIOS. На 386 + машинах була

можливість "затінити" BIOS прописавши свій код

на місце оригінально.

Нпро жодна з цих

програм не отримала широкого розповсюдження, а

тим часом комп'ютерний світ страждав від OneHalf-а і

багатьох інших не менш підступних вірусів (обидві

перераховані програми легко блокували

останнього). MiroSoft ж мовчала і нічого

крім створення не зазнав популярності MicoSoft

Anti-Virus так і не робила.

Наконец, в Window 98 цей

недолік був усунений. Порівняйте цей малюнок з

колишньою схемою викликів:

 Прикладна програма --- int 0x21 ---> Операційна сист --- int 0x0D --->

Захищений 32-режим --- VxD серв ---> Дисковий 32-драйв --- IO 0x170 --->

Віртуалізт портів I \ O --- IO 0x170 ---> ЖОРСТКИЙ ДИСК

 

Windows 98 навіть у

іронічному плані вже більше не можна назвати

графічної настоянкою над MS-DOS. Сьогодні це вже

самостійна операційна система, а MS-DOS не

більше ніж один з її сервісів. Дискові функції int

0x21 тепер стукати не в власні, а в win32

драйвера.

З одного боку це дає

масу переваг (виграш у швидкості, наприклад),

але і "відсікає" _все_ MS-DOS драйвера для гнучких

і жорстких дисків. Отже 800.com вже

відмовиться функціонувати в новому середовищі, (строго

кажучи він щось не відмовиться, а просто не отримає

управління, але від цього суть справи не змінитися).

Проднако виникли

незручності з лишком компенсуються

несприйнятливістю до Stealth-вірусів, що беруть на

себе обробку int 13h. Вони просто не отримують

управління, і механізм "маскування" не

спрацьовує. Однак, відформатувати диск або

записати "сміття" а FAT вони все ж можуть.

Розробники Windows 98 діяли не самим

узгодженим чином і не закрили додаткам

доступ до BIOS-у.

win98 містить явне

поліпшення - в ній всі порти віртуалізованих, тобто

перехоплюються ядром, які повністю

контролює доступ до апаратури і теоретично

блокує несанкціоновані спроби доступу

(Наприклад форматування диска, запис в нульову

доріжку). На жаль даний код реалізований на

"Зародковому" рівні і реально ніякої

захисту не забезпечує. Більше того,

надає BIOS-у безконтрольний доступ до

апаратурі. Тобто вірус, звернувшись до BIOS може в

обхід всіх систем безпеки що завгодно

зробити з вашим жорстким диском.

Проднако, це не

ставитися до win32 вірусів, які в більшості

випадків не можуть отримати прямого доступу до

апаратурі в обхід підсистеми безпеки. Це

кардинально відрізняється від win95 в яких

прикладні програми могли обійти захист,

оскільки безпосередньо могли звертатися до

обладнання. При цьому вони "бачили"

фізичні порти, не захищені жодним

віртуалізатор.

Может здатися

дивним як прикладні програми могли

отримати доступ до апаратури з третього кільця?

Дійсно в правильно спроектованої

системі це неможливо. На жаль winodws містить

ряд помилок, які до цих пір дозволяють

додатків "спливати" на більш високі

рівні, аж до нульового. Чому MicroSoft, бучі

чудово обізнаною про останніх не

робить ніяких спроб виправити

останні?

З першого погляду

позиція компанії зовсім не зрозуміла, але якщо

замислитися, то стане очевидно, що в widows 9x будь

додаток може цілком легально отримати

необхідний рівень привілеїв, наприклад,

встановивши новий драйвер в системі. До чого ж

тоді користуватися недокументованими

можливостями і помилками операційної системи,

коли є зручні та задокументовані

способи?

Увтім, написання

драйвером під windows вимагає неабиякої кваліфікації

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

зловмисника. Крім того псування жорсткого диска

не найгірше, що може трапитися з

комп'ютером. До недавнього для віруси, що псують

обладнання існували лише в уяві

користувачів, або легендах, які дісталися нам з

тих "античних" часів, коли вимиканням

розгортки можна було пошкодити монітор, а

неправильної паркової зіпсувати жорсткий диск.

Доазалось сьогодні

виробники апаратного забезпечення надійно

захищають його від руйнівного програмного

впливу. До якогось моменту так воно і було,

але черговий виток технічного прогресу

породив ті ж проблеми, що і десятиріччя тому.

ервой ластівкою "

була програмно-перепрограмувальна BIOS (у

просторіччі іменується "флеш-BIOS"). При її

созланіі ніхто не думав про безпеку і навіть не

намагався захистити процес прошивки, скажімо

паролем, більше того, цей процес був максимально

полегшений і добре задокументований.

Уірусопісателі

отримували те, про що раніше не могли і мріяти.

Можливість "залізти" в BIOS і отримувати

управління до завантаження системи. При цьому

грамотно спроектований вірус жодним чином

не міг бути виявлений, а тим більше видалений з

системи. Втім, все ж таки це можливо тільки

теоретично - надто відрізняються між собою

чіпсети різних виробників (а кожен день

з'являються все нові). Ніякої вірус не зміг би

підтримувати хоча б основні конфігурації, без

ризику вступити в конфлікт з обладнанням,

призводить до непрацездатності всього

комп'ютера.

Поетому вирусописатели

на деякий час забули про "флеш" поки одному з них

не прийшла в голову несподівана думка просто

знищити вміст BIOS. При цьому комп'ютер

відмовиться завантажуватися і єдине, що можна

буде зробити - замінити флеш-мікросхему, а то й

всю матерінсую плату, якщо остання жорстко

припаяна до неї.

Доонечно,

"Нормальна" операційна система не повинна

надавати доступу до обладнання.

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


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

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

Ваш отзыв

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

*

*