Статья содержит информацию для специалистов по безопасности, проводящих тестирование платежных приложений и инфраструктуры POS-терминалов по контракту. Фокус — на программном обеспечении и сетевых аспектах, без разбора аппаратной защиты.
Архитектура POS-инфраструктуры
POS-терминал взаимодействует с несколькими ключевыми компонентами. TMS (Terminal Management System) — сервер управления парком устройств. Через него распределяется конфигурация, устанавливаются приложения, управляются ключи шифрования и собираются логи. Доступ к TMS предоставляется через веб-интерфейс административной панели.
MDM (Mobile Device Management) отвечает за управление терминалами на базе Android: от включения до блокировки. Система собирает данные о статусе устройства, например информацию о подключении к сети.
Платежное приложение — связующий компонент. Оно считывает данные карт через Card Reader и отправляет их в TMS для обработки.
Первый случай: учетные данные в логах
На этапе тестирования мы получили доступ к POS-терминалу, работавшему в киоск-режиме, что ограничивало возможности. Меню приложения содержало панель администратора, защищенную шестизначным паролем. Документация и форумы не дали нужной информации.
Перебором жестов нам удалось выйти из ограниченного режима: три нажатия на кнопку включения и свайп вниз открыли системную панель Android. Нестандартные способы входа в режим администратора встречаются часто — производители используют комбинации клавиш громкости, тапы по определенным углам или логотипам.
После открытия настроек Android обнаружилось, что на одном из нескольких терминалов они не требовали пароля. Мы развернули точку доступа Wi-Fi на ноутбуке и подключили терминал, получив возможность перехватывать трафик.
Анализ сетевых пакетов показал постоянное обращение терминала к одному IP-адресу через MQTT. Сообщения содержали название вендора, серийный номер и статус устройства. Это указывало на наличие MDM-агента. Проверка активных процессов подтвердила подозрение.
В файлах MDM-агента на накопителе нашлась директория с логами. В одном из них в открытом виде содержались логин, пароль и URL для отправки данных о работоспособности, а также учетные данные для доступа к MQTT-брокеру. Агент логировал собственные учетные данные для подключения к панели управления.
Вход в панель MDM
Полученные логин и пароль позволили аутентифицироваться в веб-приложении MDM. Учетная запись оказалась недокументированной и использовалась вендором для активации терминалов по серийному номеру и работы MQTT-брокера. Ее не было в списке пользователей платформы клиента.
Панель управления предоставила полный набор возможностей для администрирования парка терминалов. Особое внимание привлекла функция загрузки приложений на устройства. В разделе Private Apps находилось платежное приложение в нескольких версиях для разных платформ, сам MDM-клиент и утилита PWDGenerator для генерации пароля доступа к настройкам Android согласно документации клиента. История установок показала, что эта утилита попадала на часть парка.
