Кейлоггеры: что нам о них известно?

Слово «кейлоггер» в русском языке (иногда встречается написание «кейлогер») образовано из двух слов, заимствованных из английского языка: «key» («ки», в данном случае — «клавиша») и «logger» («логгер», в данном случае — «регистратор») и правильно произносится «ки-логгер», но в качестве нормы-де-факто принят названный первым вариант произношения.

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

Все кейлоггеры можно разделить на три группы:
1. Аппаратные (представляющие собой дополнительные физические устройства);
2. Программные (входящие в состав комплексов программного обеспечения или отдельные приложения).
3. Третья группа представляет собой шпионскую аппаратуру, предназначенную для скрытного получения информации из защищённых систем и объектов: это акустические кейлоггеры.

получения информации из защищённых систем и объектов. Акустический кейлоггер является частью скрытой системы подслушивания. Это миниатюрное устройство со встроенным мощным микрофоном, системой хранения информации большой ёмкости (или оборудование, передающее информацию по кабелю либо через эфирное соединение — радиоканал/Wi-Fi/Bluetoothи ПО, определяющее характер звука — разговор, музыку или нажатие клавиш клавиатуры. У акустических кейлоггеров укая специализация: они различают тональные DTMF-коды нажатия кнопок телефона или экранных клавиш смартфона, восстанавливая последовательность их нажатия. Акустические кейлоггеры восстанавливают текст, набранный на телефоне или смартфоне, и передают его за пределы охраняемого периметра.

Акустический кейлоггер

Акустические кейлоггеры в РФ признаны действующим Законодательством специальной техникой. Свободный оборот запрещён Уголовным Кодексом Российской Федерации (ст. 138.1 УК РФ, введена Федеральным законом N 420-ФЗ от 07.12.2011 г.). Использование подобной специальной техники разрешается сотрудникам государственных специальных служб Российской Федерации, сотрудникам полиции в определённых условиях и только по решению суда, что регламентируется федеральным законодательством.

Аппаратные кейлоггеры подключаются в «разрыв» соединения клавиатуры (с разъёмом PS/2 или USB) и представляют собой небольшие устройства с собственной памятью или со сменной картой памяти (обычно используются microSD-карты). «Продвинутые» устройства оснащены модулями беспроводной связи (Bluetooth или Wi-Fi) и позволяют сохранять результаты перехвата нажатий клавиш и передавать их по сети на файловые хранилища или на рабочие станции администраторов систем безопасности.

Аппаратные кейлоггеры для PS/2 и USB-клавиатур USB-клавиатура, подключённая через аппаратный кейлоггер

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

Преимущества аппаратного кейлоггера:
— легкая установка и подключение, это может выполнить даже обычный пользователь;
— кейлоггер не требует дополнительного питания (питанием обеспечивает сам порт PS/2 или USB);
— если кейлоггер записывает информацию на карту памяти, то небольшая карта памяти (объёмом 2 гигабайта) сможет сохранить информацию о более 2 миллиардах байт-кодов нажатий клавиш, в случае использования кодировки Unicode достаточно для записи работы пользователя в течение всей его жизни;
— проверка наличия и работоспособности кейлоггера не представляет сложности;
— невысокая цена.

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

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

Особым случаем использования аппаратных кейлоггеров является применение в защищённых устройствах (ноутбуках и клавиатурах). В этом случае модуль аппаратного кейлоггера является частью устройства и находится внутри, а изъять кейлоггер можно путём разрушения устройства. Чтение информации с аппаратных кейлоггеров допустимо в особых условиях, обычно с использованием самого устройства; удалённое чтение информации невозможно. Аппаратные кейлоггеры широко используются государственными и частными силовыми структурами, на производствах, как часть технологических комплексов. Производство их налажено за рубежом и в Российской Федерации, эти устройства присутствуют на рынке, стоимость их сравнительно выше, чем с устройствами бытового класса сравните.

Особо защищённый ноутбук в металлическом корпусе, оснащённый встроенным аппаратным кейлоггером Защищённая клавиатура в металлическом корпусе с трек-болом (шариком-манипулятором, аналогом устройства типа «мышь»), оснащённая встроенным аппаратным кейлоггером

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

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

В разных статьях авторами предлагаются различные классификации программных кейлоггеров, что неудивительно — единой схемы классификации специалистами до сих пор не выработано.
Мы предлагаем классифицировать программные кейлоггеры по следующим критериям:
— опознавание системами обнаружения угроз (антивирусы, детекторы уязвимостей): опознаваемое или неопознаваемое (т. е. включена сигнатура кейлоггера в базу данных производителя антишпионских программных продуктов или нет);
— наличие дополнительного функционала: является кейлоггер «классическим», т. е. перехватывает только нажатия клавиш клавиатуры и мыши, или имеет дополнительные функции, например, снятие скриншотов;
— тип клавиатурного кейлоггера: высокоуровневый (перехватывающий только введённый в приложение текст) или низкоуровневый (перехватывающий нажатия управляющих и модифицирующих — Ctrl, Alt, Shift — клавиш);
— тип программы: модуль приложения (библиотека), драйвер, служба, «демон» (для операционных систем типа *NIX), часть операционной системы, независимое самостоятельное приложение;
— постоянное место хранения перехваченной информации: локально или удалённое хранилище (сервер и т. д.).

Для каждого типа программы используются разные методы перехвата клавиатурного потока. Важно: распознаётся кейлоггер системами обнаружения угроз или нет: если нет — пользователь НИКОГДА не сможет узнать, что он вводит с клавиатуры или посредством мыши становится известным кому-либо. Остальные критерии можно считать вспомогательными.

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

Это не так. Скрытно присутствующие в системах кейлоггеры не будут определяться в следующих случаях:
— кейлоггеры, разрабатываемые программистами в подразделениях государственных специальных служб для особых целей. Тут возникает интересная коллизия — в «дружественных» разработчикам такого кейлоггера антивирусах и детекторах антишпионского программного обеспечения сигнатуры этого кейлоггера скорее всего не будет, а в антивирусах «недружественных» будет, поэтому одни антивирусы и детекторы вредоносных программ будут определять наличие этого кейлоггера, а другие — нет;
— кейлоггеры, входящие в состав специализированных операционных систем, используемых в особо защищаемых ИТ-инфраструктурах компаний, государственных организаций и технологических производств, а также в оборонных системах. В таких системах кейлоггер — часть комплексной системы ИБ объекта, а не шпионская вредоносная программа. Как правило, такие кейлоггеры являются частью ядра операционной системы и НЕ МОГУТ быть из неё удалены без разрушения структуры операционной системы и, соответственно, нарушения её работоспособности;
— кейлоггеры, разработанные для решения одной, частной задачи хищения конфиденциальной информации с конкретного компьютера. Такой кейлоггер просто не успевает попасть в базу данных антивируса или детектора шпионских программ, потому что быстро и скрытно выполняет поставленную задачу, после чего самоуничтожается. Это самый опасный случай использования кейлоггера, учитывая, что он может быть создан путём модификации исходных кодов, которые в огромном количестве выложены в интернете, иногда даже в качестве учебного примера;
— кейлоггеры, встроенные в корпоративные программные продукты в области информационной безопасности. К сожалению, из этого правила есть исключения — кейлоггер, входящий в состав программного комплекса контроля работы пользователей StaffCop Enterprise, определяется как шпионская угроза большинством имеющихся антивирусов. К счастью, есть способы обхода этого ограничения — можно добавить угрозу StaffCop по её имени или по имени процесса/файла программ StaffCop.

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

Классификации кейлоггеров:

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

Классификация клавиатурных кейлоггеров по уровню (высокоуровневый или низкоуровневый) проста. Высокоуровневый кейлоггер фиксирует введённый пользователем в приложение текст, т.е сохраняется только результат работы пользователя. Низкоуровневый — позволяет сохранять ещё и последовательность создания этого результата, т. е. распознаются нажатия функциональных, управляющих и модифицирующих клавиш — таких, как Ctrl, Alt, Shift.

Классификация кейлоггеров по месту хранения перехваченной информации: кейлоггер может хранить перехваченную информацию либо локально (на том же самом компьютере, обычно местом хранения является файл на диске) или передавать её на сервер. Следует отметить, что самым разумным будет сочетать оба метода: если сервер, на который кейлоггер отправляет информацию, доступен, то перехваченная информация отправляется периодически, через некоторый интервал времени, если нет — сохраняется локально.

Для того чтобы понять классификацию кейлоггеров в зависимости от типа программы, необходим экскурс по структуре операционной системы. Сделаем это на основе архитектуры 32-битной системы Microsoft Windows, именно эта архитектура стала основой архитектуры современных операционных систем, как 64-битных, так и 32-битных. Широко распространено заблуждение, что 32-битные системы уже ушли в прошлое: на самом деле, 32-битные системы широко используются в качестве систем управления технологическими объектами (станками, системами управления сигнализациями и т. д.): в условиях ограниченных ресурсов 32-битные системы работают гораздо быстрее, нежели 64-битные. Это хорошо понимают в Microsoft: даже самая последняя пользовательская ОС Windows от Microsoft — Windows 10 — сохраняет 32-битную версию, а версия Windows 10 для «Интернета вещей» — Windows 10 IoT — изначально разрабатывалась как 32-битная, и только «по многочисленным просьбам пользователей» была выпущена 64-битная версия, причём 32-битная версия Windows 10 IoT не была снята с поставки.

На рисунке показана структура 32-битной версии операционной системы Microsoft Windows в упрощённом виде.

Структура 32-битной операционной системы Microsoft Windows

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

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

Первая разновидность кейлоггеров по типу программы — это кейлоггер, являющийся либо отдельным приложением (т. е. приложением, выполняющим исключительно функцию кейлоггера), либо модуль (библиотека) приложения более высокого уровня. Расположение такого кейлоггера в пространстве операционной системы Windows показано на иллюстрации.

Кейлоггер – отдельное приложение или модуль (библиотека) приложения более высокого уровня

Такие кейлоггеры являются аналогами аппаратных кейлоггеров, только с более расширенными функциями. Они практически безопасны:
— если кейлоггер — отдельное приложение, оно легко обнаруживается пользователем, так как запускается из автозагрузки и не может быть выгружено только в том случае, если запущено с правами администратора;
— если кейлоггер — часть приложения более высокого уровня (например, ERP-системы) — внутренний модуль или библиотека, то информация о нажатиях клавиш, скриншотах и т. д. собирается только во время работы пользователя в этой системе. Достаточно свернуть окно программного комплекса, в состав которого входит кейлоггер (а тем более выйти из приложения) — и кейлоггер деактивируется, соответственно, информация перестаёт собираться.

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

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

Вторая разновидность кейлоггеров по типу программы — это кейлоггер, устанавливаемый как служба в операционной системе Windows. К этому типу относятся кейлоггеры-«демоны» в ОС семейства *NIX.

Это «хитрая» разновидность кейлоггеров, так как она не привязывается к какому-либо приложению, устанавливается в систему, фактически становясь её частью, пусть и в пользовательском пространстве (режиме) ОС, и может быть не видна пользователю, так как пользовательского интерфейса, по сути, не имеет

Кейлоггер – служба в ОС Windows

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

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

Опасной опасна установка нелицензионного ПО в корпоративных сетях. Системным администраторам и администраторам информационной безопасности следует строго следить за программным обеспечением, которое устанавливают пользователи: лучше вообще запретить пользователям установку программного обеспечения. «Особо продвинутые» пользователи применяют портируемое (portable) ПО, распространяемое на съёмных носителях — оно не требует установки и является нелицензионным. Для отслеживания таких инцидентов применяйте специализированное ПО, которое контролирует запуск приложений на рабочей станции пользователя. Хорошей практикой является применение программного комплекса контроля работы пользователей StaffCop Enterprise, который позволяет запрещать запуск пользователем программы по имени исполняемого файла и позволяет блокировать применение на рабочих станциях съёмных USB-носителей и компакт-дисков — что не позволит пользователю вообще перенести на свою рабочую станцию портируемое программное обеспечение.

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

Кейлоггер-драйвер

Кейлоггер-драйвер разрабатывается как драйвер устройства, и устанавливается специальным приложением — установщиком драйверов, становясь частью системы драйверов ОС. Существует два варианта установки кейлоггер-драйвера в операционную систему:
— он устанавливается как драйвер физической клавиатуры: в этом случае кейлоггер-драйвер подменяет собой стандартный драйвер клавиатуры. Способ разработки драйвера-кейлоггера и его установки хорош своей простотой: методика разработки и установки драйверов физических устройств описана в системной технической документации на операционную систему. Серьёзный недостаток кейлоггер-драйвера — различные модели физических клавиатур, требующие установки специализированных драйверов. Возможен вариант, когда при установке кейлоггер-драйвера устройства — физической клавиатуры — пропадают определённые функции клавиатуры (подсветка, использование нестандартных специальных клавиш и т. д.);
— он устанавливается как драйвер виртуальной клавиатуры, встраиваясь в цепочку драйверов как дополнение основного драйвера клавиатуры: в этом случае при нажатии клавиши сначала отрабатывает имеющийся драйвер клавиатуры (стандартный или нестандартный), а потом результат нажатия передаётся кейлоггер-драйверу. Бывает и наоборот: сначала отрабатывает кейлоггер-драйвер виртуальной клавиатуры, а потом последовательность нажатий уже передаётся драйверу физической клавиатуры (стандартному или нестандартному). Такой способ гораздо сложнее, надо учитывать совместную работу всей цепочки драйверов. Разработка и последующая установка драйверов виртуальных устройств редко описана в системной технической документации: разработчикам как кейлоггер-драйвера, так и приложения его установки приходится основываться на собственном опыте и проводимых экспериментах.

Обнаружение и, если необходимо, удаление установленных кейлоггер-драйверов затруднено двумя факторами:
— как правило, системное имя кейлоггер-драйвера — нестандартное, понять по имени, что это кейлоггер-драйвер, практически невозможно. Поэтому для его обнаружения требуется, чтобы сигнатура кейлоггер-драйвера содержалась в базе данных антивируса или антишпионского программного обеспечения;
— кейлоггер-драйвер достаточно «прочно» укоренён в системе драйверов операционной системы, является нестандартным драйвером, поэтому при его удалении следует «бережно» относиться к цепочке драйверов, в которую он встроен. Разрыв цепочки драйверов может привести к краху операционной системы — BSOD в Windows или «Kernel Panic» в *NIX-системах.

Кейлоггеры, интегрированные в ядро операционной системы, применяются только с двумя целями:
— когда разрабатывается специализированная версия операционной системы, предназначенная для работы в условиях необходимости особой защиты информации. Это специализированные защищённые информационные системы и базы данных, а также защищённые системы управления технологическими системами и производствами (оборонные производства, системы управления атомными электростанциями и т. д.);
— в том случае, когда запланирована закладка «чёрных ходов» («бэкдоров») в выпускаемые на рынок или собираемые ограниченным тиражом выпуски операционных систем, которые предполагается использовать в будущем для противозаконного хищения информации.

Кейлоггер, интегрированный в ядро операционной системы

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

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

Говорить о допустимости и законности акустических кейлоггеров не имеет никакого смысла: как было сказано изначально, Уголовным кодексом Российской Федерации вообще запрещён свободный оборот таких устройств, и их использование частным лицом или негосударственной организацией является уголовным преступлением.

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

Недопустимым и противоречащим законодательству Российской Федерации является установка кейлоггера без согласия владельца (администратора информационной безопасности, системного администратора) информационной системы или владельца компьютера. Такое использование кейлоггеров (без разницы, программных модулей или аппаратных устройств) квалифицируется как использование специальной техники, предназначенной для несанкционированного получения информации, и является серьёзным инцидентом информационной безопасности.

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