Перехоплювачі паролів користувачів операційних систем, Різне, Security & Hack, статті

Проскурін В.Г.

Введення

Завдання захисту інформації,

збереженої в комп’ютерних системах, від

несанкціонованого доступу (НСД), є

вельми актуальною. Для вирішення цього завдання

використовується цілий комплекс засобів, що включає

в себе технічні, програмно-апаратні

засоби і адміністративні заходи захисту

інформації.

У міру розвитку засобів

захисту комп’ютерних систем розвиваються і

засоби нападу. Зловмисники-хакери

винаходять все нові і нові атаки на різні

елементи підсистем захисту комп’ютерних систем.

Однією з найбільш небезпечних є атака

захищеної системи за допомогою програмних

закладок. Програмна закладка – Це

програма або фрагмент програми, таємно

впроваджуваний в захищену систему і дозволяє

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

Надалі НСД до тих чи інших ресурсів

захищеної системи.

Основна небезпека

програмних закладок полягає в тому, що,

програмна закладка, будучи частиною захищеної

системи, здатна приймати активні заходи по

маскування своєї присутності в системі. При

впровадженні в систему закладки в захищеній

системі створюється прихований канал інформаційного

обміну, який, як правило, залишається

непоміченим для адміністраторів системи в

протягом тривалого часу. Практично всі

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

різний час різними зловмисниками, були

виявлені або із-за помилок, допущених при

програмуванні закладки, або чисто випадково.

У пропонованій роботі

розглядається один з найбільш

поширених класів програмних закладок –

закладки, що перехоплюють паролі користувачів

операційних систем (перехоплювачі паролів).

Перехоплювачі паролів були розроблені в різний

час для цілого ряду операційних систем,

включаючи OS/370, MS-DOS і багато версій Windows і UNIX.

Перехоплювач паролів, впроваджений в операційну

систему, тим або іншим способом отримує доступ до

паролів, що вводиться користувачами при вході в

систему. Перехопивши черговий пароль, закладка

записує його в спеціальний файл або в будь-

інше місце, доступне зловмисникові,

впровадила закладку в систему.

Дана стаття присвячена

класифікації перехоплювачів паролів, опису

архітектури типових перехоплювачів паролів, а

також методів захисту від них.

Перехоплювачі паролів

першого роду

Перехоплювачі паролів перша

роду діють за наступним алгоритмом.

Зловмисник запускає програму, яка

імітує запрошення

користувачеві для входу в

систему і чекає введення. Коли користувач вводить

ім’я та пароль, закладка зберігає їх у доступному

зловмисникові місці, після чого завершує

роботу і здійснює вихід із системи

користувача-зловмисника (у більшості

операційних систем вихід користувача з

системи можна здійснити програмно). За

закінчення роботи закладки на екрані з’являється

справжнє запрошення для входу користувача в

систему.

Користувач, що став жертвою

закладки, бачить, що він не увійшов в систему, і що

йому знову пропонується ввести ім’я та пароль.

Користувач припускає, що при введенні пароля

сталася помилка, і вводить ім’я та пароль повторно.

Після цього користувач входить в систему, і

подальша його робота протікає нормально.

Деякі закладки, що функціонують з даної

схемою, перед завершенням роботи видають на екран

правдоподібне повідомлення про помилку, наприклад:

“Пароль введений неправильно. Спробуйте ще

раз “.

Основною перевагою цього

класу перехоплювачів паролів є те, що

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

вимагає від зловмисника ніякої спеціальної

кваліфікації. Будь-який користувач, що вміє

програмувати хоча б на мові BASIC, може

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

Єдина проблема, яка може тут

виникнути, полягає в програмній

реалізації виходу користувача з системи.

Проте відповідний системний виклик

документований для всіх багатокористувацьких

операційних систем, відомих автору. Якщо

зловмисник не полінується уважно вивчити

документацію по операційній системі, то він

вирішить дану проблему дуже швидко.

Перехоплювачі паролів

першого роду представляють найбільшу небезпеку

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

запрошення користувачеві на вхід має дуже

простий вигляд. Наприклад, у більшості версій ОС UNIX

це запрошення виглядає наступним чином:

login: user

password:

Завдання створення програми,

підроблюють таке запрошення, тривіальна.

Захист від перехоплювачів

паролів першого роду

Ускладнення зовнішнього вигляду

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

ускладнює вирішення завдання перехоплення паролів,

однак не створює для зловмисника ніяких

принципових труднощів. Для того, щоб

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

перехоплювачів паролів першого роду, необхідні

складніші заходи захисту. Прикладом операційної

системи, де такі заходи реалізовані, є

Windows NT.

У Windows NT звичайна робота

користувача та аутентифікація користувача при

вході в систему здійснюються на різних робочих

полях (Desktops). Робоче поле Windows NT представляє

собою сукупність вікон, одночасно видимих ​​на

екрані. Тільки процеси, вікна яких

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

взаємодіяти між собою, використовуючи

засоби Windows GUI. Поняття робочого поля Windows NT

близьке до поняття терміналу UNIX.

Процес Winlogon, який отримує від

користувача ім’я та пароль, виконується на

окремому робочому полі (робочому полі

аутентифікації). Ніякий інший процес, в тому

числі і перехоплювач паролів, не має доступу до

цього робочому полю. Тому запрошення

користувачеві на вхід в систему, виведене

перехоплювачем паролів першого роду, може

розташовуватися тільки на робочому полі прикладних

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

запущені користувачем.

Перемикання екрану

комп’ютера з одного робочого поля на інше

проводиться при натисканні комбінації клавіш

Ctrl-Alt-Del. Win32-підсистема Windows NT обробляє цю

комбінацію по-особливому – повідомлення про натискання

Ctrl-Alt-Del надсилається тільки процесу Winlogon. Для всіх

інших процесів, зокрема, для всіх

прикладних програм, запущених користувачем,

натискання цієї комбінації клавіш абсолютно

непомітно.

При старті системи на екран

комп’ютера спочатку відображається робоче поле

аутентифікації. Проте користувач вводить ім’я та

пароль не відразу, а тільки після натискання Ctrl-Alt-Del.

Коли користувач завершує сеанс роботи з

системою, на екран також виводиться робоче поле

аутентифікації, і, так само як і в попередньому

випадку, новий користувач може ввести пароль

для входу в систему тільки після натискання Ctrl-Alt-Del.

Якщо в систему впроваджено

перехоплювач паролів першого роду, то, для того,

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

він повинен принаймні обробити натискання

користувачем Ctrl-Alt-Del. В іншому випадку при

натисканні користувачем цієї комбінації клавіш

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

аутентифікації, робоче поле прикладних

програм стане неактивним, і перехоплювач

паролів просто не зможе нічого перехопити –

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

приходити на інше робоче поле. Однак для всіх

прикладних програм факт натиснення користувачем

Ctrl-Alt-Del завжди залишається непоміченим. Тому

пароль буде сприйнятий не програмної закладкою,

а процесом Winlogon.

Звичайно, перехоплювач паролів

може імітувати не перше запрошення

операційної системи, де користувачеві

пропонується натиснути Ctrl-Alt-Del, а то запрошення,

яке висвічується після натискання

користувачем цієї комбінації. Однак у звичайних

умовах (за відсутності програмної закладки)

це друге запрошення автоматично скасовується

через досить короткий час (від 30 секунд до 1

хвилини, залежить від версії Windows NT). Якщо друге

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

довгий час, цей факт повинен насторожити

користувача. Крім того, як показує досвід,

користувачі, довгий час працюють з Windows NT,

набувають звичку починати роботу з системою

з натискання Ctrl-Alt-Del незалежно від того, що

відображається на екрані.

Захист Windows NT від

перехоплювачів паролів першого роду вельми

надійна. Мабуть, при розробці заходів захисту

операційної системи від перехоплювачів паролів

першого роду слід орієнтуватися на

механізм, подібний вищеописаному. Слід

звернути особливу увагу на наступні два

умови, виконання яких є обов’язковим для

забезпечення надійного захисту від перехоплювачів

паролів першого роду:

  1. Програма, яка отримує від

    користувача ім’я та пароль при вході в систему,

    виконується на ізольованому терміналі (терміналі

    аутентифікації), Недоступному прикладним

    програмам.

  2. Факт перемикання

    користувальницької консолі на термінал

    аутентифікації непомітний прикладним програмам.

    Прикладні програми не можуть заборонити

    перемикання консолі на термінал

    аутентифікації.

Якщо операційна система не

підтримує ці можливості (а жодна

операційна система, відома автору, крім

Windows NT, ці можливості не підтримує),

захищеність системи від перехоплювачів паролів

першого роду можна підвищити адміністративними

заходами. Кожен користувач системи повинен бути

проінструктований, що якщо він кілька разів

поспіль не може увійти в систему з першого разу, він

повинен звернутися до адміністратора.

Перехоплювачі паролів

другого роду

Перехоплювачі паролів друга

роду перехоплюють усі дані, що вводяться

користувачем з клавіатури. Найпростіші

програмні закладки даного типу просто

скидають всі ці дані на жорсткий диск

комп’ютера або в будь-яке інше місце, доступне

зловмисникові. Більш досконалі закладки

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

інформацію, що свідомо не має відношення до

паролів. Кілька подібних закладок були в

різний час написані для операційної системи

MS-DOS, деякі з них використовувалися на практиці,

причому вельми ефективно. Одна з таких закладок

і приклад її ефективного використання описані в

[6].

Ці закладки представляють

собою резидентні програми, що перехоплюють

одне або декілька переривань процесора,

мають відношення до роботи з клавіатурою.

Інформація про самій клавіші і введеному

символі, яка повертається цими перериваннями,

використовується закладками для своїх цілей.

В кінці 1997 року на хакерських

серверах Internet з’явилися перехоплювачі паролів

другого роду для Windows 3.x і Windows 95. Приклади їх

використання зловмисниками для

здійснення НСД поки не зустрічалися на

практиці. У телеконференціях Internet (newsgroups)

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

Windows 95 перехоплювачами паролів другого роду.

Однак ця інформація жодного разу не підтверджувалася.

Створення подібних

програмних закладок не пов’язано зі

значними труднощами. Програмні

інтерфейси Win16 і Win32 підтримують спеціальний

механізм фільтрів (hooks), який може бути

використаний для перехоплення паролів

користувачів. За допомогою цього механізму

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

система вирішують цілий ряд завдань, у тому числі і

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

клавіатури. Будь русифікатор клавіатури,

працює в середовищі Windows, перехоплює всю

інформацію, що вводиться користувачем з клавіатури,

в тому числі і паролі. Нескладно написати

русифікатор так, щоб він, крім своїх основних

функцій, виконував би функції і перехоплювача

паролів. Написання програми локалізації

клавіатури є досить простим завданням.

У багатьох довідниках та підручниках з

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

деяких виданнях, наприклад в [5], наведено

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

клавіатури. Більше того, Windows підтримує ланцюжка

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

можуть одночасно отримувати доступ до інформації,

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

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

оброблену інформацію далі по ланцюжку. Можна

вбудувати перехоплювач паролів в ланцюжок фільтрів

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

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

проходить і через русифікатор, і через

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

написання програмної закладки, перехоплює

паролі користувачів Windows, стає настільки

простий, що практично не вимагає від автора

закладки спеціальної кваліфікації.

Взагалі, в більшості випадків

вірно наступне твердження. Якщо операційна

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

клавіатури при введенні пароля, то для цієї

операційної системи можна написати перехоплювач

паролів другого роду. Дійсно, якщо для

операційної системи існує програма

локалізації розкладки клавіатури, і якщо ця

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

незначної зміни вихідного тексту ця

програма перетворюється на перехоплювач паролів

другого роду. Якщо ця програма написана на

мовою C, в простому випадку досить додати

в програму чотири оператори приблизно

такого вигляду:

StoreFile = fopen (FileName, "a+b");

fseek (StoreFile, 0, SEEK_END);

fputc (NewSymbol, StoreFile);

fclose (StoreFile);

Для деяких операційних

систем можна обійтися трьома операторами.

Захист від перехоплювачів

паролів другого роду

Для організації

захисту від перехоплювачів паролів другого роду

необхідно домогтися виконання в операційній

системі наступних трьох умов:

  1. Перемикання розкладки

    клавіатури в процесі введення пароля неможливо. В

    Інакше завдання створення перехоплювача

    паролів другого роду істотно спрощується.

  2. Конфігурування ланцюжка

    програмних модулів, що беруть участь в отриманні

    операційною системою пароля користувача,

    доступно тільки адміністраторам системи.

  3. Доступ на запис до файлів

    цих програмних модулів надається тільки

    адміністраторам системи.

Для підвищення

стійкості системи захисту до помилок

адміністраторів можна сформулювати останнє

умова наступним чином:

  1. Доступ на запис до файлів

    програмних модулів, що беруть участь в отриманні

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

    Доступ на запис до атрибутів захисту цих файлів

    надається тільки адміністраторам. Будь-які

    поводження з метою запису до цих файлів, а також до

    їх атрибутам захисту, реєструються в системному

    журналі аудиту.

Якщо в системі виконується

третя умова у другій формулюванні,

адміністрування операційної системи в частині

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

і зміна розкладок клавіатури), кілька

ускладнюється.

Для того, щоб перераховані

умови виконувалися, необхідно, щоб

підсистема захисту операційної системи

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

Для більшості сучасних

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

можуть бути забезпечені організаційними заходами.

Перша умова в неросійськомовних версіях

операційних систем зазвичай виконується

автоматично. Для більшості російськомовних

версій операційних систем (зокрема, для

російської версії Windows NT 4.0) домогтися виконання

цієї умови неможливо – можливість створювати

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

програмне забезпечення операційних систем. Під

всіх англомовних версіях Windows NT і всіх відомих

автору версіях UNIX можливе створення і

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

виконуються всі три перераховані умови.

Якщо забезпечити виконання

першої умови в даній операційній системі

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

третьої умови. Виконання цих умов

значно підвищує захищеність системи від

перехоплювачів паролів другого роду.

Перехоплювачі паролів

третього роду

До перехоплювачам паролів третя

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

повністю або частково підміняють собою

підсистему аутентифікації операційної системи.

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

закладки набагато складніше, ніж завдання створення

перехоплювача паролів першого або другого роду,

цей клас програмних закладок з’явився зовсім

недавно. Автору досі невідомо ні однієї

програмної закладки даного класу. Існують

два демонстраційні версії перехоплювачів

паролів третього роду (обидві для Windows NT), одна з

яких написана автором. Випадки застосування

зловмисниками перехоплювачів паролів

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

Перехоплювач пароль третім

роду може бути написаний для будь

багатокористувацької операційної системи.

Складність створення такого перехоплювача паролів

залежить від складності алгоритмів, реалізованих

підсистемою аутентифікації, складності

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

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

аутентифікації операційної системи. В цілому

завдання створення перехоплювача пароль третім

роду набагато складніше завдання створення

перехоплювача паролів першого або другого роду.

Мабуть, цим і пояснюється невелика кількість

програмних закладок даного класу. Однак, в

зв’язку з усе більш широким поширенням

операційної системи Microsoft Windows NT, яка містить

досить потужні вбудовані засоби захисту від

перехоплювачів паролів першого і другого роду,

використання перехоплювачів пароль третім

роду з метою здійснення несанкціонованого

доступу можливо в найближчому майбутньому.

Захист від перехоплювачів

паролів третього роду

Оскільки

перехоплювачі паролів третього роду частково

беруть на себе функції підсистеми захисту

операційної системи, перехоплювач паролів

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

виконати принаймні одну з таких

дій:

Кожне з цих

дій залишає в операційній системі сліди,

які можуть бути виявлені за допомогою наступних

заходів захисту:

  1. Дотримання адекватної

    політики безпеки. Підсистема

    аутентифікації повинна бути самим захищеним

    місцем операційної системи. Заходи, необхідні

    для підтримки адекватної політики

    безпеки, сильно розрізняються для різних

    операційних систем.

  2. При дотриманні адекватної політики безпеки

    впровадження в систему перехоплювача паролів

    третього роду, як і будь-який інший програмної

    закладки, неможливо. Однак, оскільки

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

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

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

    часу представляється практично

    нездійсненним завданням. Крім того, дотримання

    адекватної політики безпеки захищає

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

    систему. Як тільки перехоплювач паролів впроваджено

    в систему, заходи з підтримки політики

    безпеки стає безглуздими – при

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

    безпеки не може бути адекватною, щоб ні

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

    Тому необхідні додаткові заходи захисту.

  3. Контроль цілісності

    виконуваних файлів операційної системи.

    Необхідно контролювати не тільки файли,

    входять до складу підсистеми захисту, а й

    бібліотеки, що містять низькорівневі функції

    операційної системи.

  4. Контроль цілісності

    інтерфейсних зв’язків всередині підсистеми захисту, а

    також інтерфейсних зв’язків, використовуваних

    підсистемою захисту для вирішення низькорівневих

    задач.

Побудова абсолютно

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

третього роду є неможливим.

Оскільки машинний код перехоплювачів паролів

третього роду виконується не в контексті

користувача, а в контексті операційної

системи, перехоплювач паролів третього роду може

вживати заходів, що утрудняють його виявлення

адміністраторами системи, зокрема:

Мабуть, тут має місце

“Боротьба щита і меча”, коли для будь

відомої атаки може бути побудована надійна

захист від неї, і для будь-якої відомої захисту може

бути реалізована атака, що дозволяє її

ефективно долати.

Висновок

Перехоплювачі паролів

являють собою цілком реальну загрозу

безпеки операційних систем. Захист від цієї

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

включає в себе як програмно-апаратні

кошти, так і адміністративні заходи захисту.

Для того, щоб надійна

захист від перехоплювачів паролів могла бути

побудована, необхідно, щоб операційна

система підтримувала певні можливості,

ускладнюють функціонування перехоплювачів

паролів (див. пп. 3,5). Оскільки ці можливості

підтримуються не всіма операційними

системами, не в будь-якій операційній системі

можлива побудова ефективного захисту від

перехоплювачів паролів. Єдиною

операційною системою у складі відомих автору,

в якій побудова такого захисту можливо,

є Microsoft Windows NT. Для організації надійної

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

операційних системах, включаючи MS-DOS, Windows 3.x, Windows 95

і всі відомі автору версії UNIX, буде потрібно

значна робота по створенню додаткових

засобів захисту.

Однак навіть в Windows NT

неможлива побудова ефективного захисту від

перехоплювачів паролів без використання

додаткових програмних засобів. Зокрема,

необхідно додаткове програмне

забезпечення, що реалізує контроль цілісності

системних файлів і інтерфейсних зв’язків

підсистеми аутентифікації.

Для того, щоб

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

ефективною, політика безпеки, прийнята в

системі, повинна відповідати таким

вимогам:

  1. Конфігурування ланцюжка

    програмних модулів, що беруть участь в отриманні

    операційною системою пароля користувача,

    доступно тільки адміністраторам системи.

  2. Доступ на запис до файлів

    цих програмних модулів надається тільки

    адміністраторам системи.

  3. Конфігурування підсистеми

    аутентифікації доступно тільки адміністраторам

    системи.

  4. Доступ на запис до системних

    файлів надається тільки адміністраторам

    системи.

При організації захисту від

перехоплювачів паролів слід мати на увазі, що

ні неухильне дотримання адекватної

політики безпеки, ні виконання вимог

до програмного забезпечення операційної

системи, ні реалізація в системі контролю

цілісності окремо не дають гарантій

надійності захисту. Всі ці заходи повинні

прийматися в комплексі.

Будь захист від

перехоплювачів паролів може бути надійною

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

адміністраторами системи адекватної політики

безпеки. Враховуючи, що:

побудова абсолютно

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

представляється практично неможливим. Тут

має місце “боротьба щита і меча”, коли для

будь-якої відомої атаки може бути побудована

надійний захист від неї, і для будь-якої відомої

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

її ефективно долати.

Література

  1. Х. Кастер. Основи Windows NT і NTFS.

    Microsoft Press. 1996.

  2. Проскурін В.Г.

    Можливості опосередкованого

    несанкціонованого доступу до ресурсів

    операційної системи Microsoft Windows NT. Тези доповіді

    на семінарі НТЦ АРБ “Захист інформації в

    операційних системах і базах даних “. М. 1998.

  3. Ресурси Windows NT. СПб.: BHV. 1996.

  4. Мережеві засоби Windows NT. СПб.:

    BHV. 1996.

  5. Фролов А.В., Фролов Г.В.

    Бібліотека системного програміста т. 13. Microsoft

    Windows 3.1 для програміста. ч.3. М.: Діалог-МИФИ. 1994.

  6. Щербаков А.Ю. Руйнують

    програмні впливу. М.: Едель. 1993.

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


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

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

Ваш отзыв

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

*

*