Донецкий техникум промышленной автоматики

клавіатурні шпигуни

  1. Стеження за клавіатурним введенням за допомогою пасток
  2. Стеження за клавіатурним введенням за допомогою опитування клавіатури
  3. Стеження за клавіатурним введенням за допомогою перехоплення API функцій
  4. Клавіатурний шпигун на базі драйвера
  5. Апаратні клавіатурні шпигуни
  6. Приклад клавіатурного шпигуна
  7. Методики пошуку клавіатурних шпигунів
  8. Програми для пошуку і видалення клавіатурних шпигунів
  9. висновок






Головна / Інформаційна безпека / статті


Клавіатурні шпигуни утворюють велику категорію шкідливих програм, представлющую велику загрозу для безпеки користувача. Як і Rootkit, про які йшла мова в попередній статті, клавіатурні шпигуни не є вірусами, тому що не володіють здатністю до розмноження.

Клавіатурні шпигуни - це програма для прихованої запису інформації про натисне користувач клавішах. У терміна «клавіатурний шпигун» є ряд синонімів: K eyboard L ogger, KeyLogger, кейлоггер; рідше зустрічається терміни "снупер", "snoop", "snooper" (від англ. snoop - буквально "людина, вічно сунуть носа в чужі справи")

Як правило, сучасні клавіатурні шпигуни не просто записує коди вводяться клавіш - він "прив'язує" клавіатурний введення до поточного вікна і елементу введення. Крім того, багато клавіатурні шпигуни відстежують список запущених додатків, вміють робити "знімки" екрану за заданим розкладом або події, шпигувати за вмістом буфера обміну і вирішувати ряд завдань, націлених на потайне стеження за користувачем. Записувана інформація зберігається на диску і більшість сучасних клавіатурних шпигунів можуть формувати різні звіти, можуть передавати їх по електронній пошті або http / ftp протоколу. Крім того, ряд сучасних клавіатурних шпигунів користуються RootKit технологіями для маскування слідів своєї присутності в системі.

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

Перед описом основних принципів роботи клавіатурного шпигуна необхідно розглянути модель апаратного введення системи Windows. Досить докладний опис цієї моделі можна знайти в книзі Д.Ріхтера «Windows для професіоналів».

При виникненні деяких подію уведення (натисканні клавіш, переміщення миші) події обробляються відповідним драйвером і поміщається в системну чергу апаратного введення. У системі є особливий потік необробленого введення, званий RIT (Raw Input Thread), який витягує події з системної черги і перетворює їх в повідомлення. Отримані повідомлення переносяться в кінець черги віртуального введення одного з потоків (віртуальна чергу потоку називається VIQ - Virtualized Input Queue). При цьому RIT сам з'ясовує, в чергу якого конкретно потоку необхідно помістити подія. Для подій миші потік визначається пошуком вікна, над яким розташований курсор миші. Клавіатурні події відправляються тільки одному потоку - так званому активному потоку (тобто потоку, якому належить вікно, з яким працює користувач). Насправді це не зовсім так - зокрема, на малюнку показаний потік A, що не має черги віртуального введення. В даному випадку вийдуть, що потоки A і B спільно використовують одну чергу віртуального введення. Це досягається за допомогою виклику API функції AttachThreadInput, яка дозволяє одному потоку підключитися до черги віртуального введення іншого потоку.

Слід зазначити, що потік необробленого введення відповідає за обробку спеціальних сполучень клавіш, зокрема Alt + Tab і Ctrl + Alt + Del.

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

Дана методика є класичною для клавіатурних шпигунів. Суть методу полягає в застосуванні механізму пасток (hook) операційної системи. Пастки дозволяють спостерігати за повідомленнями, які обробляються вікнами інших програм. Установка і видалення пасток проводиться за допомогою добре документованих функцій API бібліотеки user 32. dll (функція SetWindowsHookEx дозволяє встановити пастку, UnhookWindowsHookEx - зняти її). При установці пастки вказується тип повідомлень, для яких повинен викликатися обробник пастки. Зокрема, є два спеціальних типи пастки WH_KEYBOARDі WH_MOUSE - для реєстрації подій клавіатури і миші відповідно. Пастка може бути встановлена ​​для заданого потоку і для всіх потоків системи. Пастка для всіх потоків системи дуже зручна для побудови клавіатурного шпигуна.

Код обробника подій пастки повинен бути розташований в DLL. Ця вимога пов'язана з тим, що DLL з обробником пастки проектується системою в адресний простір всіх GUI процесів. Цікавою особливістю є те, що проектування DLL відбувається не в момент установки пастки, а при отриманні GUI процесом першого повідомлення, що задовольняє параметрам пастки.

На компакт-диску є демонстраційний «клавіатурний шпигун», побудований на основі пастки. Він реєструє клавіатурний введення у всіх GUI додатках і дублює текст, що вводиться на своєму вікні. Даний приклад можна використовувати для тестування програм, які протидіють клавіатурних шпигунів.

Методика пасток досить проста і ефективна, але у неї є ряд недоліків. Першим недоліком можна вважати те, що DLL з пасткою проектується в адресний простір всіх GUI процесів, що може застосовуватися для виявлення клавіатурного шпигуна. Крім того, реєстрація подій клавіатури можлива тільки для GUI додатків, це легко перевірити за допомогою демонстраційної програми.

Стеження за клавіатурним введенням за допомогою опитування клавіатури

Дана методика заснована на періодичному опитуванні стану клавіатури. Для опитування стану клавіш в системі передбачена спеціальна функція GetKeyboardState, що повертає масив з 255 байт, в якому кожен байт містить стан певної клавіші на клавіатурі. Даний метод вже не вимагає впровадження DLL в GUI процеси і в результаті шпигун менш помітний.

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

На компакт-диску є демонстраційний «клавіатурний шпигун», побудований на основі циклічного опитування клавіатури - додаток KD 2.

Недоліком клавіатурних шпигунів такого типу є необхідність періодичного опитування стану клавіатури з досить високою швидкістю, не менше 10-20 опитувань в секунду.

Стеження за клавіатурним введенням за допомогою перехоплення API функцій

Дана методика не отримала широкого поширення, але тим не менше вона може з успіхом застосовуватися для побудови клавіатурних шпигунів. Методики перехоплення функцій API детально розглядалися в статті, присвяченій RootKit. Різниця між RootKit і клавіатурним шпигунів в даному випадку невелика - шпигун буде перехвативатьфункціі з метою моніторингу, а не з метою модифікації принципів роботи і результатів виклику.

Найпростішим способом може бути перехоплення функцій GetMessage, PeekMessage і TranslateMessage бібліотеки User 32, що дозволить вести моніторинг всіх повідомлень, одержуваних GUI додатками.

Клавіатурний шпигун на базі драйвера

Даний метод ще більш ефективний, ніж описані вище методи. Можливі як мінімум два варіанти реалізації цього методу - написання і установка в систему свого драйвера клавіатури замість штатного або установка драйвера - фільтра. Застосування драйвера - фільтра на мій погляд є найбільш коректною методикою, хороший варіант реалізації описаний на сайті www .wasm .ru , Інший варіант можна знайти в Windows DDK (приклад називається kbfiltr).

Апаратні клавіатурні шпигуни

В ході вирішення завдань щодо захисту від витоку інформації часто розглядають тільки різні програмні засоби для шпигунства за роботою користувача. Однак крім програмних можливі і апаратні засоби:

  • Установка пристрою стеження в розрив кабелю клавіатури (наприклад, пристрій може бути виконано у вигляді перехідника PS / 2);
  • Вбудовування пристрої стеження в клавіатуру;
  • Зчитування даних шляхом реєстрації ПЕМВН (побічних електромагнітних випромінювань і наведень);
  • Візуальне спостереження за клавіатурою

Апаратні клавіатурні шпигуни зустрічаються набагато рідше, ніж програмні. Однак при перевірці особливо відповідальних комп'ютерів (наприклад, застосовуваних для здійснення банківських операцій) про можливість апаратного стеження за клавіатурним введенням не слід забувати.

Приклад клавіатурного шпигуна

В даний час сотні клавіатурних шпигунів, розглянемо в якості прикладу досить поширену комерційну програму ActualSpy ( http://www.actualspy.ru ). Дана програма може реєструвати клавіатурний введення (з реєстрацією заголовка вікна і імені програми), знімати скріншоти екрану за розкладом, реєструвати запуск / зупинка програм, стежити за буфером обміну, принтером, створюваними користувачем файлами. Крім того, в програмі реалізовано стеження за Інтернет-з'єднаннями і відвідуваними сайтами. ActualSpy обраний в якості прикладу

Програма має найпростішу маскування від виявлення - її не видно в стандартному списку завдань Windows. Для аналізу зібраної інформації програма формує протоколи в форматі HTML. Принцип роботи програми ActualSpy заснований на пастці, яка реєструє події клавіатури.

Як інші приклади можуть виступити SpyAgent ( http://www.spytech-web.com ), ActMon ( http://www.actmon.com ), SpyBuddy ( http://www.actmon.com ), PC Activity Monitor ( http://www.keyloggers.com ), KGB Spy ( http://www.refog.ru/ ) .... Цей список можна продовжувати дуже довго, проте в більшості випадків сучасні клавіатурні шпигуни мають приблизно однакову базову функціональність і розрізняються сервісними функціями і якістю маскування в системі.

Методики пошуку клавіатурних шпигунів

  1. Пошук по сигнатурам. Даний метод не відрізняється від типових методик пошуку вірусів. Сигнатурний пошук дозволяє однозначно ідентифікувати клавіатурні шпигуни, при правильному виборі сигнатур ймовірність помилки практично дорівнює нулю. Однак сигнатурний сканер зможе виявляти заздалегідь відомі і описані в його базі даних об'єкти;
  2. Евристичний алгоритми. Як очевидно з назви, це методики пошуку клавіатурного шпигуна по його характерним особливостям. Евристичний пошук носить імовірнісний характер. Як показала практика, цей метод найбільш ефективний для пошуку клавіатурних шпигунів найпоширенішого типу - заснованих на пастках. Однак подібні методики дають багато помилкових спрацьовувань. Мої дослідження показали, що існують сотні безпечних програм, які не є клавіатурними шпигунами, але встановлюють пастки для стеження за клавіатурним введенням і мишею. Найбільш поширений приклади - програми Punto Switcher, словник Lingvo, програмне забезпечення від мультимедійних клавіатур і мишей;
  3. Моніторинг API функцій, використовуваних клавіатурними шпигунами. Дана методика заснована на перехопленні ряду функцій, що застосовуються клавіатурним шпигуном - зокрема, функцій SetWindowsHookEx, UnhookWindowsHookEx, GetAsyncKeyState, GetKeyboardState. Виклик даних функцій якихось додатком дозволяє вчасно підняти тривогу, однак проблеми численних помилкових спрацьовувань будуть аналогічні методу 2;
  4. Відстеження використовуваних системою драйверів, процесів і сервісів. Це універсальна методика, застосовна не тільки проти клавіатурних шпигунів. У найпростішому випадку можна застосовувати програми типу Kaspersky Inspector або Adinf, які відстежують появу в системі нових файлів.

Програми для пошуку і видалення клавіатурних шпигунів

  1. Будь антивірусний продукт. Всі антивіруси в тій чи іншій мірі можуть знаходити клавіатурні шпигуни, однак клавіатурний шпигун не є вірусом і в результаті користі від антивіруса мало;
  2. Утиліти, що реалізують механізм сигнатурного пошуку та евристичні механізми пошуку. Прикладом може служити утиліта AVZ, що поєднує сигнатурний сканер і систему виявлення клавіатурних шпигунів на базі пасток;
  3. Спеціалізовані утиліти і програми, призначені для виявлення клавіатурних шпигунів і блокування їх роботи. Подібні програми найбільш ефективні для виявлення і блокування клавіатурних шпигунів, оскільки як правило можуть блокувати практично всі різновиди клавіатурних шпигунів.

З спеціалізованих програм інтерес можуть представляти комерційні продукти PrivacyKeyboard і Anti-keylogger ( http://www.bezpeka.biz/ ). Інтерфейс програми Anti-keylogger показаний на малюнку:

Програма Anti-keylogger працює у фоновому режимі і виробляє виявлення програм, підозрюваних в стеженні за клавіатурою. У разі необхідності можна вручну розблокувати роботу будь-якої з виявлених програм (наприклад, на малюнку видно, що в список «шпигунів» потрапили MSN Messanger і програма зачачкі з Інтернет FlashGet). Для виявлення клавіатурних шпигунів не застосовуються бази сигнатур, виявлення ведеться евристичними методами.

Тестування програми показало, що вона ефективно протидіє клавіатурним шпигунам, заснованим на застосуванні пасток, циклічного опитування і клавіатурного драйвера-фільтра.

Іншим прикладом може служити програма Advanced Anti Keylogger ( http://www.anti-keylogger.net ).

У режимі навчання дана програма за логікою роботи нагадує Firewall - при виявленні підозрілої активності виводиться попередження із зазначенням імені та опису програми. Користувач може вибрати дію на сеанс (дозволити, заборонити), або створити постійне правило для правило для програми. В ході тестів Advanced Anti Keylogger впевнено виявив всі основні різновиди клавіатурних шпигунів (на базі пастки, циклічного опитування, драйвера-фільтра). Налаштування програми захищаються паролем, який задається в ході інсталяції.

висновок

Клавіатурний шпигун не є вірусом, але, тим не менш, є більшою загрозою для користувачів, оскільки дозволяє зловмисникові стежити за роботою користувача і може застосовуватися для викрадення конфіденційної інформації, в тому числі паролів користувача. Небезпека клавіатурного шпигуна може істотно зрости при його поєднанні з RootKit-технології, яка дозволить замаскувати присутність клавіатурного шпигуна. Ще більш небезпечною є троянська або backdoor програма, яка містить клавіатурний шпигун - його наявність істотно розширює функції троянської програми і її небезпеку для користувача.