Клавиатурный шпион кейлоггер (keylogger) на страже кибербезопасности предприятия

SPYGO

Это принципиально новый кейлогер, предназначенный для работы на платформе Windows и разработанный российским программистом.


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

Особенность программы в том, что она достаточно легко обнаруживается и это надо учитывать.

Но именно за счет этого и остается относительно законной. Имеется несколько версий с более или менее продвинутым и разнообразным функционалом.

Позитив:

  • Легальность – это не шпионское ПО, а легальное средство мониторинга;
  • Не внесена в базы антивирусов и разработчик всячески этого избегает;
  • Способность копировать и записывать отдельные фразы, отлавливая их по ключевым словам.

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

В настоящее время сотни клавиатурных шпионов, рассмотрим в качестве примера достаточно распространенную коммерческую программу 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/)…. Этот список можно продолжать очень долго, однако в большинстве случаев современные клавиатурные шпионы имеют примерно одинаковую базовую функциональность и различаются сервисными функциями и качеством маскировки в системе.

Драйвер-фильтр

Работа кейлоггеров данного типа основана на установке драйвера, подключаемого к драйверу клавиатуры в качестве фильтра. Пример реализации фильтра клавиатуры приведен в DDK, и данный шпион является одним из самых простых в плане как реализации, так и обнаружения.

Клавиатурный шпион этого типа может быть построен по одной из двух схем:

  • драйвер-фильтр в сочетании с управляющим приложением, которое выполняет установку, загрузку и настройку драйвера. Драйвер передает информацию о нажимаемых клавишах управляющему приложению, которое производит обработку и протоколирование полученных данных;
  • полностью автономный драйвер самостоятельно ведет запись событий. В данном случае требуется только произвести первичную установку драйвера в систему, после чего установившее драйвер приложение может самоуничтожиться. Возможно решение и без приложения-инсталлятора — в этом случае драйвер устанавливается при помощи INF-файла.

В момент загрузки драйвер должен подключиться к стеку клавиатурного драйвера посредством функций IoCreateDevice и IoAttachDevice. В большинстве известных реализаций фильтр подключается к стеку устройства «\\Device\\KeyboardClass0», являющегося драйвером класса и реализующего общую функциональность для клавиатур различных типов (рис. 1).

Рис. 1

Для клавиатурного шпиона будут представлять интерес только прерывания типа IRP_MJ_READ, поскольку на основе их анализа можно получить коды клавиш. Источником этих IRP-запросов является процесс csrss.exe, а точнее — принадлежащий этому процессу поток необработанного ввода RawInputThread. Посылаемое этим потоком прерывание сначала попадает к драйверу-фильтру шпиона (шаг 1), который устанавливает свой обработчик завершения при помощи функции IoSetCompletionRoutine и передает IRP драйверу Kbdclass (шаг 2). Тот, в свою очередь, помечает IRP как ожидающий завершения и ставит в очередь. При возникновении клавиатурных событий Kbdclass извлекает из очереди ожидающий завершения IRP, вносит в его буфер информацию о нажатых клавишах и завершает IRP. А поскольку в IRP установлен адрес обработчика завершения, то будет произведен вызов этого обработчика (шаг 3). Обработчик может проанализировать содержимое буфера и передать содержащуюся там информацию системе протоколирования (шаг 4). Далее IRP возвращается в поток RawInputThread, а затем весь процесс повторяется. Естественно, что наличие корректно написанного драйвера-фильтра никак не сказывается на работе приложений и обеспечивает глобальный перехват клавиатурного ввода.

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

Что такое кейлоггер

В переводе с английского keylogger — это регистратор нажатий клавиш. В большинстве источников можно найти следующее определение кейлоггера: кейлоггер (клавиатурный шпион) — программное обеспечение, основным назначением которого является скрытый мониторинг нажатий клавиш и ведение журнала этих нажатий. Это определение не совсем верно, так как в качестве кейлоггеров может использоваться как программное обеспечение, так и аппаратные средства

Аппаратные кейлоггеры встречаются значительно реже, чем программные, однако при защите важной информации о них ни в коем случае нельзя забывать


Перехват нажатий клавиш может использоваться обычными программами и часто применяется для вызова функций программы из другого приложения с помощью «горячих клавиш» (hotkeys) или, например, для переключения неправильной раскладки клавиатуры (как Keyboard Ninja). Существует масса легального ПО, которое используется администраторами для наблюдения за тем, что делает работник в течение дня, или для наблюдения пользователем за активностью посторонних людей на своем компьютере. Однако где проходит грань между «законным» использованием «легального» ПО и его использованием в криминальных целях? То же «легальное» ПО зачастую используется и в целях умышленного похищения секретных данных пользователя — например, паролей.

Большинство существующих на данный момент кейлоггеров считаются «легальными» и свободно продаются, так как разработчики декларируют множество причин для использования кейлоггеров, например:

  • для родителей: отслеживание действий детей в Интернете и оповещение родителей в случае попыток зайти на сайты «для взрослых» (parental control);
  • для ревнивых супругов: отслеживание действий своей половины в Сети в случае подозрения на «виртуальную измену»;
  • для службы безопасности организации: отслеживание фактов нецелевого использования персональных компьютеров, их использования в нерабочее время;
  • для службы безопасности организации: отслеживание фактов набора на клавиатуре критичных слов и словосочетаний, которые составляют коммерческую тайну организации, и разглашение которых может привести к материальному или иному ущербу для организации;
  • для различных служб безопасности: проведение анализа и расследования инцидентов, связанных с использование персональных компьютеров;
  • другие причины.

Однако это скорее привычное, чем объективное положение вещей, так как для решения всех указанных задач существуют и другие способы, а ЛЮБОЙ легальный кейлоггер может использоваться во вредоносных целях, и в последнее время именно кража информации пользователей различных систем онлайновых платежей стала, к сожалению, главным применением кейлоггеров (для этих же целей вирусописателями постоянно разрабатываются новые троянцы-кейлоггеры).

Кроме того, многие кейлоггеры прячут себя в системе (т.к. имеют функции руткита), что значительно облегчает их использование в преступных целях. Такое использование делает задачу обнаружения кейлоггеров одной из приоритетных для антивирусных компаний. В классификации вредоносных программ «Лаборатории Касперского» существует специальная категория Trojan-Spy (шпионские программы), в которую попадают программы, содержащие функции . Согласно определению Trojan-Spy, «эти троянцы осуществляют электронный шпионаж: вводимая с клавиатуры зараженного компьютера информация, снимки экрана, список активных приложений и действия пользователя с ними сохраняются в какой-либо файл на диске и периодически отправляются злоумышленнику».

Виды кейлоггеров в зависимости от способа установки и собираемых данных

В персональный компьютер своей «жертвы» клавиатурные шпионы могут попадать различными способами и быть ориентированными на сбор различных данных. В зависимости от этого выделяют акустические, аппаратные и программные кейлоггеры.

Акустический кейлоггер используется сравнительно редко. Основное назначение этого устройства — запись звуков нажатия клавиш, из различий в тональности звучания которых можно восстановить последовательность набранных символов. Имеет значение и скорость нажатий, она также анализируется как дополнительный фактор для извлечения конфиденциальных сведений. Минус таких кейлоггеров — это объемные файлы протоколов, по которым их можно обнаружить, поскольку данный вид перехватчиков вынужден записывать много сопутствующей информации, чтобы облегчить последующую расшифровку.

Аппаратный кейлоггер представляет собой устройство, которое физическим образом внедряется в компьютер пользователя, после чего начинает перехват нажатий клавиш. Примерами таких устройств могут служить накладки на клавиатуры банкоматов, встраиваемые в материнскую плату «жучки» или незаметные переходники, которые вставляются в разъем на клавиатуре

Основное назначение эргономики таких кейлоггеров — это их незаметность: они имеют малый размер или изготавливаются так, чтобы не привлекать к себе внимание, маскируясь под другое устройство. Аппаратные кейлоггеры невозможно обнаружить с помощью антивируса, выявить их поможет только внимательный осмотр техники специалистом или даже ее рентгеновское просвечивание. Минусы у таких устройств тоже имеются: чтобы внедрить аппаратный кейлоггер в целевой компьютер, злоумышленник должен обеспечить себе к нему доступ, что сузит круг подозреваемых, если факт существования «жучка» будет раскрыт, акцентировав подозрения на коллегах, сервисном персонале или недавних посетителях

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

Программный кейлоггер — это шпионское программное обеспечение, которое устанавливается на компьютер пользователя при посещении зараженного сайта или общедоступного сетевого хранилища, а также при открытии вложения из зараженного письма в электронной почте, которое может совсем не походить на спам, а маскироваться под важную деловую рассылку. Такие перехватчики иногда встраиваются во вполне безобидные программы, которые пользователь скачивает из сети или загружает с внешнего носителя. Существуют и официальные лицензионные разработки, которые поставляются как дополнение к операционной системе и призваны упростить работу пользователя: вовремя автоматически переключить раскладку клавиатуры, напомнить забытый пароль или помочь восстановить важные данные.

Если целью программного кейлоггера является скрытый сбор данных, то он работает незаметно для пользователя, не отображаясь в списке запущенных программ. Выявить шпиона бывает непросто даже современным антивирусным системам, хотя рано или поздно он обнаруживает себя, пытаясь переслать накопленные данные своему владельцу.

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

Кейлоггеры могут хранить свои лог-файлы в оперативной памяти зараженного компьютера, на его жестком диске, на выделенном участке локальной сети, в реестре или на удаленном сервере. Передаваться заинтересованному лицу они могут путем отправки по электронной почте, размещения на FTP- или HTTP-сервере либо по беспроводным каналам связи. В случае аппаратного кейлоггера считывание накопленных данных возможно после его физического извлечения.

Особенности выбора

Что же такое по своей сути клавиатурный шпион? Это программа, которая, строго говоря, напрямую никак не связана с клавиатурой.

Она устанавливается в память компьютера и действует на жестком диске. Часто признаков ее деятельности не видно на компьютере, если не искать их целенаправленно.

Такая программа косвенно взаимодействует с клавиатурой, то есть работает с программой на ПК, которая преобразует сигналы, поступающие на процессор в результате нажатия кнопок, в текст при печати.

То есть, направлено действие такого софта на сбор информации, вводимой через клавиатуру.

Такие утилиты бывают разного типа – с помощью некоторых можно просмотреть весь набранный с клавиатуры текст, с помощью других – только тот, что был набран в браузере или в каком либо выбранном приложении.

Некоторые программы предоставляют возможность настройки таких показателей, другие нет.

Также они отличаются друг от друга по степени скрытности. Например, деятельность одних очевидна, на Рабочем столе остается ярлык и т. д., такие программы подойдут для контроля деятельности, например, детей.

Следы присутствия и деятельности других не заметны вовсе – они действуют скрыто и подойдут для установки на чужой компьютер, когда факт установки необходимо скрыть от стороннего пользователя.

Учитывая такое разнообразие, выбрать максимально подходящий софт может быть достаточно сложно.

В данном материале представлен ТОП лучших программ, которые можно использовать для этой цели. Среди них проще выбрать подходящую.

Ставим задачу

Мудрить не будем и ограничимся необходимым минимумом. Предположим, мы хотим заполучить пароль жертвы от ВК и мы можем ненадолго получить физический доступ к компьютеру. При этом:

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

Еще жертва может пользоваться парольным менеджером, тогда в логе мы получим только Ctrl-C и Ctrl-V. На этот случай будем мониторить еще и содержимое буфера обмена.

INFO

Подробнее об атаках на парольные менеджеры читай в статье «Ищем слабые места современных менеджеров паролей».

Писать будем на C# в Visual Studio. Забегая вперед, скажу, что в результате у меня получилось две версии программы — одна работает через перехват WinAPI, другую я про себя называю «костыльной». Но эта менее красивая версия дает другие результаты при проверке антивирусами, поэтому расскажу и о ней.

Теория

Когда ты нажимаешь на кнопку, операционка посылает уведомления тем программам, которые хотят об этом узнать. Поэтому самый простой способ перехватить ввод с клавиатуры — это принимать сообщения о нажатиях клавиш. Если мы этого сделать не можем (например, функция SetWindowsHookEx запрещена антивирусом или еще чем-либо), можно тянуть сырой ввод и без нее. Есть такая функция — GetAsyncKeyState, которая принимает номер клавиши и позволяет узнать, зажата она или отжата в момент вызова. Собственно, алгоритм действий будет такой: раз в N мс опрашиваем все кнопки и узнаем их состояние, занося нажатые в специальный список. Затем список обрабатываем, учитывая состояние клавиши Caps Lock, Num Lock, Shift, Ctrl и так далее. Полученные данные будем записывать в файл.

Пишем код

Для начала откроем Visual Studio и создадим новый проект Windows Forms (.NET Framework). Почему именно Windows Forms? Если мы выберем обычное консольное приложение, то при каждом запуске будет создаваться некрасивое черное окошко, а ведь юзера мы договорились не беспокоить. Также, пока мы не создали форму (а создавать ее мы и не будем), никаких значков в таскбаре не появится — важная часть скрытой работы. Теперь удаляй автоматически созданный файл Form1.cs со всеми потрохами и открывай Program.cs.

Заглушка Main

Здесь нас уже поджидает шаблон программы, но он не будет работать просто так. Первым делом надо убрать строчки 10–12 и 16–18. Теперь меняем объявление метода со на . Нужно это для того, чтобы мы могли определить свои аргументы при перезапуске.

Теперь добавим для работы с файлами, для работы с WinAPI и для приостановки потока. Если ты не хочешь писать костыльный вариант, лучше пропусти этот раздел и сразу переходи к следующему.

Импортируем из user32.dll:

И добавляем собственно логирование нажатий, собирая их по десять штук, чтобы не делать слишком много дисковых операций:

Расшифровывать такой лог будет неудобно

Выглядит не очень красиво, а про читабельность вообще можно забыть. Во-первых, наш код тянет ввод не только с клавиатуры, но и с мыши (всякие LButton и RButton). Поэтому давай не будем записывать нажатие, если это не символьная клавиша. Заменим содержимое в цикле на это:

После такого редактирования лог стал намного чище (см. рисунок).

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.

Я уже участник «Xakep.ru»

Технические характеристики

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

Название Тип лицензии Тип собираемой информации Функционал Дизайн
SC-KeyLog Бесплатно Вся Широкий Упрощенный
WideStep Handy Keylogger Бесплатно/Платно Вся Широкий Улучшенный
Actual Spy Платно Вся Очень широкий Стандартный
EliteKeylogger Платно Вся Широкий Стандартный
The Rat! Бесплатно/Платно Меньше, чем в предыдущих Довольно широкий Неэстетичный
SPYGO Бесплатно В зависимости от версии В зависимости от версии Стандартное оформление Windows
Ardamax Keylogger 2.9 Бесплатно С клавиатуры Суженный Упрощенный
NS Keylogger Personal Monitor 3.8 Бесплатно Вся Суженный Упрощенный
KGB Spy Платно С клавиатуры+ открытые программы Узкий Простой
Golden Keylogger 1.32 Бесплатно С клавиатуры Очень узкий Простой

Основываясь на характеристиках из этой таблицы легко выбрать максимально подходящую под конкретные требования программу.

Подробнее об этих утилитах же рассказано ниже.

Как защитить себя от клавиатурных шпионов?


К счастью, несмотря на то, что кейлоггеры могут представлять из себя довольно серьезную угрозу, их довольно легко обмануть.

1. Установите антивирус с надежной функцией определения клавиатурных шпионов

Первое, что следует сделать – это убедиться в достаточной надежности вашего защитника и его возможности противостоять кейлоггерам. Любая хорошая программа безопасности вполне может определить поведение клавиатурного шпиона и предотвратить его установку.

Именно поэтому стоит задуматься о хорошем антивирусе. Сейчас множество защитных программ стоят не очень дорого – более того, некоторые из них абсолютно бесплатны.

2. Используйте двухфакторную (2FA) авторизацию

Этот способ применяется для авторизации на многих сайтах и среди огромного количества приложений. Самый популярный вариант – это пересылка дополнительного кода на ваш смартфон после ввода пароля, который действует на протяжении ограниченного количества времени.

Также иногда применяется подход частичного ввода пароля или использование дополнительной кодовой фразы. При входе на сайт, вас могут попросить ввести только последние несколько символов основного пароля или определенные символы дополнительного кода. Таким образом в руках злоумышленника никогда не окажется полная кодовая фраза.

3. Используйте менеджер паролей

Взломщик никогда не получит ваш пароль, если вы никогда не будете набирать его вручную. Менеджеры паролей заполняют все данные для входа автоматически и вам не нужно даже прикасаться к клавиатуре. Таким образом, даже если кейлоггер будет установлен в вашей системе, он все равно не сможет сохранить данные ваших аккаунтов.

4. Вводите чувствительные данные без использования клавиатуры

Такую тактику можно считать самой примитивной, но от этого она не перестает быть эффективной. Клавиатурные шпионы регистрируют только нажатия клавиш на клавиатуре, поэтому все что вам нужно сделать это скопировать и вставить необходимые данные.

Такой подход нельзя назвать крайне удобным, поэтому можно воспользоваться экранной клавиатурой. Даже многие антивирусы предлагают такой вариант. Ввести пароль мышкой при авторизации не так сложно и при этом гораздо безопаснее.

Последним вариантом такого подхода является голосовой ввод. Сейчас многие операционные системы и сайты поддерживают его. В целом такой метод можно считать довольно безопасным и удобным.

Сохраняйте снимки экрана и нажатия клавиш

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

Программа Mipko Employee Monitor перехватывает все нажатия клавиш, периодически делает снимки экрана рабочего стола сотрудника, сохраняет запускаемые и закрываемые программы, а также записывает все посещаемые сайты. Доступ к этим записям можно получить локально или удаленно, нет никакой нужды оставлять свое кресло, чтобы проверить, чем занимаются сотрудники.

Mipko Employee Monitor легко настраивается на то, чтобы оповещать вас об определенных событиях по электронной почте или посредством загрузки через сервер FTP. Интеллектуальная система шаблонов позволяет перехватывать только те нажатия клавиш, которые содержат одну из заранее заданных ключевых фраз, облегчая настройку с целью обеспечения максимальной безопасности и минимальной возможности проникновения.

Клавиатурный шпион на базе руткит-технологии в UserMode

Принцип действия такого клавиатурного шпиона основан на перехвате ряда функций USER32.DLL для мониторинга их вызовов. Данные вредоносные программы пока не получили особого распространения, но это только вопрос времени. Опасность применения руткит-технологии в клавиатурном шпионе объясняется тем, что, во-первых, многие антикейлоггеры не рассчитаны на поиск шпионов такого типа и не способны им противодействовать, а во-вторых, антируткиты часто не проверяют перехваты функций библиотеки user32.dll.

Принцип работы шпиона достаточно прост: при помощи любой из известных руткит-технологий производится перехват одной или нескольких функций, позволяющих получить контроль над вводимой с клавиатуры информацией. Самым простым является перехват функций GetMessage и PeekMessage (рис. 2).

Рис. 2

Работа шпиона организована следующим образом. Приложение вызывает функцию PeekMessage для того, чтобы узнать, есть ли в очереди сообщения указанного типа. Этот вызов перехватывается по руткит-принципу (методика в данном случае не имеет значения). Затем перехватчик вызывает реальную функцию PeekMessage из user32.dll и анализирует возвращаемые результаты. Если функция возвращает true, это означает, что сообщение было в очереди и что оно извлечено в тот буфер, указатель на который передается в качестве первого параметра функции. В этом случае перехватчик проверяет сообщения в буфере на предмет обнаружения сообщений типа WM_KEYDOWN (нажатие клавиши), WM_KEYUP (отпускание клавиши), WM_CHAR (посылается окну после обработки WM_KEYDOWN при помощи TranslateMessage). При выявлении подобного сообщения можно узнать код нажимаемой клавиши и передать его системе протоколирования и анализа (шаг 4). Далее управление возвращается приложению (шаг 5), которое не знает о наличии перехватчика.

Подобный клавиатурный шпион очень опасен, так как:

  • он не обнаруживается стандартными методиками поиска клавиатурных шпионов;
  • возможно внедрение перехватчика по определенным условиям, в результате чего он внедряется не во все GUI-процессы, а в строго определенные (например, в процессы браузера или в приложение типа WebMoney);
  • против него бесполезны экранные клавиатуры и прочие средства борьбы с клавиатурными шпионами;
  • кроме перехвата функций PeekMessage и GetMessage, могут быть перехвачены функции копирования информации при работе с буфером обмена (OpenClipboard, CloseClipboard, GetClipboardData, SetClipboardData), опроса состояния клавиатуры (GetKeyState, GetAsyncKeyState, GetKeyboardState) и другие функции user32.dll, что усиливает опасность шпиона, а перехват функций типа CreateWindow позволяет отслеживать создание окон.

С этим читают