Что такое кейлоггер?
Содержание:
- Настройка и прошивка платы ESP8266
- Клавиатурный шпион на базе руткит-технологии в UserMode
- 2 типа кейлоггеров:
- Слежение за клавиатурным вводом при помощи ловушек
- Как собрать?
- Аппаратная защита
- Особенности выбора
- Драйвер-фильтр
- По каким принципам работают кейлоггеры?
- Посмотрим на концепцию keylogger ‘ов глужбе
- All In One Keylogger
- Пример клавиатурного шпиона
- Вывод
- Выводы
Настройка и прошивка платы ESP8266
ESP8266 — это непросто WI-FI шилд, это высоко интегрированный микроконтроллер со своим набором интерфейсов.
С базовой прошивкой плата ESP8266 используется в виде моста UART WIFI и управляется с помощью AT-команд. В нашем проекте такая прошивка не имеет смысла, так как модуль сам независимо может работать без дополнительных микроконтроллеров, если в него загрузить другую прошивку. Прошить модуль можно с помощью USB-Serial адаптера. Подробное описание, как это сделать, мы оформили в отдельную статью.
Загрузка скетча
Модуль ESP8266 будет создавать TCP-сервер и передавать на него данные о нажатых клавишах клавиатуры, полученные через Serial соединение с платой Iskra Mini. Реализацию такого моста вы можете найти среди стандартных примеров из библиотеки ESP8266.
Для этого зайдите в меню:
Файл
Образцы
ESP8266WIFI
WiFiTelnetToSerial
и загрузите в плату ESP8266 открывшийся скетч, предварительно указав вместо звёздочек имя и пароль Wi-Fi сети, к которой необходимо подключиться нашей ESP-шке.
const char* ssid = "**********"; const char* password = "**********";
При прошивке на плате ESP8266 будет мигать синий светодиод.
Плата прошита теперь можно приступать к сборке устройства.
Клавиатурный шпион на базе руткит-технологии в 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 позволяет отслеживать создание окон.
2 типа кейлоггеров:
- Программные кейлоггеры скрываются внутри компьютерной программы. Они устанавливаются хакерами анонимно и, как правило, работают в фоновом режиме. Программные клавиатурные шпионы используются для пересылки личных данных пользователя хакеру на указанный им электронный адрес.
- Аппаратные кейлоггеры бывают в виде USB, накладок на клавиатуру и других аппаратных устройств. Они регистрируют нажатия клавиш на клавиатуре и мыши, тем самым быстро и лёгко перехватывая информацию. Аппаратные кейлоггеры могут делать снимки экрана и даже видеозаписи, а также копировать данные из буфера обмена.
Слежение за клавиатурным вводом при помощи ловушек
анная методика является классической для клавиатурных шпионов, а суть ее заключается в применении механизма ловушек (hook) операционной системы. Ловушки позволяют наблюдать за сообщениями, которые обрабатываются окнами других программ. Установка и удаление ловушек производятся при помощи хорошо документированных функций библиотеки user32.dll (функция SetWindowsHookEx позволяет установить ловушку, UnhookWindowsHookEx снять ее). При установке ловушки указывается тип сообщений, для которых должен вызываться обработчик ловушки. В частности, существует два специальных типа ловушек: WH_KEYBOARD и WH_MOUSE для регистрации событий клавиатуры и мыши соответственно. Ловушка может быть установлена для заданного потока и для всех потоков системы, причем последнее очень удобно для построения клавиатурного шпиона.
Код обработчика событий ловушки должен быть расположен в DLL. Это требование связано с тем, что DLL с обработчиком ловушки проецируется системой в адресное пространство всех GUI1 -процессов. Интересной особенностью является то, что проецирование DLL происходит не в момент установки ловушки, а при получении GUI-процессом первого сообщения, удовлетворяющего параметрам ловушки.
На прилагаемом к журналу компакт-диске имеется демонстрационный клавиатурный шпион, построенный на основе ловушки. Он регистрирует клавиатурный ввод во всех GUI-приложениях и дублирует вводимый текст на своем окне. Данный пример можно использовать для тестирования программ, противодействующих клавиатурным шпионам.
Методика ловушек весьма проста и эффективна, но у нее есть ряд недостатков. Одним из них можно считать то, что DLL с ловушкой проецируется в адресное пространство всех GUI-процессов, что может применяться для обнаружения клавиатурного шпиона. Кроме того, регистрация событий клавиатуры возможна только для GUI-приложений это легко проверить при помощи демонстрационной программы.
1 GUI (Graphical User Interface) графический интерфейс пользователя.
Как собрать?
- Используя руководство по плате Iskra Mini прошейте её приведённым ниже.
- Прошейте плату ESP8266 используя инструкцию написанную выше.
- Установите плату Iskra Mini на Breadboard.
- Линии питания и земли платформы Iskra Mini соедините с помощью проводов «папа-папа» с верхними рельсами питания и земли макетной платы, по ним будет идти напряжение 5 вольт. Соедините верхнюю и нижнюю рельсу земли макетной платы проводом «папа-папа».
-
Так как плата ESP8266 работает строго от 3,3 вольт, соберём регулятор напряжения на основе микросхемы LM317 и подключим его выход к нижним рельсам питания и земли макетной платы. Для этого соберите схему приведенную ниже, где:
- регулятор напряжения;
- керамический конденсатор 100 нФ;
- электролитический конденсатор 10 мкФ;
- резистор 220 Ом;
- потенциометр 10 кОм;
- входное напряжение 5 вольт;
- выходное регулируемое напряжение.
- Подключите напряжение 5 вольт к верхним рельсам питания и земли. С помощью мультиметра и потенциометра отрегулируйте выходное напряжения на 3,3 вольта.
- Возьмите плату ESP8266 и с помощью проводов «мама-папа» соедините пины и с нижними рельсами питания 3,3 В и земли макетной платы.
- Управляющий пины и платформы Iskra Mini соедините с пинами и платы ESP8266, причём пин платформы Iskra Mini соедините с платой ESP8266 через резисторный делитель напряжения, чтобы своим высоким сигналом не спалить ESP8266.
- С помощью проводов «мама-папа» подтяните пины , и платы ESP8266 к питанию через резисторы 10 кОм.
- Возьмите USB удлинитель «мама-папа» и разрежьте его пополам. Далее зачистите с обеих сторон все его контакты и соедините их с макетной платой через 2 заранее установленных клеммника.
-
Воспользовавшись цветовой маркировкой USB соедините контакты USB удлинителя через клеммник следующим образом:
- красный провод — питание верхней рельсы макетной платы;
- чёрный провод — земля макетной платы;
- жёлтый провод — к цифровому пину платы Iskra Mini;
- белый провод — к цифровому пину платы Iskra Mini;В итоге получилась схема, приведенная ниже.
- Перенесём готовое устройство на Perfboard для устойчивости и компактности.
- В заключении установим кейлогер в удобный и компактный корпус.
Аппаратная защита
Для получения одноразовых паролей могут использоваться специальные аппаратные устройства:
В виде «брелка»-токена (например, Blizzard eToken):
В виде «калькулятора»:
В случае использования устройства генерации пароля в виде «брелка», алгоритм получения доступа к защищенной информационной системе таков:
- Пользователь подключается к интернету и открывает диалоговое окно для ввода персональных данных;
- Далее пользователь нажимает на кнопку ключа для генерации одноразового пароля, после этого пароль на 15 секунд появляется на ЖК-дисплее брелка;
- Пользователь вводит в диалоговом окне свой логин, персональный PIN-код и сгенерированное значение одноразового пароля (обычно PIN-код и ключ вводятся последовательно в одно поле passcode);
- Введённые значения проверяются на стороне сервера, после чего принимается решение о том, имеет ли право их владелец на работу с закрытыми данными.
При использовании устройства в виде калькулятора для генерации пароля пользователь набирает свой PIN-код на клавиатуре устройства и нажимает кнопку.
Особенности выбора
Что же такое по своей сути клавиатурный шпион? Это программа, которая, строго говоря, напрямую никак не связана с клавиатурой.
Она устанавливается в память компьютера и действует на жестком диске. Часто признаков ее деятельности не видно на компьютере, если не искать их целенаправленно.
Такая программа косвенно взаимодействует с клавиатурой, то есть работает с программой на ПК, которая преобразует сигналы, поступающие на процессор в результате нажатия кнопок, в текст при печати.
То есть, направлено действие такого софта на сбор информации, вводимой через клавиатуру.
Такие утилиты бывают разного типа – с помощью некоторых можно просмотреть весь набранный с клавиатуры текст, с помощью других – только тот, что был набран в браузере или в каком либо выбранном приложении.
Некоторые программы предоставляют возможность настройки таких показателей, другие нет.
Также они отличаются друг от друга по степени скрытности. Например, деятельность одних очевидна, на Рабочем столе остается ярлык и т. д., такие программы подойдут для контроля деятельности, например, детей.
Следы присутствия и деятельности других не заметны вовсе – они действуют скрыто и подойдут для установки на чужой компьютер, когда факт установки необходимо скрыть от стороннего пользователя.
Учитывая такое разнообразие, выбрать максимально подходящий софт может быть достаточно сложно.
В данном материале представлен ТОП лучших программ, которые можно использовать для этой цели. Среди них проще выбрать подходящую.
Драйвер-фильтр
Работа кейлоггеров данного типа основана на установке драйвера, подключаемого к драйверу клавиатуры в качестве фильтра. Пример реализации фильтра клавиатуры приведен в 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, а затем весь процесс повторяется. Естественно, что наличие корректно написанного драйвера-фильтра никак не сказывается на работе приложений и обеспечивает глобальный перехват клавиатурного ввода.
Обнаружение описанного шпиона не представляет особой сложности, — для его поиска достаточно изучить стек клавиатурного драйвера на предмет наличия неопознанных драйверов-фильтров.
По каким принципам работают кейлоггеры?
Вообще, их общий принцип работы — внедриться в процесс прохождения сигнала от нажатия клавиши до появления символа на экране.
Клавиатурная ловушка
Самым частый вариант – установка клавиатурных ловушек — хуки В Windows хук — это перехват сообщений системы с использованием особого механизма Win32API. Большая часть клавиатурных шпионов этого типа пользуются хуком WH_Keyboard. Также может быть использован хук WH_JOURNALRECORD. Разница в том, что WH_JOURNALRECORD не требует наличия отдельной динамической библиотеки (DLL), упрощая распространение это вредоносного софта по сети.
Опрос состояния клавиатуры Очень простой метод заключается в цикличном опросе состояния клавиатуры с большой скоростью. Не требуется внедрения DLL в GUI-процессы (GUI – графический пользовательский интерфейс). Недостаток подобных клавиатурных шпионов — в необходимости периодического опроса состояния клавиатуры с достаточно высокой скоростью (10-20 опросов в секунду).
Кейлоггер на базе драйвера Метод более эффективный, по сравнению с описанными. Как минимум, метод возможно реализовать 2 способами: написать и установить в систему своего драйвера клавиатуры вместо штатного или установить драйвер-фильтр.
Клавиатурные ловушки составляют подавляющее большинство среди всех кейлоггеров.
Шпион-rootkit Может быть реализован и в UserMode, и в режиме ядра (KernelMode). В UserMode слежение за клавиатурным вводом осуществляется за счет перехвата обмена процесса csrss.exe драйвером клавиатуры или при помощи слежения за вызовами API-функций типа GetMessage и PeekMessage. Часто от такого шпиона не спасает и экранная клавиатура, которую пытаются преподносить как средство от кейлоггеров любого типа.
Аппаратные клавиатурные устройства противопоставлены программным средствам шпионажа и их нельзя обнаружить программными методами.
Как реализовано:
- Устанавливаются устройства слежения в разрыв кабеля клавиатуры (например, устройство в виде переходника PS/2);
- Устройство слежения может быть встроено в клавиатуру;
- И просто визуальное наблюдение за клавиатурой (например, миниатюрная камера, находящаяся над панелью ввод данных банкомата).
Посмотрим на концепцию keylogger ‘ов глужбе
Также стоит отметить, что современные клавиатурные шпионы не просто записывают коды вводимых клавиш – они «привязывают» клавиатурный ввод к текущему окну и элементу ввода.
Многие же keylogger’ы отслеживают список запущенных приложений, умеют делать «снимки» экрана по заданному расписанию или событию, шпионить за содержимым буфера обмена и решать ряд задач, нацеленных на скрытное слежение за пользователем.
Записываемая информация сохраняется на диске, и большинство современных клавиатурных шпионов могут формировать различные отчеты (записывая их в специализированный журнал регистрации, т.е Log-файл), могут передавать их по электронной почте или http/ftp-протоколу.
Кроме того, ряд современных keylogger’ов пользуются RootKit-технологиями для маскировки следов своего присутствия в системе.
В общем, вот такая многогранная «зараза», при наличии которой на Вашем компьютере Вы даже чихнуть спокойно не сможете без её ведома 🙂
Примечание:
Стоит сказать, что кейлоггеры довольно древний тип проклятия появились еще во времена MS-DOS – тогда они представляли собой обработчики прерывания клавиатуры размером около 1 кб.
Однако функции клавиатурных шпионов за прошедшее время не изменились, – по-прежнему их первичной задачей является скрытная регистрация клавиатурного ввода с последующей записью собранной информации на диск или передачей по сети.
Вы скажите, что сейчас на рынке куча антивирусных пакетов, как платных, так и бесплатных (о которых мы писали в своих обзорах, это и ] и ] и т.п.), неужели так сложно отловить какой-то «неказистый» клавиатурный шпион?
Порой-таки да, сие весьма проблематично, ибо с точки зрения антивируса это не вирус (т.к. он не обладает способностью к размножению) и не троянская программа, поэтому многие «защитники» если и ловят кейлоггеры, то только со специальной, расширенной базой и дополнительными модулями, на то нацеленными.
Другая проблема связана с тем, что кейлоггеров известно превеликое множество (да и написать его не составляет особого труда) — как следствие, сигнатурный поиск против них малоэффективен.
Однако все это вовсе не означает, что надо повесить нос, опустить руки и жить в симбиозе с этими клавиатурными «паразитами», надо просто знать принципы их работы и на основании этого грамотно выстраивать свои действия, ну и обзавестись специализированным софтом также не помешает. Начнем с принципов, которые используют (или могут потенциально использовать) клавиатурные шпионы.
All In One Keylogger
Простой в использовании и достаточно мощный кейлоггер All In One Keylogger обеспечивает всем необходимым функционалом для отслеживания действий за компьютером.
Из основных функций отметим:
- Отслеживание нажатий клавиш с возможностью включения/выключения регистрации несимвольных (CTRL, SHIFT, ALT и т.д.) клавиш.
- Отслеживание отправленных/принятых сообщения мессенджерах с удобным хранением логов переписок в Skype, QIP, Yahoo, ISQ, Live Messenger, AIM и других.
- Регистрация данных, заносимых в буфер обмена (CTRL+C).
- Настройка приложений, в которых не будут отслеживаться действия пользователя и наоборот.
- Создание скриншотов (снимков экрана) по времени, при каждом клике мышью, клавиш Tab или Enter. Имеется возможность настройки качества снимков, автоматического уменьшения размеров и других параметров.
- Запись звука с микрофона и видео с веб-камер (если подключены к компьютеру).
- Различные настройки ведения логов — включение, выключение и удаление по времени и другим параметрам, отправка на электронную почту, FTP-сервер, сетевую папку на компьютер в локальной сети, USB-диск в соответствии с различными условиями.
- Различные способы скрытия следов пребывания программы на компьютере — самоудаление в установленное время, скрытие процесса в «Диспетчере задач», удаление записей из системных журналов и другие.
- Защита доступа в программу паролем, открытие окна приложения по заданной комбинации клавиш или путем набора пароля с клавиатуры в любом месте (другом открытом окне, рабочем столе и т.д.).
- Хранение логов в зашифрованном виде (их можно просматривать только в самой программе). Но при необходимости логии могут быть экспортированы в различные типы файлов — текстовые, HTML, изображения и т.д.
Кейлоггер All In One Keylogger работает во всех версиях Windows, начиная с Win 2000 (32-бит и 64-бит). Интерфейс не имеет поддержки русского языка. Бесплатная версия программы не имеет функциональных ограничений, но работает только в течение одной недели с момента установки.
Пример клавиатурного шпиона
В настоящее время сотни клавиатурных шпионов, рассмотрим в качестве примера достаточно распространенную коммерческую программу 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/)…. Этот список можно продолжать очень долго, однако в большинстве случаев современные клавиатурные шпионы имеют примерно одинаковую базовую функциональность и различаются сервисными функциями и качеством маскировки в системе.
Вывод
Клавиатурный шпион — программа очень интересная и иногда просто необходимая. Ее в основном покупают родители для того, чтобы следить, как их дети проводят время в интернете.
Часто читатели спрашивают о целесообразности покупки софта, который нужен не для работы и который не окупится впоследствии. С точки зрения логики, для того, чтобы пользоваться программой постоянно, чтобы она не давала сбоев, а человек, за которым следят, не мог сам ее отключить, лучше купить одну из платных версий. Это рекомендуется для родителей, которые переживают за то, какой контент ищет чадо в интернете. За относительно небольшие деньги вы будете уверены в поведении своего ребенка.
Если же клавиатурный шпион нужен на пару дней — то нет смысла устанавливать что-то платное. Можно попробовать бесплатную версию хорошего шпиона либо выбрать одну из доступных альтернатив.
Помните, что современные технологии облегчают нам жизнь, однако есть моральные нормы их использования. И устанавливать программу, которая следит за действиями человека на клавиатуре можно только из благих побуждений или если это касается вашей личной безопасности.
Выводы
В данной статье мы рассмотрели принципы построения и использования кейлоггеров — программных и аппаратных средств, используемых для мониторинга нажатия клавиш клавиатуры.
- Несмотря на то что производители кейлоггеров позиционируют их как легальное ПО, большинство кейлоггеров может быть использовано для кражи персональной информации пользователей и осуществления экономического и политического шпионажа.
- В настоящее время кейлоггеры, наряду с фишингом и методами социальной инженерии, являются одним из главных методов электронного мошенничества.
- Компании, работающие в сфере компьютерной безопасности, фиксируют стремительный рост числа вредоносных программ, имеющих функциональность кейлоггера.
- Отмечается тенденция добавления в программные кейлоггеры rootkit-технологий, назначение которых — скрыть файлы кейлоггера так, чтобы они не были видны ни пользователю, ни антивирусному сканеру.
- Обнаружить факт шпионажа с помощью кейлоггеров можно только с использованием специализированных средств защиты.
- Для защиты от кейлоггеров следует использовать многоуровневую защиту:
- традиционные антивирусные продукты, в которых необходимо включить функцию детектирования потенциально опасного программного обеспечения (во многих продуктах по умолчанию отключена);
- средства проактивной защиты — для защиты от новых модификаций кейлоггеров;
- виртуальную клавиатуру или системы генерации одноразовых паролей для защиты от программных и аппаратных кейлоггеров.
Ссылки по теме
-
Обратиться в «Интерфейс» за дополнительной информацией/по вопросу приобретения продуктов
- Подписаться на рассылку «Безопасность компьютерных сетей и защита информации»