Софт-Портал

клавиатурный перехватчик

Рейтинг: 4.2/5.0 (603 проголосовавших)

Описание

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

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

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

Клавиатурный шпион этого типа может быть построен по одной из двух схем:

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

В момент загрузки драйвер должен подключиться к стеку клавиатурного драйвера посредством функций IoCreateDevice и IoAttachDevice. В большинстве известных реализаций фильтр подключается к стеку устройства «\\Device\\KeyboardClass0», являющегося драйвером класса и реализующего общую функциональность для клавиатур различных типов (рис. 1).

Для клавиатурного шпиона будут представлять интерес только прерывания типа IRP_MJ_READ, поскольку на основе их анализа можно получить коды клавиш. Источником этих IRP-запросов является процесс csrss.exe, а точнее — принадлежащий этому процессу поток необработанного ввода RawInputThread. Посылаемое этим потоком прерывание сначала попадает к драйверу-фильтру шпиона (шаг 1), который устанавливает свой обработчик завершения при помощи функции IoSetCompletionRoutine и передает IRP драйверу Kbdclass (шаг 2). Тот, в свою очередь, помечает IRP как ожидающий завершения и ставит в очередь. При возникновении клавиатурных событий Kbdclass извлекает из очереди ожидающий завершения IRP, вносит в его буфер информацию о нажатых клавишах и завершает IRP. А поскольку в IRP установлен адрес обработчика завершения, то будет произведен вызов этого обработчика (шаг 3). Обработчик может проанализировать содержимое буфера и передать содержащуюся там информацию системе протоколирования (шаг 4). Далее IRP возвращается в поток RawInputThread, а затем весь процесс повторяется. Естественно, что наличие корректно написанного драйвера-фильтра никак не сказывается на работе приложений и обеспечивает глобальный перехват клавиатурного ввода.

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

Подмена драйвера клавиатуры

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

Клавиатурный шпион на базе руткит-технологии в UserMode

Принцип действия такого клавиатурного шпиона основан на перехвате ряда функций USER32.DLL для мониторинга их вызовов. Данные вредоносные программы пока не получили особого распространения, но это только вопрос времени. Опасность применения руткит-технологии в клавиатурном шпионе объясняется тем, что, во-первых, многие антикейлоггеры не рассчитаны на поиск шпионов такого типа и не способны им противодействовать, а во-вторых, антируткиты часто не проверяют перехваты функций библиотеки user32.dll.

Принцип работы шпиона достаточно прост: при помощи любой из известных руткит-технологий производится перехват одной или нескольких функций, позволяющих получить контроль над вводимой с клавиатуры информацией. Самым простым является перехват функций GetMessage и PeekMessage (рис. 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 позволяет отслеживать создание окон.
Клавиатурный шпион на базе руткит-технологии в KernelMode

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

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

  • перехват SYSCALL и INT 2E;
  • перехват функции с подменой адреса в соответствующей ячейке таблицы KeServiceDescriptorTableShadow. Единственной сложностью для создателя подобного шпиона является поиск этой таблицы, которая не экспортируется ядром и не документирована. Однако известны пути преодоления этой проблемы, а средства для этого можно найти в Интернете;
  • модификация машинного кода win32k.sys. Для этого тоже необходим поиск таблицы KeServiceDescriptorTableShadow. При этом возможна интересная ситуация: функция может быть уже перехвачена (например, антикейлоггером), и тогда будет произведена модификация машинного кода перехватчика, что еще больше усложнит обнаружение шпиона.

Алгоритм работы шпиона весьма прост. Приложение вызывает функцию библиотеки user32.dll (шаг 1; в качестве примера рассмотрим вызов PeekMessage). Функция PeekMessage в user32.dll по своей сути является переходником, а в конечном счете при помощи SYSCALL в Windows XP или INT 2E в Windows NT и Windows 2000 будет произведен вызов функции ядра (шаг 2). Этот вызов будет перехвачен шпионом (местоположение перехватчика зависит от методики перехвата). Перехватчик, в свою очередь, вызовет реальную функцию (шаг 3) и проанализирует возвращенные ей результаты. В случае успешного извлечения из очереди сообщения нужного шпиону типа он произведет его анализ и за-протоколирует результаты (шаг 4). Работа шпиона абсолютно незаметна для всех приложений, и обнаружить его можно только специальными программами, производящими поиск перехватов и модификации машинного кода модулей ядра.

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

  • следует акцентировать внимание на перехватах функций user32.dll;
  • необходим контроль штатных драйверов по каталогу Microsoft для своевременного обнаружения подмены драйвера;
  • нужно производить анализ на предмет наличия KernelMode-перехватов и модификации машинного кода win32k.sys при помощи антируткитов;
  • вследствие того что практически любой клавиатурный шпион сохраняет протоколы, мониторинг файловых операций в процессе активного ввода информации с клавиатуры позволяет обнаружить кейлоггер почти любого типа. Исключение составляют специализированные программы, протоколирующие ввод только в определенных приложениях или в заданных окнах, например в окне ввода пароля.
Аппаратные клавиатурные шпионы

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

Рис. 4 Возможные места аппаратного перехвата вводимой информации

1. Аппаратная закладка внутри клавиатуры

В любой клавиатуре обычно бывает много полостей, размер которых достаточен для размещения небольшой платы. Питание устройства и съем информации может производиться путем непосредственного подключения к печатной плате контроллера клавиатуры. Аппаратная закладка может быть установлена вручную или промышленным способом. Например, на сайте http://www.keyghost.com можно увидеть рекламу клавиатур со встроенным аппаратным кейлоггером.

Методика противодействия. вскрытие клавиатуры и ее проверка на предмет наличия посторонних электронных узлов с последующим пломбированием корпуса клавиатуры при помощи пломбира или стикера.

2. Считывание данных с кабеля клавиатуры бесконтактным методом

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

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

3. Включение устройства в разрыв кабеля

Клавиатурные шпионы данного типа являются самыми распространенными и их легко как установить, так и обнаружить. Аппаратный кейлоггер выполняется в виде небольшого устройства, которое включается в PS/2- или USB-разъем компьютера, а клавиатура включается в разъем на корпусе кейлоггера. Для выполнения подобной операции не требуется никакой квалификации, причем подключение кейлоггера к USB-клавиатуре может производиться без выключения компьютера. Известен ряд серийно выпускаемых устройств, например KEYKatcher Hardware Keyloggers (http://www.keykatcher.com ), который выпускается в двух видах — для PS/2- и USB-клавиатур. Другой пример — KeyGhost (http://www.keyghost.com ).

Компьютер с установленным аппаратным кейлоггером KeyGhost

Аппаратный кейлоггер может выглядеть как фильтр помех или переходник. Устройство состоит из входных цепей, предназначенных для фильтрации помех и защиты устройства от перенапряжения, микроконтроллера с малым потреблением электроэнергии и Flash-памяти, предназначенной для хранения собираемой информации. Объем Flash-памяти варьируется от 32 Кбайт до десятков мегабайт; типичный объем — от 128 Кбайт до 2 Мбайт.

Рис. 5 Функциональная схема аппаратного кейлоггера

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

4. Аппаратная закладка внутри системного блока

Этот шпион не отличается по принципу действия от устройств типов 1 и 3, но размещается внутри системного блока. Установить его может только специалист, причем для этого потребуется вскрытие корпуса.

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

5. Съем информации на основании анализа акустических и электромагнитных излучений

Уловить электромагнитное излучение клавиатуры на расстоянии весьма сложно (хотя теоретически и возможно), но уловить акустические шумы — на порядок проще. Даже при разговоре по телефону иногда можно отчетливо услышать, как собеседник вводит информацию на клавиатуре. Исследования специалистов в области безопасности показывают, что каждая клавиша при нажатии производит специфический звук, позволяющий идентифицировать нажимаемые клавиши. Наиболее известная работа в этом направлении проведена учеными Калифорнийского университета в Беркли (подробнее см. http://zdnet.ru/?ID=498415 ), которые пришли к выводу, что по обычной звукозаписи можно распознавать от 60 до 96% вводимых символов. Без применения специализированных программ для анализа можно достаточно просто установить количество символов в набираемом пароле и наличие повторяющихся символов.

Методика противодействия: основной способ защиты от утечки информации путем анализа акустических сигналов — постоянный и планомерный инструктаж персонала.

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

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

клавиатурный перехватчик:

  • скачать
  • скачать
  • Другие статьи, обзоры программ, новости

    Перехват клавиатуры (Установка дополнительного обработчика клавиатурных сообщений с помощью функции SetWindowsHookEx)

    Перехват клавиатуры (Установка дополнительного обработчика клавиатурных сообщений с помощью функции SetWindowsHookEx) / Система / Visual C++

    Перехват клавиатуры ( Установка дополнительного обработчика

    клавиатурных сообщений с помощью функции SetWindowsHookEx )

    Данная статья посвящена перехвату клавиатурных сообщений ( в принципе применима к перехвату

    любых системных сообщений Windows ).

    Предоставленный пример демонстрирует пассивный метод обработки сообщений клавиатуры: т.е.

    нажатые клавиши просто записываются в буффер. К активному методу обработки сообщений клавиатуры

    можно отнести процедуры ,например "СЪЕДАЮЩИЕ" определенные клавиши, как будто они не

    работают. и т.п. // выдумка дело легкое.

    Устанавливать перехватчик клавиатуры в "одно/мульти - Оконных" приложениях вобщем то смысла не

    имеет. В данной статье речь идет о так называемых невидимых приложениях - драйверы клавиатуры и т.д.

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

    ( О вирусах я ничего не говорил )

    Создание каркаса приложения.

    При создании нового проекта выбираем что это будет Win32 Application и называться он будет

    На моем компьютере с установленным Kaspersky Internet Security 2012 периодически появляется всплывающее сообщение Неизвестная программа пытается прехв

    На моем компьютере с установленным Kaspersky Internet Security 2012 периодически появляется всплывающее сообщение "Неизвестная программа пытается прехватить данные, вводимые с клавиатуры (Клавиатурный перехватчик). Файл драйвера: kernel mode memory patch". Что делать? Что такое Клавиатурный перехватчик (Keylogger)

    Если у вас установлен интерактивный режим защиты. и в параметрах Проактивной защиты при обнаружении опасной активности выбрана опция — Запросить действие , то на экране в некоторых случаях может всплывать сообщение о подозрительной активности программы, похожей на действия клавиатурного перехватчика. При этом процесс будет определяться программой как Файл драйвера: kernel mode memory patch .

    Вредоносная программа типа Клавиатурный перехватчик (Keylogger ) может отправлять информацию, набираемую с клавиатуры (логины, пароли, номера кредитных карт), злоумышленнику. Однако перехват нажатий клавиш может использоваться и обычными программами. Часто такой перехват применяется для вызова функций программы из другой программы с помощью "горячих клавиш " (hotkeys ).

    В большинстве случаев действия процесса kernel mode memory patch  не являются вредоносными, поэтому вы можете добавить этот процесс в список исключений из проверки, нажав на ссылку Добавить в исключения в окне сообщения.

    В окне Правило исключения вы найдете информацию о том, что объект kernel mode memory patch. относящийся к типу угроз PDM.keylogger kernel mode memory patch. не будет больше определяться Проактивной защитой как потенциально опасная программа. Для подтверждения согласия на создание этого правила исключения нажмите на кнопку ОК .

    В результате добавления объекта в список исключения на экране всплывет сообщение о том, что процесс с поведением, похожим на PDM.Keylogger. разрешен.

    Как вручную добавить объект kernel mode memory patch в список исключений

    Также вы можете добавить вручную объект kernel mode memory patch в список исключений. Для этого выполните следующие действия:

    Перехватчик клавиатурных нажатий MediaKey

    Перехватчик клавиатурных нажатий MediaKey

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

    Дело в том, что штатное ПО подобных клавиатур, как правило, имеет крайне ограниченную функциональность (например, нельзя переназначить управление на другой проигрыватель). В отличие от альтернативного и гораздо более универсального решения – отечественной разработки Mkey (MediaKey, seriosoft.org). Приложение это представляет собой перехватчик клавиатурных нажатий, которые оно позволяет ассоциировать с конкретными функциями (операциями в окне приложения, командами и т. д.).

    В состав Mkey входят плагины, расширяющие список поддерживаемых устройств

    Причем работает оно (под Windows, включая Windows 7) как со специализированными мультимедиаклавиатурами, так и с обычными средствами ввода, используя сочетания клавиш Ctrl, Winkey, Alt (с различением парных клавиш). Клавиатуры могут подключаться через PS/2 и USB, плюс задействуются устройства через ИК-порт (пульты и подобные контроллеры).

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

    Основной интерфейс лаконичен и прост

    Для этого нужно нажать на кнопку “Добавить”, определить клавишу или сочетание клавиш (нажать их), присвоить этому параметру имя, после чего ассоциировать с одним из указанных в списке действий. В программе есть уже готовые предустановки для управления несколькими мультимедиаплейерами (WinAMP, iTunes, Windows Media Player, Media Player Classic Home Cinema, AIMP и т. д. список постоянно расширяется, в том числе по требованиям пользователей), включая управление звуком, лотком привода, плюс вывод всплывающих окон с названиями треков (если поддерживается плейером).

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

    Mkey поддерживает запись макросов

    Из полезных опций поддерживаются расширенные функции буфера обмена (до 10 независимых буферов), быстрая вставка в текст даты и времени, CD-key (если он разделен тире на части), создание снимков экрана с автосохранением, блокировка системы, быстрое подключение и разрыв сетевого соединения. Есть здесь и дублирование традиционных мультимедиакоманд – например, запуск текстового редактора, веб-браузера, почтового клиента, дополненные внутренними шорткатами под востребованные команды (написать письмо, сохранить документ, открытие веб-браузера с URL из буфера обмена и т. д.). Присутствуют и традиционные кнопки управления электропитанием компьютера. Как видите, функционал уже гораздо шире, чем у стандартных утилит. Но это еще не все.

    В Mkey есть настройка всплывающих окон с несколькими скинами

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

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

    Интерфейс добавления комбинации

    В целом Mkey представляет собой многофункциональное приложение для управления клавиатурными комбинациями под Windows. Оно распространяется как donationware – то есть приложением можно пользоваться бесплатно, однако автор подразумевает, что ему будут жертвовать определенные суммы на развитие проекта (для этого в приложении есть счетчик нажатий на кнопки, и при достижении определенного значения появляется экран-напоминание о возможности пожертвования). Интерфейс этой весьма интересной программы русскоязычный с возможностью переключения на белорусский, украинский и английский.

    Резидентный обработчик клавиатуры (перехват нажатий клавиш и запись в файл) Клавиатурный перехватчик скачать Программирование, Базы данных

    Реферат на тему: Резидентный обработчик клавиатуры (перехват нажатий клавиш и запись в файл)

    Данная программа является шаблоном для резидентных обработчиков прерываний, в частности обработчиков прерываний от клавиатуры, и является огромным полем для творчества. 4. Список используемой литературы П.И.Рудаков, К.Г.Финогенов «Программируем на языке ассемблера IBM PC», Обнинск 1997г. Зубков С.В. «Assembler для DOS, Wi dows и U IX», Москва 2000г. Богумирский Б.С. «Руководство пользователя ПЭВМ», Санкт–Петербург 1994г.

    Программа построена по модульной схеме и имеет шесть различных исполняемых модулей, каждый из которых выполняет определенную работу по мониторингу операций, совершаемых пользователем. Программа имеет два режима работы: обычный (normal) и невидимый (stealth), в который она переходит после первого запуска. Для отслеживания максимального количества объектов программа содержит массу перехватчиков: нажатие клавиш, запуск новых процессов и закрытие текущих, активизация окон, буфер обмена, перехват действий с компакт — диска, клавиатуры, мыши, анализ и запись информации о работе в сети Интернет. Дополнительные перехватчики направлены на расширенное сканирование оболочки и файловой системы и следят за всеми стандартными действиями: созданием и удалением файлов и каталогов, добавлением и удалением сетевых дисков, изменением свойств файлов и принтеров и т.д. Вся информация, собранная Ghost Spy, записывается в файл журнала, который имеет функцию ручной и автоматической отправки по электронной почте. Файл журнала можно зашифровать

    Клавиатурный перехватчик в корпоративной сети

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

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

    2. И если первое реально, то насколько велика вероятность, что пару шишек достанется и разработчику софта?

    ПС: естественно в клиентской части софта сотрудникам не сообщается о том, что ведется подобного рода слежка, функция упомянута только в серверной части (сотрудникам не доступна) и естественно заявлена в качестве функции в описании софта на ресурсе разработчика.

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

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

    Чуть более года назад в нашем журнале уже рассматривались основные принципы работы клавиатурных шпионов, работающих по традиционным схемам в пользовательском режиме (UserMode). Однако существует ряд альтернативных методик для построения весьма эффективных шпионских программ, следящих за клавиатурным вводом и буфером обмена.

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

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

    Клавиатурный шпион этого типа может быть построен по одной из двух схем:

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

    В момент загрузки драйвер должен подключиться к стеку клавиатурного драйвера посредством функций IoCreateDevice и IoAttachDevice. В большинстве известных реализаций фильтр подключается к стеку устройства «\\Device\\KeyboardClass0», являющегося драйвером класса и реализующего общую функциональность для клавиатур различных типов (рис. 1).

    Для клавиатурного шпиона будут представлять интерес только прерывания типа IRP_MJ_READ, поскольку на основе их анализа можно получить коды клавиш. Источником этих IRP-запросов является процесс csrss.exe, а точнее — принадлежащий этому процессу поток необработанного ввода RawInputThread. Посылаемое этим потоком прерывание сначала попадает к драйверу-фильтру шпиона (шаг 1), который устанавливает свой обработчик завершения при помощи функции IoSetCompletionRoutine и передает IRP драйверу Kbdclass (шаг 2). Тот, в свою очередь, помечает IRP как ожидающий завершения и ставит в очередь. При возникновении клавиатурных событий Kbdclass извлекает из очереди ожидающий завершения IRP, вносит в его буфер информацию о нажатых клавишах и завершает IRP. А поскольку в IRP установлен адрес обработчика завершения, то будет произведен вызов этого обработчика (шаг 3). Обработчик может проанализировать содержимое буфера и передать содержащуюся там информацию системе протоколирования (шаг 4). Далее IRP возвращается в поток RawInputThread, а затем весь процесс повторяется. Естественно, что наличие корректно написанного драйвера-фильтра никак не сказывается на работе приложений и обеспечивает глобальный перехват клавиатурного ввода.

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

    Подмена драйвера клавиатуры

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

    Клавиатурный шпион на базе руткит-технологии в UserMode

    Принцип действия такого клавиатурного шпиона основан на перехвате ряда функций USER32.DLL для мониторинга их вызовов. Данные вредоносные программы пока не получили особого распространения, но это только вопрос времени. Опасность применения руткит-технологии в клавиатурном шпионе объясняется тем, что, во-первых, многие антикейлоггеры не рассчитаны на поиск шпионов такого типа и не способны им противодействовать, а во-вторых, антируткиты часто не проверяют перехваты функций библиотеки user32.dll.

    Принцип работы шпиона достаточно прост: при помощи любой из известных руткит-технологий производится перехват одной или нескольких функций, позволяющих получить контроль над вводимой с клавиатуры информацией. Самым простым является перехват функций GetMessage и PeekMessage (рис. 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 позволяет отслеживать создание окон.
    Клавиатурный шпион на базе руткит-технологии в KernelMode

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

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

    • перехват SYSCALL и INT 2E;
    • перехват функции с подменой адреса в соответствующей ячейке таблицы KeServiceDescriptorTableShadow. Единственной сложностью для создателя подобного шпиона является поиск этой таблицы, которая не экспортируется ядром и не документирована. Однако известны пути преодоления этой проблемы, а средства для этого можно найти в Интернете;
    • модификация машинного кода win32k.sys. Для этого тоже необходим поиск таблицы KeServiceDescriptorTableShadow. При этом возможна интересная ситуация: функция может быть уже перехвачена (например, антикейлоггером), и тогда будет произведена модификация машинного кода перехватчика, что еще больше усложнит обнаружение шпиона.

    Алгоритм работы шпиона весьма прост. Приложение вызывает функцию библиотеки user32.dll (шаг 1; в качестве примера рассмотрим вызов PeekMessage). Функция PeekMessage в user32.dll по своей сути является переходником, а в конечном счете при помощи SYSCALL в Windows XP или INT 2E в Windows NT и Windows 2000 будет произведен вызов функции ядра (шаг 2). Этот вызов будет перехвачен шпионом (местоположение перехватчика зависит от методики перехвата). Перехватчик, в свою очередь, вызовет реальную функцию (шаг 3) и проанализирует возвращенные ей результаты. В случае успешного извлечения из очереди сообщения нужного шпиону типа он произведет его анализ и за-протоколирует результаты (шаг 4). Работа шпиона абсолютно незаметна для всех приложений, и обнаружить его можно только специальными программами, производящими поиск перехватов и модификации машинного кода модулей ядра.

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

    • следует акцентировать внимание на перехватах функций user32.dll;
    • необходим контроль штатных драйверов по каталогу Microsoft для своевременного обнаружения подмены драйвера;
    • нужно производить анализ на предмет наличия KernelMode-перехватов и модификации машинного кода win32k.sys при помощи антируткитов;
    • вследствие того что практически любой клавиатурный шпион сохраняет протоколы, мониторинг файловых операций в процессе активного ввода информации с клавиатуры позволяет обнаружить кейлоггер почти любого типа. Исключение составляют специализированные программы, протоколирующие ввод только в определенных приложениях или в заданных окнах, например в окне ввода пароля.
    Аппаратные клавиатурные шпионы

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

    1. Аппаратная закладка внутри клавиатуры

    В любой клавиатуре обычно бывает много полостей, размер которых достаточен для размещения небольшой платы. Питание устройства и съем информации может производиться путем непосредственного подключения к печатной плате контроллера клавиатуры. Аппаратная закладка может быть установлена вручную или промышленным способом. Например, на сайте http://www.keyghost.com можно увидеть рекламу клавиатур со встроенным аппаратным кейлоггером.

    Методика противодействия. вскрытие клавиатуры и ее проверка на предмет наличия посторонних электронных узлов с последующим пломбированием корпуса клавиатуры при помощи пломбира или стикера.

    2. Считывание данных с кабеля клавиатуры бесконтактным методом

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

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

    3. Включение устройства в разрыв кабеля

    Клавиатурные шпионы данного типа являются самыми распространенными и их легко как установить, так и обнаружить. Аппаратный кейлоггер выполняется в виде небольшого устройства, которое включается в PS/2- или USB-разъем компьютера, а клавиатура включается в разъем на корпусе кейлоггера. Для выполнения подобной операции не требуется никакой квалификации, причем подключение кейлоггера к USB-клавиатуре может производиться без выключения компьютера. Известен ряд серийно выпускаемых устройств, например KEYKatcher Hardware Keyloggers (http://www.keykatcher.com ), который выпускается в двух видах — для PS/2- и USB-клавиатур. Другой пример — KeyGhost (http://www.keyghost.com ).

    Компьютер с установленным аппаратным кейлоггером KeyGhost

    Аппаратный кейлоггер может выглядеть как фильтр помех или переходник. Устройство состоит из входных цепей, предназначенных для фильтрации помех и защиты устройства от перенапряжения, микроконтроллера с малым потреблением электроэнергии и Flash-памяти, предназначенной для хранения собираемой информации. Объем Flash-памяти варьируется от 32 Кбайт до десятков мегабайт; типичный объем — от 128 Кбайт до 2 Мбайт.

    Функциональная схема аппаратного кейлоггера

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

    4. Аппаратная закладка внутри системного блока

    Этот шпион не отличается по принципу действия от устройств типов 1 и 3, но размещается внутри системного блока. Установить его может только специалист, причем для этого потребуется вскрытие корпуса.

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

    5. Съем информации на основании анализа акустических и электромагнитных излучений

    Уловить электромагнитное излучение клавиатуры на расстоянии весьма сложно (хотя теоретически и возможно), но уловить акустические шумы — на порядок проще. Даже при разговоре по телефону иногда можно отчетливо услышать, как собеседник вводит информацию на клавиатуре. Исследования специалистов в области безопасности показывают, что каждая клавиша при нажатии производит специфический звук, позволяющий идентифицировать нажимаемые клавиши. Наиболее известная работа в этом направлении проведена учеными Калифорнийского университета в Беркли (подробнее см. http://zdnet.ru/?ID=498415), которые пришли к выводу, что по обычной звукозаписи можно распознавать от 60 до 96% вводимых символов. Без применения специализированных программ для анализа можно достаточно просто установить количество символов в набираемом пароле и наличие повторяющихся символов.

    Методика противодействия: основной способ защиты от утечки информации путем анализа акустических сигналов — постоянный и планомерный инструктаж персонала.

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

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