Современные проблемы проверки держателей карт EMV и NFC. Атака с использованием криптограмм.

Tomcat

Professional
Messages
2,689
Reaction score
913
Points
113

Введение

15 октября в Великобритании лимит покупок Tap & Go увеличится с 45 до 100 фунтов стерлингов. Что это значит?

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

Хорошо, но что это на самом деле означает?

Это означает, что правительство и банковская отрасль уверены, что мошенничество с утерянными и украденными картами достаточно снизилось, чтобы можно было увеличить лимиты без существенных потерь от мошенничества. Самый популярный тип бесконтактного мошенничества — это когда кто-то находит или крадет бесконтактную карту и использует ее в магазине. Теперь каждая бесконтактная операция ограничена 45 фунтами стерлингов, а затем увеличится до 100 фунтов стерлингов, означает ли это, что общие потери, связанные со злонамеренными «предпринимателями», также увеличатся вдвое?

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

Вместо того, чтобы принимать чью-либо сторону в этой спорной теме, мы напомним вам, как легко платить заблокированными картами и как легко обойти эти «мнимые» £100 «Tap & Go» лимиты для мошенников. Позвольте нам показать вам, сколько ошибок в настройках все еще присутствует в современных картах Visa и MasterCard.

Атаки

Мы рассмотрим две атаки. Во-первых, мы покажем, как хакеры могут платить картами Visa даже после превышения количества попыток ввода PIN-кода на карте, обычно равного трем. Во второй атаке мы покажем, как можно обойти ограничение в три попытки угадать правильный 4-значный PIN-код и провести атаку, которая перебирает все возможные цифры PIN-кода.

Почему мы обсуждаем эти атаки вместе? Обе атаки используют недостатки спецификации EMV и реализации EMV в разных банках. Обе атаки также требуют техники Man-in-The-Middle для манипулирования различными полями во время связи между картой и терминалом. Для атаки NFC MiTM вы можете использовать два считывателя NFC PN532 или два телефона на базе Android, оснащенных считывателями NFC. Перехват и изменение данных EMV немного сложнее. Основная проблема здесь — задержка и задержки, которые могут привести к прекращению связи. Для нашей демонстрации мы будем использовать проект пионера атак EMV — Омара Чоудари из Кембриджского университета.

Атака 1. Атака с использованием криптографической путаницы или как платить заблокированными картами.

Почти каждая карта Visa и MasterCard может самостоятельно проверять PIN-коды, это называется «офлайн-проверка PIN-кода». Для большинства карт, если держатель карты вводит PIN-код неправильно три раза, это ограничивает функциональность карты. После этого карта информирует банк и POS-терминалы о неправильно введенных PIN-кодах. Иногда это ограничивает интерфейс NFC, так как карта должна проверять следующую транзакцию только с помощью онлайн-PIN-кода, который банк-эмитент проверит онлайн, а интерфейс NFC не имеет этой функции.

У нас был такой опыт. Превысив количество попыток ввода PIN-кода, мы не смогли заплатить с помощью NFC или чипа и не смогли сбросить счетчик попыток ввода PIN-кода в банкомате. С таким фоном, как кто-то мог обойти эту тупиковую ситуацию?

Посмотрите на NFC-связь между картой и считывателем:

Code:
T->C
00a404000e325041592e5359532e444446303100
C->T
6f41840e325041592e5359532e4444463031a52fbf0c2c612a4f07a000000003
1010500a566973612044656269748701019f0a080001050100000000bf6304df2001809000
T->C
00a4040007a000000003101000
C->T
6f6c8407a0000000031010a561500a566973612044656269748701019f38189f
66049f02069f03069f1a0295055f2a029a039c019f37045f2d08656e65736672
64659f1101019f120f566973612044656269742043617264bf0c139f5a053108
2608269f0a080001050100000000 6283

Последний ответ карты указывает на то, что карта недействительна для операций NFC, так как ответ APDU 6283 означает «Выбранный файл недействителен». Но если мы изменим 6283 на 9000, ответ, что все в порядке, то вот что произойдет дальше:

Code:
T->C
00a404000e325041592e5359532e444446303100
C->T
6f41840e325041592e5359532e4444463031a52fbf0c2c612a4f07a000000003
1010500a566973612044656269748701019f0a080001050100000000bf6304df2001809000
T->C
00a4040007a000000003101000
C->T
6f6c8407a0000000031010a561500a566973612044656269748701019f38189f
66049f02069f03069f1a0295055f2a029a039c019f37045f2d08656e65736672
64659f1101019f120f566973612044656269742043617264bf0c139f5a053108
2608269f0a080001050100000000 9000
 T->C (Терминал отправляет запрос Generate AC, запрашивая карта для предоставления криптограммы)
 80a8000023832136a040000000000000100000000000000826000000000000826211008000cf8dc7400
C->T (карта отвечает не онлайн-криптограммой, а криптограммой отказа 9f270100)
 774082020000940808010100100102009f100706011203800000570e43499210
50119006d2206221862f5f3401009f2608b65f41f7509ea1449f2701009f360200a39000

После этого исправления мы видим, что карта отвечает не онлайн-криптограммой ARQC, а криптограммой AAC с отклонением. Подробнее о различных криптограммах EMV можно прочитать здесь: https://www.emvco.com/wp-content/up...MV_Chip_Technology_v2.0_20141120122132753.pdf .

Это также указано в поле 9f10, которое должно быть обработано эмитентом:

Code:
[9F10 (данные приложения эмитента)] 06011203800000
  [Результаты проверки карты] 03800000
     [Байт 2 Бит 6 = 0, Байт 2 Бит 5 = 0] AAC Возвращено в GPO/сначала GENERATE AC

Однако карта все равно отвечает последовательным ATC. А что, если алгоритм генерации криптограммы AAC точно такой же, как и для криптограммы ARQC? Единственный способ отличить эти две криптограммы для банка-эмитента — проверить поле CVR и убедиться, что тип криптограммы правильный. Не являясь большими поклонниками теорий, мы сразу приступили к тестам. Мы изменили тип криптограммы с 9f270100 на 9f270180, онлайн-криптограмму ARQC, и вуаля!


Такое вмешательство возможно только с картами Visa, поскольку MasterCard требует схему аутентификации данных CDA Offline для всех своих бесконтактных карт. И это не позволит хакерам подделывать какие-либо данные. Далее стало очевидно, что многие банки (около 30% на основе нашей текущей оценки) не проверяют тип криптограммы в поле IAD/CVR. Хакеры не смогут подделать это поле просто потому, что оно достаточно важно, чтобы быть частью платежной криптограммы, и его подделка приведет к отклонению криптограммы.

Атака 2. Перебор PIN-кодов

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

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

1. Проверка ПИН-кода в автономном режиме, ввод последовательных ПИН-кодов из списка комбинаций 0000-9999.

2. Если все ПИН-коды были введены неверно, счетчик попыток ввода ПИН-кода будет установлен на 0.

3. Теперь мы можем проверить следующий PIN-код онлайн или просто использовать схему проверки Chip & Signature. Это заставит банк эмитента отправить «PIN Tries Reset Issuing Script». И мы можем продолжить снова с первого шага.


Выводы

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

Проблемы EMV беспокоят исследователей безопасности уже около 20 лет. Visa и MasterCard даже перенесли некоторые устаревшие проблемы, такие как путаница с криптограммой AAC, в самые современные формы платежей, такие как Apple Pay, Samsung Pay и мобильные кошельки GPay. Но крупные компании, такие как Visa и MasterCard, не спешат исправлять эти недостатки.

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

Источник
 
Last edited by a moderator:
Top