Блокировка клавиатуры на банкоматах для защиты от прямого диспенса (jackpotting)

Взлом банкомата ведет к прямым убыткам и потере репутации любого банка. Также сразу возникают вопросы по соответствию требованиям регуляторов: стандартам ЦБ РФ и PCI DSS, что может привести к более серьезным последствиям, влияющим на деятельность всего банка.

Блокировка клавиатуры на банкоматах для защиты от прямого диспенса (jackpotting)

Меня зовут Наталья, и я работаю в компании SafenSoft, более 20 лет занимающейся разработкой средств защиты и мониторинга для конечных точек сети, в том числе банкоматов. В этой статье я расскажу о том, как можно обезопасить АТМ-устройства от хакерских действий с помощью управляемой блокировки клавиатуры.

Прямой диспенс или jackpotting – это атака, при которой в результате взлома вредоносным ПО банкомат начинает выдавать наличные средства. Первым шагом вектора атаки является обход режима киоска в верхней части банкомата. Злоумышленник осуществляет навигацию по файловой системе, запускает интерпретатор команд cmd.exe, powershell.exe и выполняет команды изменения сценариев в скриптах селф-тестов диспенсера. Теперь при перезагрузке диспенсер будет вместо селф-теста выдавать деньги.

Важную роль в осуществлении этой атаки играет подключение эмулятора клавиатуры и ввод assembly кода для воспроизведения в памяти .Net процесса или службы.

Блокировка клавиатуры на банкоматах для защиты от прямого диспенса (jackpotting)

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

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

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

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

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

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

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

В совокупности решение SafenSoft позволяет подтвердить соответствие стандартам PCI DSS и ЦБ по кибербезопасности, а также предотвратить взлом банкоматов и потерю репутации.

Начать дискуссию