Клавиатурные шпионы (кейлоггеры) - Принципы построения кейлоггеров

ОГЛАВЛЕНИЕ


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

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

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

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

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

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

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

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


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

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

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