Игра Watch Dogs прекрасно описывает недалекое будущее: вокруг всевозможные девайсы, средства выдачи и приема наличных, а также разнообразные имеющие доступ в интернет устройства, нашпигованные уязвимостями, эксплуатация которых позволяет хакеру извлечь определенную выгоду. Например, в игре главный герой при помощи смартфона может скомпрометировать систему видеонаблюдения, получив тем самым возможности вести слежку и добывать дополнительную информацию.
Фанаты Watch Dogs разошлись во мнениях: кто-то говорит, что это слишком «утопично» — достать смартфон и ломать все вокруг. Другие осознают, что «сказка — ложь, да в ней намек» и игровой мир отчасти отражает реальный.
Мы попробуем выдвинуть еще немного аргументов в пользу того, что окружающие нас устройства, которые мы едва замечаем в парках и общественных местах, могут оказаться уязвимыми и нести опасность — как минимум для нашего кошелька.
Терминальные терминаторы
Число публичных устройств, которые ждут своего героя из компьютерной игры, зашкаливает. Парки и улицы пестрят терминалами оплаты парковки всевозможных средств перемещения и уютными «будками» быстрой подзарядки мобильного девайса. Аэропорты и вокзалы предлагают различные устройства оплаты билетов и получения справочной информации. В кинотеатрах находятся терминалы покупки и бронирования билетов на киносеансы. В поликлиниках и государственных учреждениях посетителей встречают устройства электронных очередей и печати каких-нибудь квитанций. Даже туалеты оснащаются терминалами оплаты. Правда, пентестить последние девайсы вряд ли кто-нибудь будет — духу не хватит :).
Однако жизнь учит разработчиков подобных устройств тому, что не все их пользователи касаются тачскринов с благими намерениями. Если ввести в Google запрос вида terminal hacked, то получим много релевантных видео, на которых главные герои раскладывают пасьянс на том или ином терминале или же рисуют всякие непристойности в Paint. Причиной этого могут быть различные баги в приложениях терминала, и часто они носят схожий принцип эксплуатации.
Так, на одном из видео участник удерживает свой палец на экране около десяти секунд, и это приводит к результату «нажатие правой кнопкой мышки». На другом ребята беспорядочно тыкают в левый нижний угол экрана — и полноэкранное приложение сворачивается. Кто-то вообще додумался закрыть ладонью GSM-антенну терминала и таким образом спровоцировать выпадение ошибки подключения.
Из случаев компрометации подобных устройств наиболее интересен инцидент, произошедший с терминалами оплаты одного известного вендора электронных платежей. Злоумышленник в поле ввода назначения платежа при помощи виртуальной экранной клавиатуры приложения, которая доступна в интерфейсе платежной системы, вводил строку «last_page=StyleSheet.css». В качестве обработчика для файла с данным расширением открывался notepad.exe, который через свою систему справки позволял злодею перебраться в системную панель управления и запустить виртуальную клавиатуру операционной системы.
Методика анализа защищенности терминалов общего пользования
Опираясь на такие видео и печальный опыт вендоров, можно составить несложную методику анализа защищенности устройств данного типа.
Наша задача: имея на руках полноэкранное приложение, которое, скорее всего, функционирует на базе операционной системы Windows, выйти за его пределы в системное окружение. Для этого можно использовать так называемый Tap-fuzzing. По-другому говоря — поработать пальчиками. Нажимать на различные участки приложения с целью спровоцировать его недокументированное поведение. Или можно воспользоваться Data-fuzzing и подставлять различные данные в поля ввода с целью спровоцировать некорректную обработку входящих данных.
Как только удается вызвать элемент стандартного интерфейса операционной системы, следующим этапом будет попадание в панель управления — например, через разделы справочной информации.
Попадание в панель управления будет отправной точкой для запуска виртуальной клавиатуры с соответствующими последствиями.
Транспортная ситуация
Жители Москвы все чаще могут встретить в парках своего города велосипедные паркоматы. Суть этих устройств довольно проста: имеется платежный терминал для оплаты велосипеда и стойка с велосипедами. Устройством вывода в платежном терминале служит дисплей, где пользователь может зарегистрироваться, чтобы прокатиться на велосипеде, и получить справочную информацию.
Интерфейс системы спроектирован специально для этого типа устройств (если ты хоть раз оплачивал что-либо в платежных терминалах, то представляешь, о чем речь), и в нем трудно запутаться. В этом интерфейсе у пользователя есть возможность получить текущее местоположение паркомата, а точнее, увидеть отметку на Google-карте.
Все подобные устройства работают на базе классических операционных систем (чаще Windows-подобных) со всеми их уязвимостями.
Однако специализированный интерфейс представляет собой полноэкранное приложение с очень ограниченным функционалом, которое не дает пользователю забраться «под капот» и умышленно или непреднамеренно натворить глупостей. Соответственно, при анализе защищенности терминалов основная задача — выйти за пределы данного полноэкранного приложения. После этого можно будет пошалить: запускать свои приложения, поднимать привилегии, дампить ценную информацию и прочее.
В рассмотренных системах паркоматов обнаружена интересная особенность. В разделе «Карты» разработчики не стали придумывать ничего нового и использовали карты от компании Google. И все было бы прилично, если бы только виджет от Гугла не имел строки статусбара, в котором среди прочей информации (текущий масштаб, копирайты и так далее) содержатся ссылки «Сообщить об ошибке», «Конфиденциальность» и «Условия использования», которые открывают стандартное окно Internet Explorer…
А давай прокатимся!
Помимо описанной ссылки, в данном приложении незаметно разбросаны и другие линки (например, при показе тех или иных ресторанов можно нажать кнопку «Подробнее»), нажав на которые можно открыть браузер.
«И что? Ну, открыл я браузер — клавиатуры ведь все равно нет!» Сейчас будет: по ссылкам на страницах со справочной информацией есть возможность перейти в раздел справки, который называется «Специальные возможности», где и прячется виртуальная клавиатура (вот еще один неприятный минус Windows).
Дальше все зависит от фантазии и степени наглости атакующего. Запуск cmd.exe демонстрирует еще один недостаток конфигурации: текущий сеанс операционной системы запущен с привилегиями администратора, а это значит, что мы потенциально можем скачать и совершенно беспрепятственно запустить любое приложение.
Так, атакующий может получить NTLM-хеш пароля администратора. При этом велика вероятность, что пароль, установленный на данном устройстве, подходит и к остальным устройствам данного типа, — а это уже третий недостаток конфигурации.
На этом приключение заканчивается, поэтому давай порассуждаем, что из всего этого может извлечь злоумышленник.
Терминалы государственных учреждений
Под государственными учреждениями мы будем понимать те, которые находятся в зданиях, имеющих герб или российский флаг. Без конкретики и упоминания производителей, но по сути :).
Итак, перед нами интерфейс полноэкранного приложения, которое на основе введенных нами данных предлагает распечатать квитанцию для оплаты.
После заполнения всех полей и реквизитов мы нажимаем кнопку «Создать» и наблюдаем следующую картину: терминал на несколько секунд открывает стандартное окно печати, в котором находятся все параметры печати нашего документа и автоматически производится нажатие на кнопку «Печать».
Как следствие, если злоумышленник успевает нажать на кнопку «Изменить», то получает возможность посредством нехитрых манипуляций с параметрами печати выйти в справочный раздел…
Вайтхеты засыпают, блекхеты просыпаются
Сценарии постэксплуатации вытекают из особенностей данных устройств:
- Все они расположены в публичных местах.
- Доступны в режиме 24/7.
- Имеют одинаковую конфигурацию.
- Имеют повышенную степень доверия со стороны пользователя.
- Связаны друг с другом и могут иметь выходы в другие «приватные» сети.
Главная цель злоумышленника — прямая или косвенная финансовая выгода в результате компрометации устройства. В данном случае для достижения этой цели он может раздобыть не просто NTLM-хеш, который еще нужно брутфорсить для получения пароля, а сразу пароль администратора. Для этого атакующий может извлечь пароли в открытом виде, хранящиеся в памяти. Кстати, последняя версия утилиты WCE теперь может не только дампить пароли внедрением кода в процесс lsass.exe, а напрямую читать память в рамках текущей сессии.
Добавим сюда поддержку Windows 7, на базе которой работают паркоматы, и получим «ключ» сразу ко всем устройствам данного вендора.
Кроме того, злоумышленник может получить дамп приложения велопарковки, которое любезно собирает информацию о желающих покататься: ФИО, адрес электронной почты и телефон. Не исключено, что база данных с важной информацией хранится где-то неподалеку. Не стоит объяснять, что такая база будет иметь особую ценность на рынке, ведь в ней содержатся верифицированные адреса телефонов и email. В том случае, если же подобной базы нет, злодей может установить свой кейлоггер, который перехватывает все введенные пользователями данные и отправляет на удаленный сервер.
Учитывая одну из особенностей данных устройств — работу в режиме 24/7, можно организовать, например, пул для майнинга или использовать ее в других хакерских целях, требующих круглосуточного присутствия зараженной рабочей станции в сети.
Особо наглые злоумышленники могут реализовать сценарий атаки, результатом которой станет получение платежных данных пользователя: на главном окне приложения паркомата можно в ненавязчивой форме оставить поле для ввода реквизитов пластиковой карты, и с большой долей вероятности введенный в заблуждение пользователь любезно оставит их вместе со своим именем, номером телефона и электронной почтой…
Обилие сценариев, которые открывают возможности для доступа к персональным данным и кошельку ни о чем не подозревающих людей, ограничивается лишь фантазией злоумышленников. Описанная ситуация с защищенностью паркоматов наглядно демонстрирует, как несколько недостатков конфигурации образуют уязвимость.
Кроме того, скомпрометированный терминал может стать отправной точкой для дальнейшей атаки на корпоративную сеть. Очень часто подобные устройства обращаются к терминальному серверу или целой подсети, которая находится в доверенной зоне компании, а значит, небольшая таргетированная атака, использующая вредоносное ПО и/или социальную инженерию, может позволить злоумышленнику оказаться в главном офисе. Без стука.
Рекомендации
Проведенный нами анализ защищенности паркоматов демонстрирует, как несколько недостатков конфигурации делают устройство уязвимым. А приведенные сценарии атак — как это может открыть злоумышленникам доступ к персональным данным и кошелькам ни о чем не подозревающих людей.
Для того чтобы исключить вредоносную активность на публичных устройствах, разработчикам и администраторам терминалов велопарковки и других терминалов, расположенных в публичных местах, мы рекомендуем:
- Запретить возможность открывать внешние ссылки в полноэкранном приложении.
- Не допускать вызова каких-либо элементов интерфейса ОС Windows (например, правой кнопкой мыши, используя окна печати документов).
- Запускать текущий сеанс операционной системы с ограниченными привилегиями обычного пользователя.
- На каждом устройстве создавать уникальную учетную запись с уникальным паролем.
Пользователям платежных терминалов мы рекомендуем не вводить полные реквизиты своих платежных карт. Ни в коем случае нельзя вводить CVV2/CVC2-номер карты, они не требуются для осуществления платежа. Не следует пренебрегать и возможностью оплатить в терминале услугу наличными.
Впервые опубликовано в журнале «Хакер» от 12/2014.