October 22, 2020

Как взламывают банкоматы, от отвертки до black box

ВНИМАНИЕ! РЕДАКЦИЯ КАНАЛА НЕ СОВЕРШАЕТ И НЕ РЕКОМЕНДУЕТ ВАМ СОВЕРШАТЬ ПРОТИВОПРАВНЫХ ДЕЙСТВИЙ ИЛИ ПОЛУЧАТЬ НЕСАНКЦИОНИРОВАННЫЙ ДОСТУП К СИСТЕМАМ. ДАННАЯ СТАТЬЯ НАПРАВЛЕНА НА ТО, ЧТОБЫ УКАЗАТЬ НА ПРОБЛЕМЫ С СИСТЕМАМИ И ПРЕДОСТЕРЕЧЬ ПОЛЬЗОВАТЕЛЕЙ И УЧРЕЖДЕНИЯ ОТ ПОТЕНЦИАЛЬНО ВОЗМОЖНЫХ АТАК.

Наверное каждый, кто хоть раз снимал деньги из банкомата, слыша приятный шум диспенсера, задумывался о том как бы достать их побольше. И не мудрено, ещё в 90х, пересмотрев “Терминатор-2”, где Джон Коннор взламывает ATM с помощью ноутбука, некоторые начинали мечтать о том, как бы повторить его злодеяния. Несмотря на то, что терминаторов и скайнет до сих пор не изобрели, атаки на банкомат – реальность. Сегодня мы рассмотрим самые известные методы взлома ATM в мельчайших нюансах.

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

Над сейфом расположена сервисная зона, там установлен экран и клавиатура, которая называется “пинпад”. За ними — компьютер. Порой это обычный системный блок, а иногда даже в таком корпусе, как и обычный домашний компьютер. Также там находится служебное оборудование: устройство для считывания карт, принтер для чеков и системы безопасности. Все устройства подключены к системному блоку, выполняющего функцию хоста. Порты могут быть расположены прямо на системном блоке, а при их нехватке используется USB-разветвитель.

Банкомат связан с банком защищенным каналом связи, обычно по протоколам NDC/DDC(спецификации внизу статьи) или X.25(в общих случаях).

Деньги хранятся в кассетах, в среднем, этих кассет от четырех до шести. В каждой кассете примерно 2500 банкнот. Каждая кассета настроена под банкноту своего номинала: вместо купюр номиналом пятьдесят рублей не получится зарядить пятитыcячные.

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

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

Вскрытие сервисной зоны банкомата на PHDays

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

Список ПО, установленного в банкомате невелик:

  • Операционная система. Благодаря сильному лобби со стороны Microsoft большинство банкоматов работают под управлением ОС Windows разных модификаций. Хотя можно встретить машины, обычно более старые, под управлением QNX или AIX.
  • Програмное обеспечение для управления модулями
  • ПО, используемое для взаимодействия с пользователем (клиентом банкомата или оператором)
  • ПО для связи с процессинговым центром (который обеспечивает информационную и технологическую стороны транзакции)
  • антивирус или ПО для контроля целостности системы

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

Как и писалось выше, в качестве операционной системы, наверное, в 60% банкоматов до сих пор используют Windows. Да не просто Windows, а Windows XP. Microsoft не выпускает обновления для этой ОС с апреля 2014 года. Само собой, все 0-day для Windows XP остаются неустраненными. Зачастую, сотрудники, обслуживающие банкоматы, считают, что если банкомат работает, то лучше его и «не трогать». Поэтому на некоторых ATM до сих пор можно обнаружить, например, незалатанную критическую уязвимость MS08-067, дающую возможность удаленного выполнения кода.

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

В каждый момент времени банкомат находится в одном из режимов работы:

  • Power Up — Загрузка
  • Offline — Нет связи с сервером или идёт соединение
  • Supervisor — Режим для инкассатора или сервис-инженера
  • Out of service — банкомат неисправен, кончились деньги, или банк перевёл его в этот режим
  • In service — основной режим работы

В режиме In service банкомат находится в одном из состояний (стейт), с номером от 001 до 999, и 25 символьной строкой-описанием.

Первый символ этой строки — тип стейта (обозначаются буквами A..Z а так же a..z и некоторыми символами (,’.?)), он определяет совокупность. Остальные 24 символа — это 8 десятичных 3-значных чисел, каждое из которых является определенной настройкой стейта (номер экрана для показа, условия перехода на стейт, список действий). Стейтов одного типа может быть любое количество.

Режим In service

При старте режима обслуживания банкомат автоматически начинает выполнять стейт 000. Обычно это стейт A (Card read state). В этом стейте банкомат отображает экран с приглашением вставить карту и переводит картридер в режим приёма. Также стейт отвечает за чтение карты и ветвление в зависимости от результатов этой операции.

Ниже пример конфигурации типичного стейта A:
000A001001011008004002001104

000 — номер стейта
A — тип стейта (Card read state)
001 — номер экрана (Screen number)
001 — номер стейта, на который переходить в случае успешного чтения карты
011 — номер стейта, на который переходить в случае ошибок чтения карты
008 — условие чтения 1
004 — условие чтения 2
002 — условие чтения 3
001 — условие возврата карты (сразу после чтения или по завершение операции)
104 — стейт перехода, если если карта неизвестна банку

Пройдемся по параметрам более подробно:
Тип стейта — тут всё понятно: определив тип стейта, приложение знает как интерпретировать дальнешие параметры.
Номер экрана — представляет собой ссылку на строку с текстовым описанием экрана, отображающимся во время работы данного стейта.

Не каждый стейт имеет экран.

Экран может иметь номер от 000 до 999. Экраны, отличающиеся на 100, обычно резервируют под разные языки. Таким образом экран 010 и экран 210 это скорее всего разноязычные версии одного экрана. Об экранах я расскажу чуть позже.

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

Помимо стейтов и экранов в банкомате есть ещё один важный конфигурационный параметр — financial institution table. Таблица финансовых институтов содержит данные о том, какие карты принадлежат какому банку, как правильно парсить данные прочитанные с дорожек карты, и что делать в зависимости от этих данных дальше. Например если карта локальная то можно выполнить один сценарий, если карта стороннего банка то нужно запретить ветку сценария с мобильными платежами и проверкой баланса.

Номер стейта перехода в случае проблем с чтением карты — если карту не получилось прочесть ни по одному из предложенных условий — переходим на стейт, указанный в этом параметре. Как правило, это стейт J (Close state) на котором мы отдаём карту, показываем экран с предложением забрать её и активируем таймер по истечению срока которого будет запущен механизм удержания карты. Стейт J также является последним стейтом в случае успешной транзакции.

Условия чтения карты (3 параметра подряд) — это битовые маски, обозначающие номера треков, которые нужно прочесть, и взаимодействие с чипом в случае его наличия.

Например, Read Chip, Read Track 2 and Track 1, Read Track 1. Если хоть одно из условий срабатывает, то остальные условия не выполняются и карта считается прочитанной. Если ни одно из условий не выполняется, карта считается непрочитанной.

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

Остальные стейты устроены схожим образом:

  • Есть стейты для чтения суммы с клавиатуры и помещения в специальный внутренний буфер;
  • Есть стейты для чтения пин-кода пин-падом и получение затем пин-блока в специальный буфер;
  • Есть стейты для проверки введенных данных (например, если введенная сумма меньше минимальной суммы, то идет перенаправление на стейт с сообщением об ошибке);
  • Есть стейты для выбора с помощью боковых клавиш (так называемых FDK) и помещения символов этих клавиш (ABCD FGHI) в специальный 8-байтный буфур;
  • Есть стейты для обнуления и предустановки буферов.

Переходя по всем этим стейтам, приложение рано или поздно доходит до стейта взаимодействия с хостом — стейта I (Transaction Request State). На этом стейте формируется запрос из данных, собранных на прошлых стейтах и отправляется на сервер. Запрос представляет собой ID Банкомата (Logical Unit Number), данные с дорожек карты, данные о предыдущих транзакциях, данных с буферов суммы, пин-блока, нажатий функциональных клавиш (FDK буфер). Данные разделяются символом разделителем. Серверное приложение получает запрос и анализирует буфер FDK – именно по содержимому этого буфера хост понимает чего хочет банкомат. После чего, в зависимости от принятого решения, отсылает ответ в котором содержатся:

  • идентификатор действия которое нужно совершить;
  • номер экрана который нужно при этом действии показывать;
  • содержимое чека, если чек нужно напечатать;
  • стейт на который нужно перейти по завершению действия.

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

По завершению требуемых действий приложение шлёт подтверждение на хост и переходит на указанный стейт. Как правило это уже известный нам стейт J. В случае какого-либо сбоя приложение шлёт сообщение о сбое на хост и ждёт нового Transaction Reply с переходом на новый стейт.

Экран банкомата представляет собой поле 32х16 клеток. Экран может содержать как графическую информацию, так и текстовую, которая позиционируется относительно клеток. Шрифты могут быть двойной высоты.

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

Пример экрана, отображающего картинку из таблицы картинок (\0c\1bP2018\1b\5c)

Именно на такие экраны ссылаются параметры стейта.

Совокупность стейтов, экранов, FIT, таймеров называется сценарием банкомата. Каждый сценарий имеет свой номер. После загрузки банкомата и подключением его к сети, он шлет на хост сообщение в котором сообщает свой ID и номер конфигурации. Если конфигурацию следует обновить — хост переводит банкомат в режим «Out Of Service» и начинает грузить необходимые параметры новой конфигурации. Последним параметром идёт номер конфигурации. Схожим образом происходит загрузка ключей для шифрования пин-блока, для макирования, и мастер-ключей.

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

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

Возможности для логической атаки на банкомат

Против лома нет приёма

Иногда для логических атак не нужно сложного оборудования и ПО, достаточно отверки или маленького ломика.

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

Поведение при обнаружении не забранной карты полностью настраивается — банкомат может как захватить её, так и оставить в тракте. Тоже самое относится к выдаче карты до/после денег, в начале/конце работы, при отключении электричества. Что делать, если введён неверный PIN, введен ложный PIN (если есть), когда обнуляется счетчик неверных PIN-ов, нужен ли захват карты — все решает хост. Если хост не проинструктирует банкомат захватить карту, он её не захватит, будь она хоть десять раз фальшивая, украденная и потерянная.

Просто и логично? Чем не логическая атака? До 2016 в большинстве банков всё работало как часы. Но прошло время и уязвимость была исправлена. Тем не менее, и сейчас существуют, как банки, в которых ничего об этом не слышали, так и устаревшие машины. Мир очень большой…

Усложняемся: black box

Для реализации такой атаки злоумышленники сверлят отверстие в лицевой панели банкомата, чтобы добраться к шине USB или напрямую к кабелю диспенсера. Получив доступ к кабелю, злоумышленник может подключить диспенсер к своему устройству, запрограммированному для отправки команд на выдачу купюр. Атаки такого типа получили название Black Box.

Банкомат с просверленным отверстием в сервисную зону

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

Как же происходит атака? Злоумышленник вскрывает или сверлит банкомат, подключает диспенсер к своему ноутбуку и покидет место преступления, оставив устройство подключенным. Ноутбук с установленными драйверами для диспенсера банкомата с пропатченной утилитой KDIAG, не требующей подтверждения открытия крышки, по команде оператора отдаёт команду о выдаче денег. Для организации удаленного доступа оператора к ноутбуку подключен USB GPRS модем. В качестве ОС используется Windows, версии XP или 7 для лучшей совместимости с драйверами.

Также в свободном доступе существует софт от ATMDesk.

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

Недостаточно надежная система защиты NCR используется в половине банкоматов. Еще в 19% машин вовсе отсутствуют какие-либо меры защиты от атак Black Box.

XFS

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

В случае, если банкоматом находится под управлением системы на основе Windows, задача програмного обсепечения сводится к организации взаимодействия пользователя (клиента или обслуживающего персонала) с процессинговым центром, который присылает банкомату команды, и управляет оборудованием, которое эти команды выполняет. Обмен сообщениями с процессинговым центром происходит по протоколам (NDC/DDC или X.25), пользователь работает через GUI, а за работу каждого модуля банкомата отвечают соответствующие сервис-провайдеры (своеобразные шлюзы в эти модули). Для трансляции команд в сервис-провайдеры и далее в оборудование, а также для возврата статусных сообщений, используется уровень, называемый XFS Manager – согласно концепции WOSA. Любой крупный производитель банкоматов (Wincor, NCR, Diebold) имеет свою реализацию как XFS, так и банковского приложения. Однако на рынке есть альтернативный софт, соответствующий всем стандартам и не привязанный к конкретному вендору.

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

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

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

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

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

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

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

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

Все спецификации можно взять здесь. Ещё больше об XFS тебе расскажет Google.

Интересующимся, SDK можно найти здесь.

XFS manager 3 с библиотекой wsxfs.dllСкачать

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

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

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

Малварь

На одном из русскоязычных закрытых кардерских форумов Vendors cлухи о возможности опустошения банкоматов витали где-то с середины 2008 года, но только в 2009 году, когда аналитики смогли получить первые образцы малвари, финансовый мир всколыхнуло появление троянца Backdoor.Win32.Skimer: это была первая известная вредоносная программа, нацеленная на банкоматы. Skimer атаковал банкоматы Wincor Nixdorf. С помощью зловреда злоумышленники опустошали диспенсер и получали данные с пластиковых карт, обработанных в зараженном банкомате.

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

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

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

Давай рассмотрим самые значимые вредоносы для банкоматов и то, как они работали.

Существует несколько различных вариантов классификации ATM Malware (вредоносных программ для банкоматов). По функциональному признаку все подобные программы можно разделить на два типа: виртуальные скиммеры (Virtual Skimmers) и утилиты прямой выдачи (Direct Dispense).

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

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

За последние 10 лет обнаружено свыше 30 различных семейств зловредов для банкоматов. Рассмотрим несколько наиболее популярных и значимых и постараемся выделить общие черты и уникальные отличия каждого.

Ploutus

Ploutus – семейство вредоносных программ с наибольшим количеством обнаруженных сэмплов. Большинство из них были зарегистрированы в Мексике. Ploutus — типичный пример зловреда прямой выдачи. Для загрузки вредоноса злоумышленники должны иметь доступ к USB портам или приводу CD.

В качестве примера можно привести одну из недавних модификаций, Ploutus-D, которая изначально была ориентирована на банкоматы Diebold, широко распространенные в США. Однако вредонос взаимодействует с банкоматом через мультивендорную платформу KAL Kalignite, и после несложной модификации кода Ploutus-D может применяться и для атак на банкоматы других производителей.

Skimer

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

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

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

Tyupkin

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

Отличительная черта Tyupkin – его возможность ограничить время своей активности в заданные часы и дни недели. Некоторые из первых разновидностей Tyupkin изначально могли запускаться только по ночам в воскресенье и понедельник.

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

Alice

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

Cutlet Maker

В 2017 году киберпреступники начали продавать в даркнете услугу “ATM Malware-as-a-Service”. За 5 тыс. долларов каждый может приобрести пакет из готовой к использованию вредоносной программы Cutlet Maker и видеоинструкции по вскрытию банкомата. Купившим услугу нужно выбрать подходящий банкомат (авторы малвари рекомендуют Wincor Nixdorf), воспользоваться инструкцией по взлому его сервисной части, загрузить вредоносную программу и заплатить организаторам сервиса за её активацию, чтобы запустить процесс выдачи денег.

Интерфейс Cutlet Maker

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

FASTCash

FASTCash – уникальный инструмент, который Северокорейская хакерская группировка Lazarus использовала для атаки на финансовые организации более чем в 20 странах мира. Суммарно за 2016—2018 гг. было похищено несколько десятков миллионов долларов.

Особенность FASTCash заключается в механизме его работы и ориентации на ОС IBM AIX. Хакеры внедряли троян в легитимный процесс на сервере приложений процессинговых систем, контролирующих транзакции в банкоматной сети и работающих под управлением AIX.

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

Схема работы FastCash

Это еще один пример целевой атаки на финансовые организации, в данном случае через процессинговые системы. При этом уровень сложности и проработки FASTCash очень высок и несопоставим ни с одним другим “стандартным” ATM Malware.

ATMitch

Изучение малвари показало, что после установки под именем tv.dll, ATMitch изнутри банка открывается удаленное соединение с банкоматом по протоколу Remote Desktop Connection. Затем малварь ищет файл command.txt, который должен быть создан атакующим и расположен в одной папке с самим вредоносом. Если файл обнаружен, ATMitch читает его содержимое, состоящее из одного символа, и исполняет соответствующую команду:

  • O’ – открыть диспенсер
  • ‘D’ – выдать деньги
  • ‘I’ – Инициализировать библиотеку XFS
  • ‘U’ – Разблокировать XFS
  • ‘S’ –Установка
  • ‘E’ — Выход
  • ‘G’ – Получить идентификатор диспенсера
  • ‘L’ – Установить идентификатор диспенсера
  • ‘C’ — Отмена

После выполнения команды ATMitch записывает результаты в журнал и удаляет с жесткого диска банкомата файл command.txt. Затем злоумышленникам оставалось лишь подойти к банкомату, забрать деньги и исчезнуть.

Исследователи пишут, что для осуществления контроля над банкоматом используется стандартная библиотека XFS. То есть малварь работает на любом банкомате, который поддерживает библиотеку XFS, а таких подавляющее большинство. Cтоит отметить, что в файле tv.dll содержался один русскоязычный ресурс, что с одной стороны говорит о малой компетентности програмистов, с другой об отечественном происхождении зловреда.

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

ATM Malware потенциально может принести существенную выгоду злоумышленникам. За 10 лет с момента появления первой вредоносной программы, созданной специально для атак на банкоматы, было обнаружено более 30 семейств вредоносов этой категории, разной степени сложности и с различным функционалом.

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

Выход из режима киоска

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

Сценарий атаки выглядит следующим образом:

  1. Злоумышленник подключает к USB- или PS/2-интерфейсу банкомата устройство для эмуляции клавиатуры и ввода информации пользователем, например на базе Raspberry Pi, Teensy или BeagleBone. На следующей стадии атаку можно полностью автоматизировать или подключиться к этому устройству удаленно.
  2. Далее злоумышленник получает доступ к ОС. Во всех случаях сделать это удавалось с помощью горячих клавиш, поскольку ограничения на ввод информации либо отсутствовали, либо предусматривали не все возможные сочетания.
  3. Заключительный шаг — обход средств защиты, направленных на предотвращение выполнения постороннего кода, и получение возможности отправить команду диспенсеру.

Уязвимости, позволяющие обойти режим киоска, могут содержаться и в ПО, установленном для дополнительной защиты. Так, в двух банкоматах использовалось ПО для видеозаписи и мониторинга событий безопасности. Окно приложения было скрыто, однако во время исследования выяснилось, что оно открывается при наведении курсора мыши на угол экрана монитора. В приложении присутствовала функция редактирования файлов, через которую можно было получить доступ к приложению «Проводник» ОС Windows, а затем — к любому ПО на компьютере, например Internet Explorer, FAR Manager.

Выход из режима киоска в ПО «Интеллект»

Подключение к жесткому диску

Прямой доступ к жесткому диску банкомата возможен в 92% случаев.

Обойти установленные средства защиты и получить контроль над диспенсером возможно при подключении к жесткому диску банкомата. Рассмотрим потенциальные сценарии атак.

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

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

Злоумышленник может произвести загрузку с внешнего носителя и получить доступ к файловой системе. Порядок загрузки установлен в параметрах BIOS, которые должны быть защищены паролем. Однако в 23% банкоматов пароль для доступа к BIOS был предсказуемым, а в 8% не требовался вовсе. В одном случае не удавалось подобрать пароль администратора, но для доступа с пользовательскими привилегиями пароль не требовался, при этом пользователь мог изменять порядок загрузки. Еще в одном банкомате была доступна загрузка ОС по сети с использованием Intel Boot Agent в обход приоритетов загрузки BIOS.

Загрузившись со своего носителя, злоумышленник получает возможность подключить оригинальный жесткий диск и продолжить атаку теми же способами, как и в случае прямого подключения к диску. На рисунке ниже продемонстрировано переименование драйвера McAfee Solidcore for APTRA, содержащегося на жестком диске банкомата, после загрузки ОС с внешнего носителя. В результате ПО McAfee Solidcore не будет запущено при загрузке банкомата в рабочем режиме.

Небезопасность прошивки и танец лиц

В последних версиях XFS и новых моделях банкоматов придусмотренна защита от black box в виде шифрования коммуникаций между хостом банкомата и диспенсером. Мы решили разобраться как это происходит на примере платы диспенсера NCR USB S1.

Прошивка представляет из себя ELF-файл под процессор NXP ColdFire (Motorola 68040), работающий на VxWorks v5.5.1.

В ELF-файле интерес представляют две основные секции .text и .data. В одной из них содержится код, который крутится все основное время (назовем его основной прошивкой), когда диспенсер подключен к системнику в верхней части АТМ. Во второй лежит упакованный с помощью zlib код загрузчика (его местное название USB Secure Bootloader), который отвечает за заливку прошивки и запуск основного кода. Также в файлике остались невырезанными символы: бери да ищи что-нибудь интересное.

Если разделять код на основные составляющие, то получится такая схема (в порядке подчинения):

  1. Поток, который занимается получением USB-пакетов и распределением их по сервисам.
  2. Сервисы — основные исполняющие единицы, каждому из них отведена своя роль и у каждого есть свои задачи (классы).
  3. Классы — здесь это задачи, которые может выполнять тот или иной сервис с помощью контроллеров.
  4. Контроллеры — собственно «воркеры» (workers), которые занимаются валидацией присланных им задач, их выполнением, а также формированием ответных пакетов.

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

В итоге нашлись следующие сервисы, которые как раз должны выполнять то, что мы искали:

1) DispTranService (Dispenser Transaction Service): работа с шифрованными командами, формирование пачек банкнот, аутентификация. Можно сказать, самое интересное — здесь.

2) securityService: после аутентификации на стороне диспенсера генерируется сессионный ключ, который по запросу компьютера отправляется на него в зашифрованном виде. Этим ключом будут шифроваться все важные команды — выдача, формирование пачки банкнот.

Впоследствии на глаза попался еще один сервис: UsbDownloadService. Его задача – при подключении диспенсера к компьютеру и несоответствии версии прошивки диспенсера той, что хранится на компьютере банкомата, переходить в bootloader с целью заливки прошивки, с которой должна работать ОС (лежит в папке с ПО вендора на компьютере). Этот сервис также умеет отдавать информацию о версии прошивки.

Физическая аутентификация реализована на высочайшем уровне и защищает АТМ от простой отправки по USB команд на выдачу без авторизации. В данном случае она заключается в том, что только при открытом сейфе с деньгами нужно выполнить одно из следующих действий: вынуть и вставить нижнюю кассету, переключить тумблер на задней стенке стойки с диспенсером.

Но все это требуется ТОЛЬКО ЕСЛИ уровень доступа установлен на максимальный, то есть физический. Всего их три: USB (0), логический (1) и физический (2). Остальные два используются сервисниками и разработчиками для отладки и тестирования прошивки. Ну а физический — крайне рекомендуется вендором к использованию по умолчанию.

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

Оказалось что, UsbDownloadService принимает команды, не требующие шифрования.

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

Пока наличие загрузчика было тайной, оставался открытым вопрос: как же все-таки ПО на компьютере заливает прошивку? Ведь в основной прошивке ничего такого обнаружить не удалось.

Итак, bootloader распакован, загружен в IDA по смещению 0x100000 — теперь можно исследовать… Только символов нет!

Не беда: сравнение основной прошивки с кодом загрузчика, чтение datasheet контроллера — и начинает вырисовываться определенная картина.

Выяснилось, что заливка прошивки хоть и выглядит защищенной, таковой на деле не является. Всего-то нужно знать, как заливать ее правильно.

На полное понимание этого процесса было потрачено довольно много усилий и времени (подробнее об этом можно узнать из доклада «Blackbox is dead—Long live Blackbox!» на конференции Black Hat 2018 в Лас-Вегасе). Чего только стоит перепайка памяти NVRAM, заливка в нее бэкапа с целью «раскирпичивания» всего контроллера…

В итоге получился следующий алгоритм заливки прошивки в диспенсер:

1) Сгенерировать пару RSA-ключей и залить публичный ключ в контроллер.

2) Записать последовательно секции .data и .text из ELF по их физическим адресам из заголовков секций.

3) Подсчитать SHA-1 от записанных данных, зашифровать хеш приватным ключом, отправить в контроллер.

4) Подсчитать и отправить сумму всех записанных word-ов прошивки.

После чего, если все подсчитано и записано успешно, загрузится основная прошивка.

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

В итоге моя особая прошивка с antisecurity-фиксами была залита и успешно запущена!

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

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

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

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

Список CVE:

Но и это не всё. Есть устройства, которые могут эмулировать отдельные блоки банкомата и таким образом вводить в заблуждение диспенсер. Например это:

FaceDancer21 — это обязательный инструмент для пентестера платежных систем. С его помощью можно эмулировать разные USB-устройства. Например, создать устройство с определенным ID и обойти список разрешенных подключаемых устройств, определять, какие типы устройств поддерживает порт USB, что полезно при работе с банкоматами, фаззить. что удобно для поиска 0day в драйверах USB. Соответствую своему названию, FaceDancer позволяет не только менять ID устройства, но и маскировать «хосты» как отдельные USB устройства и наоборот. Но и это не всё. Главное преимущество устройства заключается в том, что оно открывает доступ к USB шине с помощью высокоуроневых языков программирования через библиотеки на Python, C и Ruby. Зная API, злоумышленик легко может получить доступ к хосту банкомата, подделав ID контроллера, и напрямую управлять периферийными устройствами внутри банкомата, например, устройством выдачи денег, идентифицировавшись, как легитимные устройства, которым разрешено работать с диспенсером и таким образом обойти защиту.

Мы обязательно напишем статью про применение этого замечательного устройства.

Carbanak и все-все-все. Атаки извне.

Финансовые организации и банки дырявы как швейцарский сыр. По данным Positive Technologies в 100% банковвыявлены: уязвимости веб-приложений, недостатки сетевой безопасности, недостатки конфигурации серверов. В 58% банков выявлены недостатки управления учетными записями и паролями. В 22% банков удалось преодолеть сетевой периметр в рамках внешнего тестирования на проникновение. В 25% банков были скомпрометированы узлы, с которых осуществляется управление банкоматами. В 17% банков недостаточно защищены системы карточного процессинга, позволяющие манипулировать балансом на карточных счетах злоумышленников. Статистика впечатляет.

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

Десять самых распространенных уязвимостей на сетевом периметре в банках

В этом разделе мы сосредоточимся на удаленной эксплуатации банкомата.

Как ты уже понял, зная API, можно получить контроль над хост-компьютером банкомата и напрямую управлять различными периферийными устройствами, установленными внутри шкафа ATM, — картридером, клавиатурой для набора PIN-кода, сенсорным дисплеем, диспенсером банкнот и т. п.

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

На конференции Black Hat исследователи Positive Technologies продемонстрировали, сколько времени потребуется злоумышленникам, чтобы установить микрокомпьютер в сервисную зону ATM для использования его в роли сниффера — перехватчика PIN-кода и номера кредитной карты — или аппаратного скиммера, который не оставляет следов на внешнем виде банкомата. Понадобилось две минуты, чтобы разблокировать корпус банкомата, интегрировать микрокомпьютер, замаскировать и подключить его к интернету.

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

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

Естественно, что после такой фиерической демонстрации, ещё в 2014 году, банкоматами заинтересовались и хакерские группы.

Информация о деятельности группы, именуемой Cobalt, появилась совсем недавно: в ноябре 2016 года был выпущен отчет компании Group-IB. В нем деятельность Cobalt связывают в первую очередь с известной ранее кампанией Buhtrap. Именно эта группа, предположительно, стоит за хищением более 1,8 млрд рублей со счетов российских банков в 2015—2016 гг. Предполагается также, что часть участников группы перешли в Cobalt, либо вовсе костяк Buhtrap переключил свое внимание на банкоматы.

По мнению Group-IB, Buhtrap — первая преступная группа, начавшая использовать сетевого червя для поражения всей инфраструктуры банка. В качестве основного вектора проникновения в корпоративную сеть группа использовала фишинговые рассылки от имени Банка России или его представителей, при этом в ряде атак было зафиксировано распространение вредоносного программного обеспечения через эксплоиты, в частности с использованием инфраструктуры группы Metel.

В 2016 году наблюдается тенденция использования преступниками общедоступных утилит, ПО для легитимных тестов на проникновение, в частности Cobalt Strike, и стандартных функций операционных систем. Показательным примером можно считать нашумевшие в 2016 году атаки группы Carbanak, жертвами которой также стали банки в России и Восточной Европе. Эта группа использовала аналогичные инструменты, а также Metasploit. Кстати, исходный код инструмента Carbanak до сих пор находится в открытом доступе. Можно найти здесь и здесь.

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

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

Рассматриваемый в данном отчете пример атаки подтверждает этот тренд. Здесь преступники применили коммерческое ПО Cobalt Strike для проведения тестов на проникновение, и в частности многофункциональный троян Beacon, входящий в его состав. Агент Beacon является основной полезной нагрузкой и представляет из себя мощный троян. Для удаленного управления также применялось всем известное легитимное ПО Ammyy Admin, которое любой желающий может скачать с сайта производителя. Также были использованы другие распространенные инструменты, к примеру: Mimikatz, PsExec, SoftPerfect Network Scanner, TeamViewer…

Общая последовательность действий была такая:

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

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

Сеть и MITM

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

Cетевые атаки на банкоматы

«Последняя миля» связи между банкоматом и процессинговым центром, богата самыми разнообразными технологиями, которые могут служить точкой входа для кардера. Взаимодействие может осуществляться посредством проводного (телефонная линия или Ethernet) или беспроводного (Wi-Fi, сотовая связь: CDMA, GSM, UMTS, LTE) способа связи. Механизмы безопасности могут включать в себя:

  • аппаратные или программные средства для поддержки VPN (как стандартные, встроенные в ОС, так и от сторонних производителей);
  • SSL/TLS (как специфичные для конкретной модели банкомата, так и от сторонних производителей);
  • шифрование;
  • аутентификация сообщений.

Однако похоже, что для банков перечисленные технологии представляются очень сложными, и поэтому они не утруждают себя специальной сетевой защитой; или реализуют её с ошибками. В лучшем случае банкомат связывается с VPN-сервером, и уже внутри приватной сети – подключается к процессинговому центру. Кроме того, даже если банкам и получится реализовать перечисленные выше защитные механизмы, – у злоумышленников уже есть эффективные атак против них. Даже если безопасность соответствует стандарту PCI DSS, банкоматы всё равно остаются уязвимыми.

Исследование ИБ компании Positive Technologies показывают, что атака с подменой процессинга возможна в 27% банкоматов. То есть более чем в одном из пяти.

Ещё 58% банкоматов позволяют перехватывать данные между банкоматом и процессинговым центром. Атака возможна из-за передачи полного значения Track2 в открытом виде и отсутствия шифрования при взаимодействии между банкоматом и процессингом на прикладном уровне, поскольку практически во многих банкоматах используются протоколы NDC и DDC, не предусматривающие шифрования данных. Подключившись к сети банкомата и перехватывая сетевой трафик, злоумышленник может получать информацию о платежных картах.

Перехват данных Track2 в открытом виде

Если есть желание детально разобраться с тем, как функционирует банкомат, на github доступен эмулятор банкомата с реализацией связи с процессингом по протоколу NDC.

Документацию по протоколу NDC, а также обслуживанию банкоматов NCR, работе с EMV и много всего ещё можно найти здесь.

Aptra Advance Supervisor NDC GuideСкачать

Aptra Advance Reference NDC ManualСкачать

Как злоумышленники тестируют свои методы?

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

Но как же злоумышленники всё это тестируют?

Оказывается, это тоже не проблема. В интернете и совсем недорого можно купить абсолютно рабочий банкомат Б/У без всяких подтвеждений и документов по цене от 200000руб – 1000000руб. Интернет-реселлерам банкоматы попадают либо после списания из банков, либо после распродажи оборудования организаций банкротов. Немало финансовой техники вывозилось и всё еще вывозится из ДНР и ЛНР, где техника стоит практически “бесхозная” и при наличии знакомств полностью рабочий банкомат с предустановленным софтом одного из украинских банков можно купить вообще за “копейки”. В продаже были замечены не только банкоматы, но и банковские сервера. Впрочем, плату контроллера диспенсера с прошивкой желающие могут купить не только в Донецке, но и на Ebay.

Контроллер диспенсера NCR USB S1 Dispenser

Итог

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

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

ВНИМАНИЕ! РЕДАКЦИЯ КАНАЛА НЕ СОВЕРШАЕТ И НЕ РЕКОМЕНДУЕТ ВАМ СОВЕРШАТЬ ПРОТИВОПРАВНЫХ ДЕЙСТВИЙ ИЛИ ПОЛУЧАТЬ НЕСАНКЦИОНИРОВАННЫЙ ДОСТУП К СИСТЕМАМ. ДАННАЯ СТАТЬЯ НАПРАВЛЕНА НА ТО, ЧТОБЫ УКАЗАТЬ НА ПРОБЛЕМЫ С СИСТЕМАМИ И ПРЕДОСТЕРЕЧЬ ПОЛЬЗОВАТЕЛЕЙ И УЧРЕЖДЕНИЯ ОТ ПОТЕНЦИАЛЬНО ВОЗМОЖНЫХ АТАК.

В статье использованы материалы Diebold-Nixdorf, Positive Technologies, Talos Security, Лаборатории Касперского, Владимира Кононовича и Алексея Стенникова. Большое спасибо авторам за материал и проделанные исследования.