Введение
Запись нажатий клавиш на клавиатуре — это процесс регистрации (логирования) нажатых клавиш, как правило, скрытно, так что пользователь клавиатуры не осознает, что его действия отслеживаются. Полученные данные могут быть извлечены лицом, управляющим программой-регистратором. Устройство или программа для записи нажатий клавиш (кейлоггер) может быть как программной, так и аппаратной реализации. Хотя сами программы законны, многие из них разработаны для контроля использования компьютеров работодателями, кейлоггеры чаще всего применяются для кражи паролей и другой конфиденциальной информации. Запись нажатий клавиш также может использоваться для мониторинга активности детей в школах или дома, а также правоохранительными органами для расследования злоупотреблений. Кроме того, кейлоггинг может применяться для изучения динамики нажатия клавиш или взаимодействия человека с компьютером. Существует множество методов кейлоггинга, от аппаратных и программных решений до акустического криптоанализа.
Keystroke logging, often referred to as keylogging or keyboard capturing, is the action of recording (logging) the keys struck on a keyboard, typically covertly, so that a person using the keyboard is unaware that their actions are being monitored. Data can then be retrieved by the person operating the logging program. A keystroke recorder or keylogger can be either software or hardware. While the programs themselves are legal, with many designed to allow employers to oversee the use of their computers, keyloggers are most often used for stealing passwords and other confidential information. Keystroke logging can also be utilized to monitor activities of children in schools or at home and by law enforcement officials to investigate malicious usage. Keylogging can also be used to study keystroke dynamics or human computer interaction. Numerous keylogging methods exist, ranging from hardware and software based approaches to acoustic cryptanalysis.
История
В середине 1970-х годов Советский Союз разработал и внедрил аппаратный кейлоггер, предназначенный для перехвата данных с пишущих машин. Устройство, получившее название "жук Selectric", измеряло движения печатной головки пишущих машин IBM Selectric, улавливая незначительные изменения регионального магнитного поля, вызванные вращением и перемещением печатной головки. Один из первых кейлоггеров был написан Перри Киволовицем и опубликован 17 ноября 1983 года в новостной группе Usenet net.unix-wizards и net.sources. Эта публикация, по всей видимости, послужила стимулом для ограничения доступа к /dev/kmem в системах Unix. Программа, работавшая в пользовательском режиме, определяла и копировала списки символов (клиентов) по мере их формирования в ядре Unix. В 1970-х годах шпионы установили устройства для записи нажатий клавиш в зданиях посольства и консульства США в Москве. Они устанавливали жучки в электрические пишущие машины Selectric II и Selectric III. Советские посольства использовали механические, а не электрические пишущие машины для работы с секретной информацией – вероятно, из-за их неуязвимости к подобным устройствам.
Связанные особенности
Программные кейлоггеры могут быть дополнены функциями, позволяющими перехватывать информацию пользователя, не полагаясь исключительно на нажатия клавиш клавиатуры. Некоторые из этих функций включают:
Ведение журнала содержимого буфера обмена. Любая информация, скопированная в буфер обмена, может быть перехвачена программой. Запись экрана. Скриншоты используются для захвата графической информации. Приложения с функцией записи экрана могут делать скриншоты всего экрана, отдельного приложения или даже области вокруг курсора мыши. Скриншоты могут создаваться периодически или в ответ на действия пользователя (например, при щелчке мышью). Запись экрана может использоваться для перехвата данных, вводимых с помощью экранной клавиатуры. Программный перехват текста в элементах управления. API Microsoft Windows позволяет программам запрашивать текстовое значение некоторых элементов управления. Это означает, что некоторые пароли могут быть перехвачены, даже если они скрыты символами-масками (обычно звездочками). Запись всех открываемых программ, папок и окон, включая скриншоты посещаемых веб-сайтов. Запись поисковых запросов, переписки в мгновенных мессенджерах, загрузок по FTP и других действий в интернете (включая используемую полосу пропускания).
Аппаратные регистраторы ключей
Аппаратные кейлоггеры не зависят от установленного программного обеспечения, поскольку функционируют на аппаратном уровне компьютерной системы. Основанные на прошивке: прошивка уровня BIOS, обрабатывающая события клавиатуры, может быть модифицирована для записи этих событий в процессе их обработки. Требуется физический и/или root-доступ к машине, а программное обеспечение, загружаемое в BIOS, должно быть разработано для конкретного оборудования, на котором оно будет работать. Аппаратные кейлоггеры для клавиатур: используются для регистрации нажатий клавиш с помощью аппаратной схемы, подключенной между клавиатурой компьютера и самим компьютером, как правило, непосредственно к кабельному разъему клавиатуры. Существуют также аппаратные кейлоггеры на основе USB-коннектора, а также для ноутбуков (Mini PCI-карта вставляется в слот расширения ноутбука). Более скрытные реализации могут быть установлены или встроены в стандартные клавиатуры, чтобы устройство не было видно на внешнем кабеле. Оба типа регистрируют всю активность клавиатуры во внутренней памяти, к которой можно получить доступ впоследствии, например, введя секретную последовательность клавиш. Аппаратные кейлоггеры не требуют установки какого-либо программного обеспечения на компьютере целевого пользователя, следовательно, не влияют на работу компьютера и менее подвержены обнаружению программным обеспечением, работающим на нем. Однако, его физическое присутствие может быть обнаружено, например, при установке вне корпуса в качестве встроенного устройства между компьютером и клавиатурой. Некоторые из этих реализаций могут управляться и контролироваться удаленно с использованием стандарта беспроводной связи. Прослушиватели беспроводных клавиатур и мышей: эти пассивные устройства собирают пакеты данных, передаваемые от беспроводной клавиатуры и ее приемника. Поскольку для защиты беспроводной связи между устройствами может использоваться шифрование, его может потребоваться взломать заранее, чтобы прочитать передаваемые данные. В некоторых случаях это позволяет злоумышленнику вводить произвольные команды в компьютер жертвы. Накладки на клавиатуру: злоумышленники известны использованием накладок на клавиатуру в банкоматах для перехвата PIN-кодов. Каждое нажатие клавиши регистрируется клавиатурой банкомата, а также клавиатурой злоумышленника, расположенной поверх нее. Устройство разработано таким образом, чтобы выглядеть как неотъемлемая часть банкомата, чтобы клиенты банка не подозревали о его присутствии. Акустические кейлоггеры: акустический криптоанализ может использоваться для мониторинга звуков, издаваемых при наборе текста на компьютере. Каждая клавиша клавиатуры создает слегка отличающуюся акустическую сигнатуру при нажатии. Затем можно определить, какая акустическая сигнатура нажатия клавиши соответствует определенному символу клавиатуры, используя статистические методы, такие как частотный анализ. Частота повторения схожих акустических сигнатур нажатий клавиш, интервалы времени между различными нажатиями и другая контекстная информация, такая как вероятный язык ввода, используются в этом анализе для сопоставления звуков с буквами. Для получения достаточного объема выборки требуется достаточно длительная запись (1000 или более нажатий клавиш). Электромагнитное излучение: возможно перехватить электромагнитное излучение проводной клавиатуры с расстояния до без физического подключения к ней. В 2009 году швейцарские исследователи протестировали 11 различных USB, PS/2 и ноутбучных клавиатур в полубезэховой камере и обнаружили, что все они уязвимы, главным образом из-за высокой стоимости добавления экранирования в процессе производства. Исследователи использовали широкополосный приемник для настройки на конкретную частоту излучения, испускаемого клавиатурами. Видеонаблюдение: Видеонаблюдение, хотя и не является кейлоггером в классическом понимании, тем не менее, является методом, который можно использовать для перехвата паролей или PIN-кодов. Стратегически расположенная камера, например, скрытая камера наблюдения в банкомате, может позволить злоумышленнику наблюдать за вводом PIN-кода или пароля. Физические улики: для клавиатуры, используемой только для ввода кода безопасности, на клавишах, которые фактически используются, будут следы использования в виде отпечатков пальцев. Пароль из четырех цифр, если известны эти четыре цифры, сокращается с 10 000 возможностей до всего 24 (104 против 4! [факториал 4]). Эти данные можно использовать в дальнейшем для ручной "атаки грубой силой". Датчики смартфонов: исследователи продемонстрировали, что можно перехватить нажатия клавиш на близлежащих компьютерных клавиатурах, используя только акселерометр, встроенный в смартфоны. Атака становится возможной путем размещения смартфона рядом с клавиатурой на одном столе. Акселерометр смартфона может затем обнаруживать вибрации, создаваемые при наборе текста на клавиатуре, и преобразовывать этот необработанный сигнал акселерометра в читаемые предложения с точностью до 80%. Техника включает в себя работу с вероятностями путем обнаружения пар нажатий клавиш, а не отдельных клавиш. Она моделирует "события клавиатуры" парами, а затем определяет, находятся ли нажатые клавиши на левой или правой стороне клавиатуры и расположены ли они близко друг к другу или далеко друг от друга на QWERTY-клавиатуре. После этого она сравнивает результаты с предварительно загруженным словарем, в котором каждое слово разбито таким же образом. Аналогичные методы также оказались эффективными для перехвата нажатий клавиш на сенсорных клавиатурах, в некоторых случаях в сочетании с гироскопом или датчиком освещенности. Кейлоггеры, основанные на движениях тела: кейлоггеры, основанные на движениях тела, отслеживают и анализируют движения тела для определения, какие клавиши были нажаты. Злоумышленнику необходимо знать раскладку отслеживаемой клавиатуры, чтобы сопоставить движения тела с положением клавиш. Отслеживание звуковых сигналов пользовательского интерфейса (например, звука, который устройство издает, чтобы сообщить пользователю о регистрации нажатия клавиши) может упростить алгоритмы кейлоггинга на основе движений тела, поскольку он отмечает момент нажатия клавиши.
Разломы
Написание простых программных приложений для перехвата нажатий клавиш может быть тривиальным, и, как и любая вредоносная компьютерная программа, может распространяться как троянский конь или как часть вируса. Однако для злоумышленника нетривиальной задачей является незаметная установка скрытого перехватчика нажатий клавиш и скачивание записанных данных без отслеживания. Злоумышленник, вручную подключающийся к целевой машине для загрузки записанных нажатий клавиш, рискует быть обнаруженным. Троян, отправляющий перехваченные данные на фиксированный адрес электронной почты или IP-адрес, рискует раскрыть атакующего.
Троянцы
Исследователи Адам Янг и Моти Юнг обсудили несколько способов передачи информации о нажатиях клавиш. Они представили атаку с возможностью отрицания при похищении пароля, при которой троян для записи нажатий клавиш устанавливается с помощью вируса или червя. Злоумышленник, обнаруженный с вирусом или червём, может заявить, что он является жертвой. Криптотроян асимметрично шифрует похищенные пары логин/пароль, используя открытый ключ автора трояна, и скрытно передает полученный шифротекст. Они отметили, что шифротекст может быть стеганографически закодирован и опубликован на общедоступном форуме, таком как Usenet.
Использование полицией
В 2000 году ФБР использовало FlashCrest iSpy для получения PGP-парольной фразы Никодемо Скарфо-младшего, сына босса мафии Никодемо Скарфо. Также в 2000 году ФБР обманным путем заманило двух подозреваемых в киберпреступлениях россиян в США, используя сложную схему, и перехватило их имена пользователей и пароли с помощью кейлоггера, тайно установленного на компьютере, который они использовали для доступа к своим системам в России. Затем ФБР использовало эти учетные данные для доступа к компьютерам подозреваемых в России и сбора доказательств для их судебного преследования.
Контрмеры
Эффективность контрмер варьируется, поскольку кейлоггеры используют разнообразные методы для перехвата данных, и контрмеры должны быть эффективны против конкретного метода перехвата. В случае кейлоггинга в Windows 10 от Microsoft, изменение определенных настроек конфиденциальности может его отключить. Экранная клавиатура будет эффективна против аппаратных кейлоггеров; маскировка позволит нейтрализовать некоторые – но не все – экранные кейлоггеры. Антишпионское приложение, способное отключать только кейлоггеры, основанные на перехватах (хуках), будет неэффективно против кейлоггеров, работающих на уровне ядра. Авторы программ-кейлоггеров могут обновлять код своих программ, чтобы адаптироваться к контрмерам, которые оказались эффективными против них.
Анти-клавиаторы
Анти-кейлоггер – это программное обеспечение, разработанное специально для обнаружения кейлоггеров на компьютере. Обычно оно сравнивает все файлы на компьютере с базой данных известных кейлоггеров, выявляя сходства, которые могут указывать на присутствие скрытого кейлоггера. Поскольку анти-кейлоггеры созданы именно для обнаружения кейлоггеров, они потенциально могут быть эффективнее, чем традиционное антивирусное программное обеспечение; некоторые антивирусы не классифицируют кейлоггеры как вредоносное ПО, так как в определенных ситуациях кейлоггер может рассматриваться как легитимное программное обеспечение.
Живой CD/USB
Перезагрузка компьютера с помощью Live CD или Live USB с защитой от записи может быть эффективной мерой противодействия программным кейлоггерам, если CD не содержит вредоносного ПО, а операционная система на нем защищена и полностью обновлена, чтобы исключить заражение сразу после запуска. Загрузка другой операционной системы не влияет на работу аппаратного или BIOS-кейлоггера.
Анти-шпионские программы / антивирусные программы
Многие антишпионские приложения способны обнаруживать некоторые программные кейлоггеры и помещать их в карантин, отключать или удалять. Однако, поскольку многие программы для регистрации нажатий клавиш являются легитимным программным обеспечением в определенных ситуациях, антишпионские программы часто не классифицируют их как шпионское ПО или вирусы. Эти приложения могут обнаруживать программные кейлоггеры на основе шаблонов в исполняемом коде, эвристического анализа и характерного поведения кейлоггеров (например, использования перехватчиков и определенных API). Ни одно антишпионское приложение не может быть на 100% эффективным против всех кейлоггеров. Антишпионское программное обеспечение бессильно против не программных кейлоггеров (например, аппаратные кейлоггеры, подключенные к клавиатуре, всегда будут перехватывать нажатия клавиш до любого антишпионского приложения). Конкретный метод, используемый антишпионским приложением, влияет на его потенциальную эффективность против программных кейлоггеров. Как правило, антишпионские приложения с более высокими правами доступа смогут нейтрализовать кейлоггеры с более низкими правами доступа. Например, антишпионское приложение, основанное на перехватчиках, не сможет нейтрализовать кейлоггер, работающий на уровне ядра (поскольку кейлоггер будет получать сообщения о нажатиях клавиш раньше антишпионского приложения), но оно потенциально может нейтрализовать кейлоггеры, использующие перехватчики и API.
Мониторы сети
Сетевые мониторы (также известные как обратные брандмауэры) могут использоваться для оповещения пользователя каждый раз, когда приложение пытается установить сетевое соединение. Это даёт пользователю возможность предотвратить отправку перехващенных данных кейлоггером на удаленный сервер.
Программы автоматического заполнения форм
Программы автоматического заполнения форм могут предотвратить перехват нажатий клавиш (кейлоггинг), устраняя необходимость для пользователя вводить личные данные и пароли с клавиатуры. Заполнители форм в основном предназначены для веб-браузеров, чтобы заполнять страницы оформления заказов и осуществлять вход пользователей в их учетные записи. После того, как информация об учетной записи пользователя и кредитной карте будет введена в программу, она будет автоматически вводиться в формы без использования клавиатуры или буфера обмена, тем самым снижая вероятность записи конфиденциальных данных. Однако, лицо, имеющее физический доступ к компьютеру, все еще может установить программное обеспечение, способное перехватывать эту информацию в других частях операционной системы или во время передачи по сети. (Transport Layer Security (TLS) снижает риск перехвата данных при передаче сетевыми анализаторами и прокси-инструментами.)
Одноразовые пароли (OTP)
Использование одноразовых паролей может предотвратить несанкционированный доступ к учетной записи, если данные для входа были скомпрометированы злоумышленником через кейлоггер, так как каждый пароль становится недействительным сразу после использования. Это решение может быть полезно тем, кто пользуется общедоступным компьютером. Однако, злоумышленник, получивший удаленный доступ к такому компьютеру, может просто дождаться, пока жертва введет свои учетные данные, и затем совершить несанкционированные транзакции от ее имени во время активной сессии. Другой распространенный способ защиты кодов доступа от кражи с помощью программ-шпионов, регистрирующих нажатия клавиш, – это требовать от пользователей ввода нескольких случайно выбранных символов из их кода аутентификации. Например, их могут попросить ввести второй, пятый и восьмой символы. Даже если кто-то наблюдает за пользователем или использует программу-шпион, регистрирующую нажатия клавиш, он получит лишь несколько символов кода, не зная их расположения.
Токены безопасности
Использование смарт-карт или других токенов безопасности может повысить уровень защиты от атак повторного воспроизведения даже в случае успешной keylogging-атаки, поскольку для доступа к защищенной информации потребуется как (аппаратный) токен безопасности, так и соответствующий пароль или парольная фраза. Знание последовательности нажатий клавиш, действий мыши, содержимого экрана, буфера обмена и т.п., зафиксированных на одном компьютере, не позволит злоумышленнику получить доступ к защищенному ресурсу впоследствии. Некоторые токены безопасности функционируют как аппаратная реализация системы одноразовых паролей, а другие используют криптографическую аутентификацию по принципу «вызов-ответ», что повышает безопасность аналогично использованию одноразовых паролей. Устройства для чтения смарт-карт и связанные с ними клавиатуры для ввода PIN-кода могут быть уязвимы к перехвату нажатий клавиш в результате так называемой атаки на цепочку поставок, когда злоумышленник заменяет оригинальное устройство чтения карт/клавиатуру для ввода PIN-кода на поддельное, записывающее PIN-код пользователя.
Клавиатуры на экране
Большинство экранных клавиатур (например, экранная клавиатура, поставляемая с Windows XP) отправляют стандартные сообщения о событиях клавиатуры целевой программе для ввода текста. Программные кейлоггеры могут перехватывать эти вводимые символы, передаваемые из одной программы в другую.
Программное обеспечение для помех нажатием клавиши
Также доступно программное обеспечение для создания помех при вводе с клавиатуры. Эти программы пытаются обмануть кейлоггеры, генерируя случайные нажатия клавиш, однако это лишь приводит к тому, что кейлоггер записывает избыточную информацию. Перед злоумышленником стоит задача извлечения интересующих нажатий клавиш. Уровень безопасности этого механизма, и в частности, его устойчивость к криптоанализу, остаётся неясным.
Распознавание речи
Как и экранные клавиатуры, программное обеспечение для преобразования речи в текст также может быть использовано для защиты от кейлоггеров, поскольку не требует ввода с клавиатуры или движений мыши. Наиболее уязвимым местом при использовании программного обеспечения для распознавания голоса может быть способ передачи распознанного текста в целевое приложение после обработки речи пользователя.
Распознавание почерка и жестов мыши
Многие КПК и в последнее время планшетные ПК уже успешно преобразуют движения пера (также называемого стилусом) на сенсорных экранах в текст, понятный компьютеру. Жесты мышью используют этот же принцип, заменяя стилус движениями мыши. Программы для распознавания жестов мышью преобразуют эти движения в действия, определяемые пользователем, например, ввод текста. Подобным образом, графические планшеты и световые перья также могут использоваться для ввода этих жестов, однако они становятся менее популярными. К этой технике применима та же потенциальная проблема, что и к распознаванию речи.
Макрорасширители/записыватели
С помощью многих программ, кажущийся бессмысленным текст можно расширить до осмысленного, и в большинстве случаев с учетом контекста, например, "en.wikipedia.org" может быть автоматически дополнено при активном окне веб-браузера. Главный недостаток этой техники заключается в том, что эти программы отправляют нажатия клавиш непосредственно в целевую программу. Однако этого можно избежать, используя описанную ниже технику "чередования", то есть отправку кликов мыши в неактивные области целевой программы, ввод бессмысленных символов, повторную отправку клика мыши в целевую область (например, в поле пароля) и переключение между ними.
Обманчивый шрифт
Переключение между вводом учетных данных и вводом символов в другом месте в активном окне может привести к записи кейлоггером избыточной информации, которую злоумышленник может легко отфильтровать. Кроме того, пользователь может перемещать курсор мыши во время набора текста, что приведет к искажению последовательности зарегистрированных нажатий клавиш, например, вводя пароль, начиная с последней буквы, а затем перемещая курсор мышью для каждой последующей буквы. Наконец, можно использовать контекстные меню для удаления, вырезания, копирования и вставки фрагментов вводимого текста без использования клавиатуры. Злоумышленник, перехвативший лишь часть пароля, получит большее пространство для поиска при выполнении атаки полным перебором. Другая схожая техника основана на том, что любой выделенный фрагмент текста заменяется следующим введенным символом. Например, если пароль – "secret", можно ввести "s", затем произвольные символы "asdf". Эти символы можно выделить мышью, а затем ввести следующий символ пароля – "e", который заменит "asdf". Эти методы ошибочно полагают, что программное обеспечение для регистрации нажатий клавиш не может напрямую отслеживать содержимое буфера обмена, выделенный текст в форме или делать скриншот при каждом нажатии клавиши или щелчке мыши. Однако они могут оказаться эффективными против некоторых аппаратных кейлоггеров.