Безопасность Apple Pay, Google Pay и Samsung Pay

Безопасность платежный систем

Сегодняшняя статья посвящена безопасности платежный систем Apple Pay, Google Pay и Samsung Pay. Мы рассмотрим техники, которые используют хакеры для взлома Apple Pay, Google Pay и Samsung Pay, и попробуем ответить на вопрос «Насколько безопасно использовать Apple Pay, Google Pay и Samsung Pay».

Еще по теме: Как взламывают и похищают деньги с банковских карт

Для карт MasterCard офлайн‑аутен­тифика­ция по бес­контак­тным кар­там обя­затель­на прак­тичес­ки в каж­дой стра­не и под­держи­вает­ся каж­дой бес­контак­тной кар­той. Если она не будет успешна, тер­минал обя­зан прер­вать такую тран­закцию. Поэто­му телефон про­веря­ет два поля: сум­му и код MCC.

Ес­ли пла­теж дела­ется в обыч­ном тер­минале, сум­ма будет отли­чать­ся от 0.00 и код тер­минала ока­жет­ся не из катего­рии «Тран­спорт». В этом слу­чае телефон вер­нет такой ответ:

Тут уже что‑то инте­рес­ное. Напом­ню, что крип­тограм­ма — это 3DES HMAC от некото­рых полей, пред­став­ленных тер­миналом в зап­росе Generate AC, и зна­чений в самой кар­те, нап­ример ATC. Моя пер­вая догад­ка: а что, если клю­чи и алго­ритм каль­куляции крип­тограм­мы AAC точ­но такие же, как и для ARQC? Ведь счет­чик тран­закций уве­личи­вает­ся каж­дый раз на 1, даже при воз­вра­те AAC-крип­тограм­мы. Если мы поменя­ем поле 9f27 на 0x80, крип­тограм­ма будет при­нята тер­миналом и отправ­лена на токени­заци­онный хост MasterCard для авто­риза­ции. И если этот хост не про­веря­ет зна­чения фла­гов в поле CVR, где все еще вид­но, что тип крип­тограм­мы дру­гой, тран­закция будет одоб­рена.

Зву­чит как план, но у меня была проб­лема: модифи­кация любых полей во вре­мя обще­ния тер­минала и кошель­ка будет замече­на при офлайн‑аутен­тифика­ции CDA. Тут мне на помощь приш­ла тех­ника, сов­сем недав­но най­ден­ная «швей­цар­ски­ми уче­ными» (с). Они обна­ружи­ли, что обя­затель­ную офлайн‑аутен­тифика­цию мож­но обой­ти, прит­ворив­шись кар­той Visa, и исполь­зовали эту тех­нику для обхо­да ПИН‑кода.

Пер­вый план ата­ки соз­рел:

  1. Бе­рем устрой­ство man in the middle для модифи­кации дан­ных меж­ду телефо­ном и тер­миналом.
  2. Про­водим ата­ку Card Brand Mixup — кар­та MasterCard прит­воря­ется кар­той Visa (как это делать — читай в иссле­дова­нии Card Brand Mixup Attack, PDF).
  3. На пос­леднем шаге при­меня­ем ата­ку Cryptogram Confusion: ког­да кошелек воз­вра­щает крип­тограм­му типа 0x00 (AAC), мы меня­ем зна­чение поля 9f27 на 0x80 (ARQC). Я был при­ятно удив­лен тем, что в кон­це кон­цов ата­ка Cryptogram Confusion прош­ла и тран­закция была одоб­рена. Вот виде­оза­пись этой ата­ки.

Мож­но ли как‑то совер­шать пла­тежи по кар­там Visa и дру­гим, нап­ример American Express, если телефон заб­локиро­ван? Не обна­ружив никако­го дру­гого спо­соба получе­ния крип­тограм­мы, кро­ме зап­роса авто­риза­ции на сум­му 0.00, я решил вос­поль­зовать­ся ата­кой Transaction Stream Manipulation. В ходе этой ата­ки дан­ные под­меня­ются не меж­ду тер­миналом и кар­той или кошель­ком, а меж­ду тер­миналом и бан­ком‑эквай­ером, в зап­росе ISO8583 Authorisation Request. В этом слу­чае у зло­умыш­ленни­ка боль­ше воз­можнос­тей для манипу­ляции полями. Нап­ример, поле «сум­ма» фигури­рует в этом зап­росе дваж­ды: в пер­вый раз в поле [55] — там, где соб­раны все поля EMV, а во вто­рой раз — в поле [04], где ука­зыва­ется реаль­но спи­сыва­емая сум­ма.

В таком слу­чае ата­ка на дру­гие кар­ты, в том чис­ле Visa, выг­лядит сле­дующим обра­зом:

Зап­рашива­ем крип­тограм­му на 0.00 так же, как ее зап­рашива­ет тер­минал в мет­ро.
Соз­даем зап­рос ISO8583, где ука­зыва­ем кор­рек­тные поля (сум­ма — 0.00, крип­тограм­ма и так далее), но в поле [04] ука­зыва­ем ту сум­му, которую хотим спи­сать с кар­ты.

Хо­тя кошелек с кар­той Visa передал информа­цию о том, что телефон не был раз­бло­киро­ван, эта тран­закция была одоб­рена Visa Tokenisation Service.

Безопасность Apple Pay

Ког­да‑то кор­порация Apple объ­явля­ла, что про­изво­димые ею телефо­ны научи­лись под­держи­вать пла­тежи с заб­локиро­ван­ным экра­ном, на нес­коль­ко месяцев рань­ше сво­их кон­курен­тов. Одна­ко мне дол­гое вре­мя не уда­валось про­верить их безопас­ность. Основная заг­воз­дка была в том, что телефон не акти­виро­вал поле NFC с помощью обыч­ных тер­миналов и бес­контак­тных ридеров. Я упор­но гуг­лил, как работа­ет Apple VAS (Value Additional Services) и пытал­ся поль­зовать­ся помощью кол­лег для ревер­са бинарей Apple Pay (их наз­вания я поза­имс­тво­вал из пре­зен­тации Питера Фил­лмо­ра). Ког­да я про­водил опе­рации в мет­ро, Proxmark3 не записал никаких допол­нитель­ных дан­ных, что при­вело меня в рас­терян­ность.

Ког­да я закон­чил тес­ты с Samsung Pay, я все еще не знал, что делать с Apple Pay, и был в отча­янии. Единс­твен­ным тер­миналом, которым я мог поль­зовать­ся на тот момент, был тер­минал у тур­никета мет­ро. Я решил: если я смо­гу записать крип­тограм­му тран­закции в мет­рополи­тене, но сама тран­закция не прой­дет, то я при­ду домой и поп­робую вста­вить крип­тограм­му в Transaction Stream, как это делалось с вари­антом Samsung + Visa. Пос­ле нес­коль­ких попыток мне уда­лось пов­торить ата­ку вто­рого типа по отно­шению к связ­ке Apple + Visa.

Тог­да же один умный инже­нер дал мне совет не исполь­зовать Proxmark3, а взять что‑то более надеж­ное, нап­ример HydraNFC. Пос­ледовав это­му совету, я быс­тро уви­дел в тра­фике «неч­то» — 15 байт, которые отсы­лались до пер­вых команд. Тог­да мне было труд­но поверить, что все­го 15 байт раз­бло­киру­ют NFC в iPhone, так как я мно­го читал в патен­тах про PKI, исполь­зуемые Apple в VAS. Но это дей­стви­тель­но ока­залось имен­но так: все­го 15 байт, и телефон поз­волял читать дан­ные по NFC даже с раз­ряжен­ных устрой­ств.

Пос­мотрим, как выг­лядит генера­ция крип­тограм­мы кар­той MasterCard, задан­ной как тран­спортная кар­та в Apple Pay:

В отли­чие от Samsung, Apple вер­нет онлайн‑крип­тограм­му, даже если сум­ма не будет рав­на 0.00 (сот­рудни­ки Apple заяви­ли, что исполь­зуют или собира­ются исполь­зовать эту фун­кцию, так что «это не баг»).

Од­нако при под­мене кода MCC тран­закция будет откло­нена из‑за CDA. Пос­ле июня 2021 года MasterCard зак­рыла воз­можность Card Brand Mixup Attack, поэто­му опла­тить в про­изволь­ном тер­минале этой кар­той не удас­тся. Но я все еще мог про­водить ата­ки с исполь­зовани­ем Transaction Stream Manipulation.

А что же с кар­тами Visa? Ими мож­но рас­пла­чивать­ся в любом супер­марке­те мира по заб­локиро­ван­ному iPhone, для это­го нуж­но лишь под­менить нес­коль­ко бай­тов при обме­не меж­ду тер­миналом и телефо­ном. Да ты и сам об этом уже, ско­рее все­го, читал: иссле­дова­тели из уни­вер­ситетов Бир­минге­ма и Сур­рея обна­ружи­ли эту уяз­вимость незави­симо от меня при­мер­но в это же вре­мя. Эта уяз­вимость до сих пор сущес­тву­ет, нес­мотря на то что для ее устра­нения Visa нуж­но добавить все­го лишь одно малень­кое усло­вие в сво­ем токени­заци­онном сер­висе.

Безопасность Google Pay

Мы уже показы­вали в 2019 году, как мож­но совер­шать пла­тежи на заб­локиро­ван­ном кошель­ке Google Pay по кар­там Visa выше лимитов NoCVM: для это­го нуж­но лишь поменять бит в поле TTQ, ука­зыва­ющий, что тре­бует­ся верифи­кация пла­тель­щика. Обой­ти огра­ниче­ния по кар­там MasterCard в прош­лый раз не уда­лось, поэто­му я решил поп­робовать еще. Вмес­то модифи­кации Transaction Stream я вос­поль­зовал­ся ста­рой ата­кой, опи­сан­ной Май­клом Ролан­дом (Michael Roland) в 2013 году, — Pre-play and Downgrade (в пре­дыду­щей статье я по ошиб­ке написал, что ата­ку раз­работал Питер Фил­лмор в 2014 году, но это не так).

Для меня оста­валось загад­кой, почему режим M-STRIPE до сих пор работа­ет в кошель­ках Google Pay для всех карт MasterCard. Я решил иссле­довать его чуть пог­лубже — пос­мотреть на мак­сималь­ную энтро­пию, защиту от скач­ков ATC и дру­гие механиз­мы защиты.

Вы­ясни­лось сле­дующее.

  1. Мак­сималь­ная энтро­пия по кар­там — 1000 или 10 000. Дру­гих нас­тро­ек я не встре­тил. Напом­ню, что кар­та или кошелек с энтро­пией 1000 кло­ниру­ется пол­ностью за 1000 зап­росов, на это ухо­дит око­ло минуты. Далее зло­умыш­ленни­ку не нужен ори­гиналь­ный телефон — он может совер­шать покуп­ки с исполь­зовани­ем той информа­ции, которая была кло­ниро­вана. Количес­тво тран­закций зависит от дру­гих внед­ренных мер безопас­ности.
  2. Ог­раниче­ния NoCVM на заб­локиро­ван­ном телефо­не обхо­дят­ся так­же под­меной 1 бита в зап­росе от тер­минала, что поз­воля­ет совер­шать пла­тежи выше 3000 руб­лей. У некото­рых тер­миналов, одна­ко, есть отдель­ная кон­фигура­ция, ука­зыва­ющая мак­сималь­ную сум­му пла­тежа в легаси‑режиме M-STRIPE.
  3. Ес­ли в обыч­ной кар­те счет­чик ATC идет пос­ледова­тель­но: 0001, 0002 и так далее, то для мобиль­ного кошель­ка сис­тема MasterCard внед­рила так называ­емый CryptoATC. При перех­вате команд они выг­лядят как слу­чай­ные зна­чения из 2 байт A56D, F1A1 и так далее. В про­цес­се детоке­низа­ции МПС прев­раща­ет эти зна­чения в пос­ледова­тель­ные. Одна­ко даже при скач­ках в 30–50–100 зна­чений счет­чика мои тран­закции не были заб­локиро­ваны.

Из‑за новых тре­бова­ний PSD2 в Евро­пе Android огра­ничи­вал количес­тво тран­закций на заб­локиро­ван­ном телефо­не до пяти (сей­час это зна­чение — три или ноль, зависит от стра­ны). Это зас­тавило меня задумать­ся: если MasterCard и Google не про­веря­ют скач­ки ATC, записав толь­ко пять тран­закций, какова веро­ятность вос­про­извести одну из них успешно?

Вос­поль­зуем­ся фор­мулой Бер­нулли, отлично нарисо­ван­ной Арка­дием Лит­винен­ко спе­циаль­но для таких слу­чаев.

Фор­мула Бер­нулли в исполне­нии Арка­дия Лит­винен­ко
Фор­мула Бер­нулли в исполне­нии Арка­дия Лит­винен­ко

При энтро­пии 1000, если совер­шить 50 попыток опла­ты в супер­марке­те, веро­ятность получить слу­чай­ное чис­ло из пяти записан­ных сос­тавит 14%. Для 100 попыток — 26%. А при наличии дос­тупа к Transaction Stream каж­дая из этих записан­ных тран­закций может быть монети­зиро­вана, ведь зло­умыш­ленник в сос­тоянии соз­дать зап­рос на авто­риза­цию, где сам выс­тавит и слу­чай­ное чис­ло, и зна­чения CVC3/ATC.

Бо­лее того, в слу­чае дос­тупа к Transaction Stream и при отсутс­твии защиты от перебо­ра пар ATC/CVC3, если у зло­умыш­ленни­ка есть толь­ко токен (16 цифр вир­туаль­ной кар­ты и expiry date), ему пот­ребу­ется мак­симум 65 535 попыток, что­бы соз­дать и успешно авто­ризо­вать мошен­ничес­кую тран­закцию.

Ес­ли все, что нуж­но сде­лать мошен­никам в дан­ном слу­чае, — быть нас­той­чивыми, «тапая» в супер­марке­те 50–100 раз, каж­дый раз ожи­дая успе­ха, или посылать зап­росы на авто­риза­цию на сер­веры токени­зации MasterCard MDES, то успех, увы, им гаран­тирован.

Заключение

Я обна­ружил нес­коль­ко спо­собов ата­ковать укра­ден­ные мобиль­ные кошель­ки, если на устрой­стве воз­можна опла­та без раз­бло­киров­ки телефо­на. Так­же я нашел новую инте­рес­ную ата­ку на про­токол EMV — Cryptogram Confusion. С помощью нее мож­но ата­ковать не толь­ко мобиль­ные кошель­ки, но и чи­повые/бес­контак­тные кар­ты.

Мне уда­лось совер­шить пла­теж по кло­ниро­ван­ным тран­закци­ям кошель­ка Google Pay c при­вязан­ной MasterCard даже при огра­ниче­нии в пять попыток.

Ког­да же дело дош­ло до обще­ния с мобиль­ными вен­дорами и МПС, ито­ги ока­зались неуте­шитель­ными:

  • Обо всех недос­татках Google была опо­веще­на в фев­рале. Они сооб­щили, что в кур­се проб­лем и пла­ниру­ют зак­рыть воз­можность пла­тежей на заб­локиро­ван­ном экра­не. Это реали­зова­но соз­дани­ем отдель­ной опции в нас­трой­ках NFC пос­ле фев­раля 2021 года. Так­же во всех реги­онах раз­работ­чики умень­шили чис­ло тран­закций на заб­локиро­ван­ном телефо­не. Осталь­ные уяз­вимос­ти были про­игно­риро­ваны.
  • Apple, Samsung, MasterCard были опо­веще­ны вес­ной 2021 года, и завер­телось… Apple заяви­ла, что 15 байт для акти­вации NFC — дос­таточ­ная защита для поль­зовате­лей. Все мобиль­ные вен­доры под­няли лап­ки квер­ху и, ска­зав, что не име­ют пра­ва менять код кошель­ков, поп­росили раз­решения поделить­ся наход­ками с МПС. Пос­ле того как раз­решения были даны, мою стра­ницу в LinkedIn мно­го раз посеща­ли ува­жаемые люди из всех МПС, но ник­то никог­да со мной так и не свя­зал­ся.

Ле­том это­го года MasterCard не толь­ко зак­рыла лазей­ку для Card Brand Mixup Attack от швей­цар­ских иссле­дова­телей, но и устра­нила лазей­ку для Cryptogram Confusion. Я обна­ружил это слу­чай­но толь­ко в октябре, при под­готов­ке к выс­тупле­нию. Помимо это­го, во мно­гих реги­онах поле MCC было добав­лено в крип­тограм­му, что дела­ет под­мену MCC невоз­можной даже во вре­мя Transaction Stream Manipulation. Поменял­ся метод пред­став­ления ATC/AAC на заб­локиро­ван­ных телефо­нах Samsung, что и навело меня на мыс­ли о пат­че. Вер­сию пат­ча я смог выпытать у Samsung (апдейт MPBP 1.2.2, May 27, 2021).

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

Ата­ки, которые воз­можны до сих пор:

  • Тран­спортная кар­та Visa + ApplePay — без­лимит­ные пла­тежи на заб­локиро­ван­ном, раз­ряжен­ном или укра­ден­ном устрой­стве. Так­же до сих пор воз­можны пла­тежи по кошель­кам Visa + Google Pay, тут с 2019 года ничего не изме­нилось.
  • MasterCard + Google Pay — воз­можно кло­ниро­вание тран­закций, ког­да укра­ден­ной информа­ции будет дос­таточ­но для совер­шения опре­делен­ного чис­ла пла­тежей.
  • Ос­таль­ные вари­ации кар­та + кошелек — ата­ки воз­можны толь­ко при манипу­ляции Transaction Stream.

Для того что­бы по‑нас­тояще­му защитить­ся от зло­упот­ребле­ния пла­тежа­ми на заб­локиро­ван­ном телефо­не, самое опти­маль­ное решение — све­рять катего­рию мер­чанта и сум­му со зна­чени­ями CVR:

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

Что делать бан­кам‑эми­тен­там? Я нес­коль­ко раз слы­шал о том, что во вре­мя токени­зиро­ван­ных тран­закций банк может зап­росить допол­нитель­ную информа­цию от МПС для при­нятия решений, в час­тнос­ти поля EMV, которые в обыч­ном слу­чае не покида­ют токени­затор. Нас­коль­ко слож­но это делать и сколь­ко это сто­ит (все сер­висы МПС пре­дос­тавля­ют по под­писке), я не берусь ком­менти­ровать.

Что делать кли­ентам? Давай пред­ста­вим такую кар­тину: ты вла­делец мобиль­ного кошель­ка, потерял свой телефон и не заб­локиро­вал кар­ту по умол­чанию или тран­спортную кар­ту (я знаю, что в Рос­сии тран­спортные кар­ты не исполь­зуют­ся, но мы же фан­тазиру­ем). Спус­тя какое‑то вре­мя зло­умыш­ленни­ки вос­поль­зовались одной из ука­зан­ных выше тех­ник и сня­ли с тво­его сче­та 1000 дол­ларов. Что про­исхо­дит даль­ше?

  1. Ты зво­нишь в банк, про­сишь заб­локиро­вать кар­ту и начать раз­биратель­ства.
  2. Спус­тя какое‑то вре­мя банк‑эми­тент сооб­щает, что у него нет никаких све­дений о мошен­ничес­ком харак­тере совер­шенных тран­закций. С их сто­роны все выг­лядит безобид­но. Воз­можно, ты раз­гла­сил свой ПИН‑код?
  3. Попыт­ки общать­ся с мобиль­ными вен­дорами (Apple, Samsung, Google) ни к чему не при­водят — они будут утвер­ждать, что пла­тежи воз­можны толь­ко у огра­ничен­ных катего­рий мер­чантов и в лимити­рован­ных сум­мах. Воз­можно, ты раз­гла­сил свой ПИН‑код?

Что в таком слу­чае оста­ется делать кли­ентам? Отка­зать­ся от исполь­зования самых ненадеж­ных про­дук­тов.

За пос­ледний год я смог под­твер­дить свои догад­ки — раз­работ­чики мобиль­ных кошель­ков уют­но устро­ились, соз­дав «самые безопас­ные фор­мы пла­тежей», отоб­рав у бан­ков‑эми­тен­тов воз­можнос­ти для при­нятия решений во вре­мя эмис­сии кошель­ка и авто­риза­ции тран­закций. При этом они же раз­водят руками в слу­чае мошен­ничес­тва или даже воз­можнос­ти мошен­ничес­тва, перено­ся ответс­твен­ность на МПС.

Еще по теме:

ВКонтакте
OK
Telegram
WhatsApp
Viber

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

Ваш адрес email не будет опубликован.