22.12.2014

Уязвимости публичных терминалов: как взломать велопрокат и поликлинику

image

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

Автор: Станислав Мерзляков,
Positive Technologies

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

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

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

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

К настоящему времени часть подобных лазеек закрыта. Но далеко не все! Посмотрим на ситуацию с позиции программиста. Что он может упустить из виду?

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

Атака на велопрокат

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

Если присмотреться, то в правой нижней части виджета можно увидеть ссылки «Сообщить о проблеме», «Конфиденциальность» и «Условия использования». Нажимаем на любую из них — и появляется стандартное окно Internet Explorer.

Окно браузера можно было открыть по-другому: кликая кнопку «Подробнее» при выборе местоположения тех или иных объектов.

Полдела сделано.

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

Можно и напрямую добраться до клавиатуры: выйти в «Проводник» последовательным выбором свойств браузера Internet Explorer — вкладки «Общие», кнопки «Параметры», «Просмотреть объекты» — и нажав на приложение Osk.exe в папке C:\Windows\System32.

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

Сценарии эксплуатации

Полноценный выход в интернет в терминале был доступен, несмотря на строгие рекомендации по ограничению доступа во внешнюю сеть для таких устройств. Нарушитель мог отправиться на тот же exploit-db, скачать вредоносные приложения на жесткий диск устройства и запустить их, а также извлечь пароль администратора с помощью известных программ для взлома пароля (mimikatz, WCE, Fgdump, pwdump). Стоит добавить, что у разных велопаркоматов с большой долей вероятности могли быть одинаковые пароли администратора.

Что еще мог бы сделать кибервзломщик? Подменять файлы в системном каталоге, повышать привилегии, дампить пользовательские данные. Откровенные недостатки конфигурации оставляли нарушителю пространство и для совсем головокружительных маневров. Сконструировать на базе захваченных терминалов ботнет, пул для майнинга, уютную баннерную сеть со своей рекламой... Помимо обычного перехвата вводимых персональных данных с помощью кейлогера, злоумышленник мог отправить приложение парковки себе по сети, внести в него изменения (к примеру, добавить поле с требованием указывать трехзначный код CVV/CVV2) и установить обратно. Пользователи вряд ли ,s сразу что-нибудь заподозрили, вот только поездка на велосипеде обошлась бы им недешево...

Коварное окно печати

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

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

А если копнуть глубже

Автор этой статьи и его коллеги только за последний год сталкивались с небезопасной работой инфоматов «Электронного правительства», инфокиосков в одном из российских аэропортов, систем развлечений самолета, удаленных терминалов АСУ ТП (SCADA), а также запускали Angy Birds на банкомате. В последнее время российские поликлиники активно оснащаются терминалами, в которых любой желающий может записаться на прием к врачу. Без должного внимания к безопасности терминалов мы рискуем стать свидетелями массовых утечек сведений, составляющих уже и врачебную тайну.

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

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

Что делать

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

В обязательный минимум мероприятий входит проверка всех ссылок полноэкранного приложения и сторонних виджетов. Если при переходе по веб-адресу открывается новое окно браузера, следует отключить такую возможность, отредактировав код виджета и удалив ссылки. Основное приложение терминала должно всегда находиться поверх всех окон Windows: в этом могут помочь различные утилиты (например, Window On Top).

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

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

P. P. S. Благодарю Дениса Макрушина за помощь в проведении исследования.