Публикации

Джекпот в банкомате: зловреды и другие способы обогащения

jackpot_pre

Денежные машины вошли в нашу жизнь в 1967 году, когда в отделении банка Barclays в Лондоне был установлен первый экземпляр банкомата. В настоящее время миллионы человек по всему миру ежедневно используют банкоматы для снятия наличных, пополнения счетов, оплаты различных услуг. Люди пользуются банкоматами, не задумываясь об их аппаратной начинке, программных особенностях или безопасности. К сожалению, производители банкоматов и их непосредственные потребители, банки, тоже уделяют вопросам защищенности банкоматов недостаточно внимания. Это подтверждается ростом числа хищений наличных из банкоматов недеструктивными методами – без использования инструментов для резки металла и взрывчатых веществ.

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

Про железо

Банкомат – это, по сути, конструктор. Изготовитель комплектует его из устройства выдачи наличных (диспенсера), картридера и других модулей, производимых различными компаниями. Модули помещаются в корпус, состоящий, как правило, из двух частей – верхней, именуемой кабинетом или сервисной зоной, и нижней, сейфовой.

В свою очередь кабинет содержит такие модули, как системный блок (да-да, обычный системный блок, иногда даже в таком же корпусе, что и типичный домашний компьютер), криптоклавиатура (EPP или encrypted PIN-pad), картридер и прочее. В сервисной зоне оказывается всё то, что, по мнению производителя банкомата, не дает возможности добраться до денег. Вероятно, по этой причине крышка кабинета пластиковая, а от несанкционированного проникновения в сервисную зону защищает лишь простенький замок. Кстати, и замки в сборе, и отдельно ключи можно легко купить в интернете, так как каждый производитель для своих устройств устанавливает одинаковые замки, а большинство банков, как правило, не думают об их замене на уникальные.

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

Все устройства подключены к системному блоку, который в данном случае выполняет функцию хоста (так мы его и будем называть), через порты USB или RS232 (часто называемый COM-портом). Иногда эти порты расположены непосредственно на системном блоке, а в случае нехватки портов используется USB/COM-разветвитель. На старых моделях банкоматов, которые, надо сказать, все еще можно встретить, применялся способ подключения через SDC-шину.

Про программное обеспечение

Набор программного обеспечения, который можно встретить практически в каждом банкомате, прост:

  • операционная система,
  • ПО для управления модулями банкомата,
  • ПО, используемое для взаимодействия с пользователем (клиентом банкомата или оператором),
  • ПО для связи с процессинговым центром (который обеспечивает информационную и технологическую стороны транзакции),
  • антивирус или ПО для контроля целостности системы.

В принципе, этого достаточно для выполнения банкоматом его непосредственных функций, но некоторые банки зачем-то устанавливают на него Acrobat Reader версии 6.0, Radmin, TeamViewer и прочее ненужное и даже опасное в некоторых случаях ПО.

В качестве операционной системы подавляющее большинство банкоматов до сих пор используют… Windows XP! Несмотря на то, что Microsoft прекратил выпуск обновлений безопасности для этой ОС в апреле 2014 года. Само собой, все уязвимости нулевого дня (0-day) для этой системы так и останутся неустраненными. Инженеры, обслуживающие банкоматы, зачастую считают, что если банкомат работает, то лучше его и «не трогать» (читай: «не обновлять»). Как следствие, на некоторых кэш-машинах до сих пор можно встретить незалатанную критическую уязвимость MS08-067, которая дает возможность удаленного выполнения кода.

Модули банкомата реализованы на микроконтроллерах с операционными системами реального времени (RTOS), что особенно печалит парней с IDA Pro, так как статический анализ слабо применим к таким системам.

Что ж, этой информации злоумышленникам, в принципе, достаточно, чтобы начать взлом.

Про зловредов

В 2009 году банкоматный мир всколыхнуло появление троянца Backdoor.Win32.Skimer: это была первая вредоносная программа, нацеленная на банкоматы. Skimer атаковал банкоматы конкретного производителя – одного из лидеров рынка. С помощью зловреда злоумышленники опустошали диспенсер, а также получали данные с пластиковых карт, обработанных в зараженном банкомате. С тех пор банкоматы разных производителей неоднократно подвергались воздействию зловредов.

В схеме кражи денег из банкоматов с помощью вредоносных программ можно выделить четыре принципиальных этапа:

  1. Злоумышленник получает доступ к машине, локальный или удаленный.
  2. Производится инжектирование вредоносного кода в систему банкомата.
  3. Как правило, за заражением следует перезагрузка банкомата. Система перезагружается, казалось бы, в штатный режим, но в то же время оказывается под контролем вредоносной программы, т.е. злоумышленников.
  4. Заключительный этап, т.е. цель всего действа, – хищение денег.

Получить доступ к внутренностям банкомата – не такая уж сложная задача, что и продемонстрировали эксперты на международном форуме по информационной безопасности Positive Hack Days. Заражение тоже более или менее понятно – произвольный код может быть выполнен на незащищенной (или защищенной недостаточно) системе. С получением денег вроде бы тоже никаких вопросов – интерфейс зловреда, как правило, открывается по нажатию на пин-паде определенных сочетаний клавиш или по вставке «своей» карты, а дальше только и знай себе, что подставляй карманы.

Мы сконцентрируемся на том, каким образом вредоносная программа может подчинить себе банкомат.

Про стандарт XFS

Итак, злоумышленники заразили системный блок банкомата. Что дальше?

Здесь снова нужно небольшое пояснение. Как уже было сказано, управляет банкоматом Windows-based программное приложение. В общем случае его задача сводится к организации взаимодействия пользователя (клиента или обслуживающего персонала) с процессинговым центром, который присылает банкомату команды, и оборудованием, которое эти команды выполняет. Обмен сообщениями с процессинговым центром происходит по direct connect – протоколам (NDC или DDC), пользователям досталось общение с GUI, а за работу каждого модуля банкомата отвечают соответствующие сервис-провайдеры (своеобразные шлюзы в эти модули). Для трансляции же команд в сервис-провайдеры и далее в оборудование, а также для возврата статусных сообщений, используется уровень, называемый XFS Manager – согласно концепции WOSA.

Джекпот в банкомате: зловреды и другие способы обогащения

Общая схема работы банкомата в контексте стандарта XFS

XFS (CEN/XFS, а в прошлом WOSA/XFS), или eXtensions for Financial Services – стандарт, предоставляющий клиент-серверную архитектуру для взаимодействия финансовых приложений на платформе Windows с устройствами, в частности, для банкоматов. Стандарт направлен на унификацию работы ПО с любым оборудованием, независимо от производителя, и предоставляет для этой цели общий API.

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

Какие же возможности предоставляет XFS?

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

Пример эксплуатации уязвимости MS08_067, позволяющей выполнить произвольный код.
Видео демонстрировалось экспертами на BlackHat Europe 2014

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

Нельзя не упомянуть и криптоклавиатуру – Encrypted PIN-pad (EPP). Считается, что пин-код нельзя перехватить, потому что он вводится на пин-паде банкомата и непосредственно внутри модуля шифрования превращается в пин-блок (для этого криптоклавиатура EPP содержит ключи, пара к которым находится в аппаратном модуле безопасности банка). Однако XFS позволяет нам использовать пин-пад в двух режимах:

  1. открытом – для ввода различных числовых значений, например, суммы, которую требуется выдать;
  2. защищенном (безопасном), в который криптоклавиатура EPP переключается для ввода пин-кода и ключей шифрования.

Такая особенность позволяет реализовать атаку типа «человек посередине» (MiTM). Надо всего лишь перехватить команду от хоста к пин-паду EPP на переключение в защищенный режим и сообщить устройству, что работа продолжается в открытом режиме. В ответном сообщении пин-пад EPP передаст нажатые клавиши в виде простого текста, что и требуется злоумышленнику.

А как же аутентификация и эксклюзивный доступ? Да и спецификации на стандарт наверняка не достать?

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

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

Про средства контроля целостности

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

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

Про недокументированные возможности

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

Ещё один способ обогатиться – изменить номинал выдаваемых купюр, опять же при помощи диагностической утилиты. В результате атакующий получает из кассеты деньги с самым большим номиналом (например, 100 долларами или евро), а ПО банкомата думает, что выдает наименьший из имеющихся номиналов (пятерки или десятки). Таким образом, по карте с балансом в несколько сотен можно получить несколько тысяч.

Про black box атаки

Другой тип атак, который всё чаще и чаще освещается в новостных лентах, это так называемые black box атаки. На видеозаписях систем наблюдений это выглядит так: атакующий открывает сервисную зону, подключает к банкомату свою волшебную коробку, закрывает кабинет и уходит. Чуть позже к банкомату подходят люди, похожие на клиентов, и получают из банкомата много денег, очень много. Конечно же, свой полезный девайс злоумышленники не бросают, обязательно забирают его после того, как цель достигнута. Результат обнаруживается, как правило, через несколько дней: сотрудники банка, увидев опустевшие кассеты и не содержащие соответствующих записей логи, хватаются за голову в попытках понять, что же произошло.

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

Про небезопасность коммуникаций

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

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

Джекпот в банкомате: зловреды и другие способы обогащения

Типичный пакет – команда на выдачу одной банкноты из первой кассеты диспенсера

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

[youtube https://www.youtube.com/watch?v=ksEmXuV324I&w=560&h=315]

Пример black box атаки на банкомат,
видео подготовлено экспертами для демонстрации на BlackHat Europe 2014

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

Джекпот в банкомате: зловреды и другие способы обогащения

Перехваченные данные Track2 карты

Про сеть

Соединение между банкоматами и процессинговым центром может защищаться различными способами. Например, при помощи аппаратного или программного VPN, или с использованием SSL/TLS-шифрования, посредством межсетевого экранирования, а также MAC-authentication, реализованной в xDC-протоколах. Однако, все эти меры порой кажутся банкам настолько сложными, что никакой защиты сети не используется вовсе.

В таких случаях злоумышленник может осуществить атаку типа «человек посередине», в результате которой в его руках окажутся и данные банковской карты, и все деньги из банкомата. Для её осуществления необходим удаленный доступ к устройству. Его получают, как правило, используя какие-либо уязвимые сервисы, доступные из интернета, а также средства социальной инженерии. Физический доступ к сетевому оборудованию, в том числе к Ethernet-кабелю банкомата, тоже подойдет.

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

Джекпот в банкомате: зловреды и другие способы обогащения

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

Где же злоумышленники находят банкоматы, которые можно атаковать через сеть? Сканируют все сети около себя или покупают информацию на подпольных форумах?

Оказывается, можно просто составить правильный запрос в поисковую систему www.shodan.io (экспертам этот сканер Интернета вещей хорошо известен). Данных, собираемых этим сканером, как правило, достаточно для подобных атак.

Или можно просто внимательно осмотреть банкоматы в торговых и офисных центрах.

Джекпот в банкомате: зловреды и другие способы обогащения

Иногда для доступа к системе банкомата даже не нужно открывать его – коммуникации располагают снаружи

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

Эта часть обычно самая грустная, и вот почему.

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

«The vulnerabilities are essentially normal specifications of the card readers and not unexpected. As long as the ATM is running within normal parameters, these problems cannot possibly occur
(Перевод: «Уязвимости относятся к стандартным техническим параметрам картридеров и не являются чем-то неожиданным. Пока банкомат работает с в рамках стандартных параметров, возникновение таких проблем невозможно».)

«However this vulnerability is inherent in the USB technology and is expected be mitigated by the use of appropriate physical controls on access to the ATM top box.»
(Перевод: «Тем не менее, данная уязвимость присуща технологии USB и должна быть нейтрализована путем применения соответствующих мер, физически ограничивающих доступ к верхнему отделению банкомата».)

«We regret informing you that we had decided to stop producing this model more than 3 years ago and warranties for our distributors been expired
(Перевод: : «К сожалению, должны сообщить вам, что мы решили прекратить производство этой модели более чем 3 года назад, и гарантии для наших дистрибуторов истекли».)

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

К счастью, некоторые производители понимают, насколько опасна возможность несанкционированного использования банкоматов, и выпускают обновления безопасности. В качестве мер противодействия атакам на диспенсер применяются двусторонняя аутентификация и криптография (но тут следует помнить, что не всякая криптография – правильно реализованная криптография).

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

Выход есть

Тем не менее, производители банкоматов в силах снизить риски атак на банкоматы.

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

А что делать банкам? Действовать!

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

Помните, враг не дремлет.

Всего вам самого безопасного!

PS: во время подготовки этого текста ни один банкомат не пострадал.

PPS: обзор проблем защищенности финансовых устройств не является учебным пособием.

Джекпот в банкомате: зловреды и другие способы обогащения

Ваш e-mail не будет опубликован. Обязательные поля помечены *

 

  1. Алексей

    Даже если на банкомате стоит не POSReady, то достаточно изменить ключ в реестре (что кстати вряд ли является незаконным) и можно получать обновления до 2019 года. Учитывая количество сообразительных людей, мнение автора о том, что в 2014 году операционные системы банкоматов остались без поддержки абсолютно не соответствует реальности. Конечно дураки и слоупоки тоже есть, но вряд ли они прочитают эту статью.

Отчеты

StripedFly: двуликий и незаметный

Разбираем фреймворк StripedFly для целевых атак, использовавший собственную версию эксплойта EternalBlue и успешно прикрывавшийся майнером.

Азиатские APT-группировки: тактики, техники и процедуры

Делимся с сообществом подходами, которые используют азиатские APT-группировки при взломе инфраструктуры, и подробной информацией о тактиках, техниках и процедурах (TTPs) злоумышленников, основанной на методологии MITRE ATT&CK.

Как поймать «Триангуляцию»

Эксперты «Лаборатории Касперского» смогли получить все этапы «Операции Триангуляция»: эксплойты нулевого дня для iOS, валидаторы, имплант TriangleDB и дополнительные модули.

Подпишитесь на еженедельную рассылку

Самая актуальная аналитика – в вашем почтовом ящике