Реклама
26 Мая 2015, 10:27
2757

26 и 27 мая в Москве пройдет международная конференция Positive Hack Days

26 и 27 мая в Москве на международной конференции Positive Hack Days пройдет необычный хакерский конкурс: его участники будут взламывать банкомат. Организаторы этих конкурсов рассказали порталу Банки.ру о современных атаках на банкоматы, а также о том, как защититься от этих угроз.

К сейфу окольным путем

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

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

Попробуем разобраться в том, как это делается. Деньги находятся в сейфе и хорошо защищены (по мнению банков и производителей банкоматов). Сейф – это «бутерброд» из стали и бетона, более 1 см в толщину. В зависимости от взломоустойчивости, оснащается надежным замком: обычно это сувальдный замок, лимбовый или электронный кодовый. Чтобы открыть такой сейф, нужно либо иметь набор кодов и ключей, либо заручиться помощью «медвежатника», который с помощью особых инструментов выполнит эту задачу.

Однако в банкомате есть еще сервисная зона, где располагаются системный блок и различные периферийные устройства. Эта часть банкомата закрывается пластиковым корпусом с одним простеньким замком. Причем некоторые производители банкоматов ставили туда одинаковые замки, отрывающиеся одним и тем же ключом, – для удобства обслуживания. Сейчас вендоры и банки уходят от такой практики, но до сих пор встречаются банкоматы, которые можно открыть ключом от любого другого банкомата того же банка. Да и замки там по-прежнему простенькие.

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


Готовим взлом

Для начала мы решили использовать интерфейсы, которые расположены снаружи банкомата. Мы взяли микрокомпьютер Raspberry Pi, подключили к нему батарею питания, адаптер Wi-Fi и составили несколько программ для взлома. Найти документацию с описанием интерфейсов банкоматов оказалось несложно.

Оборудование банкоматов и платежных терминалов, независимо от производителя, имеет общий API (программный интерфейс. – Прим. ред.) для доступа и управления модулями и работает на платформе Windows в соответствии с единым стандартом расширений для финансовых услуг XFS.

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

Клавиатура банкомата (пинпад). Она работает в двух режимах: в защищенном, в котором вводится ПИН-код и передается в компьютер банкомата в шифрованном виде, и в открытом, который используется для ввода суммы снятия и прочей информации. Установленный на компьютере XFS-менеджер может вынудить пинпад переключаться между режимами, что может позволить злоумышленникам получать вводимые ПИН-коды в незашифрованном виде.

Картридер умеет читать данные с полосы и записывать на нее, извлекать и информацию из EMV-чипа – например, данные о ранее совершенных трансакциях.

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

Всеми этими устройствами управляет программа, запущенная на компьютере банкомата, – XFS-менеджер.

Можно было бы предположить, что здесь реализована серьезная аутентификация и доступ к XFS-менеджеру хорошо защищен. На деле ни о какой аутентификации речи нет. Спецификации можно найти в Интернете. Эксклюзивный доступ реализован, но не для безопасности, а лишь для того, чтобы не ломать нежные банкоматные «железки» – например, чтобы не посылать одновременно две команды на выдачу банкнот из диспенсера.

Стандарт XFS разработан в Microsoft, и это объясняет, почему на многих банкоматах до сих пор стоит Windows XP. Примерно год назад, на начало 2014-го, 95% всех банкоматов в мире работало под управлением Windows XP. При этом поддержка данной операционной системы закончилась в апреле 2014 года. То есть на банкоматах, управляемых Windows XP, огромное количество известных уязвимостей, которые уже никогда не будут устранены.

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

Возьмем, к примеру, известную уязвимость МС08-067. В каких-то банкоматах она может быть закрыта, так как уже не нова, но есть и другие подобные уязвимости. Она позволяет получить права администратора при сетевом подключении к компьютеру. Берем наш Raspberry Pi и подключаем к сетевому порту системного блока банкомата. Причем нам даже не нужно открывать сервисную область, можно использовать выведенный наружу порт, служащий для подключения банкомата к сети. К самому Paspberry Pi подключаемся по Wi-Fi и запускаем на нем программу-эксплойт для MC08-067. Появляется консоль, где мы можем вводить команды для компьютера банкомата. Несколькими нажатиями на клавиши можно заставить банкомат выдать небольшое количество денег.

В среднем в банкомате четыре кассеты по 2,5–3 тыс. банкнот в каждой. Несложно подсчитать, что при стандартной загрузке в банкомате может оказаться более 10 млн рублей. Их можно вытащить, эксплуатируя различные уязвимости, которые, как сказано выше, уже никогда не будут устранены.


Обходим защиту

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

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

Правда, протоколов там множество. Каждая новая прошивка устройства – новый протокол. Анализировать их непросто, и в Интернете мало информации на эту тему. Зато известно, например, что COM-порт не поддерживает контроль последовательности выполнения команд. То есть мы можем повторять какую-то отдельную команду или цепочку команд. А еще известно, что потеря связи устройства с портом не детектируется: если мы на 5–10 секунд отключим диспенсер от банкомата, то банкомат, в принципе, не сможет это понять.

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

Так же легко можно превратить банкомат в аппаратный скиммер, который забирает данные и передает их злоумышленнику – ведь данные банковской карты передаются в открытом виде между банкоматом и картридером. Если мы разместим наш Raspberry Pi внутри банкомата, такой скиммер в принципе нельзя будет увидеть снаружи.

Конечно, производители банкоматов и банки утверждают, что давно отказались от COM-портов и на их банкоматах используется только шифрованное USB-подключение. На самом деле это относится лишь к новым, недавно закупленным банкоматам. Десятки тысяч старых банкоматов до сих пор находятся в эксплуатации.

Кто виноват и что делать

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

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

Также мы предлагаем пересмотреть стандарт XFS в пользу увеличения его защищенности. Текущая ситуация крайне плачевная. Если есть возможность выполнить код, а также обратиться к XFS-менеджеру, то у нас есть полный контроль над периферией банкомата.

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


Читайте наш канал в Telegram : узнавайте о главных новостях дня первыми.

Первая полоса