Детектирование сеанса удаленного управления методами клавиатурного мониторинга

Денис Ибатуллин, аналитик компании "Фродекс"


Средства удалённого доступа и управления рабочим столом – это хороший способ экономить время для проведения удалённого администрирования и решения других сопутствующих задач.

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

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

  • Сканирование открытых портов позволяет гарантированно детектировать только те средства удаленного управления, которые используют жестко заданные порты. Таким способом можно детектировать Remote Desktop Connection – стандартный удаленный рабочий стол Windows (порт 3389). Radmin, хоть и имеет стандартный порт, используемый по умолчанию (4899), предоставляет возможность настройки порта в диапазоне от 1 до 65535. Таким образом, если используется один из широко известных портов, то обнаружить Radmin будет сложнее. VNC не имеет порта по умолчанию. TeamViewer использует 80 и 443 порты HTTP. Ammyy Admin использует HTTPs прокси, так что обнаружить его сканированием портов невозможно;

  • Сканирование реестра. Если программа удаленного управления сохраняет свои настройки в реестре, то её можно обнаружить. Так можно обнаружить, например, стандартный RDP Windows, TeamViewer, Ammyy Admin и Radmin. Но для того чтобы обнаружить средство удаленного управления необходимо знать, что именно и в каких ветках реестра нужно искать. А VNC таким образом не обнаружить, т.к. они не хранят свои настройки в реестре;

  • Сканирование сетевого трафика. На первый взгляд подобным способом можно будет детектировать все средства удаленного управления, однако это не так. Дело в том, что многие средства удаленного управления шифруют свой трафик, и обнаружить удаленное управление не удастся. Но детектировать, например, Radmin, RDP Windows всё же возможно, т.к. они используют известные протоколы удаленного управления без шифрования. А TeamViewer и Ammyy Admin, шифруют свой трафик. VNC использует SSL/SSH/VPN, т.е. протоколы удаленного доступа будут скрыты от Вас;

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

Самым доступным для рядового пользователя средством защиты от программ удаленного управления является антивирус. Известные антивирусы, в частности Kaspersky Internet Security, обнаруживают исполняемые файлы, сканируют оперативную память, службы, записи в реестре, характерные для средств удаленного управления и не позволяют работать подобным средствам без разрешения пользователя. Dr.Web же обнаруживает средства удаленного управления не только сигнатурным анализом, но и при проверке запущенных служб. Например, Ammyy Admin блокируется многими известными антивирусами. Однако, если внести подобные средства в исключения, то их работа не будет блокироваться.

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

В таком случае, необходим способ обнаружения именно сеанса удаленного управления.

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

Рассмотрим популярное средство удаленного управления TeamViewer.(ver 10.0.36897.0), т.к. им пользуются более 200 миллионов пользователей и он переведен на 30 языков мира.

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

На компьютерах, участвующих в эксперименте, установлена ОС Windows XP SP 3/Windows 7 SP 1. Компьютеры представляют собой стационарные рабочие места, оборудованные стандартными клавиатурами, и находящиеся друг от друга на расстоянии в несколько километров. Они находятся в разных локальных сетях, сообщение между которыми осуществляется только средствами сети Интернет. Скорость интернет соединения была больше или равна двум мегабитам в секунду.

Эксперимент проводился следующим образом:

  1. На рабочем месте, к которому в дальнейшем осуществлялось удаленное подключение, включался кейлоггер;

  2. Программа (специальный драйвер клавиатуры) эмулирующая действия локального оператора, вводила небольшой текст;

  3. Устанавливался сеанс удалённого управления через TeamViewer;

  4. Программа (специальный драйвер клавиатуры) вводила тот же небольшой текст, что и локальный оператор, с теми же параметрами клавиатурного почерка, но уже на удаленной машине;

  5. Работа кейлоггера останавливалась, и его лог отправлялся на анализ.

Кейлоггер фиксировал следующие параметры клавиатурного почерка:

  • Время нажатия клавиши;
  • Время отпускания клавиши.

По этим параметрам устанавливались две характеристики клавиатурного почерка:

  • Время удержания клавиши;
  • Время паузы между клавишами или их перекрытие.

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



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


Данная диаграмма демонстрирует, что при осуществлении удаленного доступа время удержания клавиши становится неестественно малым. Максимальное значение при осуществлении 5 экспериментов было 20 мс, такое время удержания клавиш теоретически способны продемонстрировать лишь рекордсмены по набору текстов на клавиатуре, чья скорость печати должна превышать 1000 знаков в минуту.

Напрашивается вывод, что удаленное управление, осуществляемое через средство удаленного доступа TeamViewer (ver 10.0.36897.0), можно обнаружить, производя мониторинг времени удержания клавиш.

Однако, возможно ли определить факт удаленного управления, если он будет осуществлен с помощью другого программного продукта? Давайте проведем ещё один эксперимент. Будем использовать такие же методы обнаружения и те же компьютеры, но средством удаленного доступа в данном случае будет Ammy Admin (ver 3.5.0.0).

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



Гистограмма, демонстрирующая время удержания нажатой клавиши локальным пользователем и оператором удаленного доступа с использованием Ammy Admin.


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

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

  • UltraVNC VNCviewer (ver 1.2.0.1.);
  • Radmin (ver 3.5);
  • Remote Desktop Connection (ver 6.1.7601.17514).

Во всех случаях значение разницы во времени нажатия клавиш и пауз между нажатиями клавиш не превысило 5мс.

Значит мониторинг времени удержания клавиш не дает однозначного ответа на вопрос, осуществлялся ли сеанс удаленного доступа.

Но, в случае, когда будет использоваться не TeamViewer (ver 10.0.36897.0), то параметры клавиатурного почерка удаленного оператора будут поступать на компьютер, к которому осуществляется доступ, с небольшими искажениями (величина отклонений не превышает 5мс). И, в случае, если удаленный и локальный оператор не один и тот же человек, и при наличии данных о клавиатурном почерке локального пользователя, факт подмены пользователя можно будет обнаружить, используя существующие методы непрерывной аутентификации по клавиатурному почерку.

В таком случае ввод слова "testing" с использованием Ammy Admin будет выглядеть следующим образом.



Гистограмма, демонстрирующая время удержания нажатой клавиши локальным пользователем и оператором удаленного доступа с использованием Ammy Admin.


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

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

В случае осуществления ввода непосредственно при помощи клавиатуры локальным пользователем, значение параметра Hardware ID будет, например, таким: HID#VID_05FE&PID_2001&MI_00#7&39613403&0&0000#{884b96c3-56ef-11d1-bc8c-00a0c91405dd}, а значение DeviceHandle – 0x3004B. А при сеансе удаленного управления данные параметры во всех экспериментах принимали значения: Hardware ID – "не установлен", DeviceHandle – "0x00000". Таким образом, удаленное управление, осуществляемое через упомянутые ранее средства удаленного доступа, можно детектировать отслеживанием параметров Hardware ID и DeviceHandle, и в случае, если они принимают значения:"не установлен" и "0x00000", можно с уверенностью утверждать, что осуществлялся сеанс удаленного управления.