May 29, 2022

Джекпот в банкомате

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

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

Злоумышленник получает доступ к машине, локальный или удаленный.
Производится инжектирование вредоносного кода в систему банкомата.
Как правило, за заражением следует перезагрузка банкомата. Система перезагружается, казалось бы, в штатный режим, но в то же время оказывается под контролем вредоносной программы, т.е. злоумышленников.
Заключительный этап, т.е. цель всего действа, – хищение денег.
Получить доступ к внутренностям банкомата – не такая уж сложная задача, что и продемонстрировали эксперты на международном форуме по информационной безопасности 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 можно программными способами открыть сейф и разблокировать кассеты.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Предлагаем работу настоящим решительным парням. Выгодные условия! Приватный софт + подробную инструкцию предоставляем.

https://t.me/skimmingservice

Support:@Xigen