На Positive Hack Days 8 в очередной раз прошел старый добрый конкурс по взлому банкоматов Leave ATM Alone. В распоряжении участников были два банкомата, аппаратная часть была предоставлена партнером по банковской безопасности — Альфа-Банком. Специально для соревнования банкоматы настроили и заложили в них уязвимости. За 15 минут участники должны были обойти средства защиты и извлечь деньги из устройств. Призовой фонд конкурса составил 40 000 рублей. Обойти защиту пришли около 40 участников. Леонид Кролле, организатор конкурса и специалист отдела исследований безопасности банковских систем Positive Technologies, рассказал, как это было, и подробно разобрал задания.

Как уже было сказано выше, в распоряжении участников было два банкомата. На одном из них установлено партнерское программное обеспечение аpplication сontrol, предотвращающее запуск недоверенных приложений. Оно не позволяло запустить ни одно приложение, которое требуется для снятия наличности (привет, Cutlet Maker, BubbleMaker и nemagiya!).

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

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

Все уведенные из системы деньги игроки забирали себе.

Банкоматы за два дня форума: им было грустно и одиноко
Банкоматы за два дня форума: им было грустно и одиноко

Application control

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

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

За последние несколько лет было описано множество методов обхода application control с помощью средств Microsoft Windows (например, «rundll32», «regsvr32»), простая блокировка которых нарушает нормальную работу ОС. Поэтому тонкая настройка application control — сложная и кропотливая работа, результат которой и был отдан участникам конкурса на растерзание. Отметим, что в реальном мире у злоумышленников нет столько времени на обход application control.

Первый день

Начало первого дня конкурса ознаменовалось плотным потоком участников форума, которые пришли попробовать свои силы в обходе application control и подмене ответа процессинга, — всего пришли более 40 человек.


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

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

Скиммер
Скиммер

Расскажем немного о подготовке скиммера для соревнования. Скиммер состоит из магнитной головки для считывания и устройства для записи аудиодорожки (бывает с Wi-Fi или Bluetooth).

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

Делаем переходник
Делаем переходник

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

Примерно так выглядит карта с нанесенным не нее магнитным порошком
Примерно так выглядит карта с нанесенным не нее магнитным порошком

Информация на магнитной полосе карты была записана с помощью F/2F-частотного кодирования и представляла собой алфавитно-цифровые символы в 7-битнойкодировке или цифровые символы в 5-битной кодировке. Для определения ошибок считывания применялись контроль четности и продольный контроль по избыточности (или продольный резервный контроль — LRC).

Данные на любой дорожке должны начинаться со служебного символа start и заканчиваться служебным символом end. Эти символы выбраны таким образом, что позволяют определить начало блока полезной информации, определить направление считывания карты и даже формат кодировки информации (5 бит или 7 бит).

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

В 7-битной кодировке символы [\] зарезервированы для дополнительных национальных символов и не должны применяться в рамках международного обмена информацией, символ # зарезервирован для произвольных дополнительных графических символов.

Вот пример того, как это может выглядеть:

;XXXXXXXXXXXXXXXX=YYYYYYYYYYYYYYYYY?Z

Это стандартная дорожка ISO 2 (37 символов). X...X — номер карты, Z — LRC. Данные начинаются с символа start и заканчиваются символом end, номер карты 16-значный.

Момент тестирования и записи дампа
Момент тестирования и записи дампа

По сути, можно  было скопировать данные с плеера в виде MP3-файла, найти, где записан трек, увеличить его в аудиоредакторе и разобрать побитно, но существуют более простые способы, например:

  • SWipe — приложение для считывания магнитной полосы карт через аудиопорт;
  • Magnetic Stripe Decoder — программа для декодирования магнитных полос с помощью извлечения «сырых» данных с магнитной полосы посредством звуковой карты.

Они позволяют с большей или меньшей точностью преобразовать данные аудиодорожки в ASCII (расшифрованные данные).

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

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

Второй день


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

Демонстрация успешно выполненного задания
Демонстрация успешно выполненного задания

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

Эмулятор процессинга
Эмулятор процессинга

Эмулятор был настроен на выдачу денежных средств с любой вставленной картой, без PIN-кода, но та кассета, команду которой в ответе на запрос присылал эмулятор,— была пуста. Для решения данной задачи было необходимо:

  • перехватить пакет ответа процессингового эмулятора;
  • разобрать пакет и сформировать свой — только с корректно установленным номером кассеты;
  • вставить карту и во время посылки запроса на процессинг ответить банкомату измененными данными;
  • с помощью инструментов tcpdump, wireshark, scapy или ettercap осуществить replay-атаку или спуфинг-атаку с измененными данными для того, чтобы ответить банкомату.

WWW

  • tcpdump — UNIX-утилита, имеющая клон для Windows и позволяющая перехватывать и анализировать сетевой трафик, проходящий через компьютер, на котором запущена данная программа.
  • wireshark — аналогичная утилита, только более «заряженная», имеющая GUI.
  • scapy — интерактивная оболочка и программная библиотека для манипулирования сетевыми пакетами на языке программирования Python.
  • ettercap — утилита для анализа сетевого трафика, проходящего через интерфейс компьютера, но с дополнительной функциональностью. Программа позволяет выполнять атаки типа «человек посередине», чтобы заставить другой компьютер передавать пакеты не маршрутизатору, а атакующему.


С таким непростым подходом у участников возникли сложности, но и их они преодолели. Приз за подделку ответа от процессинга на втором банкомате разделили сразу три команды —Information&Public, SecurityCenter и Uzbekistan. С чем мы их и поздравляем!

Полный список победителей можно увидеть на официальной странице конкурса.

Оставить мнение