Розбір конкурсу Leave ATM Alone на PHDays 8

  1. Application control
  2. Перший день змагання
  3. Другий день

Дата публікації: 30 травня 2018

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

Леонід Кролл, організатор конкурсу і фахівець відділу досліджень безпеки банківських систем Positive Technologies, р ассказал, як це було, і докладно розібрав завдання

Учасники конкурсу Leave ATM Alone

У розпорядженні учасників було два банкомати. На одному з них встановлено програмне забезпечення а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 і підміні відповіді процесингу, - всього понад 40 осіб

перші учасники

Всього на обхід захисту на банкоматі з application control відводилося 15 хвилин: за цей час потрібно було встигнути запустити свій код. На жаль, в перший день всі спроби учасників запустити свій експлойт провалювалися. Однак одному учаснику вдалося виявити дивний пристрій, встановлений на банкоматі. Це був скіммер - мініатюрне зчитує переносний пристрій, яке може кріпитися до банкомату. Такі пристосування допомагають шахраям красти дані банківських карт: реквізити, ПІН-код - всю інформацію, записану на магнітній смузі.

скіммер

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

Розповімо трохи про підготовку скиммера для змагання. Скіммер складається з магнітної головки для зчитування і пристрою для запису аудіо супроводу (буває з Wi-Fi або Bluetooth). Даний екземпляр може бути зроблений на основі плеєра-рекордера Explay або аналогічного USB-диктофона. Приклади тут ( http://www.chucklohr.com/usbaudiorecorder/ ). За розмірами вони як раз влазять в накладку на антіскіммер і ще залишається місце для акумулятора, оскільки потрібно було підготуватися і оживити міні Франкенштейна: тест на працездатність був проведений на аналогічному пристрої від іншої моделі банкомату. Для економії місця майданчик кріплення USB-порту обрізається, тому потрібний перехідник довелося зробити самостійно.

робимо перехідникробимо перехідник

Ми протестували коректність включення плеєра-скиммера по інструкції від плеєра з інтернету (на кнопках не було позначень, так як вони залишилися на корпусі) і записали карту і номер, який необхідно було витягти учасникам з скиммера.

Приблизно так виглядає карта з нанесеним на неї магнітним порошкомПриблизно так виглядає карта з нанесеним на неї магнітним порошком

Інформація на магнітній смузі карти записана за допомогою F / 2F-частотного кодування (з чим це їдять і як можна декодувати - читаємо ось тут ) І являє собою алфавітно-цифрові символи в 7-бітної кодуванні або цифрові символи в 5-бітної кодуванні. Для визначення помилок зчитування застосовуються контроль парності і поздовжній контроль за надмірності (або поздовжній резервний контроль - LRC).

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

Керуючі символи призначені для управління апаратними засобами і не можуть бути використані для передачі інформації (змісту даних). Роздільники використовуються для відділення полів даних на карті.

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

Ось приклад, як це може виглядати:

- стандартна доріжка ISO 2:

; XXXXXXXXXXXXXXXX = YYYYYYYYYYYYYYYYY? Z - 37 символів

X ... X - номер карти, Z - LRC (дані починаються з символу start і закінчуються символом end, номер карти 16-значний, присутній LRC)

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

За фактом можна скопіювати дані з плеєра у вигляді MP3-файлу, знайти, де записаний трек, збільшити його в аудіоредактор і розібрати побитно, але існують більш прості способи.

наприклад:

  • SWipe is an application for reading magnetic stripe cards over an audio port.
  • Magnetic Stripe Decoder. A program to decode a magnetic stripe card, receiving the raw data from the magnetic stripe via the sound card.

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

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

Решта учасників продовжили боротися за основні призи, завантажені в банкомати :) Хтось намагався хакнуть захист, але були і ті, хто втомився і втратив надію на швидке збагачення. Проте перший день пройшов бурхливо, хоча основний куш так і залишався у організаторів ...

Проте перший день пройшов бурхливо, хоча основний куш так і залишався у організаторів

Другий день

Залишилися самі наполегливі

У другий день конкурсу на місцях для злому ATM можна було спостерігати все тих же учасників. Наполегливість і завзятість в спробах намацати вектор для обходу захисту не залишилися марними, і ось - Станіслав Поволоцький благополучно обійшов захист і, виконавши непідписаний код, виграв грошовий приз, який перебуває у першій банкоматі.

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

Суть мережевої атаки на другий банкомат зводилася до наступного: в банкоматі знаходився ноутбук з встановленим програмним забезпеченням, емулює роботу процесингу.

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

Емулятор був налаштований на видачу грошових коштів з будь-вставленої картою, без пін-коду, але та касета, команду якої у відповіді на запит надсилав емулятор, - була порожня. Для вирішення даного завдання було необхідно:

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

tcpdump- UNIX-утиліта, що має клон для Windows і дозволяє перехоплювати і аналізувати мережевий трафік, що проходить через комп'ютер, на якому запущена дана програма.

wireshark - аналогічна утиліта, тільки більш «заряджена», що має GUI.

scapy - інтерактивна оболонка і програмна бібліотека для маніпулювання мережевими пакетами на мові програмування Python.

ettercap - утиліта для аналізу мережевого трафіку, що проходить через інтерфейс комп'ютера, але з додатковою функціональністю. Програма дозволяє виконувати атаки типу «людина посередині», щоб змусити інший комп'ютер передавати пакети не маршрутизатора, а атакуючому.

Власне, нічого не змінюється

З таким непростим підходом у учасників виникли складності, але і їх вони подолали. Приз за підробку відповіді від процесингу на другому банкоматі отримала команда - Information & Public Security Center Uzbekistan. З чим ми їх і вітаємо! Повний список переможців - на сторінці конкурсу .