Підсистема безпеки W98, Віруси, Security & Hack, статті

Кріс Касперски, 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>

*

*