Как украсть деньги с бесконтактной карты и Apple Pay / Хабр

Запрос доступных приложений — select ppse

Официальное описание: EMV Contactless Specifications — PPSE and Application Management for Secure Element

Начало общения с EMV-картой всегда происходит с чтения PPSE (Payment System Environment). Терминал спрашивает у карты, какие платежные приложения на ней есть.

Чаще всего это одно приложение, как в нашем примере — VISA. Однако бывают карты с несколькими платежными приложениями, например, есть специальные отечественные карты МИР с двумя платежными приложениями внутри. Так как платежная система МИР не работает заграницей, в карту интегрируется второе платежное приложение, по сути вторая карта. Это может быть приложение платежной системы JCB или UnionPay. Такие карты называются кобейджинговыми.

APDU-команда SELECT PPSE

'00 A4 04 00 0E 32 50 41 59 2E 53 59 53 2E 44 44 46 30 31 00'
  00 A4 04 00 // команда select 
   0E // длина command data (14 байт)
    32 50 41 59 2E 53 59 53 2E 44 44 46 30 31 // command data 2PAY.SYS.DDF01
    00 // завершающий маркер

Ответ на SELECT PPSE

'6F 23 84 0E 32 50 41 59 2E 53 59 53 2E 44 44 46 30 31 A5 11 BF 0C 0E 61 0C 4F 07 A0 00 00 00 03 10 10 87 01 01 90 00'


Для удобства проанализируем ответ с помощью онлайн-парсера формата TVL

. Тот же ответ, обработанный парсером:

EMV SELECT PPSE VISA RESPONE parsed
Из всего этого нас интересует только идентификатор платежного приложения (AID). В данном случае, это значение A0000000031010, означающее Visa International.

AID помечается маркером 4F. Вторым битом после маркера следует длина данных, в нем содержащихся. Несмотря на то, что длина AID может варьироваться от 5 до 16 байт, в большинстве случаев она равна 7 байтам.

Большой список AID: eftlab.co.uk/knowledge-base/211-emv-aid-rid-pix

Некоторые популярные AID

A0000000031010 Visa International
A0000000032020 Visa International
A0000000041010 Mastercard International
A0000000043060 Mastercard International United States Maestro (Debit)

Application Priority Indicator — указывает приоритет платежных приложений. Например, в кобейджинговых картах МИР, имеющих внутри несколько платежных приложений, это поле указывает, какое из двух приложений приоритетнее. Так как у нас только одно приложение Visa International, оно указывает на него, и приоритет отсутствует.

Запуск платежного приложения — SELECT AID

'00 A4 04 00 07 A0 00 00 00 03 10 10'
  00 A4 04 00 // команда select 
   07 // длина command data (7 байт)
    A0 00 00 00 03 10 10 // AID Visa International


Выбрав нужное платежное приложение, терминал запускает его.

Как платить android-смартфоном: google pay

Убедившись, что смартфон поддерживает NFC и включив его, нужно выполнить установку приложения Google Pay, если оно не установлено изначально производителем. Для эксплуатации Google Pay должны быть соблюдены несколько обязательных требований:

  • Версия Android не ниже 5.0;
  • Отсутствие корневого доступа;
  • Неразблокированный Android-загрузчик;
  • Отсутствие бета-версии прошивки (например, не стабильная, а еженедельная версия на смартфоне Xiaomi).

При первом запуске Google Pay потребуется выбрать нужный аккаунт Google. Далее следует добавить в систему платежную карту с функцией бесконтактной оплаты. Ее можно выбрать из списка, если ранее прикреплялись к аккаунту какие-либо карты. Или же добавить новую. Сделать это можно, как введя номер карты вручную, так и сфотографировав ее. Добавить можно до 10 карт. Список поддерживаемых банков можно посмотреть здесь.

В дальнейшем для добавления новых банковских карт открываем раздел «Оплата», а для добавления дисконтных или подарочных карт — раздел «Карты». Первая добавленная платежная карта становится основной, которая и используется для оплаты. Чтобы сменить основную карту нужно открыть раздел «Оплата», коснуться карты, которую нужно сделать основной, и нажать «Сделать основной».

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

Как платить айфоном: apple pay

За бесконтактные платежи в гаджетах Apple отвечает предустановленное приложение Wallet. Открываем эту программу, найдя нужную иконку на рабочем столе, и открываем окно «Добавление карты», нажав на синий плюсик в правом верхнем углу. Ввести данные карты можно, как запечатлев их камерой, наведя на карту рамку, так и вручную.

Читайте ещё про NFC:  NFC метки: что это, как пользоваться, программировать, как работать, как записать, для чего нужны, как скопировать, как сделать своими руками

Добавлять можно от 8 до 12 карт, в зависимости от модели смартфона. Список поддерживаемых банков можно посмотреть здесь (найти раздел «Россия»). Добавить дисконтную карту можно таким же образом, просканировав QR-код. Также это можно сделать, перейдя по ссылке в полученном письме или SMS, посредством регистрации в приложении магазина или автоматически после оплаты в торговой точке с помощью Apple Pay.

Первая прикрепленная в Wallet платежная карта становится картой по умолчанию. Если ее нужно сменить, переходим в «Настройки» — «Wallet и Apple Pay», прокручиваем до раздела «Параметры оплаты по умолчанию», жмем «Карта» и выбираем другую карточку. Эту манипуляцию можно осуществить и в программе Wallet, коснувшись нужно карты в списке и перетащив ее в начало.

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

Как это работает?

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


Этапы транзакции при оплате через POS-терминал

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

  1. Покупатель прикладывает/проводит/вставляет карту в POS-терминал;
  2. POS-терминал по интернету передает данные в банк-эквайер;
  3. Банк-эквайер через международную платежную систему (МПС) обращается в банк-эмитент и запрашивает, может ли конкретный держатель карты оплатить покупку;
  4. Банк-эмитент подтверждает или отклоняет покупку, после чего печатается слип (второй чек).

Бывают исключения из этой схемы, например оффлайн транзакции, их мы рассмотрим далее. Также, если банк-эквайер и банк-эмитент являются одним и тем же банком, шаги 2 и 4 выполняются внутри одного банка.

Продавец (Merchant) — лицо или организация, предоставляющая товары или услуги

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

Банк-эмитент (Issuing bank) — банк, выпустивший карту. В нем находится счет владельца карты, у которого списываются деньги.

Международная платежная система (МПС) — международная система-посредник между банками по всему миру, позволяющая банкам производить расчеты между собой без заключения договора с каждым банком по отдельности. Все банки, подключенные к МПС, соглашаются работать по одним правилам, что значительно упрощает взаимодействие. Например, Visa, MasterCard, UnionPay, American Express, МИР (нет, МИР не работает заграницей).

Владелец карты (Cardholder) — человек, заключивший с банком-эмитентом договор обслуживания карты.

Ответ карты на get processing options

'7762820200409404180101009F360202069F2608D6F56B8ABED78F239F10201F4AFF32A00000000010030273000000004000000000000000000000000000009F6C02008057134800997250511756D23122020000052099995F9F6E04238800009F2701809000'

В данном ответе содержатся специфичные для VISA поля данных, поэтому я использовал парсер c поддержкой

Application Interchange Profile (AIP) — содержит информацию о параметрах платежного приложения. В нашем случае AIP равен 00 40. Рассмотрим значения данного параметра из EMV 4.3 Book 3.


В нашем случае установлен один бит во втором байте, который, если верить этой таблице, Reserved For Future Use (RFU). Что это значит, и какой смысл в это вкладывает Apple Pay, я не знаю.

В AIP содержится важная информация о поддерживаемых методах аутентификации (SDA,CDA,DDA) платежа. Почему в моем случае все эти флаги равны нулю — я не понимаю.

Application File Locator (AFL) — Содержит информацию о расположении записей (SFI range of records) в конкретном AID. На основании этого ответа терминал сформирует запрос READ RECORD.

Разберем ответ AFL подробнее:

Читайте ещё про NFC:  Основные возможности использования NFC на смартфоне. Как можно пользоваться модулем в смартфоне. Оплата посредством NFC с телефона.

Short File Identifier (SFI) равно 0x18. Этот параметр кодируется пятью битами вместо восьми. Соответственно значение 0x18 (b00011000) преобразовываем в b00000011, и получаем 0x3.First record = 1Last record = 1Т.е. в «папке» №3 есть записи с 1 по 1, то есть одна запись.

Application Transaction Counter (ATC) — инкрементный счетчик транзакций, который увеличивается каждый раз на единицу при запросе GET PROCESSING OPTIONS. Под достижению значения 0xFFFF или 0x7FFF, платежное приложение безвозвратно заблокируется. Полагаю, что это сделано для защиты от брутфорса приватного ключа карты. В нашем случае видно, что данный айфон с Apple Pay использовался для оплаты уже 518 (0x206) раз.

Application Cryptogram (AC) — криптографическая подпись, которая вычисляется картой с использованием ее приватного ключа. Данная подпись передается вместе с остальными данными банку-эмитенту, и на ее основании проверяется подлинность транзакции. Так как приватный ключ карты невозможно (доступными средствами) извлечь из карты, это позволяет исключить возможность копирования карты.

Issuer Application Data (IAD) — Содержит проприетарные данные, специфичные для VISA. Я не осилил разбор этой структуры, помогите.

Card Transaction Qualifiers (CTQ) — специфичный для VISA cписок поддерживаемых картой спецификаций. Например, можно ли использовать эту бесконтактную карту для операций в банкомате или нет, и какие подтверждения при этом потребуются.

Оппа! В этом поле содержится номер карты и expiration date, подробнее эта информация будет разобрана далее.

Form Facto Indicator (FFI) — специфичное для VISA поле. Описывает форм-фактор и характеристики платежного устройства. В нашем случае видно, что это мобильный телефон.

Cryptogram Information Data (CID) — Я не осилил разбор этой структуры, помогите.

Популярные мифы об apple pay

  • Карта копируется в телефон
    Это не так, в микропроцессорной карте содержится защищенная область памяти с криптографической информацией, которая после выпуска карты не может быть извлечена. Из-за этого чипованную карту нельзя скопировать, никак, вообще. Справедливости ради нужно сказать, что подобные атаки возможны, но стоимость их превышает суммарное количество денег, которые потратят за всю жизнь большинство читателей этой статьи.
  • Телефон каждый раз подключается к интернету во время оплаты
    Google Pay/Apple Pay не подключаются к интернету во время оплаты через POS-терминал. Вся нужная информация хранится локально в телефоне.
  • На каждую оплату генерируется новый номер карты (PAN)
    Так может показаться, если читать пресс-релизы Apple о технологии Apple Pay. Но это ошибочное трактование понятия токена. На самом деле, реквизиты виртуальной карты остаются неизменными достаточно долго, вы можете это проверить по последним цифрам номера карты в слипе (банковском чеке) при оплате покупок.
  • При оплате через Apple Pay/Google Pay взымается дополнительная комиссия
    Это не так, вы заплатите ровно столько, сколько указано на ценнике, и согласно условиям вашего договора с банком-эмитентом, чью карту вы привязали.
  • Деньги могут списаться два раза
    Этот миф касается не только Google Pay/Apple Pay, но и обычных банковских карт. Полагаю, что он появился из-за систем оплаты общественного транспорта, в которых терминал списывает деньги с проездного билета каждый раз при поднесении, так что можно списать средства два или более раз, если неаккуратно поднести карту. В случае с POS-терминалами этого риска не существует, так как терминал прекращает обмен с картой, как только получил нужные данные.


Связывание физической карты с «токеном» в телефоне

Системы, подобные Apple Pay, работают на основе EMV Payment Tokenisation Specification. Процедура связывания физической карты и телефона с Apple Pay не описана публично, поэтому разберем процесс на основе известных данных:

  1. Поставщик (Google, Apple, Samsung) получает информацию о карте;
  2. Через МПС поставщик запрашивает, поддерживает ли данная карта (данный банк-эмитент) работу с EMV Tokenisation;
  3. На стороне МПС генерируется виртуальная карта (токен), который загружается в защищенное хранилище в телефоне. Мне неизвестно, где именно генерируется приватный ключ от виртуальной карты, передается ли он по интернету или генерируется локально на телефоне, в данном случае это не имеет значения.
  4. В телефоне появляется сгенерированная виртуальная карта-токен, операции по которой банк-эмитент интерпретирует как операции по первой физической карте. В случае блокировки физической карты, токен тоже блокируется.

Apple Pay позволяет считать реквизиты виртуальной карты. PAN номер и expire date отличаются от привязанной карты российского Альфа-Банка. По BIN виртуальной карты (480099) определяется MBNA AMERICA BANK.

При оплате телефоном, POS-терминал видит обычную карту VISA или MasterCard, и общается с ней точно так же, как и с физической картой. Виртуальная карта-токен содержит все атрибуты обычной карты: PAN-номер, срок действия и прочее. При этом номер виртуальной карты и срок действия отличаются от привязанной оригинальной карты.

Расстояние

Бесконтактные банковские карты используют для передачи данных технологию NFC, разновидность RFID. На карте размещены чип и антенна, которые «откликаются» на запрос платежного терминала на радиочастоте 13,56 МГц. Разные платежные системы используют собственные стандарты: Visa payWave, MasterCard PayPass, American Express ExpressPay и так далее. Но устроены они похожим образом.

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

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

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

Впрочем, можно пойти еще дальше и обойтись вовсе без сканера и личного присутствия. Еще одно оригинальное решение проблемы расстояния предложили испанские хакеры Рикардо Родригес и Хосе Вилла, представившие доклад на недавней конференции Hack In The Box.

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

Как только зараженный телефон оказывается возле бесконтактной карты, он отправляет через Интернет злоумышленникам сигнал о доступности транзакции. Мошенники активируют обычный платежный терминал, подносят к нему свой NFC-смартфон. Таким образом создается «мост» через Интернет между NFC-карточкой и NFC-терминалом, удаленными друг от друга на любое расстояние.

Троянец может распространяться стандартным способом, например в комплекте со «взломанным» платным приложением. Все, что требуется, — это версия Android 4.4 и выше. Root-доступ необязателен, хотя и желателен для того, чтобы троянец мог работать и после блокировки экрана.

Сумма покупки

Есть еще один уровень защиты — ограничение максимальной суммы бесконтактной транзакции. Этот предел в настройках терминального оборудования задает банк-эквайер, руководствуясь рекомендациями платежных систем. В России максимальный порог платежа составляет 1000 рублей, в США — $25, в Великобритании — 20 фунтов (скоро будет повышен до 30) и так далее.

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

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

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

По словам Тараторина из Райффайзенбанка, терминал контролирует максимальный размер платежа независимо от того, в какой валюте он осуществляется.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector